diff --git a/sdk/reservations/azure-mgmt-reservations/README.rst b/sdk/reservations/azure-mgmt-reservations/README.rst index f583e6e44d8d..c497c7ee9de6 100644 --- a/sdk/reservations/azure-mgmt-reservations/README.rst +++ b/sdk/reservations/azure-mgmt-reservations/README.rst @@ -6,7 +6,7 @@ This is the Microsoft Azure Reservations Client Library. Azure Resource Manager (ARM) is the next generation of management APIs that replace the old Azure Service Management (ASM). -This package has been tested with Python 2.7, 3.4, 3.5, 3.6 and 3.7. +This package has been tested with Python 2.7, 3.5, 3.6 and 3.7. For the older Azure Service Management (ASM) libraries, see `azure-servicemanagement-legacy `__ library. diff --git a/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/__init__.py b/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/__init__.py index 9f0773289ffe..ad009899dc72 100644 --- a/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/__init__.py +++ b/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/__init__.py @@ -24,8 +24,11 @@ from ._models_py3 import OperationDisplay from ._models_py3 import OperationResponse from ._models_py3 import Patch + from ._models_py3 import PatchPropertiesRenewProperties from ._models_py3 import PurchaseRequest from ._models_py3 import PurchaseRequestPropertiesReservedResourceProperties + from ._models_py3 import RenewPropertiesResponse + from ._models_py3 import RenewPropertiesResponseLockedPriceTotal from ._models_py3 import ReservationMergeProperties from ._models_py3 import ReservationOrderResponse from ._models_py3 import ReservationProperties @@ -50,8 +53,11 @@ from ._models import OperationDisplay from ._models import OperationResponse from ._models import Patch + from ._models import PatchPropertiesRenewProperties from ._models import PurchaseRequest from ._models import PurchaseRequestPropertiesReservedResourceProperties + from ._models import RenewPropertiesResponse + from ._models import RenewPropertiesResponseLockedPriceTotal from ._models import ReservationMergeProperties from ._models import ReservationOrderResponse from ._models import ReservationProperties @@ -88,8 +94,11 @@ 'OperationDisplay', 'OperationResponse', 'Patch', + 'PatchPropertiesRenewProperties', 'PurchaseRequest', 'PurchaseRequestPropertiesReservedResourceProperties', + 'RenewPropertiesResponse', + 'RenewPropertiesResponseLockedPriceTotal', 'ReservationMergeProperties', 'ReservationOrderResponse', 'ReservationProperties', diff --git a/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/_models.py b/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/_models.py index cda1db81482f..444fddd394f7 100644 --- a/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/_models.py +++ b/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/_models.py @@ -409,6 +409,11 @@ class Patch(Model): ~azure.mgmt.reservations.models.InstanceFlexibility :param name: Name of the Reservation :type name: str + :param renew: + :type renew: bool + :param renew_properties: + :type renew_properties: + ~azure.mgmt.reservations.models.PatchPropertiesRenewProperties """ _attribute_map = { @@ -416,6 +421,8 @@ class Patch(Model): 'applied_scopes': {'key': 'properties.appliedScopes', 'type': '[str]'}, 'instance_flexibility': {'key': 'properties.instanceFlexibility', 'type': 'str'}, 'name': {'key': 'properties.name', 'type': 'str'}, + 'renew': {'key': 'properties.renew', 'type': 'bool'}, + 'renew_properties': {'key': 'properties.renewProperties', 'type': 'PatchPropertiesRenewProperties'}, } def __init__(self, **kwargs): @@ -424,6 +431,24 @@ def __init__(self, **kwargs): self.applied_scopes = kwargs.get('applied_scopes', None) self.instance_flexibility = kwargs.get('instance_flexibility', None) self.name = kwargs.get('name', None) + self.renew = kwargs.get('renew', None) + self.renew_properties = kwargs.get('renew_properties', None) + + +class PatchPropertiesRenewProperties(Model): + """PatchPropertiesRenewProperties. + + :param purchase_properties: + :type purchase_properties: ~azure.mgmt.reservations.models.PurchaseRequest + """ + + _attribute_map = { + 'purchase_properties': {'key': 'purchaseProperties', 'type': 'PurchaseRequest'}, + } + + def __init__(self, **kwargs): + super(PatchPropertiesRenewProperties, self).__init__(**kwargs) + self.purchase_properties = kwargs.get('purchase_properties', None) class PurchaseRequest(Model): @@ -450,6 +475,8 @@ class PurchaseRequest(Model): ~azure.mgmt.reservations.models.AppliedScopeType :param applied_scopes: :type applied_scopes: list[str] + :param renew: + :type renew: bool :param reserved_resource_properties: Properties specific to each reserved resource type. Not required if not applicable. :type reserved_resource_properties: @@ -466,6 +493,7 @@ class PurchaseRequest(Model): 'display_name': {'key': 'properties.displayName', 'type': 'str'}, 'applied_scope_type': {'key': 'properties.appliedScopeType', 'type': 'str'}, 'applied_scopes': {'key': 'properties.appliedScopes', 'type': '[str]'}, + 'renew': {'key': 'properties.renew', 'type': 'bool'}, 'reserved_resource_properties': {'key': 'properties.reservedResourceProperties', 'type': 'PurchaseRequestPropertiesReservedResourceProperties'}, } @@ -480,6 +508,7 @@ def __init__(self, **kwargs): self.display_name = kwargs.get('display_name', None) self.applied_scope_type = kwargs.get('applied_scope_type', None) self.applied_scopes = kwargs.get('applied_scopes', None) + self.renew = kwargs.get('renew', None) self.reserved_resource_properties = kwargs.get('reserved_resource_properties', None) @@ -501,6 +530,50 @@ def __init__(self, **kwargs): self.instance_flexibility = kwargs.get('instance_flexibility', None) +class RenewPropertiesResponse(Model): + """RenewPropertiesResponse. + + :param purchase_properties: + :type purchase_properties: ~azure.mgmt.reservations.models.PurchaseRequest + :param locked_price_total: Locked currency & amount for new reservation + purchase at the time of renewal. Price is locked 30 days before expiry + date time if renew is true. + :type locked_price_total: + ~azure.mgmt.reservations.models.RenewPropertiesResponseLockedPriceTotal + """ + + _attribute_map = { + 'purchase_properties': {'key': 'purchaseProperties', 'type': 'PurchaseRequest'}, + 'locked_price_total': {'key': 'lockedPriceTotal', 'type': 'RenewPropertiesResponseLockedPriceTotal'}, + } + + def __init__(self, **kwargs): + super(RenewPropertiesResponse, self).__init__(**kwargs) + self.purchase_properties = kwargs.get('purchase_properties', None) + self.locked_price_total = kwargs.get('locked_price_total', None) + + +class RenewPropertiesResponseLockedPriceTotal(Model): + """Locked currency & amount for new reservation purchase at the time of + renewal. Price is locked 30 days before expiry date time if renew is true. + + :param currency_code: + :type currency_code: str + :param amount: + :type amount: str + """ + + _attribute_map = { + 'currency_code': {'key': 'currencyCode', 'type': 'str'}, + 'amount': {'key': 'amount', 'type': 'str'}, + } + + def __init__(self, **kwargs): + super(RenewPropertiesResponseLockedPriceTotal, self).__init__(**kwargs) + self.currency_code = kwargs.get('currency_code', None) + self.amount = kwargs.get('amount', None) + + class ReservationMergeProperties(Model): """ReservationMergeProperties. @@ -642,6 +715,21 @@ class ReservationProperties(Model): :param merge_properties: :type merge_properties: ~azure.mgmt.reservations.models.ReservationMergeProperties + :param billing_scope_id: + :type billing_scope_id: str + :param renew: + :type renew: bool + :param renew_source: Reservation Id of the reservation from which this + reservation is renewed. Format of the resource Id is + /providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}. + :type renew_source: str + :param renew_destination: Reservation Id of the reservation which is + purchased because of renew. Format of the resource Id is + /providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}. + :type renew_destination: str + :param renew_properties: + :type renew_properties: + ~azure.mgmt.reservations.models.RenewPropertiesResponse """ _validation = { @@ -663,6 +751,11 @@ class ReservationProperties(Model): 'extended_status_info': {'key': 'extendedStatusInfo', 'type': 'ExtendedStatusInfo'}, 'split_properties': {'key': 'splitProperties', 'type': 'ReservationSplitProperties'}, 'merge_properties': {'key': 'mergeProperties', 'type': 'ReservationMergeProperties'}, + 'billing_scope_id': {'key': 'billingScopeId', 'type': 'str'}, + 'renew': {'key': 'renew', 'type': 'bool'}, + 'renew_source': {'key': 'renewSource', 'type': 'str'}, + 'renew_destination': {'key': 'renewDestination', 'type': 'str'}, + 'renew_properties': {'key': 'renewProperties', 'type': 'RenewPropertiesResponse'}, } def __init__(self, **kwargs): @@ -681,6 +774,11 @@ def __init__(self, **kwargs): self.extended_status_info = kwargs.get('extended_status_info', None) self.split_properties = kwargs.get('split_properties', None) self.merge_properties = kwargs.get('merge_properties', None) + self.billing_scope_id = kwargs.get('billing_scope_id', None) + self.renew = kwargs.get('renew', None) + self.renew_source = kwargs.get('renew_source', None) + self.renew_destination = kwargs.get('renew_destination', None) + self.renew_properties = kwargs.get('renew_properties', None) class ReservationResponse(Model): diff --git a/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/_models_py3.py b/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/_models_py3.py index f1a993303496..72203b2ae69f 100644 --- a/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/_models_py3.py +++ b/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/models/_models_py3.py @@ -409,6 +409,11 @@ class Patch(Model): ~azure.mgmt.reservations.models.InstanceFlexibility :param name: Name of the Reservation :type name: str + :param renew: + :type renew: bool + :param renew_properties: + :type renew_properties: + ~azure.mgmt.reservations.models.PatchPropertiesRenewProperties """ _attribute_map = { @@ -416,14 +421,34 @@ class Patch(Model): 'applied_scopes': {'key': 'properties.appliedScopes', 'type': '[str]'}, 'instance_flexibility': {'key': 'properties.instanceFlexibility', 'type': 'str'}, 'name': {'key': 'properties.name', 'type': 'str'}, + 'renew': {'key': 'properties.renew', 'type': 'bool'}, + 'renew_properties': {'key': 'properties.renewProperties', 'type': 'PatchPropertiesRenewProperties'}, } - def __init__(self, *, applied_scope_type=None, applied_scopes=None, instance_flexibility=None, name: str=None, **kwargs) -> None: + def __init__(self, *, applied_scope_type=None, applied_scopes=None, instance_flexibility=None, name: str=None, renew: bool=None, renew_properties=None, **kwargs) -> None: super(Patch, self).__init__(**kwargs) self.applied_scope_type = applied_scope_type self.applied_scopes = applied_scopes self.instance_flexibility = instance_flexibility self.name = name + self.renew = renew + self.renew_properties = renew_properties + + +class PatchPropertiesRenewProperties(Model): + """PatchPropertiesRenewProperties. + + :param purchase_properties: + :type purchase_properties: ~azure.mgmt.reservations.models.PurchaseRequest + """ + + _attribute_map = { + 'purchase_properties': {'key': 'purchaseProperties', 'type': 'PurchaseRequest'}, + } + + def __init__(self, *, purchase_properties=None, **kwargs) -> None: + super(PatchPropertiesRenewProperties, self).__init__(**kwargs) + self.purchase_properties = purchase_properties class PurchaseRequest(Model): @@ -450,6 +475,8 @@ class PurchaseRequest(Model): ~azure.mgmt.reservations.models.AppliedScopeType :param applied_scopes: :type applied_scopes: list[str] + :param renew: + :type renew: bool :param reserved_resource_properties: Properties specific to each reserved resource type. Not required if not applicable. :type reserved_resource_properties: @@ -466,10 +493,11 @@ class PurchaseRequest(Model): 'display_name': {'key': 'properties.displayName', 'type': 'str'}, 'applied_scope_type': {'key': 'properties.appliedScopeType', 'type': 'str'}, 'applied_scopes': {'key': 'properties.appliedScopes', 'type': '[str]'}, + 'renew': {'key': 'properties.renew', 'type': 'bool'}, 'reserved_resource_properties': {'key': 'properties.reservedResourceProperties', 'type': 'PurchaseRequestPropertiesReservedResourceProperties'}, } - def __init__(self, *, sku=None, location: str=None, reserved_resource_type=None, billing_scope_id: str=None, term=None, quantity: int=None, display_name: str=None, applied_scope_type=None, applied_scopes=None, reserved_resource_properties=None, **kwargs) -> None: + def __init__(self, *, sku=None, location: str=None, reserved_resource_type=None, billing_scope_id: str=None, term=None, quantity: int=None, display_name: str=None, applied_scope_type=None, applied_scopes=None, renew: bool=None, reserved_resource_properties=None, **kwargs) -> None: super(PurchaseRequest, self).__init__(**kwargs) self.sku = sku self.location = location @@ -480,6 +508,7 @@ def __init__(self, *, sku=None, location: str=None, reserved_resource_type=None, self.display_name = display_name self.applied_scope_type = applied_scope_type self.applied_scopes = applied_scopes + self.renew = renew self.reserved_resource_properties = reserved_resource_properties @@ -501,6 +530,50 @@ def __init__(self, *, instance_flexibility=None, **kwargs) -> None: self.instance_flexibility = instance_flexibility +class RenewPropertiesResponse(Model): + """RenewPropertiesResponse. + + :param purchase_properties: + :type purchase_properties: ~azure.mgmt.reservations.models.PurchaseRequest + :param locked_price_total: Locked currency & amount for new reservation + purchase at the time of renewal. Price is locked 30 days before expiry + date time if renew is true. + :type locked_price_total: + ~azure.mgmt.reservations.models.RenewPropertiesResponseLockedPriceTotal + """ + + _attribute_map = { + 'purchase_properties': {'key': 'purchaseProperties', 'type': 'PurchaseRequest'}, + 'locked_price_total': {'key': 'lockedPriceTotal', 'type': 'RenewPropertiesResponseLockedPriceTotal'}, + } + + def __init__(self, *, purchase_properties=None, locked_price_total=None, **kwargs) -> None: + super(RenewPropertiesResponse, self).__init__(**kwargs) + self.purchase_properties = purchase_properties + self.locked_price_total = locked_price_total + + +class RenewPropertiesResponseLockedPriceTotal(Model): + """Locked currency & amount for new reservation purchase at the time of + renewal. Price is locked 30 days before expiry date time if renew is true. + + :param currency_code: + :type currency_code: str + :param amount: + :type amount: str + """ + + _attribute_map = { + 'currency_code': {'key': 'currencyCode', 'type': 'str'}, + 'amount': {'key': 'amount', 'type': 'str'}, + } + + def __init__(self, *, currency_code: str=None, amount: str=None, **kwargs) -> None: + super(RenewPropertiesResponseLockedPriceTotal, self).__init__(**kwargs) + self.currency_code = currency_code + self.amount = amount + + class ReservationMergeProperties(Model): """ReservationMergeProperties. @@ -642,6 +715,21 @@ class ReservationProperties(Model): :param merge_properties: :type merge_properties: ~azure.mgmt.reservations.models.ReservationMergeProperties + :param billing_scope_id: + :type billing_scope_id: str + :param renew: + :type renew: bool + :param renew_source: Reservation Id of the reservation from which this + reservation is renewed. Format of the resource Id is + /providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}. + :type renew_source: str + :param renew_destination: Reservation Id of the reservation which is + purchased because of renew. Format of the resource Id is + /providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}. + :type renew_destination: str + :param renew_properties: + :type renew_properties: + ~azure.mgmt.reservations.models.RenewPropertiesResponse """ _validation = { @@ -663,9 +751,14 @@ class ReservationProperties(Model): 'extended_status_info': {'key': 'extendedStatusInfo', 'type': 'ExtendedStatusInfo'}, 'split_properties': {'key': 'splitProperties', 'type': 'ReservationSplitProperties'}, 'merge_properties': {'key': 'mergeProperties', 'type': 'ReservationMergeProperties'}, + 'billing_scope_id': {'key': 'billingScopeId', 'type': 'str'}, + 'renew': {'key': 'renew', 'type': 'bool'}, + 'renew_source': {'key': 'renewSource', 'type': 'str'}, + 'renew_destination': {'key': 'renewDestination', 'type': 'str'}, + 'renew_properties': {'key': 'renewProperties', 'type': 'RenewPropertiesResponse'}, } - def __init__(self, *, reserved_resource_type=None, instance_flexibility=None, display_name: str=None, applied_scopes=None, applied_scope_type=None, quantity: int=None, provisioning_state: str=None, effective_date_time=None, expiry_date=None, sku_description: str=None, extended_status_info=None, split_properties=None, merge_properties=None, **kwargs) -> None: + def __init__(self, *, reserved_resource_type=None, instance_flexibility=None, display_name: str=None, applied_scopes=None, applied_scope_type=None, quantity: int=None, provisioning_state: str=None, effective_date_time=None, expiry_date=None, sku_description: str=None, extended_status_info=None, split_properties=None, merge_properties=None, billing_scope_id: str=None, renew: bool=None, renew_source: str=None, renew_destination: str=None, renew_properties=None, **kwargs) -> None: super(ReservationProperties, self).__init__(**kwargs) self.reserved_resource_type = reserved_resource_type self.instance_flexibility = instance_flexibility @@ -681,6 +774,11 @@ def __init__(self, *, reserved_resource_type=None, instance_flexibility=None, di self.extended_status_info = extended_status_info self.split_properties = split_properties self.merge_properties = merge_properties + self.billing_scope_id = billing_scope_id + self.renew = renew + self.renew_source = renew_source + self.renew_destination = renew_destination + self.renew_properties = renew_properties class ReservationResponse(Model): diff --git a/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/operations/_reservation_operations.py b/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/operations/_reservation_operations.py index 9812117567f9..d3bafdb65aed 100644 --- a/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/operations/_reservation_operations.py +++ b/sdk/reservations/azure-mgmt-reservations/azure/mgmt/reservations/operations/_reservation_operations.py @@ -315,7 +315,7 @@ def internal_paging(next_link=None): list.metadata = {'url': '/providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations'} def get( - self, reservation_id, reservation_order_id, custom_headers=None, raw=False, **operation_config): + self, reservation_id, reservation_order_id, expand=None, custom_headers=None, raw=False, **operation_config): """Get `Reservation` details. Get specific `Reservation` details. @@ -324,6 +324,8 @@ def get( :type reservation_id: str :param reservation_order_id: Order Id of the reservation :type reservation_order_id: str + :param expand: Supported value of this query is renewProperties + :type expand: str :param dict custom_headers: headers that will be added to the request :param bool raw: returns the direct response alongside the deserialized response @@ -346,6 +348,8 @@ def get( # Construct parameters query_parameters = {} query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str') + if expand is not None: + query_parameters['expand'] = self._serialize.query("expand", expand, 'str') # Construct headers header_parameters = {} diff --git a/sdk/reservations/azure-mgmt-reservations/setup.py b/sdk/reservations/azure-mgmt-reservations/setup.py index 3a7a2583f650..e3196eefd11e 100644 --- a/sdk/reservations/azure-mgmt-reservations/setup.py +++ b/sdk/reservations/azure-mgmt-reservations/setup.py @@ -64,7 +64,6 @@ 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7',