github.com/sacloud/iaas-api-go@v1.12.0/naked/auto_scale.go (about)

     1  // Copyright 2022-2023 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  }