mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 21:00:22 -07:00
start/stop/restart azure webapp (#44498)
* add webapp start/stop/restart * disable test with facts * fix lint * fix lint * fix check mode * rename power_action to app_state * refine names of choices * fix renaming bug
This commit is contained in:
parent
408868ed49
commit
2bd0a66c08
2 changed files with 85 additions and 2 deletions
|
@ -158,6 +158,16 @@ options:
|
||||||
- Purge any existing application settings. Replace web app application settings with app_settings.
|
- Purge any existing application settings. Replace web app application settings with app_settings.
|
||||||
type: bool
|
type: bool
|
||||||
|
|
||||||
|
app_state:
|
||||||
|
description:
|
||||||
|
- Start/Stop/Restart the web app.
|
||||||
|
type: str
|
||||||
|
choices:
|
||||||
|
- started
|
||||||
|
- stopped
|
||||||
|
- restarted
|
||||||
|
default: started
|
||||||
|
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- Assert the state of the Web App.
|
- Assert the state of the Web App.
|
||||||
|
@ -410,6 +420,11 @@ class AzureRMWebApps(AzureRMModuleBase):
|
||||||
type='bool',
|
type='bool',
|
||||||
default=False
|
default=False
|
||||||
),
|
),
|
||||||
|
app_state=dict(
|
||||||
|
type='str',
|
||||||
|
choices=['started', 'stopped', 'restarted'],
|
||||||
|
default='started'
|
||||||
|
),
|
||||||
state=dict(
|
state=dict(
|
||||||
type='str',
|
type='str',
|
||||||
default='present',
|
default='present',
|
||||||
|
@ -450,6 +465,7 @@ class AzureRMWebApps(AzureRMModuleBase):
|
||||||
self.container_settings = None
|
self.container_settings = None
|
||||||
|
|
||||||
self.purge_app_settings = False
|
self.purge_app_settings = False
|
||||||
|
self.app_state = 'started'
|
||||||
|
|
||||||
self.results = dict(
|
self.results = dict(
|
||||||
changed=False,
|
changed=False,
|
||||||
|
@ -595,6 +611,7 @@ class AzureRMWebApps(AzureRMModuleBase):
|
||||||
|
|
||||||
to_be_updated = True
|
to_be_updated = True
|
||||||
self.to_do = Actions.CreateOrUpdate
|
self.to_do = Actions.CreateOrUpdate
|
||||||
|
self.site.tags = self.tags
|
||||||
|
|
||||||
# service plan is required for creation
|
# service plan is required for creation
|
||||||
if not self.plan:
|
if not self.plan:
|
||||||
|
@ -631,7 +648,7 @@ class AzureRMWebApps(AzureRMModuleBase):
|
||||||
|
|
||||||
self.log('Result: {0}'.format(old_response))
|
self.log('Result: {0}'.format(old_response))
|
||||||
|
|
||||||
update_tags, old_response['tags'] = self.update_tags(old_response.get('tags', dict()))
|
update_tags, self.site.tags = self.update_tags(old_response.get('tags', None))
|
||||||
|
|
||||||
if update_tags:
|
if update_tags:
|
||||||
to_be_updated = True
|
to_be_updated = True
|
||||||
|
@ -693,8 +710,26 @@ class AzureRMWebApps(AzureRMModuleBase):
|
||||||
|
|
||||||
if self.to_do == Actions.CreateOrUpdate:
|
if self.to_do == Actions.CreateOrUpdate:
|
||||||
response = self.create_update_webapp()
|
response = self.create_update_webapp()
|
||||||
|
|
||||||
self.results['id'] = response['id']
|
self.results['id'] = response['id']
|
||||||
|
|
||||||
|
webapp = None
|
||||||
|
if old_response:
|
||||||
|
webapp = old_response
|
||||||
|
if response:
|
||||||
|
webapp = response
|
||||||
|
|
||||||
|
if webapp:
|
||||||
|
if (webapp['state'] != 'Stopped' and self.app_state == 'stopped') or \
|
||||||
|
(webapp['state'] != 'Running' and self.app_state == 'started') or \
|
||||||
|
self.app_state == 'restarted':
|
||||||
|
|
||||||
|
self.results['changed'] = True
|
||||||
|
if self.check_mode:
|
||||||
|
return self.results
|
||||||
|
|
||||||
|
self.set_webapp_state(self.app_state)
|
||||||
|
|
||||||
return self.results
|
return self.results
|
||||||
|
|
||||||
# compare existing web app with input, determine weather it's update operation
|
# compare existing web app with input, determine weather it's update operation
|
||||||
|
@ -943,6 +978,29 @@ class AzureRMWebApps(AzureRMModuleBase):
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def set_webapp_state(self, appstate):
|
||||||
|
'''
|
||||||
|
Start/stop/restart web app
|
||||||
|
:return: deserialized updating response
|
||||||
|
'''
|
||||||
|
try:
|
||||||
|
if appstate == 'started':
|
||||||
|
response = self.web_client.web_apps.start(resource_group_name=self.resource_group, name=self.name)
|
||||||
|
elif appstate == 'stopped':
|
||||||
|
response = self.web_client.web_apps.stop(resource_group_name=self.resource_group, name=self.name)
|
||||||
|
elif appstate == 'restarted':
|
||||||
|
response = self.web_client.web_apps.restart(resource_group_name=self.resource_group, name=self.name)
|
||||||
|
else:
|
||||||
|
self.fail("Invalid web app state {0}".format(appstate))
|
||||||
|
|
||||||
|
self.log("Response : {0}".format(response))
|
||||||
|
|
||||||
|
return response
|
||||||
|
except CloudError as ex:
|
||||||
|
request_id = ex.request_id if ex.request_id else ''
|
||||||
|
self.log("Failed to {0} web app {1} in resource group {2}, request_id {3} - {4}".format(
|
||||||
|
appstate, self.name, self.resource_group, request_id, str(ex)))
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
"""Main execution"""
|
"""Main execution"""
|
||||||
|
|
|
@ -22,6 +22,31 @@
|
||||||
plan: "{{ win_plan_name }}"
|
plan: "{{ win_plan_name }}"
|
||||||
register: output
|
register: output
|
||||||
|
|
||||||
|
- name: stop the web app
|
||||||
|
azure_rm_webapp:
|
||||||
|
resource_group: "{{ resource_group }}"
|
||||||
|
name: "{{ win_app_name }}2"
|
||||||
|
plan: "{{ win_plan_name }}"
|
||||||
|
app_state: stopped
|
||||||
|
register: output
|
||||||
|
|
||||||
|
- name: assert output changed
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
output.changed
|
||||||
|
|
||||||
|
# enable after webapp_facts merged
|
||||||
|
# - name: get the web app
|
||||||
|
# azure_rm_webapp_facts:
|
||||||
|
# resource_group: "{{ resource_group }}"
|
||||||
|
# name: "{{ win_app_name }}2"
|
||||||
|
# register: stopped
|
||||||
|
|
||||||
|
# - name: assert web app is stopped
|
||||||
|
# assert:
|
||||||
|
# that:
|
||||||
|
# - stopped.properties.state == "Stopped"
|
||||||
|
|
||||||
- name: Create a windows web app with existing app service plan, try to update some root level params
|
- name: Create a windows web app with existing app service plan, try to update some root level params
|
||||||
azure_rm_webapp:
|
azure_rm_webapp:
|
||||||
resource_group: "{{ resource_group }}"
|
resource_group: "{{ resource_group }}"
|
||||||
|
@ -251,4 +276,4 @@
|
||||||
|
|
||||||
- name: Assert the web app was created
|
- name: Assert the web app was created
|
||||||
assert:
|
assert:
|
||||||
that: output.changed
|
that: output.changed
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue