mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
add publish url in webapp facts output (#45131)
* add publish url in webapp facts output * update name * fix test
This commit is contained in:
parent
4173a30941
commit
2955d7cd1b
2 changed files with 57 additions and 1 deletions
|
@ -126,6 +126,10 @@ webapps:
|
||||||
outbound_ip_addresses:
|
outbound_ip_addresses:
|
||||||
description: Outbound ip address of the web app.
|
description: Outbound ip address of the web app.
|
||||||
type: str
|
type: str
|
||||||
|
ftp_publish_url:
|
||||||
|
description: Publishing url of the web app when depeloyment type is FTP.
|
||||||
|
type: str
|
||||||
|
sample: ftp://xxxx.ftp.azurewebsites.windows.net
|
||||||
state:
|
state:
|
||||||
description: State of the web app. eg. running.
|
description: State of the web app. eg. running.
|
||||||
type: str
|
type: str
|
||||||
|
@ -275,6 +279,34 @@ class AzureRMWebAppFacts(AzureRMModuleBase):
|
||||||
self.fail('Error getting web app {0} publishing credentials - {1}'.format(request_id, str(ex)))
|
self.fail('Error getting web app {0} publishing credentials - {1}'.format(request_id, str(ex)))
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
def get_webapp_ftp_publish_url(self, resource_group, name):
|
||||||
|
import xmltodict
|
||||||
|
|
||||||
|
self.log('Get web app {0} app publish profile'.format(name))
|
||||||
|
|
||||||
|
url = None
|
||||||
|
try:
|
||||||
|
content = self.web_client.web_apps.list_publishing_profile_xml_with_secrets(resource_group_name=resource_group, name=name)
|
||||||
|
if not content:
|
||||||
|
return url
|
||||||
|
|
||||||
|
full_xml = ''
|
||||||
|
for f in content:
|
||||||
|
full_xml += f.decode()
|
||||||
|
profiles = xmltodict.parse(full_xml, xml_attribs=True)['publishData']['publishProfile']
|
||||||
|
|
||||||
|
if not profiles:
|
||||||
|
return url
|
||||||
|
|
||||||
|
for profile in profiles:
|
||||||
|
if profile['@publishMethod'] == 'FTP':
|
||||||
|
url = profile['@publishUrl']
|
||||||
|
|
||||||
|
except CloudError as ex:
|
||||||
|
self.fail('Error getting web app {0} app settings'.format(name))
|
||||||
|
|
||||||
|
return url
|
||||||
|
|
||||||
def get_curated_webapp(self, resource_group, name, webapp):
|
def get_curated_webapp(self, resource_group, name, webapp):
|
||||||
pip = self.serialize_obj(webapp, AZURE_OBJECT_CLASS)
|
pip = self.serialize_obj(webapp, AZURE_OBJECT_CLASS)
|
||||||
|
|
||||||
|
@ -282,15 +314,23 @@ class AzureRMWebAppFacts(AzureRMModuleBase):
|
||||||
site_config = self.list_webapp_configuration(resource_group, name)
|
site_config = self.list_webapp_configuration(resource_group, name)
|
||||||
app_settings = self.list_webapp_appsettings(resource_group, name)
|
app_settings = self.list_webapp_appsettings(resource_group, name)
|
||||||
publish_cred = self.get_publish_credentials(resource_group, name)
|
publish_cred = self.get_publish_credentials(resource_group, name)
|
||||||
|
ftp_publish_url = self.get_webapp_ftp_publish_url(resource_group, name)
|
||||||
except CloudError as ex:
|
except CloudError as ex:
|
||||||
pass
|
pass
|
||||||
return self.construct_curated_webapp(webapp=pip,
|
return self.construct_curated_webapp(webapp=pip,
|
||||||
configuration=site_config,
|
configuration=site_config,
|
||||||
app_settings=app_settings,
|
app_settings=app_settings,
|
||||||
deployment_slot=None,
|
deployment_slot=None,
|
||||||
|
ftp_publish_url=ftp_publish_url,
|
||||||
publish_credentials=publish_cred)
|
publish_credentials=publish_cred)
|
||||||
|
|
||||||
def construct_curated_webapp(self, webapp, configuration=None, app_settings=None, deployment_slot=None, publish_credentials=None):
|
def construct_curated_webapp(self,
|
||||||
|
webapp,
|
||||||
|
configuration=None,
|
||||||
|
app_settings=None,
|
||||||
|
deployment_slot=None,
|
||||||
|
ftp_publish_url=None,
|
||||||
|
publish_credentials=None):
|
||||||
curated_output = dict()
|
curated_output = dict()
|
||||||
curated_output['id'] = webapp['id']
|
curated_output['id'] = webapp['id']
|
||||||
curated_output['name'] = webapp['name']
|
curated_output['name'] = webapp['name']
|
||||||
|
@ -346,6 +386,10 @@ class AzureRMWebAppFacts(AzureRMModuleBase):
|
||||||
if deployment_slot:
|
if deployment_slot:
|
||||||
curated_output['deployment_slot'] = deployment_slot
|
curated_output['deployment_slot'] = deployment_slot
|
||||||
|
|
||||||
|
# ftp_publish_url
|
||||||
|
if ftp_publish_url:
|
||||||
|
curated_output['ftp_publish_url'] = ftp_publish_url
|
||||||
|
|
||||||
# curated publish credentials
|
# curated publish credentials
|
||||||
if publish_credentials and self.return_publish_profile:
|
if publish_credentials and self.return_publish_profile:
|
||||||
curated_output['publishing_username'] = publish_credentials.publishing_user_name
|
curated_output['publishing_username'] = publish_credentials.publishing_user_name
|
||||||
|
|
|
@ -316,3 +316,15 @@
|
||||||
- name: Assert the web app was created
|
- name: Assert the web app was created
|
||||||
assert:
|
assert:
|
||||||
that: output.changed
|
that: output.changed
|
||||||
|
|
||||||
|
- name: Get facts with publish profile
|
||||||
|
azure_rm_webapp_facts:
|
||||||
|
resource_group: "{{ resource_group }}"
|
||||||
|
name: "{{ win_app_name }}13"
|
||||||
|
no_log: true
|
||||||
|
register: facts
|
||||||
|
|
||||||
|
- name: Assert publish profile returned
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- facts.webapps[0].ftp_publish_url != ''
|
Loading…
Reference in a new issue