github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/sms/v3/tasks/results.go (about)

     1  package tasks
     2  
     3  // CreateResp is a auto create Response Object
     4  type CreateResp struct {
     5  	// 创建成功返回的任务id
     6  	ID string `json:"id"`
     7  }
     8  
     9  // MigrateTask 查询指定迁移任务的返回体
    10  type MigrateTask struct {
    11  	// 任务名称
    12  	Name string `json:"name"`
    13  	// 任务类型,创建时必选,更新时可选
    14  	Type string `json:"type"`
    15  	// 操作系统类型,分为WINDOWS和LINUX,创建时必选,更新时可选
    16  	OsType string `json:"os_type"`
    17  	// 迁移任务id
    18  	Id string `json:"id"`
    19  	// 进程优先级
    20  	//   0:低
    21  	//   1:标准(默认)
    22  	//   2:高
    23  	Priority int `json:"priority"`
    24  	// 迁移完成后是否启动目的端服务器
    25  	//   true:启动
    26  	//   false:停止
    27  	StartTargetServer bool `json:"start_target_server"`
    28  	// 企业项目id
    29  	EnterpriseProjectId string `json:"enterprise_project_id"`
    30  	// 目的端服务器的IP地址。
    31  	//   公网迁移时请填写弹性IP地址
    32  	//   专线迁移时请填写私有IP地址
    33  	MigrationIp string `json:"migration_ip"`
    34  	// 目的端服务器的区域名称
    35  	Region string `json:"region_name"`
    36  	// 目的端服务器的区域ID
    37  	RegionID string `json:"region_id"`
    38  	// 目的端服务器所在项目名称
    39  	Project string `json:"project_name"`
    40  	// 目的端服务器所在项目ID
    41  	ProjectID string `json:"project_id"`
    42  	// 模板ID
    43  	VmTemplateId string `json:"vm_template_id"`
    44  	// 源端服务器信息
    45  	SourceServer SourceServer `json:"source_server"`
    46  	// 目的端服务器信息
    47  	TargetServer TaskTargetServer `json:"target_server"`
    48  	// 任务状态
    49  	State string `json:"state"`
    50  
    51  	// 连接状态
    52  	Connected bool `json:"connected"`
    53  	// 迁移速率,单位:MB/S
    54  	MigrateSpeed float32 `json:"migrate_speed"`
    55  	// 压缩率
    56  	CompressRate float32 `json:"compress_rate"`
    57  	// 错误信息
    58  	ErrorMsg string `json:"error_json"`
    59  
    60  	// 任务创建时间
    61  	CreateDate int `json:"create_date"`
    62  	// 任务开始时间
    63  	StartDate int `json:"start_date"`
    64  	// 任务结束时间
    65  	FinishDate int `json:"finish_date"`
    66  	// 预估完成时间
    67  	EstimateCompleteTime int `json:"estimate_complete_time"`
    68  	// 迁移剩余时间(秒)
    69  	RemainSeconds int `json:"remain_seconds"`
    70  	// 任务总耗时
    71  	TotalTime int `json:"total_time"`
    72  	// 目的端的快照id
    73  	TargetSnapshotId string `json:"target_snapshot_id"`
    74  	// 克隆服务器信息
    75  	CloneServer CloneServer `json:"clone_server"`
    76  	// 任务包含的子任务列表
    77  	SubTasks []SubTask `json:"sub_tasks"`
    78  }
    79  
    80  // SourceServer 源端服务器
    81  type SourceServer struct {
    82  	// 源端在SMS数据库中的ID
    83  	Id string `json:"id"`
    84  	// 源端服务器ip,注册源端时必选,更新非必选
    85  	Ip string `json:"ip"`
    86  	// 用来区分不同源端服务器的名称
    87  	Name string `json:"name"`
    88  	// 源端主机名,注册源端必选,更新非必选
    89  	Hostname string `json:"hostname"`
    90  	// 源端服务器的OS类型,分为Windows和Linux,注册必选,更新非必选
    91  	OsType string `json:"os_type"`
    92  	// 操作系统版本,注册必选,更新非必选
    93  	OsVersion string `json:"os_version"`
    94  	// 源端服务器启动类型,如BIOS或者UEFI
    95  	Firmware string `json:"firmware"`
    96  	// CPU个数,单位vCPU
    97  	CpuQuantity int `json:"cpu_quantity"`
    98  	// 内存大小,单位MB
    99  	Memory int `json:"memory"`
   100  	// 源端服务器的磁盘信息
   101  	Disks []ServerDisk `json:"disks"`
   102  	// Linux 必选,源端的Btrfs信息。如果源端不存在Btrfs,则为[]
   103  	BtrfsList []BtrfsFileSystem `json:"btrfs_list"`
   104  	// 源端服务器的网卡信息
   105  	Networks []NetWork `json:"networks"`
   106  	// 租户的domainId
   107  	DomainId string `json:"domain_id"`
   108  	// 是否安装rsync组件,Linux系统此参数为必选
   109  	HasRsync bool `json:"has_rsync"`
   110  	// Linux场景必选,源端是否是半虚拟化
   111  	Paravirtualization bool `json:"paravirtualization"`
   112  	// Linux必选,裸设备列表
   113  	RawDevices string `json:"raw_devices"`
   114  	// Windows 必选,是否缺少驱动文件
   115  	DriverFiles bool `json:"driver_files"`
   116  	// Windows必选,是否存在不正常服务
   117  	SystemServices bool `json:"system_services"`
   118  	// Windows必选,权限是否满足要求
   119  	AccountRights bool `json:"account_rights"`
   120  	// Linux必选,系统引导类型,BOOT_LOADER(GRUB/LILO)
   121  	BootLoader string `json:"boot_loader"`
   122  	// Windows必选,系统目录
   123  	SystemDir string `json:"system_dir"`
   124  	// Linux必选,如果没有卷组,输入[]
   125  	VolumeGroups []VolumeGroups `json:"volume_groups"`
   126  	// Agent版本
   127  	AgentVersion string `json:"agent_version"`
   128  }
   129  
   130  // ServerDisk 磁盘信息
   131  type ServerDisk struct {
   132  	// 磁盘名称
   133  	Name string `json:"name"`
   134  	// 磁盘的分区类型,添加源端时源端磁盘必选
   135  	PartitionStyle string `json:"partition_style"`
   136  	// 磁盘类型
   137  	DeviceType string `json:"device_use"`
   138  	// 磁盘总大小,以字节为单位
   139  	Size int64 `json:"size"`
   140  	// 磁盘已使用大小,以字节为单位
   141  	UsedSize int64 `json:"used_size"`
   142  	// 磁盘上的物理分区信息
   143  	PhysicalVolumes []PhysicalVolume `json:"physical_volumes"`
   144  	// 是否为系统盘
   145  	OsDisk bool `json:"os_disk"`
   146  	// Linux系统 目的端ECS中与源端关联的磁盘名称
   147  	RelationName string `json:"relation_name"`
   148  }
   149  
   150  // PhysicalVolume 使用大小
   151  type PhysicalVolume struct {
   152  	// 分区类型,普通分区,启动分区,系统分区
   153  	DeviceType string `json:"device_use"`
   154  	// 文件系统类型
   155  	FileSystem string `json:"file_system"`
   156  	// 顺序
   157  	Index int `json:"index"`
   158  	// 挂载点
   159  	MountPoint string `json:"mount_point"`
   160  	// 名称,windows表示盘符,Linux表示设备号
   161  	Name string `json:"name"`
   162  	// 大小
   163  	Size int64 `json:"size"`
   164  	// 使用大小
   165  	UsedSize int64 `json:"used_size"`
   166  	// GUID,可从源端查询
   167  	UUID string `json:"uuid"`
   168  	// 每个cluster大小
   169  	SizePerCluster int `json:"size_per_cluster"`
   170  }
   171  
   172  // BtrfsFileSystem btrfs分区类型
   173  type BtrfsFileSystem struct {
   174  	// 文件系统名称
   175  	Name string `json:"name"`
   176  	// 文件系统标签,若无标签为空字符串
   177  	Label string `json:"label"`
   178  	// 文件系统的uuid
   179  	UUID string `json:"uuid"`
   180  	// btrfs包含的设备名称
   181  	Device string `json:"device"`
   182  	// 文件系统数据占用大小
   183  	Size int64 `json:"size"`
   184  	// btrfs节点大小
   185  	Nodesize int `json:"nodesize"`
   186  	// 扇区大小
   187  	Sectorsize int `json:"sectorsize"`
   188  	// 数据配置(RAD)
   189  	DataProfile string `json:"data_profile"`
   190  	// 文件系统配置(RAD)
   191  	SystemProfile string `json:"system_profile"`
   192  	// 元数据配置(RAD)
   193  	MetadataProfile string `json:"metadata_profile"`
   194  	// Btrfs文件系统信息
   195  	GlobalReserve1 string `json:"global_reserve1"`
   196  	// Btrfs卷已使用空间大小
   197  	UsedSize int64 `json:"g_vol_used_size"`
   198  	// 默认子卷ID
   199  	DefaultSubvolid string `json:"default_subvolid"`
   200  	// 默认子卷名称
   201  	DefaultSubvolName string `json:"default_subvol_name"`
   202  	// 默认子卷挂载路径/BTRFS文件系统的挂载路径
   203  	DefaultSubvolMountpath string `json:"default_subvol_mountpath"`
   204  	// 子卷信息
   205  	Subvolumn []BtrfsSubvolumn `json:"subvolumn"`
   206  }
   207  
   208  // BtrfsSubvolumn btrfs子卷信息
   209  type BtrfsSubvolumn struct {
   210  	// 父卷的uuid
   211  	UUID string `json:"uuid"`
   212  	// 子卷是否为快照
   213  	IsSnapshot string `json:"is_snapshot"`
   214  	// 子卷的id
   215  	SubvolId string `json:"subvol_id"`
   216  	// 父卷id
   217  	ParentId string `json:"parent_id"`
   218  	// 子卷的名称
   219  	SubvolName string `json:"subvol_name"`
   220  	// 子卷的挂载路径
   221  	SubvolMountPath string `json:"subvol_mount_path"`
   222  }
   223  
   224  // NetWork 网卡实体类
   225  type NetWork struct {
   226  	// 网卡的名称
   227  	Name string `json:"name"`
   228  	// 该网卡绑定的IP
   229  	Ip string `json:"ip"`
   230  	// 掩码
   231  	Netmask string `json:"netmask"`
   232  	// 网关
   233  	Gateway string `json:"gateway"`
   234  	// Linux必选,网卡的MTU
   235  	Mtu int `json:"mtu"`
   236  	// Mac地址
   237  	Mac string `json:"mac"`
   238  	// 数据库Id
   239  	Id string `json:"id"`
   240  }
   241  
   242  // VolumeGroups 逻辑卷组信息
   243  type VolumeGroups struct {
   244  	// Pv信息
   245  	Components string `json:"components"`
   246  	// 剩余空间
   247  	FreeSize int64 `json:"free_size"`
   248  	// lv信息
   249  	LogicalVolumes []LogicalVolumes `json:"logical_volumes"`
   250  	// 名称
   251  	Name string `json:"name"`
   252  	// 大小
   253  	Size int64 `json:"size"`
   254  }
   255  
   256  // LogicalVolumes 逻辑卷信息
   257  type LogicalVolumes struct {
   258  	// 块数量
   259  	BlockCount int `json:"block_count"`
   260  	// 块大小
   261  	BlockSize int `json:"block_size"`
   262  	// 文件系统
   263  	FileSystem string `json:"file_system"`
   264  	// inode数量
   265  	InodeSize int `json:"inode_size"`
   266  	// 挂载点
   267  	MountPoint string `json:"mount_point"`
   268  	// 名称
   269  	Name string `json:"name"`
   270  	// 大小
   271  	Size int64 `json:"size"`
   272  	// 使用大小
   273  	UsedSize int64 `json:"used_size"`
   274  	// 剩余空间
   275  	FreeSize int64 `json:"free_size"`
   276  }
   277  
   278  // TaskTargetServer 目的端服务器
   279  type TaskTargetServer struct {
   280  	// 目的端在SMS数据库中的ID
   281  	Id string `json:"id"`
   282  	// 目的端服务器ID,自动创建虚拟机不需要这个参数
   283  	VMID string `json:"vm_id"`
   284  	// 目的端服务器的名称
   285  	Name string `json:"name"`
   286  	// 目的端服务器ip
   287  	Ip string `json:"ip"`
   288  	// 源端服务器的OS类型,分为Windows和Linux,注册必选,更新非必选
   289  	OsType string `json:"os_type"`
   290  	// 操作系统版本,注册必选,更新非必选
   291  	OsVersion string `json:"os_version"`
   292  	// Windows必选,系统目录
   293  	SystemDir string `json:"system_dir"`
   294  	// 目的端磁盘信息,一般和源端保持一致
   295  	Disks []TargetDisk `json:"disks"`
   296  	// lvm信息,一般和源端保持一致
   297  	VolumeGroups []VolumeGroups `json:"volume_groups"`
   298  	// Linux 必选,源端的Btrfs信息。如果源端不存在Btrfs,则为[]
   299  	BtrfsList []string `json:"btrfs_list"`
   300  	// 目的端代理镜像磁盘id
   301  	ImageDiskId string `json:"image_disk_id"`
   302  	// 目的端回滚快照id
   303  	CutoveredSnapshotIds string `json:"cutovered_snapshot_ids"`
   304  }
   305  
   306  // TargetDisk 目的端磁盘
   307  type TargetDisk struct {
   308  	// 判断是普通分区,启动分区还是系统分区
   309  	DeviceType string `json:"device_use"`
   310  	// 磁盘id
   311  	DiskId string `json:"disk_id"`
   312  	// 磁盘名称
   313  	Name string `json:"name"`
   314  	// 逻辑卷信息
   315  	PhysicalVolumes []TargetPhysicalVolumes `json:"physical_volumes"`
   316  	// 大小
   317  	Size int64 `json:"size"`
   318  	// 已使用大小
   319  	UsedSize int64 `json:"used_size"`
   320  }
   321  
   322  // TargetPhysicalVolumes 物理分区
   323  type TargetPhysicalVolumes struct {
   324  	// 分区类型
   325  	DeviceType string `json:"device_use"`
   326  	// 文件系统
   327  	FileSystem string `json:"file_system"`
   328  	// 编号
   329  	Index int `json:"index"`
   330  	// 挂载点
   331  	MountPoint string `json:"mount_point"`
   332  	// 名称
   333  	Name string `json:"name"`
   334  	// 大小
   335  	Size int64 `json:"size"`
   336  	// 使用大小
   337  	UsedSize int64 `json:"used_size"`
   338  	// uuid
   339  	UUID string `json:"uuid"`
   340  }
   341  
   342  // CloneServer 克隆服务器类
   343  type CloneServer struct {
   344  	// 克隆服务器ID
   345  	VMID string `json:"vm_id"`
   346  	// 克隆虚拟机的名称
   347  	Name string `json:"name"`
   348  	// 克隆错误信息
   349  	CloneError string `json:"clone_error"`
   350  	// 克隆状态
   351  	CloneState string `json:"clone_state"`
   352  	// 克隆错误信息描述
   353  	ErrorMsg string `json:"error_msg"`
   354  }
   355  
   356  // SubTask 修改任务进度
   357  type SubTask struct {
   358  	// 子任务名称
   359  	Name string `json:"name"`
   360  	// 子任务的进度,取值为0-100之间的整数
   361  	Progress int `json:"progress"`
   362  	// 子任务开始时间
   363  	StartDate int `json:"start_date"`
   364  	// 子任务结束时间(如果子任务还没有结束,则为空)
   365  	EndDate int `json:"end_date"`
   366  	// 迁移速率,Mbit/s
   367  	MigrateSpeed float32 `json:"migrate_speed"`
   368  	// 触发子任务的用户操作名称
   369  	UserOp string `json:"user_op"`
   370  	// 迁移或同步时,具体的迁移详情
   371  	ProcessTrace string `json:"process_trace"`
   372  }