""" Code is generated by ucloud-model, DO NOT EDIT IT. """
import typing
from ucloud.core.client import Client
from ucloud.services.ipsecvpn.schemas import apis
[docs]class IPSecVPNClient(Client):
def __init__(
self, config: dict, transport=None, middleware=None, logger=None
):
super(IPSecVPNClient, self).__init__(
config, transport, middleware, logger
)
[docs] def create_remote_vpn_gateway(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""CreateRemoteVPNGateway - 创建客户VPN网关
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **RemoteVPNGatewayAddr** (str) - (Required) 客户VPN网关地址
- **RemoteVPNGatewayName** (str) - (Required) 客户VPN网关名称
- **Remark** (str) - 备注,默认为空
- **Tag** (str) - 业务组名称,默认为 "Default"
**Response**
- **RemoteVPNGatewayId** (str) - 新建客户VPN网关的资源ID
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.CreateRemoteVPNGatewayRequestSchema().dumps(d)
# build options
kwargs["max_retries"] = 0 # ignore retry when api is not idempotent
resp = self.invoke("CreateRemoteVPNGateway", d, **kwargs)
return apis.CreateRemoteVPNGatewayResponseSchema().loads(resp)
[docs] def create_vpn_gateway(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""CreateVPNGateway - 创建VPN网关
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **Grade** (str) - (Required) 购买的VPN网关规格,枚举值为: Standard, 标准型; Enhanced, 增强型
- **VPCId** (str) - (Required) 新建VPN网关所属VPC的资源ID
- **VPNGatewayName** (str) - (Required) 新建VPN网关名称
- **BusinessId** (str) - 业务组ID
- **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费;Dynamic, 按需付费(需开启权限);Trial, 试用(需开启权限);默认为按月付费
- **CouponId** (str) - 代金券ID, 默认不使用
- **EIPId** (str) - 若要绑定EIP,在此填上EIP的资源ID
- **Quantity** (int) - 购买时长, 默认: 1
- **Remark** (str) - 备注,默认为空
- **Tag** (str) - 业务组名称,默认为 "Default"
**Response**
- **VPNGatewayId** (str) - 新建VPN网关的资源ID
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.CreateVPNGatewayRequestSchema().dumps(d)
# build options
kwargs["max_retries"] = 0 # ignore retry when api is not idempotent
resp = self.invoke("CreateVPNGateway", d, **kwargs)
return apis.CreateVPNGatewayResponseSchema().loads(resp)
[docs] def create_vpn_tunnel(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""CreateVPNTunnel - 创建VPN隧道
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **IKEPreSharedKey** (str) - (Required) 预共享密钥
- **IKEVersion** (str) - (Required) ike版本,枚举值: "IKE V1","IKE V2",默认v1
- **IPSecLocalSubnetIds** (list) - (Required) 指定VPN连接的本地子网的资源ID,最多可填写10个。
- **IPSecRemoteSubnets** (list) - (Required) 指定VPN连接的客户网段,最多可填写20个。
- **RemoteVPNGatewayId** (str) - (Required) 客户VPN网关的资源ID
- **VPCId** (str) - (Required) vpcId
- **VPNGatewayId** (str) - (Required) VPN网关的资源ID
- **VPNTunnelName** (str) - (Required) VPN隧道名称
- **IKEAuthenticationAlgorithm** (str) - IKE协商过程中使用的认证算法,"md5", "sha1", "sha2-256"。默认值为“sha1”
- **IKEDhGroup** (str) - IKE协商过程中使用的DH组,枚举值,"1", "2", "5", "14", "15", "16"。默认为“15”
- **IKEEncryptionAlgorithm** (str) - IKE协商过程中使用的加密算法,枚举值,"aes128", "aes192", "aes256", "aes512", "3des"。默认值为“aes128”
- **IKEExchangeMode** (str) - IKE协商过程中使用的模式,枚举值,主模式,“main”;野蛮模式,“aggressive”。IKEV1默认为主模式“main”,IKEV2时不使用该参数。
- **IKELocalId** (str) - 本端标识。枚举值,自动识别,“auto”;IP地址或域名。默认为自动识别“auto”。IKEV2必填该参数
- **IKERemoteId** (str) - 客户端标识。枚举值,自动识别,“auto”;IP地址或域名。默认为“自动识别“auto”。IKEV2必填该参数
- **IKESALifetime** (str) - IKE中SA的生存时间,可填写范围为600-604800。默认为86400。
- **IPSecAuthenticationAlgorithm** (str) - IPSec隧道中使用的认证算法,枚举值,"md5", "sha1"。默认值为“sha1”
- **IPSecEncryptionAlgorithm** (str) - IPSec隧道中使用的加密算法,枚举值,"aes128", "aes192", "aes256", "aes512", "3des"。默认值为“aes128”
- **IPSecPFSDhGroup** (str) - IPSec的PFS是否开启,枚举值,,不开启,"disable";数字表示DH组, "1", "2", "5", "14", "15", "16"。默认为“disable”。
- **IPSecProtocol** (str) - 使用的安全协议,枚举值,“esp”,“ah”。默认为“esp”
- **IPSecSALifetime** (str) - IPSec中SA的生存时间,可填写范围为1200 - 604800。默认为3600
- **IPSecSALifetimeBytes** (str) - IPSec中SA的生存时间(以字节计)。可选为8000 – 20000000。默认使用SA生存时间,
- **Remark** (str) - 备注,默认为空
- **Tag** (str) - 业务组,默认为“Default”
**Response**
- **VPNTunnelId** (str) - VPN隧道的资源ID
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.CreateVPNTunnelRequestSchema().dumps(d)
# build options
kwargs["max_retries"] = 0 # ignore retry when api is not idempotent
resp = self.invoke("CreateVPNTunnel", d, **kwargs)
return apis.CreateVPNTunnelResponseSchema().loads(resp)
[docs] def delete_remote_vpn_gateway(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""DeleteRemoteVPNGateway - 删除客户VPN网关
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **RemoteVPNGatewayId** (str) - (Required) 客户VPN网关的资源ID
**Response**
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.DeleteRemoteVPNGatewayRequestSchema().dumps(d)
resp = self.invoke("DeleteRemoteVPNGateway", d, **kwargs)
return apis.DeleteRemoteVPNGatewayResponseSchema().loads(resp)
[docs] def delete_vpn_gateway(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""DeleteVPNGateway - 删除VPN网关
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **VPNGatewayId** (str) - (Required) VPN网关的资源ID
- **ReleaseEip** (bool) - 删除VPN时是否一并释放EIP。false,只解绑EIP不删除EIP;true,解绑并释放EIP。默认是false
**Response**
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.DeleteVPNGatewayRequestSchema().dumps(d)
resp = self.invoke("DeleteVPNGateway", d, **kwargs)
return apis.DeleteVPNGatewayResponseSchema().loads(resp)
[docs] def delete_vpn_tunnel(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""DeleteVPNTunnel - 删除VPN隧道
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **VPNTunnelId** (str) - (Required) VPN隧道的资源ID
**Response**
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.DeleteVPNTunnelRequestSchema().dumps(d)
resp = self.invoke("DeleteVPNTunnel", d, **kwargs)
return apis.DeleteVPNTunnelResponseSchema().loads(resp)
[docs] def describe_remote_vpn_gateway(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""DescribeRemoteVPNGateway - 获取客户VPN网关信息
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_
- **Limit** (int) - 数据分页值, 默认为20
- **Offset** (int) - 数据偏移量, 默认为0
- **RemoteVPNGatewayIds** (list) - 客户VPN网关的资源ID,例如RemoteVPNGatewayIds.0代表希望获取客户VPN网关1的信息,RemoteVPNGatewayIds.1代表客户VPN网关2,如果为空,则返回当前Region中所有客户VPN网关实例的信息
- **Tag** (str) - 业务组名称,若指定则返回业务组下所有客户VPN网关信息
**Response**
- **DataSet** (list) - 见 **RemoteVPNGatewayDataSet** 模型定义
- **TotalCount** (int) - 符合条件的客户VPN网关总数
**Response Model**
**RemoteVPNGatewayDataSet**
- **CreateTime** (int) - 创建时间
- **Remark** (str) - 备注
- **RemoteVPNGatewayAddr** (str) - 客户网关IP地址
- **RemoteVPNGatewayId** (str) - 客户网关ID
- **RemoteVPNGatewayName** (str) - 客户网关名称
- **Tag** (str) - 用户组
- **TunnelCount** (int) - 活跃的隧道数量
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.DescribeRemoteVPNGatewayRequestSchema().dumps(d)
resp = self.invoke("DescribeRemoteVPNGateway", d, **kwargs)
return apis.DescribeRemoteVPNGatewayResponseSchema().loads(resp)
[docs] def describe_vpn_gateway(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""DescribeVPNGateway - 获取VPN网关信息
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **Limit** (int) - 数据分页值。默认为20
- **Offset** (int) - 数据偏移量。默认为0
- **Tag** (str) - 业务组名称,若指定则返回指定的业务组下的所有VPN网关的信息。
- **VPCId** (str) - VPC的资源ID,返回指定的VPC下的所有VPN网关的信息。默认返回当前Region中所有VPN网关实例的信息
- **VPNGatewayIds** (list) - VPN网关的资源ID,例如VPNGatewayIds.0代表希望获取VPN网关1的信息,VPNGatewayIds.1代表VPN网关2,如果为空,则返回当前Region中所有VPN网关的信息
**Response**
- **DataSet** (list) - 见 **VPNGatewayDataSet** 模型定义
- **TotalCount** (int) - 满足条件的VPN网关总数
**Response Model**
**VPNGatewayDataSet**
- **AutoRenew** (str) - 是否自动续费
- **ChargeType** (str) - 付费类型
- **CreateTime** (int) - 创建时间
- **EIP** (str) - 绑定EIP的IP地址
- **EIPId** (str) - EIPID
- **EIPType** (str) - EIP类型
- **ExpireTime** (int) - 到期时间
- **Grade** (str) - 网关类型
- **Remark** (str) - 网关备注
- **Tag** (str) - 网关业务组
- **VPCId** (str) - 所属VPCId
- **VPCName** (str) - 所属VPC名字
- **VPNGatewayId** (str) - 网关Id
- **VPNGatewayName** (str) - 网关名字
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.DescribeVPNGatewayRequestSchema().dumps(d)
resp = self.invoke("DescribeVPNGateway", d, **kwargs)
return apis.DescribeVPNGatewayResponseSchema().loads(resp)
[docs] def describe_vpn_tunnel(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""DescribeVPNTunnel - 获取VPN隧道信息
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **Limit** (int) - 数据分页值, 默认为20
- **Offset** (int) - 数据偏移量, 默认为0
- **Tag** (str) - 业务组名称,若指定则返回指定的业务组下的所有VPN网关的信息
- **VPNTunnelIds** (list) - VPN隧道的资源ID,例如VPNTunnelIds.0代表希望获取信息的VPN隧道1,VPNTunneIds.1代表VPN隧道2,如果为空,则返回当前Region中所有的VPN隧道实例
**Response**
- **DataSet** (list) - 见 **VPNTunnelDataSet** 模型定义
- **TotalCount** (int) - VPN隧道总数
**Response Model**
**VPNTunnelDataSet**
- **CreateTime** (int) - 创建时间
- **IKEData** (dict) - 见 **IKEData** 模型定义
- **IPSecData** (dict) - 见 **IPSecData** 模型定义
- **Remark** (str) - 备注
- **RemoteVPNGatewayId** (str) - 对端网关Id
- **RemoteVPNGatewayName** (str) - 对端网关名字
- **Tag** (str) - 用户组
- **VPCId** (str) - 所属VPCId
- **VPCName** (str) - 所属VOC名字
- **VPNGatewayId** (str) - 所属VPN网关id
- **VPNGatewayName** (str) - VPN网关名字
- **VPNTunnelId** (str) - 隧道id
- **VPNTunnelName** (str) - 隧道名称
**IKEData**
- **IKEAuthenticationAlgorithm** (str) - IKE认证算法
- **IKEDhGroup** (str) - IKEDH组
- **IKEEncryptionAlgorithm** (str) - IKE加密算法
- **IKEExchangeMode** (str) - IKEv1协商模式
- **IKELocalId** (str) - IKE本地ID标识
- **IKEPreSharedKey** (str) - IKE预共享秘钥
- **IKERemoteId** (str) - IKE对端ID标识
- **IKESALifetime** (str) - IKE秘钥生存时间
- **IKEVersion** (str) - IKE版本
**IPSecData**
- **IPSecAuthenticationAlgorithm** (str) - IPSec通道中使用的认证算法
- **IPSecEncryptionAlgorithm** (str) - IPSec通道中使用的加密算法
- **IPSecLocalSubnetIds** (list) - 指定VPN连接的本地子网,用逗号分隔
- **IPSecPFSDhGroup** (str) - 是否开启PFS功能,Disable表示关闭,数字表示DH组
- **IPSecProtocol** (str) - 使用的安全协议,ESP或AH
- **IPSecRemoteSubnets** (list) - 指定VPN连接的客户网段,用逗号分隔
- **IPSecSALifetime** (str) - IPSec中SA的生存时间
- **IPSecSALifetimeBytes** (str) - IPSec中SA的生存时间(以字节计)
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.DescribeVPNTunnelRequestSchema().dumps(d)
resp = self.invoke("DescribeVPNTunnel", d, **kwargs)
return apis.DescribeVPNTunnelResponseSchema().loads(resp)
[docs] def get_vpn_gateway_price(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""GetVPNGatewayPrice - 获取VPN价格
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **Grade** (str) - (Required) VPN网关规格。枚举值,包括:标准型:Standard,增强型:Enhanced。
- **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按需付费(需开启权限); 默认为获取三种价格
- **Quantity** (int) - 购买时长, 默认: 1
**Response**
- **PriceSet** (list) - 见 **VPNGatewayPriceSet** 模型定义
**Response Model**
**VPNGatewayPriceSet**
- **ChargeType** (str) - VPN网关付费方式
- **Price** (float) - VPN网关价格, 单位"元"
- **PurchaseValue** (int) - 资源有效期, 以Unix Timestamp表示
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.GetVPNGatewayPriceRequestSchema().dumps(d)
resp = self.invoke("GetVPNGatewayPrice", d, **kwargs)
return apis.GetVPNGatewayPriceResponseSchema().loads(resp)
[docs] def get_vpn_gateway_upgrade_price(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""GetVPNGatewayUpgradePrice - 获取VPN网关规格改动价格
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **Grade** (str) - (Required) 更改的VPN网关规格,枚举值为: Standard, 标准型; Enhanced, 增强型。
- **VPNGatewayId** (str) - (Required) VPN网关的资源ID
**Response**
- **Price** (float) - 调整规格后的VPN网关价格, 单位为"元", 如需退费此处为负值
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.GetVPNGatewayUpgradePriceRequestSchema().dumps(d)
resp = self.invoke("GetVPNGatewayUpgradePrice", d, **kwargs)
return apis.GetVPNGatewayUpgradePriceResponseSchema().loads(resp)
[docs] def update_vpn_gateway(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""UpdateVPNGateway - 更改VPN网关规格
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **Grade** (str) - (Required) 网关规格。枚举值为: Standard, 标准型; Enhanced, 增强型。
- **VPNGatewayId** (str) - (Required) VPN网关的资源ID
**Response**
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.UpdateVPNGatewayRequestSchema().dumps(d)
resp = self.invoke("UpdateVPNGateway", d, **kwargs)
return apis.UpdateVPNGatewayResponseSchema().loads(resp)
[docs] def update_vpn_tunnel_attribute(
self, req: typing.Optional[dict] = None, **kwargs
) -> dict:
"""UpdateVPNTunnelAttribute - 更新VPN隧道属性
**Request**
- **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_
- **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_
- **VPNTunnelId** (str) - (Required) VPN隧道的资源ID
- **IKEAuthenticationAlgorithm** (str) - IKE协商过程中使用的认证算法
- **IKEDhGroup** (str) - IKE协商过程中使用的DH组
- **IKEEncryptionAlgorithm** (str) - IKE协商过程中使用的加密算法
- **IKEExchangeMode** (str) - IKE协商过程中使用的模式,可选“主动模式”与“野蛮模式”。IKEV2不使用该参数。
- **IKELocalId** (str) - 本端标识。不填时默认使用之前的参数,结合IKEversion进行校验,IKEV2时不能为auto。
- **IKEPreSharedKey** (str) - 预共享密钥
- **IKERemoteId** (str) - 客户端标识。不填时默认使用之前的参数,结合IKEversion进行校验,IKEV2时不能为auto。
- **IKESALifetime** (str) - IKE中SA的生存时间
- **IKEVersion** (str) - 枚举值:"IKE V1","IKE V2"
- **IPSecAuthenticationAlgorithm** (str) - IPSec隧道中使用的认证算法
- **IPSecEncryptionAlgorithm** (str) - IPSec隧道中使用的加密算法
- **IPSecLocalSubnetIds** (list) - 指定VPN连接的本地子网的id,用逗号分隔
- **IPSecPFSDhGroup** (str) - IPSec中的PFS是否开启
- **IPSecProtocol** (str) - 使用的安全协议,ESP或AH
- **IPSecRemoteSubnets** (list) - 指定VPN连接的客户网段,用逗号分隔
- **IPSecSALifetime** (str) - IPSec中SA的生存时间
- **IPSecSALifetimeBytes** (str) - IPSec中SA的生存时间(以字节计)
**Response**
"""
# build request
d = {
"ProjectId": self.config.project_id,
"Region": self.config.region,
}
req and d.update(req)
d = apis.UpdateVPNTunnelAttributeRequestSchema().dumps(d)
resp = self.invoke("UpdateVPNTunnelAttribute", d, **kwargs)
return apis.UpdateVPNTunnelAttributeResponseSchema().loads(resp)