github.com/sacloud/iaas-api-go@v1.12.0/naked/server.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 // Server サーバ 24 type Server 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 HostName string `json:",omitempty" yaml:"host_name,omitempty" structs:",omitempty"` 34 ServiceClass string `json:",omitempty" yaml:"service_class,omitempty" structs:",omitempty"` 35 InterfaceDriver types.EInterfaceDriver `json:",omitempty" yaml:"interface_driver,omitempty" structs:",omitempty"` 36 ServerPlan *ServerPlan `json:",omitempty" yaml:"server_plan,omitempty" structs:",omitempty"` 37 Zone *Zone `json:",omitempty" yaml:"zone,omitempty" structs:",omitempty"` 38 Instance *Instance `json:",omitempty" yaml:"instance,omitempty" structs:",omitempty"` 39 Disks []*Disk `json:",omitempty" yaml:"disks,omitempty" structs:",omitempty"` 40 Interfaces []*Interface `json:",omitempty" yaml:"interfaces,omitempty" structs:",omitempty"` 41 PrivateHost *PrivateHost `json:",omitempty" yaml:"private_host,omitempty" structs:",omitempty"` 42 WaitDiskMigration bool `yaml:"wait_disk_migration"` 43 ConnectedSwitches []*ConnectedSwitch `json:",omitempty" yaml:"connected_switches,omitempty" structs:",omitempty"` 44 } 45 46 // ConnectedSwitch サーバ作成時に指定する接続先スイッチ 47 type ConnectedSwitch struct { 48 ID types.ID `json:",omitempty" yaml:"id,omitempty" structs:",omitempty"` 49 Scope types.EScope `json:",omitempty" yaml:"scope,omitempty" structs:",omitempty"` 50 } 51 52 // MouseRequestButtons マウスボタン 53 type MouseRequestButtons struct { 54 L bool // 左ボタン 55 R bool // 右ボタン 56 M bool // 中ボタン 57 } 58 59 // DeleteServerWithDiskParameter サーバ削除時に接続されているディスクを削除するためのパラメータ 60 type DeleteServerWithDiskParameter struct { 61 WithDisk []types.ID 62 } 63 64 // ServerBootParameter サーバ起動時に指定可能なパラメータ 65 type ServerBootParameter struct { 66 UserBootVariables *ServerBootVariables 67 } 68 69 // ServerBootVariables サーバ起動時に指定可能なパラメータ、現時点ではcloud-initにのみ対応 70 type ServerBootVariables struct { 71 CloudInit *CloudInitParameter 72 } 73 74 // CloudInitParameter cloud-initに渡すUserData 75 // 76 // Note: libsacloudレベルではUserData(cloud-config)は文字列として扱い中身までは関知しない 77 type CloudInitParameter struct { 78 UserData string 79 }