Exemple #1
0
    def test_serialize_with_delimiter(self):
        # Our test object to serialize
        obj = {
            'test': {
                'scope0:key1': 'Value1',
                'scope0:scope1:key2': 'Value2',
                'scope0:scope1:scope2:key3': 'Value3'
            }
        }

        # Set up our master template
        root = xmlutil.TemplateElement('test', selector='test')
        key1 = xmlutil.SubTemplateElement(root,
                                          'scope0:key1',
                                          selector='scope0:key1')
        key1.text = xmlutil.Selector()
        key2 = xmlutil.SubTemplateElement(root,
                                          'scope0:scope1:key2',
                                          selector='scope0:scope1:key2')
        key2.text = xmlutil.Selector()
        key3 = xmlutil.SubTemplateElement(root,
                                          'scope0:scope1:scope2:key3',
                                          selector='scope0:scope1:scope2:key3')
        key3.text = xmlutil.Selector()
        serializer = xmlutil.MasterTemplate(root, 1)
        xml_list = []
        xml_list.append("<?xmlversion='1.0'encoding='UTF-8'?><test>")
        xml_list.append("<scope0><key1>Value1</key1><scope1>")
        xml_list.append("<key2>Value2</key2><scope2><key3>Value3</key3>")
        xml_list.append("</scope2></scope1></scope0></test>")
        expected_xml = ''.join(xml_list)
        result = serializer.serialize(obj)
        result = result.replace('\n', '').replace(' ', '')
        self.assertEqual(result, expected_xml)
Exemple #2
0
    def test__serialize(self):
        # Our test object to serialize
        obj = {'test': {'name': 'foobar',
                        'values': [1, 2, 3, 4],
                        'attrs': {'a': 1,
                                  'b': 2,
                                  'c': 3,
                                  'd': 4, },
                        'image': {'name': 'image_foobar', 'id': 42, }, }, }

        # Set up our master template
        root = xmlutil.TemplateElement('test', selector='test',
                                       name='name')
        value = xmlutil.SubTemplateElement(root, 'value', selector='values')
        value.text = xmlutil.Selector()
        attrs = xmlutil.SubTemplateElement(root, 'attrs', selector='attrs')
        xmlutil.SubTemplateElement(attrs, 'attr', selector=xmlutil.get_items,
                                   key=0, value=1)
        master = xmlutil.MasterTemplate(root, 1, nsmap=dict(f='foo'))

        # Set up our slave template
        root_slave = xmlutil.TemplateElement('test', selector='test')
        image = xmlutil.SubTemplateElement(root_slave, 'image',
                                           selector='image', id='id')
        image.text = xmlutil.Selector('name')
        slave = xmlutil.SlaveTemplate(root_slave, 1, nsmap=dict(b='bar'))

        # Attach the slave to the master...
        master.attach(slave)

        # Try serializing our object
        siblings = master._siblings()
        nsmap = master._nsmap()
        result = master._serialize(None, obj, siblings, nsmap)

        # Now we get to manually walk the element tree...
        self.assertEqual(result.tag, 'test')
        self.assertEqual(len(result.nsmap), 2)
        self.assertEqual(result.nsmap['f'], 'foo')
        self.assertEqual(result.nsmap['b'], 'bar')
        self.assertEqual(result.get('name'), obj['test']['name'])
        for idx, val in enumerate(obj['test']['values']):
            self.assertEqual(result[idx].tag, 'value')
            self.assertEqual(result[idx].text, str(val))
        idx += 1
        self.assertEqual(result[idx].tag, 'attrs')
        for attr in result[idx]:
            self.assertEqual(attr.tag, 'attr')
            self.assertEqual(attr.get('value'),
                             str(obj['test']['attrs'][attr.get('key')]))
        idx += 1
        self.assertEqual(result[idx].tag, 'image')
        self.assertEqual(result[idx].get('id'),
                         str(obj['test']['image']['id']))
        self.assertEqual(result[idx].text, obj['test']['image']['name'])
Exemple #3
0
    def test_subelement(self):
        # Try the SubTemplateElement constructor
        parent = xmlutil.SubTemplateElement(None, 'parent')
        self.assertEqual(parent.tag, 'parent')
        self.assertEqual(len(parent), 0)

        # Now try it with a parent element
        child = xmlutil.SubTemplateElement(parent, 'child')
        self.assertEqual(child.tag, 'child')
        self.assertEqual(len(parent), 1)
        self.assertEqual(parent[0], child)
Exemple #4
0
 def construct(self):
     root = xmlutil.TemplateElement('volumes')
     elem = xmlutil.SubTemplateElement(root, 'volume', selector='volumes')
     make_volume(elem)
     alias = Extended_volume_trees.alias
     namespace = Extended_volume_trees.namespace
     return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace})
Exemple #5
0
 def construct(self):
     root = MetadataTemplateElement('metadata', selector='metadata')
     elem = xmlutil.SubTemplateElement(root, 'meta',
                                       selector=xmlutil.get_items)
     elem.set('key', 0)
     elem.text = 1
     return xmlutil.MasterTemplate(root, 1, nsmap=metadata_nsmap)
 def construct(self):
     root = xmlutil.TemplateElement('qos_associations')
     elem = xmlutil.SubTemplateElement(root,
                                       'associations',
                                       selector='qos_associations')
     make_associations(elem)
     return xmlutil.MasterTemplate(root, 1)
 def construct(self):
     root = xmlutil.TemplateElement('extensions')
     elem = xmlutil.SubTemplateElement(root,
                                       'extension',
                                       selector='extensions')
     make_ext(elem)
     return xmlutil.MasterTemplate(root, 1, nsmap=ext_nsmap)
Exemple #8
0
 def construct(self):
     root = xmlutil.TemplateElement('backups')
     elem = xmlutil.SubTemplateElement(root, 'backup', selector='backups')
     make_backup(elem)
     alias = Backups.alias
     namespace = Backups.namespace
     return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace})
Exemple #9
0
 def construct(self):
     root = xmlutil.TemplateElement('volumes')
     elem = xmlutil.SubTemplateElement(root, 'volume', selector='volumes')
     make_volume(elem)
     alias = Volume_host_attribute.alias
     namespace = Volume_host_attribute.namespace
     return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace})
Exemple #10
0
 def construct(self):
     root = xmlutil.TemplateElement('volume_types')
     elem = xmlutil.SubTemplateElement(root,
                                       'volume_type',
                                       selector='volume_types')
     make_voltype(elem)
     return xmlutil.MasterTemplate(root, 1)
 def construct(self):
     root = xmlutil.TemplateElement('qos_specs')
     elem = xmlutil.SubTemplateElement(root,
                                       'qos_spec',
                                       selector='qos_specs')
     make_qos_specs(elem)
     return xmlutil.MasterTemplate(root, 1)
Exemple #12
0
 def construct(self):
     root = xmlutil.TemplateElement('snapshots')
     elem = xmlutil.SubTemplateElement(root,
                                       'snapshot',
                                       selector='snapshots')
     make_snapshot(elem)
     return xmlutil.MasterTemplate(root, 1)
Exemple #13
0
 def construct(self):
     root = xmlutil.TemplateElement('consistencygroups')
     elem = xmlutil.SubTemplateElement(root, 'consistencygroup',
                                       selector='consistencygroups')
     make_consistencygroup(elem)
     alias = Consistencygroups.alias
     namespace = Consistencygroups.namespace
     return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace})
Exemple #14
0
 def construct(self):
     root = xmlutil.TemplateElement('cgsnapshots')
     elem = xmlutil.SubTemplateElement(root, 'cgsnapshot',
                                       selector='cgsnapshots')
     make_cgsnapshot(elem)
     alias = Cgsnapshots.alias
     namespace = Cgsnapshots.namespace
     return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace})
Exemple #15
0
 def construct(self):
     root = xmlutil.TemplateElement('transfers')
     elem = xmlutil.SubTemplateElement(root, 'transfer',
                                       selector='transfers')
     make_transfer(elem)
     alias = Volume_transfer.alias
     namespace = Volume_transfer.namespace
     return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace})
 def construct(self):
     root = xmlutil.TemplateElement('snapshots')
     elem = xmlutil.SubTemplateElement(root, 'snapshot',
                                       selector='snapshots')
     make_snapshot(elem)
     alias = Extended_snapshot_attributes.alias
     namespace = Extended_snapshot_attributes.namespace
     return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace})
Exemple #17
0
    def construct(self):
        root = xmlutil.TemplateElement('volumes')
        elem = xmlutil.SubTemplateElement(root, 'volume', selector='volume')
        elem.append(VolumeImageMetadataMetadataTemplate())

        alias = Volume_image_metadata.alias
        namespace = Volume_image_metadata.namespace

        return xmlutil.SlaveTemplate(root, 1, nsmap={alias: namespace})
 def construct(self):
     root = xmlutil.TemplateElement('relationships')
     elem = xmlutil.SubTemplateElement(root,
                                       'relationship',
                                       selector='relationships')
     make_relationship(elem)
     alias = Volume_replication.alias
     namespace = Volume_replication.namespace
     return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace})
    def construct(self):
        root = xmlutil.TemplateElement('volume_image_metadata',
                                       selector='volume_image_metadata')
        elem = xmlutil.SubTemplateElement(root, 'meta',
                                          selector=xmlutil.get_items)
        elem.set('key', 0)
        elem.text = 1

        return xmlutil.MasterTemplate(root, 1)
Exemple #20
0
 def construct(self):
     root = xmlutil.TemplateElement('availabilityZones')
     elem = xmlutil.SubTemplateElement(root,
                                       'availabilityZone',
                                       selector='availabilityZoneInfo')
     make_availability_zone(elem)
     alias = Availability_zones.alias
     namespace = Availability_zones.namespace
     return xmlutil.MasterTemplate(root, 1, nsmap={alias: namespace})
Exemple #21
0
    def construct(self):
        root = xmlutil.TemplateElement('quota_set', selector='quota_set')
        root.set('id')

        for resource in QUOTAS.resources:
            elem = xmlutil.SubTemplateElement(root, resource)
            elem.text = resource

        return xmlutil.MasterTemplate(root, 1)
Exemple #22
0
def make_volume(elem):
    elem.set('id')
    elem.set('status')
    elem.set('size')
    elem.set('availability_zone')
    elem.set('created_at')
    elem.set('name')
    elem.set('display_description')
    elem.set('volume_type')
    elem.set('snapshot_id')
    elem.set('source_volid')

    attachments = xmlutil.SubTemplateElement(elem, 'attachments')
    attachment = xmlutil.SubTemplateElement(attachments, 'attachment',
                                            selector='attachments')
    make_attachment(attachment)

    # Attach metadata node
    elem.append(common.MetadataTemplate())
def make_ext(elem):
    elem.set('name')
    elem.set('namespace')
    elem.set('alias')
    elem.set('updated')

    desc = xmlutil.SubTemplateElement(elem, 'description')
    desc.text = 'description'

    xmlutil.make_links(elem, 'links')
Exemple #24
0
    def construct(self):
        root = xmlutil.TemplateElement('hosts')
        elem = xmlutil.SubTemplateElement(root, 'host', selector='hosts')
        elem.set('service-status')
        elem.set('service')
        elem.set('zone')
        elem.set('service-state')
        elem.set('host_name')
        elem.set('last-update')

        return xmlutil.MasterTemplate(root, 1)
Exemple #25
0
    def construct(self):
        root = xmlutil.TemplateElement('services')
        elem = xmlutil.SubTemplateElement(root, 'service', selector='services')
        elem.set('binary')
        elem.set('host')
        elem.set('zone')
        elem.set('status')
        elem.set('state')
        elem.set('update_at')

        return xmlutil.MasterTemplate(root, 1)
Exemple #26
0
def make_version(elem):
    elem.set('id')
    elem.set('status')
    elem.set('updated')

    mts = MediaTypesTemplateElement('media-types')
    elem.append(mts)

    mt = xmlutil.SubTemplateElement(mts, 'media-type', selector='media-types')
    mt.set('base')
    mt.set('type')

    xmlutil.make_links(elem, 'links')
Exemple #27
0
    def construct(self):
        root = xmlutil.TemplateElement('limits', selector='limits')

        rates = xmlutil.SubTemplateElement(root, 'rates')
        rate = xmlutil.SubTemplateElement(rates, 'rate', selector='rate')
        rate.set('uri', 'uri')
        rate.set('regex', 'regex')
        limit = xmlutil.SubTemplateElement(rate, 'limit', selector='limit')
        limit.set('value', 'value')
        limit.set('verb', 'verb')
        limit.set('remaining', 'remaining')
        limit.set('unit', 'unit')
        limit.set('next-available', 'next-available')

        absolute = xmlutil.SubTemplateElement(root, 'absolute',
                                              selector='absolute')
        limit = xmlutil.SubTemplateElement(absolute, 'limit',
                                           selector=xmlutil.get_items)
        limit.set('name', 0)
        limit.set('value', 1)

        return xmlutil.MasterTemplate(root, 1, nsmap=limits_nsmap)
Exemple #28
0
    def construct(self):
        root = xmlutil.TemplateElement('services')
        elem = xmlutil.SubTemplateElement(root, 'service', selector='services')
        elem.set('binary')
        elem.set('host')
        elem.set('zone')
        elem.set('status')
        elem.set('state')
        elem.set('update_at')
        elem.set('disabled_reason')
        elem.set('replication_status')
        elem.set('active_backend_id')
        elem.set('frozen')

        return xmlutil.MasterTemplate(root, 1)
Exemple #29
0
def make_availability_zone(elem):
    elem.set('name', 'zoneName')
    zoneStateElem = xmlutil.SubTemplateElement(elem,
                                               'zoneState',
                                               selector='zoneState')
    zoneStateElem.set('available')
Exemple #30
0
 def construct(self):
     root = xmlutil.TemplateElement('choices')
     elem = xmlutil.SubTemplateElement(root, 'version', selector='choices')
     make_version(elem)
     return xmlutil.MasterTemplate(root, 1, nsmap=version_nsmap)