Source code for virttest.libvirt_xml.secret_xml

"""
Module simplifying manipulation of XML described at
http://libvirt.org/formatsecret.html
"""

from virttest.libvirt_xml import base, accessors
from virttest.libvirt_xml import xcepts


[docs]class SecretXMLBase(base.LibvirtXMLBase): """ Accessor methods for SecretXML class. Properties: secret_ephemeral: yes or no, operates on XML secret tag secret_private: yes or no, operates on XML secret tag description: string, operates on description tag uuid: string, operates on uuid tag auth_type: string, sercet authentication type, operates on auth tag auth_username: string, secret authentication username, operates on auth tag usage: string, operates on usage tag target: string, sub-tag of the usage tag, operates on target tag volume: the volume file path, sub-tag of the usage tag, operates on volume tag """ __slots__ = ('secret_ephemeral', 'secret_private', 'description', 'auth_type', 'auth_username', 'uuid', 'usage', 'target', 'volume', 'usage_name') __uncompareable__ = base.LibvirtXMLBase.__uncompareable__ __schema_name__ = "secret" def __init__(self, virsh_instance=base.virsh): accessors.XMLAttribute('secret_ephemeral', self, parent_xpath='/', tag_name='secret', attribute='ephemeral') accessors.XMLAttribute('secret_private', self, parent_xpath='/', tag_name='secret', attribute='private') accessors.XMLElementText('uuid', self, parent_xpath='/', tag_name='uuid') accessors.XMLAttribute('auth_type', self, parent_xpath='/', tag_name='auth', attribute='type') accessors.XMLAttribute('auth_username', self, parent_xpath='/', tag_name='auth', attribute='username') accessors.XMLElementText('description', self, parent_xpath='/', tag_name='description') accessors.XMLAttribute('usage', self, parent_xpath='/', tag_name='usage', attribute='type') accessors.XMLElementText('usage_name', self, parent_xpath='/usage', tag_name='name') accessors.XMLElementText('target', self, parent_xpath='/usage', tag_name='target') accessors.XMLElementText('volume', self, parent_xpath='/usage', tag_name='volume') super(SecretXMLBase, self).__init__(virsh_instance=virsh_instance)
[docs]class SecretXML(SecretXMLBase): """ Manipulators of a secret through it's XML definition. """ __slots__ = [] def __init__(self, ephemeral='yes', private='no', virsh_instance=base.virsh): """ Initialize new instance with empty XML """ super(SecretXML, self).__init__(virsh_instance=virsh_instance) self.xml = u"<secret ephemeral='%s' private='%s'><description>\ </description></secret>" % (ephemeral, private) @staticmethod
[docs] def new_from_secret_dumpxml(uuid, virsh_instance=base.virsh): """ Return new SecretXML instance from virsh secret-dumpxml command :param uuid: secret's uuid :param virsh_instance: virsh module or instance to use :return: New initialized SecretXML instance """ secret_xml = SecretXML(virsh_instance=virsh_instance) secret_xml['xml'] = virsh_instance.secret_dumpxml(uuid).stdout.strip() return secret_xml
@staticmethod
[docs] def get_secret_details_by_uuid(uuid, virsh_instance=base.virsh): """ Return secret XML by secret's uuid :param uuid: secret's uuid :return: secret XML dictionary """ secret_xml = {} sec_xml = SecretXML.new_from_secret_dumpxml(uuid, virsh_instance) secret_xml['secret_ephemeral'] = sec_xml.secret_ephemeral secret_xml['secret_private'] = sec_xml.secret_private secret_xml['uuid'] = sec_xml.uuid secret_xml['description'] = sec_xml.description #secret XML may not has usage, target or volume tag try: secret_xml['usage'] = sec_xml.usage except xcepts.LibvirtXMLNotFoundError: secret_xml['usage'] = "" try: secret_xml['target'] = sec_xml.target except xcepts.LibvirtXMLNotFoundError: secret_xml['target'] = "" try: secret_xml['volume'] = sec_xml.volume except xcepts.LibvirtXMLNotFoundError: secret_xml['volume'] = "" return secret_xml