disk.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 "fmt"
19 "time"
20
21 "github.com/sacloud/iaas-api-go/types"
22 )
23
24 // Disk ディスク
25 type Disk struct {
26 ID types.ID `json:",omitempty" yaml:"id,omitempty" structs:",omitempty"`
27 Name string `json:",omitempty" yaml:"name,omitempty" structs:",omitempty"`
28 Description string `yaml:"description"`
29 Tags types.Tags `yaml:"tags"`
30 Icon *Icon `json:",omitempty" yaml:"icon,omitempty" structs:",omitempty"`
31 CreatedAt *time.Time `json:",omitempty" yaml:"created_at,omitempty" structs:",omitempty"`
32 ModifiedAt *time.Time `json:",omitempty" yaml:"modified_at,omitempty" structs:",omitempty"`
33 Availability types.EAvailability `json:",omitempty" yaml:"availability,omitempty" structs:",omitempty"`
34 ServiceClass string `json:",omitempty" yaml:"service_class,omitempty" structs:",omitempty"`
35 SizeMB int `json:",omitempty" yaml:"size_mb,omitempty" structs:",omitempty"`
36 MigratedMB int `json:",omitempty" yaml:"migrated_mb,omitempty" structs:",omitempty"`
37 Connection types.EDiskConnection `json:",omitempty" yaml:"connection,omitempty" structs:",omitempty"`
38 EncryptionAlgorithm types.EDiskEncryptionAlgorithm `json:",omitempty" yaml:"encryption_algorithm,omitempty" structs:",omitempty"`
39 ConnectionOrder int `json:",omitempty" yaml:"connection_order,omitempty" structs:",omitempty"`
40 ReinstallCount int `json:",omitempty" yaml:"reinstall_count,omitempty" structs:",omitempty"`
41 JobStatus *MigrationJobStatus `json:",omitempty" yaml:"job_status,omitempty" structs:",omitempty"`
42 Plan *DiskPlan `json:",omitempty" yaml:"plan,omitempty" structs:",omitempty"`
43 SourceDisk *Disk `json:",omitempty" yaml:"source_disk,omitempty" structs:",omitempty"`
44 SourceArchive *Archive `json:",omitempty" yaml:"source_archive,omitempty" structs:",omitempty"`
45 BundleInfo *BundleInfo `json:",omitempty" yaml:"bundle_info,omitempty" structs:",omitempty"`
46 Storage *Storage `json:",omitempty" yaml:"storage,omitempty" structs:",omitempty"`
47 Server *Server `json:",omitempty" yaml:"server,omitempty" structs:",omitempty"`
48 EncryptionKey *EncryptionKey `json:",omitempty" yaml:"kms_key,omitempty" structs:",omitempty"`
49 }
50
51 type EncryptionKey struct {
52 KMSKeyID types.ID `json:",omitempty" yaml:"kms_key_id,omitempty" structs:",omitempty"`
53 }
54
55 type KMSKey struct {
56 ID types.ID `json:",omitempty" yaml:"id,omitempty" structs:",omitempty"`
57 }
58
59 // MigrationJobStatus マイグレーションジョブステータス
60 type MigrationJobStatus struct {
61 Status string `json:",omitempty" yaml:"status,omitempty" structs:",omitempty"` // ステータス
62 ConfigError *JobConfigError `json:",omitempty" yaml:"config_error,omitempty" structs:",omitempty"`
63 Delays *struct { // Delays
64 Start *struct { // 開始
65 Max int `json:",omitempty" yaml:"max,omitempty" structs:",omitempty"` // 最大
66 Min int `json:",omitempty" yaml:"min,omitempty" structs:",omitempty"` // 最小
67 } `json:",omitempty" yaml:"start,omitempty" structs:",omitempty"`
68
69 Finish *struct { // 終了
70 Max int `json:",omitempty" yaml:"max,omitempty" structs:",omitempty"` // 最大
71 Min int `json:",omitempty" yaml:"min,omitempty" structs:",omitempty"` // 最小
72 } `json:",omitempty" yaml:"finish,omitempty" structs:",omitempty"`
73 }
74 }
75
76 // JobConfigError マイグレーションジョブのエラー
77 type JobConfigError struct {
78 ErrorCode string `json:",omitempty" yaml:"error_code,omitempty" structs:",omitempty"`
79 ErrorMsg string `json:",omitempty" yaml:"error_msg,omitempty" structs:",omitempty"`
80 Status string `json:",omitempty" yaml:"status,omitempty" structs:",omitempty"`
81 }
82
83 // String マイグレーションジョブエラーの文字列表現
84 func (e *JobConfigError) String() string {
85 return fmt.Sprintf("%s: %s", e.ErrorCode, e.ErrorMsg)
86 }
87
88 // ResizePartitionRequest リサイズ時のオプション
89 type ResizePartitionRequest struct {
90 Background bool `yaml:"background"`
91 }
92