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  }