in azurelinuxagent/common/protocol/ovfenv.py [0:0]
def parse(self, xml_text):
"""
Parse xml tree, retreiving user and ssh key information.
Return self.
"""
wans = WA_NAME_SPACE
ovfns = OVF_NAME_SPACE
xml_doc = parse_doc(xml_text)
environment = find(xml_doc, "Environment", namespace=ovfns)
_validate_ovf(environment, "Environment not found")
section = find(environment, "ProvisioningSection", namespace=wans)
_validate_ovf(section, "ProvisioningSection not found")
version = findtext(environment, "Version", namespace=wans)
_validate_ovf(version, "Version not found")
if version > OVF_VERSION:
logger.warn("Newer provisioning configuration detected. "
"Please consider updating waagent")
conf_set = find(section, "LinuxProvisioningConfigurationSet",
namespace=wans)
_validate_ovf(conf_set, "LinuxProvisioningConfigurationSet not found")
self.hostname = findtext(conf_set, "HostName", namespace=wans)
_validate_ovf(self.hostname, "HostName not found")
self.username = findtext(conf_set, "UserName", namespace=wans)
_validate_ovf(self.username, "UserName not found")
self.user_password = findtext(conf_set, "UserPassword", namespace=wans)
self.customdata = findtext(conf_set, "CustomData", namespace=wans)
auth_option = findtext(conf_set, "DisableSshPasswordAuthentication",
namespace=wans)
if auth_option is not None and auth_option.lower() == "true":
self.disable_ssh_password_auth = True
else:
self.disable_ssh_password_auth = False
public_keys = findall(conf_set, "PublicKey", namespace=wans)
for public_key in public_keys:
path = findtext(public_key, "Path", namespace=wans)
fingerprint = findtext(public_key, "Fingerprint", namespace=wans)
value = findtext(public_key, "Value", namespace=wans)
self.ssh_pubkeys.append((path, fingerprint, value))
keypairs = findall(conf_set, "KeyPair", namespace=wans)
for keypair in keypairs:
path = findtext(keypair, "Path", namespace=wans)
fingerprint = findtext(keypair, "Fingerprint", namespace=wans)
self.ssh_keypairs.append((path, fingerprint))
platform_settings_section = find(environment, "PlatformSettingsSection", namespace=wans)
_validate_ovf(platform_settings_section, "PlatformSettingsSection not found")
platform_settings = find(platform_settings_section, "PlatformSettings", namespace=wans)
_validate_ovf(platform_settings, "PlatformSettings not found")
self.provision_guest_agent = findtext(platform_settings, "ProvisionGuestAgent", namespace=wans)
_validate_ovf(self.provision_guest_agent, "ProvisionGuestAgent not found")