github.com/sacloud/iaas-api-go@v1.12.0/naked/disk.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  	"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  }
    49  
    50  // MigrationJobStatus マイグレーションジョブステータス
    51  type MigrationJobStatus struct {
    52  	Status      string          `json:",omitempty" yaml:"status,omitempty" structs:",omitempty"` // ステータス
    53  	ConfigError *JobConfigError `json:",omitempty" yaml:"config_error,omitempty" structs:",omitempty"`
    54  	Delays      *struct {       // Delays
    55  		Start *struct { // 開始
    56  			Max int `json:",omitempty" yaml:"max,omitempty" structs:",omitempty"` // 最大
    57  			Min int `json:",omitempty" yaml:"min,omitempty" structs:",omitempty"` // 最小
    58  		} `json:",omitempty" yaml:"start,omitempty" structs:",omitempty"`
    59  
    60  		Finish *struct { // 終了
    61  			Max int `json:",omitempty" yaml:"max,omitempty" structs:",omitempty"` // 最大
    62  			Min int `json:",omitempty" yaml:"min,omitempty" structs:",omitempty"` // 最小
    63  		} `json:",omitempty" yaml:"finish,omitempty" structs:",omitempty"`
    64  	}
    65  }
    66  
    67  // JobConfigError マイグレーションジョブのエラー
    68  type JobConfigError struct {
    69  	ErrorCode string `json:",omitempty" yaml:"error_code,omitempty" structs:",omitempty"`
    70  	ErrorMsg  string `json:",omitempty" yaml:"error_msg,omitempty" structs:",omitempty"`
    71  	Status    string `json:",omitempty" yaml:"status,omitempty" structs:",omitempty"`
    72  }
    73  
    74  // String マイグレーションジョブエラーの文字列表現
    75  func (e *JobConfigError) String() string {
    76  	return fmt.Sprintf("%s: %s", e.ErrorCode, e.ErrorMsg)
    77  }
    78  
    79  // ResizePartitionRequest リサイズ時のオプション
    80  type ResizePartitionRequest struct {
    81  	Background bool `yaml:"background"`
    82  }