Skip to content

Commit 23228db

Browse files
authored
auto codegen for UHost (#219)
1 parent 3f81e26 commit 23228db

File tree

3 files changed

+117
-16
lines changed

3 files changed

+117
-16
lines changed

ucloud/services/uhost/client.py

Lines changed: 56 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -127,18 +127,19 @@ def create_uhost_instance(
127127
- **AlarmTemplateId** (int) - 告警模板id,如果传了告警模板id,且告警模板id正确,则绑定告警模板。绑定告警模板失败只会在后台有日志,不会影响创建主机流程,也不会在前端报错。
128128
- **AutoDataDiskInit** (str) - 数据盘是否需要自动分区挂载。当镜像支持“Cloud-init”Feature时可填写此字段。取值 >“On” 自动挂载(默认值)> “Off” 不自动挂载。
129129
- **CPU** (int) - 虚拟CPU核数。可选参数:1-64(具体机型与CPU的对应关系参照控制台)。默认值: 4。
130-
- **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时预付费 \\ > Postpay,按小时后付费(支持关机不收费,目前仅部分可用区支持,请联系您的客户经理) \\Preemptive计费为抢占式实例 \\ 默认为月付
130+
- **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时预付费 \\ > Postpay,按小时后付费(支持关机不收费,目前仅部分可用区支持,请联系您的客户经理) \\Preemptive计费为抢占式实例(内测阶段) \\ 默认为月付
131131
- **CouponId** (str) - 主机代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看
132132
- **Disks** (list) - 见 **CreateUHostInstanceParamDisks** 模型定义
133+
- **Features** (dict) - 见 **CreateUHostInstanceParamFeatures** 模型定义
133134
- **GPU** (int) - GPU卡核心数。仅GPU机型支持此字段(可选范围与MachineType+GpuType相关)
134-
- **GpuType** (str) - GPU类型,枚举值["K80", "P40", "V100", "T4", "T4S","2080Ti","2080Ti-4C","1080Ti"],MachineType为G时必填
135+
- **GpuType** (str) - GPU类型,枚举值["K80", "P40", "V100", "T4", "T4S","2080Ti","2080Ti-4C","1080Ti", "T4/4", "MI100", "V100S"],MachineType为G时必填
135136
- **HotplugFeature** (bool) - 热升级特性。True为开启,False为未开启,默认False。
136137
- **IsolationGroup** (str) - 硬件隔离组id。可通过DescribeIsolationGroup获取。
137138
- **KeyPairId** (str) - KeypairId 密钥对ID,LoginMode为KeyPair时此项必须
138-
- **MachineType** (str) - 云主机机型(V2.0),在本字段和字段UHostType中,仅需要其中1个字段即可。枚举值["N", "C", "G", "O", "OS", "OPRO", "OMAX", "O.BM"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。
139+
- **MachineType** (str) - 云主机机型(V2.0),在本字段和字段UHostType中,仅需要其中1个字段即可。枚举值["N", "C", "G", "O", "OS", "OM", "OPRO", "OMAX", "O.BM", "O.EPC"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。
139140
- **MaxCount** (int) - 本次最大创建主机数量,取值范围是[1,100],默认值为1。
140141
- **Memory** (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参考控制台)。默认值:8192
141-
- **MinimalCpuPlatform** (str) - 最低cpu平台,枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake""Intel/CascadelakeR"; “Amd/Epyc2”,"Amd/Auto"],默认值是"Intel/Auto"。
142+
- **MinimalCpuPlatform** (str) - 最低cpu平台,枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake", "Intel/CascadelakeR", "Intel/IceLake", "Amd/Epyc2", "Amd/Auto"],默认值是"Intel/Auto"。
142143
- **Name** (str) - UHost实例名称。默认:UHost。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定实例名称。
143144
- **NetCapability** (str) - 网络增强特性。枚举值:Normal(默认),不开启; Super,开启网络增强1.0; Ultra,开启网络增强2.0(仅支持部分可用区,请参考控制台)
144145
- **NetworkInterface** (list) - 见 **CreateUHostInstanceParamNetworkInterface** 模型定义
@@ -160,7 +161,7 @@ def create_uhost_instance(
160161
**Request Model**
161162
162163
**CreateUHostInstanceParamDisks**
163-
- **BackupType** (str) - 磁盘备份方案。枚举值:\\ > NONE,无备份 \\ > DATAARK,数据方舟 \\ > SNAPSHOT(SNAPSHOT模式目前仅在上海C支持),快照 \\当前磁盘支持的备份模式参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ ,默认值:NONE
164+
- **BackupType** (str) - 磁盘备份方案。枚举值:\\ > NONE,无备份 \\ > DATAARK,数据方舟 \\ > SNAPSHOT,快照 \\当前磁盘支持的备份模式参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ ,默认值:NONE
164165
- **CouponId** (str) - 云盘代金券id。不适用于系统盘/本地盘。请通过DescribeCoupon接口查询,或登录用户中心查看
165166
- **Encrypted** (bool) - 【功能仅部分可用区开放,详询技术支持】磁盘是否加密。加密:true, 不加密: false加密必须传入对应的的KmsKeyId,默认值false
166167
- **IsBoot** (str) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。
@@ -170,15 +171,14 @@ def create_uhost_instance(
170171
171172
172173
**CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSH**
173-
- **Area** (str) - 填写支持SSH访问IP的地区名称,如“洛杉矶”,“新加坡”,“香港”,“东京”,“华盛顿”,“法兰克福”。Area和AreaCode两者必填其中之一。
174-
- **AreaCode** (str) - GlobalSSH的地区编码,格式为区域航空港国际通用代码。Area和AreaCode两者必填其中之一。
175-
- **Port** (int) - SSH端口,1-65535且不能使用80,443端口
174+
- **Area** (str) -
175+
- **AreaCode** (str) -
176+
- **Port** (int) -
176177
177178
178179
**CreateUHostInstanceParamNetworkInterfaceEIP**
179180
- **Bandwidth** (int) - 【若绑定EIP,此参数必填】弹性IP的外网带宽, 单位为Mbps. 共享带宽模式必须指定0M带宽, 非共享带宽模式必须指定非0Mbps带宽. 各地域非共享带宽的带宽范围如下: 流量计费[1-300],带宽计费[1-800]
180181
- **CouponId** (str) - 当前EIP代金券id。请通过DescribeCoupon接口查询,或登录用户中心查看。
181-
- **GlobalSSH** (dict) - 见 **CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSH** 模型定义
182182
- **OperatorName** (str) - 【若绑定EIP,此参数必填】弹性IP的线路。枚举值: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International
183183
- **PayMode** (str) - 弹性IP的计费模式. 枚举值: "Traffic", 流量计费; "Bandwidth", 带宽计费; "ShareBandwidth",共享带宽模式. "Free":免费带宽模式,默认为 "Bandwidth"
184184
- **ShareBandwidthId** (str) - 绑定的共享带宽Id,仅当PayMode为ShareBandwidth时有效
@@ -201,6 +201,10 @@ def create_uhost_instance(
201201
**CreateUHostInstanceParamVolumes**
202202
203203
204+
**CreateUHostInstanceParamFeatures**
205+
- **UNI** (bool) - 弹性网卡特性。开启了弹性网卡权限位,此特性才生效,默认 false 未开启,true 开启,仅与 NetCapability Normal 兼容。
206+
207+
204208
"""
205209
# build request
206210
d = {
@@ -312,6 +316,47 @@ def delete_uhost_key_pairs(
312316
resp = self.invoke("DeleteUHostKeyPairs", d, **kwargs)
313317
return apis.DeleteUHostKeyPairsResponseSchema().loads(resp)
314318

319+
def describe_available_instance_types(
320+
self, req: typing.Optional[dict] = None, **kwargs
321+
) -> dict:
322+
"""DescribeAvailableInstanceTypes - DescribeAvailableInstanceTypes
323+
324+
**Request**
325+
326+
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。
327+
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_
328+
- **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_
329+
330+
**Response**
331+
332+
- **AvailableInstanceTypes** (list) - 见 **AvailableInstanceTypes** 模型定义
333+
334+
**Response Model**
335+
336+
**AvailableInstanceTypes**
337+
- **CpuPlatforms** (list) - 支持的CPU平台,并且按照Intel、AMD和Ampere分类返回例如:Intel: ['Intel/CascadeLake','Intel/CascadelakeR','Intel/IceLake']AMD: ['Amd/Epyc2']Ampere: ['Ampere/Altra']
338+
- **Disks** (list) - 磁盘信息。磁盘主要分类如下:云盘|cloudDisk、普通本地盘|normalLocalDisk和SSD本地盘|ssdLocalDisk。其中云盘主要包含普通云盘|CLOUD_NORMAL、SSD云盘|CLOUD_SSD和RSSD云盘|CLOUD_RSSD。普通本地盘只包含普通本地盘|LOCAL_NORMAL一种。SSD本地盘只包含SSD本地盘|LOCAL_SSD一种。MinimalSize为磁盘最小值,如果没有该字段,最小值取基础镜像Size值即可(linux为20G,windows为40G)。MaximalSize为磁盘最大值。InstantResize表示系统盘是否允许扩容,如果是本地盘,则不允许扩容,InstantResize为false。Features为磁盘可支持的服务:数据方舟|DATAARK,快照服务|SNAPSHOT,加密盘|Encrypted。
339+
- **Features** (list) - 虚机可支持的特性。目前支持的特性网络增强|NetCapability、热升级|Hotplug。网络增强分为关闭|Normal、网络增强1.0|Super和网络增强2.0|Ultra。Name为可支持的特性名称,Modes为可以提供的模式类别等,RelatedToImageFeature为镜像上支持这个特性的标签。例如DescribeImage返回的字段Features包含HotPlug,说明该镜像支持热升级。MinimalCpuPlatform表示这个特性必须是列出来的CPU平台及以上的CPU才支持。
340+
- **GraphicsMemory** (dict) - GPU的显存指标,value为值,单位是GB。
341+
- **MachineClass** (str) - 区分是否是GPU机型:GPU机型|GPU,非GPU机型|Normal。
342+
- **MachineSizes** (list) - GPU、CPU和内存信息。Gpu为GPU可支持的规格,Cpu和Memory分别为CPU和内存可支持的规格。如果非GPU机型,GPU为0。MinimalCpuPlatform代表含义这个CPU和内存规格只能在列出来的CPU平台支持。
343+
- **Name** (str) - 机型名称:快杰O型|O 、快杰共享型|OM 、快杰内存型|OMEM 、 快杰PRO型|OPRO、通用N型|N、高主频C型|C和GPU G型|G等
344+
- **Performance** (dict) - GPU的性能指标,value为值,单位是TFlops。
345+
- **Status** (str) - 机型状态:可售|Normal 、 公测|Beta、售罄|Soldout、隐藏|Hidden
346+
347+
348+
"""
349+
# build request
350+
d = {
351+
"ProjectId": self.config.project_id,
352+
"Region": self.config.region,
353+
}
354+
req and d.update(req)
355+
d = apis.DescribeAvailableInstanceTypesRequestSchema().dumps(d)
356+
357+
resp = self.invoke("DescribeAvailableInstanceTypes", d, **kwargs)
358+
return apis.DescribeAvailableInstanceTypesResponseSchema().loads(resp)
359+
315360
def describe_image(
316361
self, req: typing.Optional[dict] = None, **kwargs
317362
) -> dict:
@@ -711,10 +756,10 @@ def get_uhost_instance_price(
711756
- **Type** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。
712757
713758
714-
**GetUHostInstancePriceParamVolumes**
759+
**GetUHostInstancePriceParamVirtualGpu**
715760
716761
717-
**GetUHostInstancePriceParamVirtualGpu**
762+
**GetUHostInstancePriceParamVolumes**
718763
719764
720765
**Response Model**

ucloud/services/uhost/schemas/apis.py

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ class CreateUHostInstanceParamNetworkInterfaceEIPSchema(schema.RequestSchema):
139139
"CouponId": fields.Str(required=False, dump_to="CouponId"),
140140
"GlobalSSH": CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSHSchema(
141141
required=False, dump_to="GlobalSSH"
142-
),
142+
), # Deprecated, will be removed at 1.0
143143
"OperatorName": fields.Str(required=False, dump_to="OperatorName"),
144144
"PayMode": fields.Str(required=False, dump_to="PayMode"),
145145
"ShareBandwidthId": fields.Str(
@@ -195,6 +195,14 @@ class CreateUHostInstanceParamVolumesSchema(schema.RequestSchema):
195195
fields = {}
196196

197197

198+
class CreateUHostInstanceParamFeaturesSchema(schema.RequestSchema):
199+
"""CreateUHostInstanceParamFeatures -"""
200+
201+
fields = {
202+
"UNI": fields.Bool(required=False, dump_to="UNI"),
203+
}
204+
205+
198206
class CreateUHostInstanceRequestSchema(schema.RequestSchema):
199207
"""CreateUHostInstance - 创建UHost实例。"""
200208

@@ -218,6 +226,9 @@ class CreateUHostInstanceRequestSchema(schema.RequestSchema):
218226
required=False, dump_to="DiskSpace"
219227
), # Deprecated, will be removed at 1.0
220228
"Disks": fields.List(CreateUHostInstanceParamDisksSchema()),
229+
"Features": CreateUHostInstanceParamFeaturesSchema(
230+
required=False, dump_to="Features"
231+
),
221232
"GPU": fields.Int(required=False, dump_to="GPU"),
222233
"GpuType": fields.Str(required=False, dump_to="GpuType"),
223234
"HostIp": fields.Str(
@@ -378,6 +389,35 @@ class DeleteUHostKeyPairsResponseSchema(schema.ResponseSchema):
378389
fields = {}
379390

380391

392+
"""
393+
API: DescribeAvailableInstanceTypes
394+
395+
DescribeAvailableInstanceTypes
396+
"""
397+
398+
399+
class DescribeAvailableInstanceTypesRequestSchema(schema.RequestSchema):
400+
"""DescribeAvailableInstanceTypes - DescribeAvailableInstanceTypes"""
401+
402+
fields = {
403+
"ProjectId": fields.Str(required=False, dump_to="ProjectId"),
404+
"Region": fields.Str(required=True, dump_to="Region"),
405+
"Zone": fields.Str(required=True, dump_to="Zone"),
406+
}
407+
408+
409+
class DescribeAvailableInstanceTypesResponseSchema(schema.ResponseSchema):
410+
"""DescribeAvailableInstanceTypes - DescribeAvailableInstanceTypes"""
411+
412+
fields = {
413+
"AvailableInstanceTypes": fields.List(
414+
models.AvailableInstanceTypesSchema(),
415+
required=True,
416+
load_from="AvailableInstanceTypes",
417+
),
418+
}
419+
420+
381421
"""
382422
API: DescribeImage
383423
@@ -627,14 +667,14 @@ class GetUHostInstancePriceParamDisksSchema(schema.RequestSchema):
627667
}
628668

629669

630-
class GetUHostInstancePriceParamVolumesSchema(schema.RequestSchema):
631-
"""GetUHostInstancePriceParamVolumes -"""
670+
class GetUHostInstancePriceParamVirtualGpuSchema(schema.RequestSchema):
671+
"""GetUHostInstancePriceParamVirtualGpu -"""
632672

633673
fields = {}
634674

635675

636-
class GetUHostInstancePriceParamVirtualGpuSchema(schema.RequestSchema):
637-
"""GetUHostInstancePriceParamVirtualGpu -"""
676+
class GetUHostInstancePriceParamVolumesSchema(schema.RequestSchema):
677+
"""GetUHostInstancePriceParamVolumes -"""
638678

639679
fields = {}
640680

ucloud/services/uhost/schemas/models.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,22 @@ class KeyPairSchema(schema.ResponseSchema):
2020
}
2121

2222

23+
class AvailableInstanceTypesSchema(schema.ResponseSchema):
24+
"""AvailableInstanceTypes - https://ushare.ucloudadmin.com/pages/viewpage.action?pageId=104662646"""
25+
26+
fields = {
27+
"CpuPlatforms": fields.List(fields.Str()),
28+
"Disks": fields.List(fields.Str()),
29+
"Features": fields.List(fields.Str()),
30+
"GraphicsMemory": fields.Str(),
31+
"MachineClass": fields.Str(required=False, load_from="MachineClass"),
32+
"MachineSizes": fields.List(fields.Str()),
33+
"Name": fields.Str(required=False, load_from="Name"),
34+
"Performance": fields.Str(),
35+
"Status": fields.Str(required=False, load_from="Status"),
36+
}
37+
38+
2339
class UHostImageSetSchema(schema.ResponseSchema):
2440
"""UHostImageSet - DescribeImage"""
2541

0 commit comments

Comments
 (0)