Skip to content

Commit 1c527db

Browse files
committed
Configurations: 'specification/reservations/resource-manager/Microsoft.Capacity/Reservations/tspconfig.yaml', API Version: 2022-11-01, SDK Release Type: beta, and CommitSHA: '16e90365f2fcc4efaa3e67e39c15f75c3712ad3d' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6381432 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.
1 parent 87bbaac commit 1c527db

6 files changed

Lines changed: 82 additions & 93 deletions

File tree

sdk/reservations/azure-mgmt-reservations/CHANGELOG.md

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,77 @@
11
# Release History
22

3-
## 3.0.0b1 (2026-05-28)
3+
## 3.0.0b1 (2026-06-02)
44

55
### Features Added
66

77
- Model `CurrentQuotaLimitBase` added property `system_data`
8+
- Model `QuotaRequestDetails` added property `properties`
89
- Model `QuotaRequestDetails` added property `system_data`
10+
- Model `ReservationOrderResponse` added property `properties`
11+
- Model `SkuRestriction` added property `values_property`
12+
- Added model `MergeProperties`
13+
- Added model `PatchProperties`
14+
- Added model `ReservationOrderProperties`
15+
- Added model `SplitProperties`
916

1017
### Breaking Changes
1118

12-
- This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration.
13-
- For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration.
14-
- Renamed client name `AzureReservationAPI` to `ReservationsMgmtClient`
15-
- Model `MergeRequest` moved instance variable `sources` under property `properties` whose type is `MergeProperties`
16-
- Model `Patch` moved instance variable `applied_scope_type`, `applied_scopes`, `applied_scope_properties`, `instance_flexibility`, `name`, `renew`, `renew_properties` and `review_date_time` under property `properties` whose type is `PatchProperties`
17-
- Model `QuotaRequestDetails` moved instance variable `provisioning_state`, `message`, `request_submit_time` and `value` under property `properties` whose type is `QuotaRequestProperties`
18-
- Model `ReservationOrderResponse` moved instance variable `display_name`, `request_date_time`, `created_date_time`, `expiry_date`, `expiry_date_time`, `benefit_start_time`, `original_quantity`, `term`, `provisioning_state`, `billing_plan`, `plan_information`, `reservations` and `review_date_time` under property `properties` whose type is `ReservationOrderProperties`
19-
- Model `SkuRestriction` renamed its instance variable `values` to `values_property`
20-
- Model `SplitRequest` moved instance variable `quantities` and `reservation_id` under property `properties` whose type is `SplitProperties`
19+
- Deleted or renamed model `AzureReservationAPI`
20+
- Model `MergeRequest` deleted or renamed its instance variable `sources`
21+
- Model `Patch` deleted or renamed its instance variable `applied_scope_type`
22+
- Model `Patch` deleted or renamed its instance variable `applied_scopes`
23+
- Model `Patch` deleted or renamed its instance variable `applied_scope_properties`
24+
- Model `Patch` deleted or renamed its instance variable `instance_flexibility`
25+
- Model `Patch` deleted or renamed its instance variable `name`
26+
- Model `Patch` deleted or renamed its instance variable `renew`
27+
- Model `Patch` deleted or renamed its instance variable `renew_properties`
28+
- Model `Patch` deleted or renamed its instance variable `review_date_time`
29+
- Model `QuotaRequestDetails` deleted or renamed its instance variable `provisioning_state`
30+
- Model `QuotaRequestDetails` deleted or renamed its instance variable `message`
31+
- Model `QuotaRequestDetails` deleted or renamed its instance variable `request_submit_time`
32+
- Model `QuotaRequestDetails` deleted or renamed its instance variable `value`
33+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `display_name`
34+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `request_date_time`
35+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `created_date_time`
36+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `expiry_date`
37+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `expiry_date_time`
38+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `benefit_start_time`
39+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `original_quantity`
40+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `term`
41+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `provisioning_state`
42+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `billing_plan`
43+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `plan_information`
44+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `reservations`
45+
- Model `ReservationOrderResponse` deleted or renamed its instance variable `review_date_time`
46+
- Model `SkuRestriction` deleted or renamed its instance variable `values`
47+
- Model `SplitRequest` deleted or renamed its instance variable `quantities`
48+
- Model `SplitRequest` deleted or renamed its instance variable `reservation_id`
49+
- Deleted or renamed model `CatalogsResult`
2150
- Deleted or renamed model `CreateGenericQuotaRequestParameters`
2251
- Deleted or renamed model `CurrentQuotaLimit`
2352
- Deleted or renamed model `DisplayProvisioningState`
2453
- Deleted or renamed model `Location`
54+
- Deleted or renamed model `OperationList`
55+
- Deleted or renamed model `QuotaLimits`
56+
- Deleted or renamed model `QuotaLimitsResponse`
57+
- Deleted or renamed model `QuotaRequestDetailsList`
2558
- Deleted or renamed model `QuotaRequestOneResourceSubmitResponse`
2659
- Deleted or renamed model `QuotaRequestSubmitResponse`
2760
- Deleted or renamed model `QuotaRequestSubmitResponse201`
2861
- Deleted or renamed model `RefundResponse`
62+
- Deleted or renamed model `ReservationList`
63+
- Deleted or renamed model `ReservationOrderList`
2964
- Deleted or renamed model `UserFriendlyAppliedScopeType`
3065
- Deleted or renamed model `UserFriendlyRenewState`
3166
- Method `QuotaRequestStatusOperations.list` changed its parameter `skiptoken` from `positional_or_keyword` to `keyword_only`
3267
- Method `ReservationOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only`
33-
- Method `ReservationOperations.list_all` changed its parameter `orderby`/`refresh_summary`/`skiptoken`/`selected_state`/`take` from `positional_or_keyword` to `keyword_only`
68+
- Method `ReservationOperations.list_all` changed its parameter `orderby` from `positional_or_keyword` to `keyword_only`
69+
- Method `ReservationOperations.list_all` changed its parameter `refresh_summary` from `positional_or_keyword` to `keyword_only`
70+
- Method `ReservationOperations.list_all` changed its parameter `skiptoken` from `positional_or_keyword` to `keyword_only`
71+
- Method `ReservationOperations.list_all` changed its parameter `selected_state` from `positional_or_keyword` to `keyword_only`
72+
- Method `ReservationOperations.list_all` changed its parameter `take` from `positional_or_keyword` to `keyword_only`
3473
- Method `ReservationOrderOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only`
35-
- Renamed operation group `AzureReservationAPIOperationsMixin` to `_ReservationsMgmtClientOperationsMixin`
36-
37-
### Other Changes
38-
39-
- Deleted model `CatalogsResult`/`OperationList`/`QuotaLimits`/`QuotaLimitsResponse`/`QuotaRequestDetailsList`/`ReservationList`/`ReservationOrderList` which actually were not used by SDK users
74+
- Deleted or renamed model `AzureReservationAPIOperationsMixin`
4075

4176
## 2.3.0 (2023-03-20)
4277

sdk/reservations/azure-mgmt-reservations/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pip install azure-identity
2424

2525
### Authentication
2626

27-
By default, [Azure Active Directory](https://aka.ms/awps/aad) token authentication depends on correct configuration of the following environment variables.
27+
By default, [Microsoft Entra](https://learn.microsoft.com/entra/fundamentals/what-is-entra) token authentication depends on correct configuration of the following environment variables.
2828

2929
- `AZURE_CLIENT_ID` for Azure client ID.
3030
- `AZURE_TENANT_ID` for Azure tenant ID.
@@ -36,11 +36,11 @@ With above configuration, client can be authenticated by following code:
3636

3737
```python
3838
from azure.identity import DefaultAzureCredential
39-
from azure.mgmt.reservations import AzureReservationAPI
39+
from azure.mgmt.reservations import ReservationsMgmtClient
4040
import os
4141

4242
sub_id = os.getenv("AZURE_SUBSCRIPTION_ID")
43-
client = AzureReservationAPI(credential=DefaultAzureCredential(), subscription_id=sub_id)
43+
client = ReservationsMgmtClient(credential=DefaultAzureCredential(), subscription_id=sub_id)
4444
```
4545

4646
## Examples

sdk/reservations/azure-mgmt-reservations/_metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"Quota": "2020-10-25",
44
"Reservations": "2022-11-01"
55
},
6-
"commit": "cb62053a18882dd258d9922be9770702b7ef6ac9",
6+
"commit": "16e90365f2fcc4efaa3e67e39c15f75c3712ad3d",
77
"repository_url": "https://github.com/Azure/azure-rest-api-specs",
88
"typespec_src": "specification/reservations/resource-manager/Microsoft.Capacity/Reservations",
99
"emitterVersion": "0.62.1"

sdk/reservations/azure-mgmt-reservations/tests/conftest.py

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,16 @@
1414

1515
@pytest.fixture(scope="session", autouse=True)
1616
def add_sanitizers(test_proxy):
17-
reservationsmgmt_subscription_id = os.environ.get(
18-
"AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000"
19-
)
20-
reservationsmgmt_tenant_id = os.environ.get(
21-
"AZURE_TENANT_ID", "00000000-0000-0000-0000-000000000000"
22-
)
23-
reservationsmgmt_client_id = os.environ.get(
24-
"AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000"
25-
)
26-
reservationsmgmt_client_secret = os.environ.get(
27-
"AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000"
28-
)
17+
reservationsmgmt_subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000")
18+
reservationsmgmt_tenant_id = os.environ.get("AZURE_TENANT_ID", "00000000-0000-0000-0000-000000000000")
19+
reservationsmgmt_client_id = os.environ.get("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000")
20+
reservationsmgmt_client_secret = os.environ.get("AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000")
2921
add_general_regex_sanitizer(
3022
regex=reservationsmgmt_subscription_id,
3123
value="00000000-0000-0000-0000-000000000000",
3224
)
33-
add_general_regex_sanitizer(
34-
regex=reservationsmgmt_tenant_id, value="00000000-0000-0000-0000-000000000000"
35-
)
36-
add_general_regex_sanitizer(
37-
regex=reservationsmgmt_client_id, value="00000000-0000-0000-0000-000000000000"
38-
)
25+
add_general_regex_sanitizer(regex=reservationsmgmt_tenant_id, value="00000000-0000-0000-0000-000000000000")
26+
add_general_regex_sanitizer(regex=reservationsmgmt_client_id, value="00000000-0000-0000-0000-000000000000")
3927
add_general_regex_sanitizer(
4028
regex=reservationsmgmt_client_secret,
4129
value="00000000-0000-0000-0000-000000000000",

sdk/reservations/azure-mgmt-reservations/tests/disable_test_mgmt_reservations.py

Lines changed: 20 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@
1818
class TestMgmtReservations(AzureMgmtRecordedTestCase):
1919

2020
def setup_method(self, _):
21-
self.reservation_client = self.create_basic_client(
22-
AzureReservationAPI, base_url=_CUSTOM_ENDPOINT
23-
)
21+
self.reservation_client = self.create_basic_client(AzureReservationAPI, base_url=_CUSTOM_ENDPOINT)
2422
# self.reservation_client = self.create_basic_client(AzureReservationAPI)
2523

2624
def _validate_reservation_order(self, reservation_order):
@@ -57,37 +55,27 @@ def _create_purchase_request(self):
5755
display_name="TestPythonPurchase",
5856
applied_scope_type="Single",
5957
applied_scopes=["/subscriptions/{}".format(self.settings.SUBSCRIPTION_ID)],
60-
reserved_resource_properties=PurchaseRequestPropertiesReservedResourceProperties(
61-
instance_flexibility="On"
62-
),
58+
reserved_resource_properties=PurchaseRequestPropertiesReservedResourceProperties(instance_flexibility="On"),
6359
)
6460

6561
def _calculate_reservation_order(self):
6662
purchase_request = self._create_purchase_request()
67-
calculate_response = self.reservation_client.reservation_order.calculate(
68-
purchase_request
69-
)
63+
calculate_response = self.reservation_client.reservation_order.calculate(purchase_request)
7064
return calculate_response.properties.reservation_order_id
7165

7266
def _purchase_reservation_order(self, reservation_order_id):
7367
purchase_request = self._create_purchase_request()
74-
self.reservation_client.reservation_order.purchase(
75-
reservation_order_id, purchase_request
76-
).result()
68+
self.reservation_client.reservation_order.purchase(reservation_order_id, purchase_request).result()
7769

7870
def _test_reservation_order_get(self, reservation_order_id):
79-
reservation_order = self.reservation_client.reservation_order.get(
80-
reservation_order_id
81-
)
71+
reservation_order = self.reservation_client.reservation_order.get(reservation_order_id)
8272
self.assertIsNotNone(reservation_order)
8373
self._validate_reservation_order(reservation_order)
8474

8575
return reservation_order
8676

8777
def _test_reservation_get(self, reservation_order_id, reservation_id):
88-
reservation = self.reservation_client.reservation.get(
89-
reservation_id, reservation_order_id
90-
)
78+
reservation = self.reservation_client.reservation.get(reservation_id, reservation_order_id)
9179
self._validate_reservation(reservation)
9280

9381
def _test_update_reservation_to_shared(self, reservation_order_id, reservation_id):
@@ -96,9 +84,7 @@ def _test_update_reservation_to_shared(self, reservation_order_id, reservation_i
9684
applied_scopes=None,
9785
instance_flexibility=InstanceFlexibility.on,
9886
)
99-
reservation = self.reservation_client.reservation.update(
100-
reservation_order_id, reservation_id, patch
101-
).result()
87+
reservation = self.reservation_client.reservation.update(reservation_order_id, reservation_id, patch).result()
10288
self._validate_reservation(reservation)
10389

10490
def _test_update_reservation_to_single(self, reservation_order_id, reservation_id):
@@ -108,23 +94,17 @@ def _test_update_reservation_to_single(self, reservation_order_id, reservation_i
10894
applied_scopes=scope,
10995
instance_flexibility=InstanceFlexibility.on,
11096
)
111-
reservation = self.reservation_client.reservation.update(
112-
reservation_order_id, reservation_id, patch
113-
).result()
97+
reservation = self.reservation_client.reservation.update(reservation_order_id, reservation_id, patch).result()
11498
self._validate_reservation(reservation)
11599

116100
def _test_split(self, reservation_order_id, reservation_id):
117-
reservation_list = self.reservation_client.reservation.list(
118-
reservation_order_id
119-
)
101+
reservation_list = self.reservation_client.reservation.list(reservation_order_id)
120102
for reservation in reservation_list:
121103
if "Succeeded" in reservation.properties.provisioning_state:
122104
reservation_to_update = reservation
123105
split_reservation_id = reservation_to_update.id.split("/")[6]
124-
reservation_id = (
125-
"/providers/Microsoft.Capacity/reservationOrders/{}/reservations/{}".format(
126-
reservation_order_id, split_reservation_id
127-
)
106+
reservation_id = "/providers/Microsoft.Capacity/reservationOrders/{}/reservations/{}".format(
107+
reservation_order_id, split_reservation_id
128108
)
129109
split_response = self.reservation_client.reservation.split(
130110
reservation_order_id, [1, 1], reservation_id
@@ -138,9 +118,7 @@ def _test_split(self, reservation_order_id, reservation_id):
138118
self.assertTrue(split_quantity == 2)
139119

140120
def _test_merge(self, reservation_order_id):
141-
reservation_list = self.reservation_client.reservation.list(
142-
reservation_order_id
143-
)
121+
reservation_list = self.reservation_client.reservation.list(reservation_order_id)
144122
split_id1 = None
145123
split_id2 = None
146124
for reservation in reservation_list:
@@ -149,15 +127,11 @@ def _test_merge(self, reservation_order_id):
149127
split_id1 = reservation.id.split("/")[6]
150128
else:
151129
split_id2 = reservation.id.split("/")[6]
152-
merge_id1 = (
153-
"/providers/Microsoft.Capacity/reservationOrders/{}/reservations/{}".format(
154-
reservation_order_id, split_id1
155-
)
130+
merge_id1 = "/providers/Microsoft.Capacity/reservationOrders/{}/reservations/{}".format(
131+
reservation_order_id, split_id1
156132
)
157-
merge_id2 = (
158-
"/providers/Microsoft.Capacity/reservationOrders/{}/reservations/{}".format(
159-
reservation_order_id, split_id2
160-
)
133+
merge_id2 = "/providers/Microsoft.Capacity/reservationOrders/{}/reservations/{}".format(
134+
reservation_order_id, split_id2
161135
)
162136
merge_response = self.reservation_client.reservation.merge(
163137
reservation_order_id, [merge_id1, merge_id2]
@@ -171,16 +145,12 @@ def _test_merge(self, reservation_order_id):
171145
self.assertTrue(merge_quantity == 2)
172146

173147
def _test_reservation_history_list(self, reservation_order_id, reservation_id):
174-
reservation_history = self.reservation_client.reservation.list_revisions(
175-
reservation_id, reservation_order_id
176-
)
148+
reservation_history = self.reservation_client.reservation.list_revisions(reservation_id, reservation_order_id)
177149
for reservation in reservation_history:
178150
self._validate_reservation(reservation)
179151

180152
def _test_reservation_list(self, reservation_order_id):
181-
reservation_list = self.reservation_client.reservation.list(
182-
reservation_order_id
183-
)
153+
reservation_list = self.reservation_client.reservation.list(reservation_order_id)
184154
for reservation in reservation_list:
185155
self._validate_reservation(reservation)
186156

@@ -241,17 +211,13 @@ def test_get_catalog(self):
241211
self.assertTrue(len(item.sku_properties) > 0)
242212

243213
def test_applied_reservation(self):
244-
applied_reservation = self.reservation_client.get_applied_reservation_list(
245-
self.settings.SUBSCRIPTION_ID
246-
)
214+
applied_reservation = self.reservation_client.get_applied_reservation_list(self.settings.SUBSCRIPTION_ID)
247215
expected_id = "/subscriptions/{}/providers/microsoft.capacity/AppliedReservations/default".format(
248216
self.settings.SUBSCRIPTION_ID
249217
)
250218
self.assertEqual(expected_id, applied_reservation.id)
251219
self.assertEqual("default", applied_reservation.name)
252-
self.assertEqual(
253-
"Microsoft.Capacity/AppliedReservations", applied_reservation.type
254-
)
220+
self.assertEqual("Microsoft.Capacity/AppliedReservations", applied_reservation.type)
255221
for order_id in applied_reservation.reservation_order_ids.value:
256222
self.assertIn("/providers/Microsoft.Capacity/reservationorders/", order_id)
257223

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
directory: specification/reservations/resource-manager/Microsoft.Capacity/Reservations
2-
commit: cb62053a18882dd258d9922be9770702b7ef6ac9
2+
commit: 16e90365f2fcc4efaa3e67e39c15f75c3712ad3d
33
repo: Azure/azure-rest-api-specs
44
additionalDirectories:

0 commit comments

Comments
 (0)