yunion.io/x/cloudmux@v0.3.10-0-alpha.1/pkg/multicloud/azure/autoscale_setting.go (about) 1 // Copyright 2019 Yunion 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package azure 16 17 import ( 18 "net/url" 19 ) 20 21 type SAutoscaleSettingResource struct { 22 AzureTags 23 region *SRegion 24 25 Properties SAutoscaleSettingProperties 26 ID string 27 Location string 28 Name string 29 Type string 30 } 31 32 type SAutoscaleSettingProperties struct { 33 Enabled bool 34 Name string 35 TargetResourceUri string 36 Profiles []SAutoscaleProfile 37 } 38 39 type SAutoscaleProfile struct { 40 Capacity SScaleCapacity 41 FixedDate STimeWindow 42 Name string 43 Recurrence SRecurrence 44 Rule []SScaleRule 45 } 46 47 type SRecurrence struct { 48 Frequency string 49 Schedule SRecurrentSchedule 50 } 51 52 type SRecurrentSchedule struct { 53 Days []string 54 Hours []int 55 Minutes []int 56 TimeZone string 57 } 58 59 type STimeWindow struct { 60 // 采用 ISO 8601 格式的配置文件的结束时间。 61 End string 62 // 采用 ISO 8601 格式的配置文件的开始时间。 63 Start string 64 TimeZone string 65 } 66 67 type SScaleAction struct { 68 Cooldown string 69 Direction string 70 Type string 71 Value string 72 } 73 74 // 可以在此配置文件期间使用的实例数。 75 type SScaleCapacity struct { 76 Default string 77 Maximum string 78 Minimum string 79 } 80 81 // Decrease string 82 // Increase string 83 // None string 84 85 // 为缩放操作提供触发器和参数的规则。 86 type SScaleRule struct { 87 MetricTrigger SMetricTrigger 88 ScaleAction SScaleAction 89 } 90 91 // 维度运算符。 仅支持"Equals"和"NotEquals"。 "Equals"等于任何值。 "NotEquals"不等于所有值 92 type SScaleRuleMetricDimensionOperationType struct { 93 Equals string 94 NotEquals string 95 } 96 97 //触发缩放规则时应发生的操作类型。 98 // ChangeCount string 99 // ExactCount string 100 // PercentChangeCount string 101 102 type SScaleRuleMetricDimension struct { 103 DimensionName string 104 Operator string 105 Values []string 106 } 107 108 type SMetricTrigger struct { 109 // 维度条件的列表。 例如: [{"DimensionName": "AppName"、"Operator": "Equals"、"Values": ["App1"]}、{"DimensionName": "Deployment"、"Operator": "Equals"、"Values": ["default"]}]。 110 Dimensions []SScaleRuleMetricDimension 111 112 // 一个值,该值指示度量值是否应除以每个实例。 113 DividePerInstance bool 114 115 // 定义规则监视内容的指标的名称。 116 MetricName string 117 118 // 定义规则监视内容的指标的命名空间。 119 MetricNamespace string 120 121 // 规则监视的资源的资源标识符。 122 MetricResourceUri string 123 124 // 用于比较指标数据和阈值的运算符。 125 // Equals GreaterThan GreaterThanOrEqual LessThan LessThanOrEqual NotEquals 126 Operator string 127 128 // 指标统计信息类型。 来自多个实例的指标进行组合的方式。 129 // Average Max Min Sum 130 Statistic string 131 132 // 触发缩放操作的度量值的阈值。 133 Threshold int 134 135 // 时间聚合类型。 随着时间推移,收集的数据应如何组合。 默认值为 Average。 136 // Average Count Last Maximum Minimum Total 137 TimeAggregation string 138 139 //规则监视的度量值的粒度。 必须是从指标的指标定义返回的预定义值之一。 必须介于 12 小时和 1 分钟之间。 140 TimeGrain string 141 142 //收集实例数据的时间范围。 此值必须大于指标集合中的延迟,可能会因资源而异。 必须介于 12 小时和 5 分钟之间。 143 TimeWindow string 144 } 145 146 func (r *SRegion) GetAutoscaleSettingResources() ([]SAutoscaleSettingResource, error) { 147 result := []SAutoscaleSettingResource{} 148 resource := "microsoft.insights/autoscalesettings" 149 err := r.client.list(resource, url.Values{"api-version": []string{"2015-04-01"}}, &result) 150 if err != nil { 151 return nil, err 152 } 153 return result, nil 154 }