示例#1
0
def make_zone(elem):
    elem.set('id')
    elem.set('api_url')
    elem.set('name')
    elem.set('capabilities')

    cap = xmlutil.SubTemplateElement(elem, xmlutil.Selector(0),
                                     selector=CapabilitySelector())
    cap.text = 1
示例#2
0
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')
示例#3
0
def make_server(elem, detailed=False):
    elem.set('name')
    elem.set('id')

    if detailed:
        elem.set('userId', 'user_id')
        elem.set('tenantId', 'tenant_id')
        elem.set('updated')
        elem.set('created')
        elem.set('hostId')
        elem.set('accessIPv4')
        elem.set('accessIPv6')
        elem.set('status')
        elem.set('progress')

        # Attach image node
        image = xmlutil.SubTemplateElement(elem, 'image', selector='image')
        image.set('id')
        xmlutil.make_links(image, 'links')

        # Attach flavor node
        flavor = xmlutil.SubTemplateElement(elem, 'flavor', selector='flavor')
        flavor.set('id')
        xmlutil.make_links(flavor, 'links')

        # Attach fault node
        make_fault(elem)

        # Attach metadata node
        elem.append(common.MetadataTemplate())

        # Attach addresses node
        elem.append(ips.AddressesTemplate())

        # Attach security groups node
        secgrps = SecurityGroupsTemplateElement('security_groups')
        elem.append(secgrps)
        secgrp = xmlutil.SubTemplateElement(secgrps,
                                            'security_group',
                                            selector='security_groups')
        secgrp.set('name')

    xmlutil.make_links(elem, 'links')
示例#4
0
def make_volume(elem):
    elem.set('id')
    elem.set('status')
    elem.set('size')
    elem.set('availabilityZone')
    elem.set('createdAt')
    elem.set('displayName')
    elem.set('displayDescription')
    elem.set('volumeType')
    elem.set('snapshotId')

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

    metadata = xmlutil.make_flat_dict('metadata')
    elem.append(metadata)
示例#5
0
    def construct(self):
        def shimmer(obj, do_raise=False):
            # A bare list is passed in; we need to wrap it in a dict
            return dict(hosts=obj)

        root = xmlutil.TemplateElement('hosts', selector=shimmer)
        elem = xmlutil.SubTemplateElement(root, 'host', selector='hosts')
        elem.set('host_name')
        elem.set('service')

        return xmlutil.MasterTemplate(root, 1)
示例#6
0
    def construct(self):
        root = xmlutil.TemplateElement('console', selector='console')

        id_elem = xmlutil.SubTemplateElement(root, 'id', selector='id')
        id_elem.text = xmlutil.Selector()

        port_elem = xmlutil.SubTemplateElement(root, 'port', selector='port')
        port_elem.text = xmlutil.Selector()

        host_elem = xmlutil.SubTemplateElement(root, 'host', selector='host')
        host_elem.text = xmlutil.Selector()

        passwd_elem = xmlutil.SubTemplateElement(root, 'password',
                                                 selector='password')
        passwd_elem.text = xmlutil.Selector()

        constype_elem = xmlutil.SubTemplateElement(root, 'console_type',
                                                   selector='console_type')
        constype_elem.text = xmlutil.Selector()

        return xmlutil.MasterTemplate(root, 1)
示例#7
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)
示例#8
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')
示例#9
0
def make_rule(elem):
    elem.set('id')
    elem.set('parent_group_id')

    proto = xmlutil.SubTemplateElement(elem, 'ip_protocol')
    proto.text = 'ip_protocol'

    from_port = xmlutil.SubTemplateElement(elem, 'from_port')
    from_port.text = 'from_port'

    to_port = xmlutil.SubTemplateElement(elem, 'to_port')
    to_port.text = 'to_port'

    group = xmlutil.SubTemplateElement(elem, 'group', selector='group')
    name = xmlutil.SubTemplateElement(group, 'name')
    name.text = 'name'
    tenant_id = xmlutil.SubTemplateElement(group, 'tenant_id')
    tenant_id.text = 'tenant_id'

    ip_range = xmlutil.SubTemplateElement(elem, 'ip_range',
                                          selector='ip_range')
    cidr = xmlutil.SubTemplateElement(ip_range, 'cidr')
    cidr.text = 'cidr'
示例#10
0
 def test(self):
     root = xmlutil.TemplateElement('servers')
     a = xmlutil.SubTemplateElement(root, 'a', selector='servers')
     a.text = xmlutil.Selector('a')
     return xmlutil.MasterTemplate(root, 1, nsmap={None: "asdf"})
示例#11
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'])
示例#12
0
 def construct(self):
     root = xmlutil.TemplateElement('dns_entries')
     elem = xmlutil.SubTemplateElement(root, 'dns_entry',
                                       selector='dns_entries')
     make_dns_entry(elem)
     return xmlutil.MasterTemplate(root, 1)
示例#13
0
 def construct(self):
     root = xmlutil.TemplateElement('servers')
     elem = xmlutil.SubTemplateElement(root, 'server', selector='servers')
     make_server(elem, detailed=True)
     return xmlutil.MasterTemplate(root, 1, nsmap=server_nsmap)
示例#14
0
 def construct(self):
     root = xmlutil.TemplateElement('servers')
     elem = xmlutil.SubTemplateElement(root, 'server', selector='servers')
     make_server(elem)
     xmlutil.make_links(root, 'servers_links')
     return xmlutil.MasterTemplate(root, 1, nsmap=server_nsmap)
示例#15
0
 def construct(self):
     root = xmlutil.TemplateElement('images')
     elem = xmlutil.SubTemplateElement(root, 'image', selector='images')
     elem.set('{%s}diskConfig' % XMLNS_DCF, '%s:diskConfig' % ALIAS)
     return xmlutil.SlaveTemplate(root, 1, nsmap={ALIAS: XMLNS_DCF})
示例#16
0
 def construct(self):
     root = xmlutil.TemplateElement('zones')
     elem = xmlutil.SubTemplateElement(root, 'zone',
                                       selector='zones')
     make_zone_entry(elem)
     return xmlutil.MasterTemplate(root, 1)
 def construct(self):
     root = xmlutil.TemplateElement('drives')
     elem = xmlutil.SubTemplateElement(root, 'drive', selector='drives')
     make_volume(elem)
     return xmlutil.MasterTemplate(root, 1)
 def construct(self):
     root = xmlutil.TemplateElement('vpools')
     elem = xmlutil.SubTemplateElement(root, 'vpool', selector='vpools')
     make_vpool(elem)
     return xmlutil.MasterTemplate(root, 1)
示例#19
0
 def construct(self):
     root = xmlutil.TemplateElement('versions')
     elem = xmlutil.SubTemplateElement(root, 'version', selector='versions')
     make_version(elem)
     return xmlutil.MasterTemplate(root, 1, nsmap=version_nsmap)
示例#20
0
 def construct(self):
     root = xmlutil.TemplateElement('flavors')
     elem = xmlutil.SubTemplateElement(root, 'flavor', selector='flavors')
     make_flavor(elem, detailed=True)
     return xmlutil.MasterTemplate(root, 1, nsmap=flavor_nsmap)
示例#21
0
 def construct(self):
     root = xmlutil.TemplateElement('security_groups')
     elem = xmlutil.SubTemplateElement(root, 'security_group',
                                       selector='security_groups')
     make_sg(elem)
     return xmlutil.MasterTemplate(root, 1, nsmap=sg_nsmap)
示例#22
0
 def construct(self):
     root = xmlutil.TemplateElement('floating_ips')
     elem = xmlutil.SubTemplateElement(root, 'floating_ip',
                                       selector='floating_ips')
     make_float_ip(elem)
     return xmlutil.MasterTemplate(root, 1)
示例#23
0
 def construct(self):
     root = xmlutil.TemplateElement('volume_types')
     sel = lambda obj, do_raise=False: obj.values()
     elem = xmlutil.SubTemplateElement(root, 'volume_type', selector=sel)
     make_voltype(elem)
     return xmlutil.MasterTemplate(root, 1)