Skip to content

Commit

Permalink
Start and stop Azure Spring Cloud service instance (#4033)
Browse files Browse the repository at this point in the history
* stop/start spring cloud service

* update setup.py and changelog

* use azclierror

* fix version error

* fix ci error

* fix  application insights test error

* fix application insights test

* add test for start/stop

* fix version

* update version

Co-authored-by: caiqing <caiqing@microsoft.com>
  • Loading branch information
qingc and caiqing authored Nov 2, 2021
1 parent ca883c5 commit dc4b05c
Show file tree
Hide file tree
Showing 10 changed files with 2,868 additions and 23 deletions.
11 changes: 7 additions & 4 deletions src/spring-cloud/HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
Release History
===============
2.11.1
2.11.2
-----
* Add support for Diagnostic Operation. Heap dump: 'spring-cloud app deployment generate-heap-dump'. Thread Dump: 'spring-cloud app deployment generate-thread-dump'. JFR: 'spring-cloud app deployment start-jfr'
* Add support to stop and start Azure Spring Cloud service instance
* Add new command `spring-cloud stop` to stop a running Azure Spring Cloud service instance
* Add new command `spring-cloud start` to start a stopped Azure Spring Cloud service instance

2.11.1
-----
* Add support for Diagnostic Operation. Heap dump: 'spring-cloud app deployment generate-heap-dump'. Thread Dump: 'spring-cloud app deployment generate-thread-dump'. JFR: 'spring-cloud app deployment start-jfr'
* Add support for public certificate crud, source could be either key vault or local file
* Application could load public certificate by using argument `--loaded_public_certificate_file` in batch or
* Application could load public certificate by using argument `--loaded_public_certificate_file` in batch or
directly using `spring-cloud app append-loaded-public-certificate` one by one
* Add support to list all apps which have loaded the certificate `spring-cloud certificate list-reference-app`

Expand All @@ -26,7 +29,7 @@ Release History
* Enabling In-Process Agent is equivalent to enabling application insights.
* Mark `enable-java-agent` as deprecated, since IPA is GA-ed.
* Mark application insights related parameter as deprecated in `az spring-cloud update`,
it's still supported, but will de decommissioned in the future,
it's still supported, but will de decommissioned in the future,
and we recommended to use `az spring-cloud app-insights update`.
* Support `--sampling-rate` in `az spring-cloud create`.
* Decommissioned `disable-distributed-tracing` parameter.
Expand Down
10 changes: 10 additions & 0 deletions src/spring-cloud/azext_spring_cloud/_help.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,16 @@
short-summary: Delete an Azure Spring Cloud.
"""

helps['spring-cloud start'] = """
type: command
short-summary: Start an Azure Spring Cloud.
"""

helps['spring-cloud stop'] = """
type: command
short-summary: Stop an Azure Spring Cloud.
"""

helps['spring-cloud list'] = """
type: command
short-summary: List all Azure Spring Cloud in the given resource group, otherwise list the subscription's.
Expand Down
6 changes: 4 additions & 2 deletions src/spring-cloud/azext_spring_cloud/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ def load_command_table(self, _):
g.custom_command('create', 'spring_cloud_create', supports_no_wait=True, client_factory=cf_spring_cloud)
g.custom_command('update', 'spring_cloud_update', supports_no_wait=True, client_factory=cf_spring_cloud)
g.custom_command('delete', 'spring_cloud_delete', supports_no_wait=True)
g.custom_command('list', 'spring_cloud_list', table_transformer=transform_spring_cloud_table_output)
g.custom_show_command('show', 'spring_cloud_get', table_transformer=transform_spring_cloud_table_output)
g.custom_command('start', 'spring_cloud_start', supports_no_wait=True, client_factory=cf_spring_cloud_20210901preview)
g.custom_command('stop', 'spring_cloud_stop', supports_no_wait=True, client_factory=cf_spring_cloud_20210901preview)
g.custom_command('list', 'spring_cloud_list', client_factory=cf_spring_cloud_20210901preview, table_transformer=transform_spring_cloud_table_output)
g.custom_show_command('show', 'spring_cloud_get', client_factory=cf_spring_cloud_20210901preview, table_transformer=transform_spring_cloud_table_output)

with self.command_group('spring-cloud test-endpoint', client_factory=cf_spring_cloud,
exception_handler=handle_asc_exception) as g:
Expand Down
22 changes: 20 additions & 2 deletions src/spring-cloud/azext_spring_cloud/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,14 +209,32 @@ def spring_cloud_delete(cmd, client, resource_group, name, no_wait=False):
return sdk_no_wait(no_wait, client.begin_delete, resource_group_name=resource_group, service_name=name)


def spring_cloud_start(cmd, client, resource_group, name, no_wait=False):
resource = client.services.get(resource_group, name)
state = resource.properties.provisioning_state
power_state = resource.properties.power_state
if state != "Succeeded" or power_state != "Stopped":
raise ClientRequestError("Service is in Provisioning State({}) and Power State({}), starting cannot be performed.".format(state, power_state))
return sdk_no_wait(no_wait, client.services.begin_start, resource_group_name=resource_group, service_name=name)


def spring_cloud_stop(cmd, client, resource_group, name, no_wait=False):
resource = client.services.get(resource_group, name)
state = resource.properties.provisioning_state
power_state = resource.properties.power_state
if state != "Succeeded" or power_state != "Running":
raise ClientRequestError("Service is in Provisioning State({}) and Power State({}), stopping cannot be performed.".format(state, power_state))
return sdk_no_wait(no_wait, client.services.begin_stop, resource_group_name=resource_group, service_name=name)


def spring_cloud_list(cmd, client, resource_group=None):
if resource_group is None:
return client.list_by_subscription()
return client.list(resource_group)
return client.services.list(resource_group)


def spring_cloud_get(cmd, client, resource_group, name):
return client.get(resource_group, name)
return client.services.get(resource_group, name)


def enable_test_endpoint(cmd, client, resource_group, name):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1477,7 +1477,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"6c216a7c0bb34900ba440bfe64c81be8","networkProfile":{"outboundIPs":{"publicIPs":["20.81.127.86"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1"}'
Expand Down Expand Up @@ -1639,7 +1639,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"6c216a7c0bb34900ba440bfe64c81be8","networkProfile":{"outboundIPs":{"publicIPs":["20.81.127.86"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1"}'
Expand Down Expand Up @@ -3200,7 +3200,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"3532eeee0efc41d49fc2a611eab09283","networkProfile":{"outboundIPs":{"publicIPs":["52.151.210.168"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2","name":"cli-unittest-2"}'
Expand Down Expand Up @@ -3363,7 +3363,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"3532eeee0efc41d49fc2a611eab09283","networkProfile":{"outboundIPs":{"publicIPs":["52.151.210.168"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-2","name":"cli-unittest-2"}'
Expand Down Expand Up @@ -5074,7 +5074,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"3b5aeec8f3aa47719fe6df9f33a32367","networkProfile":{"outboundIPs":{"publicIPs":["52.151.214.131"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3","name":"cli-unittest-3"}'
Expand Down Expand Up @@ -5183,7 +5183,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"3b5aeec8f3aa47719fe6df9f33a32367","networkProfile":{"outboundIPs":{"publicIPs":["52.151.214.131"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-3","name":"cli-unittest-3"}'
Expand Down Expand Up @@ -6794,7 +6794,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"617a4387b43d41df8a8c4002397d0fa9","networkProfile":{"outboundIPs":{"publicIPs":["20.72.174.75"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4","name":"cli-unittest-4"}'
Expand Down Expand Up @@ -6904,7 +6904,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"617a4387b43d41df8a8c4002397d0fa9","networkProfile":{"outboundIPs":{"publicIPs":["20.72.174.75"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-4","name":"cli-unittest-4"}'
Expand Down Expand Up @@ -8415,7 +8415,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"038bef22fc7b4a42ae6d9820396a9885","networkProfile":{"outboundIPs":{"publicIPs":["104.45.172.83"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5","name":"cli-unittest-5"}'
Expand Down Expand Up @@ -8525,7 +8525,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"038bef22fc7b4a42ae6d9820396a9885","networkProfile":{"outboundIPs":{"publicIPs":["104.45.172.83"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-5","name":"cli-unittest-5"}'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1422,7 +1422,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"6340c883c696442b94e8cb6ff7abd45b","networkProfile":{"outboundIPs":{"publicIPs":["52.190.37.142"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10","name":"cli-unittest-10"}'
Expand Down Expand Up @@ -1591,7 +1591,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"6340c883c696442b94e8cb6ff7abd45b","networkProfile":{"outboundIPs":{"publicIPs":["52.190.37.142"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-10","name":"cli-unittest-10"}'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1572,7 +1572,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"b3c17ee3f0f0464cb5b7c597775379ca","networkProfile":{"outboundIPs":{"publicIPs":["104.45.173.12"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1"}'
Expand Down Expand Up @@ -1624,7 +1624,7 @@ interactions:
User-Agent:
- AZURECLI/2.27.1 azsdk-python-mgmt-appplatform/6.1.0 Python/3.9.5 (Windows-10-10.0.19043-SP0)
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2020-07-01
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1?api-version=2021-09-01-preview
response:
body:
string: '{"properties":{"provisioningState":"Succeeded","version":3,"serviceId":"b3c17ee3f0f0464cb5b7c597775379ca","networkProfile":{"outboundIPs":{"publicIPs":["104.45.173.12"]}}},"type":"Microsoft.AppPlatform/Spring","sku":{"name":"B0","tier":"Basic"},"location":"eastus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli/providers/Microsoft.AppPlatform/Spring/cli-unittest-1","name":"cli-unittest-1"}'
Expand Down
Loading

0 comments on commit dc4b05c

Please sign in to comment.