auto_scale.go raw

   1  // Copyright 2022-2025 The sacloud/iaas-api-go Authors
   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 naked
  16  
  17  import (
  18  	"time"
  19  
  20  	"github.com/sacloud/iaas-api-go/types"
  21  )
  22  
  23  // AutoScale オートスケール
  24  type AutoScale struct {
  25  	ID           types.ID            `json:",omitempty" yaml:"id,omitempty" structs:",omitempty"`
  26  	Name         string              `json:",omitempty" yaml:"name,omitempty" structs:",omitempty"`
  27  	Description  string              `yaml:"description"`
  28  	Tags         types.Tags          `yaml:"tags"`
  29  	Icon         *Icon               `json:",omitempty" yaml:"icon,omitempty" structs:",omitempty"`
  30  	CreatedAt    *time.Time          `json:",omitempty" yaml:"created_at,omitempty" structs:",omitempty"`
  31  	ModifiedAt   *time.Time          `json:",omitempty" yaml:"modified_at,omitempty" structs:",omitempty"`
  32  	Availability types.EAvailability `json:",omitempty" yaml:"availability,omitempty" structs:",omitempty"`
  33  	Provider     *Provider           `json:",omitempty" yaml:"provider,omitempty" structs:",omitempty"`
  34  	Settings     *AutoScaleSettings  `json:",omitempty" yaml:"settings,omitempty" structs:",omitempty"`
  35  	SettingsHash string              `json:",omitempty" yaml:"settings_hash,omitempty" structs:",omitempty"`
  36  	Status       *AutoScaleStatus    `json:",omitempty" yaml:"status" structs:",omitempty"`
  37  	ServiceClass string              `json:",omitempty" yaml:"service_class,omitempty" structs:",omitempty"`
  38  }
  39  
  40  // AutoScaleSettingsUpdate オートスケール更新パラメータ
  41  type AutoScaleSettingsUpdate struct {
  42  	Settings     *AutoScaleSettings `json:",omitempty" yaml:"settings,omitempty" structs:",omitempty"`
  43  	SettingsHash string             `json:",omitempty" yaml:"settings_hash,omitempty" structs:",omitempty"`
  44  }
  45  
  46  // AutoScaleSettings セッティング
  47  type AutoScaleSettings struct {
  48  	TriggerType            types.EAutoScaleTriggerType
  49  	CPUThresholdScaling    *AutoScaleCPUThresholdScaling    `json:",omitempty" yaml:",omitempty" structs:",omitempty"`
  50  	RouterThresholdScaling *AutoScaleRouterThresholdScaling `json:",omitempty" yaml:",omitempty" structs:",omitempty"`
  51  	ScheduleScaling        []*AutoScaleScheduleScaling
  52  	Zones                  []string `json:"SakuraCloudZones"`
  53  	Config                 string   `json:",omitempty" yaml:",omitempty"`
  54  	Disabled               bool
  55  }
  56  
  57  type AutoScaleCPUThresholdScaling struct {
  58  	ServerPrefix string `json:",omitempty" yaml:",omitempty"`
  59  	Up           int    `json:",omitempty" yaml:",omitempty"`
  60  	Down         int    `json:",omitempty" yaml:",omitempty"`
  61  }
  62  
  63  type AutoScaleRouterThresholdScaling struct {
  64  	RouterPrefix string `json:",omitempty" yaml:",omitempty"`
  65  	Direction    string `json:",omitempty" yaml:",omitempty"`
  66  	Mbps         int    `json:",omitempty" yaml:",omitempty"`
  67  }
  68  
  69  type AutoScaleScheduleScaling struct {
  70  	Action    types.EAutoScaleAction
  71  	Hour      int
  72  	Minute    int
  73  	DayOfWeek []types.EDayOfTheWeek
  74  }
  75  
  76  // AutoScaleStatus ステータス
  77  type AutoScaleStatus struct {
  78  	RegisteredBy string           `json:",omitempty" yaml:",omitempty"`
  79  	APIKey       *AutoScaleAPIKey `json:",omitempty" yaml:",omitempty"`
  80  }
  81  
  82  type AutoScaleAPIKey struct {
  83  	ID string `json:",omitempty" yaml:",omitempty"`
  84  }
  85  
  86  // AutoScaleRunningStatus /statusの戻り値
  87  type AutoScaleRunningStatus struct {
  88  	LatestLogs    []string
  89  	ResourcesText string
  90  }
  91