Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Usagesummary.ps1 does not properly handle [DateTime] variants for StartTime/EndTime #609

Open
easyveazie opened this issue Jun 3, 2021 · 5 comments

Comments

@easyveazie
Copy link

easyveazie commented Jun 3, 2021

Issue was reported on stamp version 2005, however the report generates on 2002 stamp properly with the same inputs.

Ask: Validate Usagesummary.ps1 on stamp versions > 2002. I have not tested this yet.

https://github.com/Azure/AzureStack-Tools/blob/master/Usage/Usagesummary.ps1

PS C:\Users\vmadmin\Documents> .\usagesummary.ps1
cmdlet usagesummary.ps1 at command pipeline position 1
Supply values for the following parameters:
StartTime: 2021-05-20
EndTime: 2021-06-01
Get-AzsSubscriberUsage : The reported date time '2021-05-20T00:00:00.0000000 00:00' is not in ISO 8601 format(YYYY-MM-DDTHH:mm:ss.sssZ).
At C:\Users\vmadmin\Documents\usagesummary.ps1:129 char:1
+ $result = Get-AzsSubscriberUsage -ReportedStartTime ("{0:yyyy-MM-ddT0 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ({ SubscriptionI...ationToken =  }:<>f__AnonymousType0`6) [Get-AzsSubscriberUsage_List], UndeclaredResponseException
    + FullyQualifiedErrorId : BadRequest,Microsoft.Azure.PowerShell.Cmdlets.CommerceAdmin.Cmdlets.GetAzsSubscriberUsage_List

Switching line 129 to this and it works:

$result = Get-AzsSubscriberUsage -ReportedStartTime $StartTime  -ReportedEndTime $EndTime -AggregationGranularity $Granularity
@cblackuk
Copy link
Contributor

cblackuk commented Jun 3, 2021

To me the error is correct, as it requires a certain format :-) the format provided does not match :-) but maybe I am missing something?

@easyveazie easyveazie changed the title Usagesummary.ps1 does not properly handle [DateTime] varients for StartTime/EndTime Usagesummary.ps1 does not properly handle [DateTime] variants for StartTime/EndTime Jun 3, 2021
@easyveazie
Copy link
Author

@cblackuk I have added more context above.

@cblackuk
Copy link
Contributor

cblackuk commented Jun 3, 2021

I just realised that I use a completely custom version of all this and for 129 we run for example

Get-AzsSubscriberUsage -ReportedStartTime (Get-Date (Get-Date).AddDays(-1) -Format "MM/dd/yyyy") -ReportedEndTime (Get-Date -Format "MM/dd/yyyy")

@cblackuk
Copy link
Contributor

cblackuk commented Jun 3, 2021

The cmdlet itself only validates on [DateTime]

 [OutputType([Microsoft.AzureStack.Management.Commerce.Admin.Models.UsageAggregate])]
                          [CmdletBinding()]
                          param(
                              [Parameter(Mandatory = $false)]
                              [System.String]
                              $SubscriberId,

                              [Parameter(Mandatory = $true)]
                              [ValidateNotNullOrEmpty()]
                              [System.DateTime]
                              $ReportedStartTime,

                              [Parameter(Mandatory = $false)]
                              [System.String]
                              [ValidateSet("Daily", "Hourly")]
                              $AggregationGranularity,

                              [Parameter(Mandatory = $false)]
                              [int]
                              $Skip = -1,

                              [Parameter(Mandatory = $true)]
                              [ValidateNotNullOrEmpty()]
                              [System.DateTime]
                              $ReportedEndTime,

                              [Parameter(Mandatory = $false)]
                              [System.String]
                              $ContinuationToken,

                              [Parameter(Mandatory = $false)]
                              [int]
                              $Top = -1
                          )

Or to be more accurate on [DateTime] and not being empty and being provided:

                              [Parameter(Mandatory = $true)]
                              [ValidateNotNullOrEmpty()]
                              [System.DateTime]
                              $ReportedStartTime,

                              [Parameter(Mandatory = $true)]
                              [ValidateNotNullOrEmpty()]
                              [System.DateTime]
                              $ReportedEndTime,

So if one works and the other one does not - it must be something to do with ARM post update?

@cblackuk
Copy link
Contributor

cblackuk commented Jun 3, 2021

@easyveazie For laughs... what if you pass to it this instead?

2021-20-05
2021-01-06

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants