|
|
|
@ -15,11 +15,12 @@ type urlBuilder struct { |
|
|
|
|
ResourceGroup *string |
|
|
|
|
MetricNamespace *string |
|
|
|
|
ResourceName *string |
|
|
|
|
MetricDefinition *string |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (params *urlBuilder) buildResourceURI() *string { |
|
|
|
|
func (params *urlBuilder) buildResourceURI() (*string, error) { |
|
|
|
|
if params.ResourceURI != nil && *params.ResourceURI != "" { |
|
|
|
|
return params.ResourceURI |
|
|
|
|
return params.ResourceURI, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
subscription := params.Subscription |
|
|
|
@ -28,11 +29,16 @@ func (params *urlBuilder) buildResourceURI() *string { |
|
|
|
|
subscription = params.DefaultSubscription |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if params.MetricNamespace == nil || *params.MetricNamespace == "" { |
|
|
|
|
return nil |
|
|
|
|
metricNamespace := params.MetricNamespace |
|
|
|
|
|
|
|
|
|
if metricNamespace == nil || *metricNamespace == "" { |
|
|
|
|
if params.MetricDefinition == nil || *params.MetricDefinition == "" { |
|
|
|
|
return nil, fmt.Errorf("no metricNamespace or metricDefiniton value provided") |
|
|
|
|
} |
|
|
|
|
metricNamespace = params.MetricDefinition |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
metricNamespaceArray := strings.Split(*params.MetricNamespace, "/") |
|
|
|
|
metricNamespaceArray := strings.Split(*metricNamespace, "/") |
|
|
|
|
var resourceNameArray []string |
|
|
|
|
if params.ResourceName != nil && *params.ResourceName != "" { |
|
|
|
|
resourceNameArray = strings.Split(*params.ResourceName, "/") |
|
|
|
@ -40,7 +46,7 @@ func (params *urlBuilder) buildResourceURI() *string { |
|
|
|
|
provider := metricNamespaceArray[0] |
|
|
|
|
metricNamespaceArray = metricNamespaceArray[1:] |
|
|
|
|
|
|
|
|
|
if strings.HasPrefix(strings.ToLower(*params.MetricNamespace), "microsoft.storage/storageaccounts/") && |
|
|
|
|
if strings.HasPrefix(strings.ToLower(*metricNamespace), "microsoft.storage/storageaccounts/") && |
|
|
|
|
params.ResourceName != nil && |
|
|
|
|
!strings.HasSuffix(*params.ResourceName, "default") { |
|
|
|
|
resourceNameArray = append(resourceNameArray, "default") |
|
|
|
@ -64,7 +70,7 @@ func (params *urlBuilder) buildResourceURI() *string { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
resourceURI := strings.Join(urlArray, "/") |
|
|
|
|
return &resourceURI |
|
|
|
|
return &resourceURI, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// BuildMetricsURL checks the metric properties to see which form of the url
|
|
|
|
@ -74,7 +80,7 @@ func (params *urlBuilder) BuildMetricsURL() string { |
|
|
|
|
|
|
|
|
|
// Prior to Grafana 9, we had a legacy query object rather than a resourceURI, so we manually create the resource URI
|
|
|
|
|
if resourceURI == nil || *resourceURI == "" { |
|
|
|
|
resourceURI = params.buildResourceURI() |
|
|
|
|
resourceURI, _ = params.buildResourceURI() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return fmt.Sprintf("%s/providers/microsoft.insights/metrics", *resourceURI) |
|
|
|
|