// Copyright 2019 Yunion // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package compute import ( "time" "yunion.io/x/jsonutils" "yunion.io/x/onecloud/pkg/apis" billing_api "yunion.io/x/onecloud/pkg/apis/billing" ) type SchedtagConfig struct { apis.Meta // swagger:ignore Id string `json:"id"` // 调度策略 // required: 必须使用 // prefer: 尽量使用 // avoid: 避免使用 // exclude: 禁止使用 // enmu: required, prefer, avoid, exclude Strategy string `json:"strategy"` // swagger:ignore Weight int `json:"weight"` // 资源类型 // hosts: 宿主机 // networks: 网络 // storages: 存储 // enmu: hosts, storages, networks ResourceType string `json:"resource_type"` } type NetworkConfig struct { apis.Meta // 网卡序号, 从0开始 // required: true Index int `json:"index"` // 子网名称或ID // required: true Network string `json:"network"` // swagger:ignore Wire string `json:"wire"` // 内网地址 Exit bool `json:"exit"` Private bool `json:"private"` // 网卡MAC地址 // requried: false Mac string `json:"mac"` // 如果是批量创建,指定每个网卡MAC地址 // requried: false Macs []string `json:"macs"` // 子网内的IPv4地址, 若不指定会按照子网的地址分配策略分配一个IP地址 // required: false Address string `json:"address"` // 如果是批量创建,指定每台主机子网内的IPv4地址 // required: false Addresses []string `json:"addresses"` // 子网内的IPv6地址 // required: false Address6 string `json:"address6"` // 如果是批量创建,指定每台主机子网内的IPv4地址 // required: false Addresses6 []string `json:"addresses6"` // 是否要求分配IPv6地址 // required: false RequireIPv6 bool `json:"require_ipv6"` // 只分配IPv6地址,禁用IPv4 // required: false StrictIPv6 bool `json:"strict_ipv6"` // 驱动方式 // 若指定镜像的网络驱动方式,此参数会被覆盖 Driver string `json:"driver"` BwLimit int `json:"bw_limit"` Vip bool `json:"vip"` Reserved bool `json:"reserved"` NumQueues int `json:"num_queues"` RxTrafficLimit int64 `json:"rx_traffic_limit"` TxTrafficLimit int64 `json:"tx_traffic_limit"` NetType TNetworkType `json:"net_type"` IsDefault bool `json:"is_default"` // sriov nic SriovDevice *IsolatedDeviceConfig `json:"sriov_device"` RequireDesignatedIP bool `json:"require_designated_ip"` RequireTeaming bool `json:"require_teaming"` TryTeaming bool `json:"try_teaming"` StandbyPortCount int `json:"standby_port_count"` StandbyAddrCount int `json:"standby_addr_count"` PortMappings GuestPortMappings `json:"port_mappings"` // 计费模式 BillingType billing_api.TBillingType `json:"billing_type"` // 计量模式 ChargeType billing_api.TNetChargeType `json:"charge_type"` // swagger:ignore Project string `json:"project_id"` // swagger:ignore Domain string `json:"domain_id"` Ifname string `json:"ifname"` Schedtags []*SchedtagConfig `json:"schedtags"` // network secgroups Secgroups []string `json:"secgroups"` } type AttachNetworkInput struct { // 添加的网卡的配置 // required: false Nets []*NetworkConfig `json:"nets"` // 添加的网卡的配置 // required: false NetDesc []string `json:"net_desc"` // 添加后不立即同步配置 DisableSyncConfig *bool `json:"disable_sync_config"` } type DiskConfig struct { apis.Meta // 挂载到虚拟机的磁盘顺序, -1代表不挂载任何虚拟机 // default: -1 Index int `json:"index"` BootIndex *int8 `json:"boot_index"` // 镜像ID,通过镜像创建磁盘,创建虚拟机时第一块磁盘需要指定此参数 // required: false ImageId string `json:"image_id"` // 镜像加密key ID ImageEncryptKeyId string `json:"image_encrypt_key_id"` // 快照ID,通过快照创建磁盘,此参数必须加上 'snapshot-' 前缀 // example: snapshot-3140cecb-ccc4-4865-abae-3a5ba8c69d9b // requried: false SnapshotId string `json:"snapshot_id"` BackupId string `json:"backup_id"` // 磁盘类型 // enum: ["sys", "data", "swap"] DiskType string `json:"disk_type"` Schedtags []*SchedtagConfig `json:"schedtags"` // 磁盘大小,单位Mb // 若创建裸金属服务器是, -1代表自动向后扩展存储 // requried:true SizeMb int `json:"size"` // 文件系统,仅kvm支持自动格式化磁盘,私有云和公有云此参数不会生效 // enum: ["swap", "ext2", "ext3", "ext4", "xfs", "ntfs", "fat", "hfsplus"] // requried: false Fs string `json:"fs"` // 文件系统特性 FsFeatures *DiskFsFeatures `json:"fs_features"` // 关机后自动重置磁盘 // required: false AutoReset bool `json:"auto_reset"` // 是否跟随主机删除而自动删除 // 默认跟随主机创建的磁盘为 true // required: false AutoDelete *bool `json:"auto_delete,omitempty"` // 磁盘存储格式 // enum: ["qcow2", "raw", "docker", "iso", "vmdk", "vmdkflatver1", "vmdkflatver2", "vmdkflat", "vmdksparse", "vmdksparsever1", "vmdksparsever2", "vmdksepsparse", "vhd"] // requried: false Format string `json:"format"` // 磁盘驱动方式 // enum: ["virtio", "ide", "scsi", "sata", "pvscsi"] // requried: false Driver string `json:"driver"` // 磁盘缓存模式 // enum: ["writeback", "none", "writethrough"] // requried: false Cache string `json:"cache"` // 挂载点,必须以 '/' 开头,例如 /opt 仅KVM此参数有效 // requried: false Mountpoint string `json:"mountpoint"` // 操作系统CPU架构 // required: false OsArch string `json:"os_arch"` //后端存储类型,若指定了存储ID,此参数会根据存储设置,若不指定,则作为调度的一个参考 // // // // | 平台 | 存储类型 | 中文 | 数据盘 | 系统盘 | 可否扩容 | 可否单独创建 | 扩容步长 | 说明 | // |---- | ---- | ---- | ----- | ----- | ------- | ----------- | ------- | ----- | // |Esxi |local |本地盘 |1-500GB |30~500GB | 是 | 否 | 1G | | // |Esxi |nas |NAS盘 |30-3072GB |30~500GB | 是 | 否 | 1G | | // |Esxi |vsan |VSAN盘 |30-3072GB |30~500GB | 是 | 否 | 1G | | // |KVM |local |本地盘盘 |1-500GB |30~500GB | 是 | 否 | 1G | | // |KVM |rbd |云硬盘 |1-3072GB |30~500GB | 是 | 是 | 1G | | // |Azure |standard_lrs |标准 HDD |1-4095GB |30~4095GB | 是 | 是 | 1G | | // |Azure |standardssd_lrs |标准 SSD |1-4095GB |30~4095GB | 是 | 是 | 1G | | // |Azure |premium_lrs |高级SSD |1-4095GB |30~4095GB | 是 | 是 | 1G | | // |AWS |gp2 |通用型SSD |1-16384GB |20~16384GB | 是 | 是 | 1G | | // |AWS |io1 |预配置 IOPS SSD |4-16384GB |20-16384GB | 是 | 是 | 1G | | // |AWS |st1 |吞吐优化HDD |500-16384GB |不支持 | 是 | 是 | 1G | | // |AWS |sc1 |Cold HDD |500-16384GB |不支持 | 是 | 是 | 1G | | // |AWS |standard |磁介质 |1-1024GB |20-1024GB | 是 | 是 | 1G | | // |腾讯云 |cloud_ssd |SSD云硬盘 |10-16000GB |50~500GB | 是 | 是 | 10G | | // |腾讯云 |cloud_basic |普通云硬盘 |10-16000GB |50~500GB | 是 | 是 | 10G | | // |腾讯云 |cloud_preium |高性能云硬盘 |10-16000GB |50~1024GB | 是 | 是 | 10G | | // |腾讯云 |local_basic |普通本地盘 |10-1600GB |不支持 | 否 | 否 | | | // |腾讯云 |local_ssd |SSD本地盘 |10-7000GB |部分区域套餐支持 | 否 | 否 | | | // |腾讯云 |local_pro |HDD本地盘 |跟随套餐 |部分区域套餐支持 | 否 | 否 | | | // |华为云或天翼云 |SSD |超高IO云硬盘 |10-32768GB |40~1024GB | 是 | 是 | 1G | | // |华为云或天翼云 |SAS |高IO云硬盘 |10-32768GB |40~1024GB | 是 | 是 | 1G | | // |华为云或天翼云 |SATA |普通IO云硬盘 |10-32768GB |40~1024GB | 是 | 是 | 1G | | // |OpenStack |nova |nova |不支持 |30-500GB | 否 | 否 | | | // |OpenStack |自定义 |... |无限制 |无限制 | 是 | 是 | 1G | | // |Ucloud |CLOUD_NORMAL |普通云盘 |20-8000GB |不支持 | 是 | 是 | 1G | | // |Ucloud |CLOUD_SSD |SSD云盘 |20-4000GB |20-500GB | 是 | 是 | 1G | | // |Ucloud |LOCAL_NORMAL |普通本地盘 | | | 是 | 是 | 1G | | // |Ucloud |LOCAL_SSD |SSD本地盘 | | | 是 | 是 | 1G | | // |Ucloud |EXCLUSIVE_LOCAL_DISK |独享本地盘 | | | 是 | 是 | 1G | | // |ZStack |localstorage |本地盘 | | | 是 | 是 | 1G | | // |ZStack |ceph |云硬盘 | | | 是 | 是 | 1G | | // |Google |local-ssd |本地SSD暂存盘 |375GB |不支持 | 否 | 否 | | 跟随实例创建,一次最多添加8个 | // |Google |pd-standard |标准永久性磁盘 |10-65536GB |10-65536GB | 是 | 是 | 1G | | // |Google |pd-ssd |SSD永久性磁盘 |10-65536GB |10-65536GB | 是 | 是 | 1G | | Backend string `json:"backend"` //介质类型 //rotate: 机械盘 //ssd: 固态硬盘 //hybird: 混合盘 //emum: [rotate, ssd, hybrid] //default: hybird Medium string `json:"medium"` //swagger:ignore ImageProperties map[string]string `json:"image_properties"` //存储ID, 指定存储后,磁盘会在此存储上创建 //存储列表可以参数 storage 列表API //required: false Storage string `json:"storage_id"` //swagger:ignore DiskId string `json:"disk_id"` //swagger:ignore ExistingPath string `json:"existing_path"` // requried:false Iops int `json:"iops"` // 磁盘吞吐量, 仅对aws gp3生效 // 范围: 125-1000 Throughput int `json:"throughput"` // NVNe device NVMEDevice *IsolatedDeviceConfig `json:"nvme_device"` // 预分配策略: // off: 关闭预分配,默认关闭 // metadata: 精简置备 // falloc: 厚置备延迟置零 // full: 厚置备快速置零 // default: off Preallocation string `json:"preallocation"` } type IsolatedDeviceConfig struct { Index int `json:"index"` Id string `json:"id"` DevType string `json:"dev_type"` Model string `json:"model"` Vendor string `json:"vendor"` NetworkIndex *int `json:"network_index"` WireId string `json:"wire_id"` DiskIndex *int8 `json:"disk_index"` DevicePath string `json:"device_path"` } type BaremetalDiskConfig struct { //Index int `json:"index"` // disk type Type string `json:"type"` // ssd / rotate // raid config Conf string `json:"conf"` // raid配置 Count int64 `json:"count"` // 连续几块 Range []int64 `json:"range"` // 指定几块 Splits string `json:"splits"` Size []int64 `json:"size"` // Adapter *int `json:"adapter,omitempty"` Driver string `json:"driver"` Cachedbadbbu *bool `json:"cachedbadbbu,omitempty"` Strip *int64 `json:"strip,omitempty"` RA *bool `json:"ra,omitempty"` WT *bool `json:"wt,omitempty"` Direct *bool `json:"direct,omitempty"` SoftRaidIdx *int `json:"soft_raid_idx"` } type RootDiskMatcherSizeMBRange struct { Start int64 `json:"start"` End int64 `json:"end"` } const ( BAREMETAL_SERVER_METATA_ROOT_DISK_MATCHER = "baremetal_root_disk_matcher" ) type BaremetalRootDiskMatcher struct { Device string `json:"device"` SizeMB int64 `json:"size_mb"` SizeMBRange *RootDiskMatcherSizeMBRange `json:"size_mb_range"` PCIPath string `json:"pci_path"` } type ServerConfigs struct { // 调度使用指定的云账号 PreferManager string `json:"prefer_manager_id"` // 调度到指定区域,优先级低于prefer_zone_id PreferRegion string `json:"prefer_region_id"` // 调度到指定可用区,优先级低于prefer_host_id PreferZone string `json:"prefer_zone_id"` // 调度使用指定二层网络, 优先级低于prefer_host_id PreferWire string `json:"prefer_wire_id"` // 调度使用指定宿主机 PreferHost string `json:"prefer_host_id"` // 主机高可用时,将备机调度到指定宿主机, 此参数仅对KVM生效 PreferBackupHost string `json:"prefer_backup_host"` // 虚拟化技术或平台 // // // // |hypervisor | 技术或平台 | // |------- | ---------- | // |kvm | 本地私有云 | // |esxi | VMWare | // |baremetal | 裸金属 | // |aliyun | 阿里云 | // |aws | 亚马逊 | // |qcloud | 腾讯云 | // |azure | 微软云 | // |huawei | 华为云 | // |openstack | OpenStack | // |ucloud | Ucloud | // |zstack | ZStack | // |google | 谷歌云 | // |ctyun | 天翼云 | // default: kvm Hypervisor string `json:"hypervisor"` // swagger:ignore Provider string `json:"provider"` // 包年包月资源池 // swagger:ignore // emum: shared, prepaid, dedicated ResourceType string `json:"resource_type"` // 套餐名称, 此参数优先级高于vcpu_count和vmem_size // 套餐可以通过 serverskus 列表获取 // esxi, openstack, zstack等私有云都统一使用provider为OneCloud的套餐 // 公有云使用各自的套餐 InstanceType string `json:"instance_type"` // swagger:ignore // Deprecated // alias for InstanceType Sku string `json:"sku" yunion-deprecated-by:"instance_type"` // 虚拟机高可用(创建备机) // default: false // required: false Backup bool `json:"backup"` // 设置为 daemon 虚机 // default: false // required: false IsDaemon *bool `json:"is_daemon"` // swagger:ignore // 创建虚拟机数量 // default: 1 Count int `json:"count"` // 磁盘列表,第一块磁盘为系统盘,需要指定image_id // 若指定主机快照,此参数可以为空 // required: true Disks []*DiskConfig `json:"disks"` // 指定主机网络 // required: false Networks []*NetworkConfig `json:"nets"` // 调度标签 // required: false Schedtags []*SchedtagConfig `json:"schedtags"` // 透传设备列表 // required: false IsolatedDevices []*IsolatedDeviceConfig `json:"isolated_devices"` // 裸金属磁盘配置列表 BaremetalDiskConfigs []*BaremetalDiskConfig `json:"baremetal_disk_configs"` // 裸金属系统盘匹配器 BaremetalRootDiskMatcher *BaremetalRootDiskMatcher `json:"baremetal_root_disk_matcher"` // 主机组列表, 参数可以是主机组名称或ID,建议使用ID InstanceGroupIds []string `json:"groups"` // DEPRECATE Suggestion bool `json:"suggestion"` } func NewServerConfigs() *ServerConfigs { return &ServerConfigs{ Disks: make([]*DiskConfig, 0), Networks: make([]*NetworkConfig, 0), Schedtags: make([]*SchedtagConfig, 0), IsolatedDevices: make([]*IsolatedDeviceConfig, 0), BaremetalDiskConfigs: make([]*BaremetalDiskConfig, 0), InstanceGroupIds: make([]string, 0), } } type DeployConfig struct { Action string `json:"action"` Path string `json:"path"` Content string `json:"content"` } // KickstartConfig Kickstart/Autoinstall自动化安装配置 type KickstartConfig struct { // 配置文件内容 (当用户直接提供配置时使用) // required: false Config string `json:"config,omitempty"` // 配置文件 URL (当配置文件位于外部服务器时使用) // required: false ConfigURL string `json:"config_url,omitempty"` // 操作系统类型 (用于确定内核参数和文件路径) // enum: ["centos", "rhel", "fedora", "openeuler", "ubuntu"] // required: true OSType string `json:"os_type" validate:"required,oneof=centos rhel fedora openeuler ubuntu"` // 是否启用 (用于临时禁用而不删除配置) // default: true // required: false Enabled *bool `json:"enabled,omitempty"` // 最大重试次数 // default: 3 // required: false MaxRetries int `json:"max_retries,omitempty"` // 安装超时时间 (分钟) // default: 60 // required: false TimeoutMinutes int `json:"timeout_minutes,omitempty"` } type ServerCreateInput struct { apis.VirtualResourceCreateInput DeletePreventableCreateInput HostnameInput *ServerConfigs apis.EncryptedResourceCreateInput // 虚拟机内存大小,单位Mb,若未指定instance_type,此参数为必传项 VmemSize int `json:"vmem_size"` EnableMemclean bool `json:"enable_memclean"` // 虚拟机Cpu大小,若未指定instance_type,此参数为必传项 // default: 1 VcpuCount int `json:"vcpu_count"` // cpu卡槽数 // 目前仅vmware支持此参数 // default: 1 CpuSockets int `json:"cpu_sockets"` // 额外分配 cpu 数量 // required: false ExtraCpuCount int `json:"extra_cpu_count"` // 用户自定义启动脚本 // 支持 #cloud-config yaml 格式及shell脚本 // 支持特殊user data平台: Aliyun, Qcloud, Azure, Apsara, Ucloud // required: false UserData string `json:"user_data"` // swagger:ignore // 创建测试数据,不实际创建资源 FakeCreate bool `json:"fake_create"` // swagger:ignore // Deprecated Keypair string `json:"keypair" yunion-deprecated-by:"keypair_id"` // 秘钥对Id // required: false KeypairId string `json:"keypair_id"` // 密码 // 要求: 密码长度 >= 20, 至少包含一个数字一个小写字母一个大小字母及特殊字符~`!@#$%^&*()-_=+[]{}|:';\",./<>?中的一个 // requried: false Password string `json:"password"` // 登录账户 // required: false LoginAccount string `json:"login_account"` // 使用ISO光盘启动, 仅KVM平台支持 // required: false Cdrom string `json:"cdrom"` CdromBootIndex *int8 `json:"cdrom_boot_index"` // enum: ["cirros", "vmware", "qxl", "std"] // default: std Vga string `json:"vga"` // 远程连接协议 // enum: ["vnc", "spice"] // default: vnc Vdi string `json:"vdi"` // BIOS类型, 若镜像是Windows,并且支持UEFI,则自动会设置为UEFI // emulate: BIOS, UEFI Bios string `json:"bios"` EnableTpm bool `json:"enable_tpm"` // Machine类型 // emulate: pc, q35 Machine string `json:"machine"` // 启动顺序 // c: cdrome // d: disk // n: network // example: cnd // default: cdn BootOrder string `json:"boot_order"` // 启用cloud-init,需要镜像装有cloud-init服务 // default: false EnableCloudInit bool `json:"enable_cloud_init"` // 随机密码, 若指定password参数,此参数不生效 // 若值为false并且password为空,则表示保留镜像密码 ResetPassword *bool `json:"reset_password"` // 关机后执行的操作 // terminate: 关机后自动删除 // enum: ["stop", "terminate", "stop_release_gpu"] // default: stop ShutdownBehavior string `json:"shutdown_behavior"` // 创建后自动启动 // 部分云创建后会自动启动例如: 腾讯云, AWS, OpenStack, ZStack, Ucloud, Huawei, Azure, 天翼云 // default: false AutoStart bool `json:"auto_start"` DeployConfigs []*DeployConfig `json:"deploy_configs"` DeployTelegraf bool `json:"deploy_telegraf"` // 包年包月时长 // // // |平台 |是否支持 | // |---- |------- | // |KVM |否 | // |ESxi |否 | // |OpenStack |否 | // |ZStack |否 | // |Google |否 | // |Azure |否 | // |AWS |否 | // |腾讯云 |是 | // |Aliyun |是 | // |Ucloud |是 | // |Huawei |是 | // |天翼云 |是 | Duration string `json:"duration"` // 是否自动续费 // default: false AutoRenew bool `json:"auto_renew"` // swagger:ignore AutoPrepaidRecycle bool `json:"auto_prepaid_recycle,omitfalse"` // 弹性公网IP带宽 // 指定此参数后会创建新的弹性公网IP并绑定到新建的虚拟机 // 此参数优先级低于public_ip EipBw int `json:"eip_bw,omitzero"` // 弹性公网IP线路类型 EipBgpType string `json:"eip_bgp_type,omitzero"` // 弹性公网IP计费类型 EipChargeType billing_api.TNetChargeType `json:"eip_charge_type,omitempty"` // 是否跟随主机删除而自动释放 EipAutoDellocate bool `json:"eip_auto_dellocate,omitempty"` // 弹性公网IP名称或ID // 绑定已有弹性公网IP, 此参数会限制虚拟机再谈下公网IP所在的区域创建 // required: false Eip string `json:"eip,omitempty"` // 公网IP带宽(单位MB) // 若指定此参数则忽略eip相关参数 // 私有云不支持此参数 // // // |平台 |支持范围 | // |---- |------- | // |腾讯云 |按量计费1-100, 包年包月1-200 | PublicIpBw int `json:"public_ip_bw,omitzero"` // 公网IP计费类型 // 默认按流量计费 // // // |类别 |说明 | // |---- |------- | // |traffic |按流量计费| // |bandwidth |按带宽计费| PublicIpChargeType billing_api.TNetChargeType `json:"public_ip_charge_type,omitempty"` // 使用主机快照创建虚拟机, 主机快照不会重置密码及秘钥信息 // 使用主机快照创建的虚拟机将沿用之前的密码秘钥及安全组信息 // required: false InstanceSnapshotId string `json:"instance_snapshot_id,omitempty"` // 使用主机备份创建虚拟机, 主机快照不会重置密码及秘钥信息 // 使用主机备份创建的虚拟机将沿用之前的密码秘钥及安全组信息 // required: false InstanceBackupId string `json:"instance_backup_id,omitempty"` // 安全组Id, 此参数会和secgroups参数合并 SecgroupId string `json:"secgrp_id"` // 安全组Id列表 Secgroups []string `json:"secgroups"` // swagger:ignore OsType string `json:"os_type"` // swagger:ignore OsArch string `json:"os_arch"` // swagger:ignore DisableUsbKbd bool `json:"disable_usb_kbd"` // swagger:ignore OsProfile jsonutils.JSONObject `json:"__os_profile__"` // swagger:ignore BillingType billing_api.TBillingType `json:"billing_type"` // swagger:ignore BillingCycle string `json:"billing_cycle"` // 到期释放时间 ReleaseAt time.Time `json:"release_at"` // swagger:ignore // Deprecated // 此参数等同于 hypervisor=baremetal Baremetal bool `json:"baremetal"` // Used to store BaremetalConvertHypervisorTaskId ParentTaskId string `json:"__parent_task_id,omitempty"` // 指定系统盘默认存储类型, 如果指定宿主机 // swagger:ignore DefaultStorageType string `json:"default_storage_type,omitempty"` // 指定用于新建主机的主机镜像ID GuestImageID string `json:"guest_image_id"` // Kickstart/Autoinstall自动化安装配置 // required: false KickstartConfig *KickstartConfig `json:"kickstart_config,omitempty"` Pod *PodCreateInput `json:"pod"` } func (c *KickstartConfig) IsEnabled() bool { if c.Enabled != nil && !*c.Enabled { return false } return true } // ServerUpdateKickstartStatusInput 更新虚拟机 kickstart 状态的输入 type ServerUpdateKickstartStatusInput struct { // kickstart 状态 // enum: ["kickstart_pending", "kickstart_installing", "kickstart_completed", "kickstart_failed"] // required: true Status string `json:"status" validate:"required,oneof=kickstart_pending kickstart_installing kickstart_completed kickstart_failed"` // 错误信息(可选) // required: false ErrorMessage string `json:"error_message,omitempty"` } func (input *ServerCreateInput) AfterUnmarshal() { if input.Baremetal { input.Hypervisor = HYPERVISOR_BAREMETAL } } type ServerCloneInput struct { apis.Meta Name string `json:"name"` AutoStart bool `json:"auto_start"` EipBw int `json:"eip_bw,omitzero"` EipChargeType string `json:"eip_charge_type,omitempty"` Eip string `json:"eip,omitempty"` PreferHostId string `json:"prefer_host_id"` } type GuestBatchMigrateRequest struct { apis.Meta GuestIds []string `json:"guest_ids"` PreferHostId string `json:"prefer_host_id"` // Deprecated // swagger:ignore PreferHost string `json:"prefer_host" yunion-deprecated-by:"prefer_host_id"` SkipCpuCheck bool `json:"skip_cpu_check"` SkipKernelCheck bool `json:"skip_kernel_check"` EnableTLS *bool `json:"enable_tls"` MaxBandwidthMb *int64 `json:"max_bandwidth_mb"` QuciklyFinish *bool `json:"quickly_finish"` } type GuestBatchMigrateParams struct { Id string `json:"id"` LiveMigrate bool `json:"live_migrate"` SkipCpuCheck bool `json:"skip_cpu_check"` SkipKernelCheck bool `json:"skip_kernel_check"` EnableTLS *bool `json:"enable_tls"` RescueMode bool `json:"rescue_mode"` OldStatus string `json:"old_status"` MaxBandwidthMb *int64 `json:"max_bandwidth_mb"` QuciklyFinish *bool `json:"quickly_finish"` } type HostLoginInfo struct { apis.Meta Username string `json:"username"` Password string `json:"password"` Ip string `json:"ip"` }