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  }