| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802 |
- // 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"`
- }
|