Пример #1
0
 def test_glance_ids_tenant(self):
     add_args = []
     if 'OS_TENANT_ID' in os.environ:
         add_args = ['--owner', os.environ['OS_TENANT_ID']]
     elif 'OS_TENANT_NAME' in os.environ:
         tenant_name = os.environ['OS_TENANT_NAME']
         ret = utils.run(['keystone', 'tenant-get', tenant_name],
                         out=True,
                         err=True)
         status, _, out, err = ret
         if status:
             self.assertTrue(len(out) > 0)
             _, block, _, _ = openstack_out.parse_block(out)
             self.assertTrue(len(block) > 0)
             for prop, val in block:
                 if prop == 'id':
                     add_args = ['--owner', val]
                     break
             self.fail('TENANT "%s" not found by keystone...' % tenant_name)
         else:
             print 'OUT:', out
             print 'ERR:', err
             self.fail('Unable to run keystone tenant-get %s' % tenant_name)
     self.assertTrue(len(add_args) == 2)
     l1 = glance.glance_ids(None, *add_args)
     self.assertTrue(set() < l1)
     # We can see more images if we are administrator and don't filter on tenant
     l2 = glance.glance_ids(names=None)
     self.assertTrue(set() < l1 <= l2)
Пример #2
0
def get_glance_images():
    '''Get info about images already in glance
       Cache those informations to speedup subsequent calls
    '''
    global _GLANCE_IMAGES
    if _GLANCE_IMAGES is None:
        _GLANCE_IMAGES = {}
        add_args = []
        tenant_msg = 'Using %s environment variable to filter image list'
        if 'OS_TENANT_ID' in os.environ:
            vprint(tenant_msg % 'OS_TENANT_ID')
            add_args = ['--owner', os.environ['OS_TENANT_ID']]
        elif 'OS_TENANT_NAME' in os.environ:
            vprint(tenant_msg % 'OS_TENANT_NAME')
            cmd = ['keystone', 'tenant-get', os.environ['OS_TENANT_NAME']]
            status, _, out, _ = utils.run(cmd, out=True)
            if status:
                _, block, _, _ = openstack_out.parse_block(out)
                for prop, val in block:
                    if prop == 'id':
                        add_args = ['--owner', val]
                        break
        for imgid in glance.glance_ids(None, *add_args):
            img = glance.glance_show(imgid)
            if img:
                vmmap = openstack_out.map_block(img)
                if 'mpid' in vmmap:
                    vprint(
                        ("Found 'mpid' property (%(mpid)s) already set on " +
                         "image: %(id)s (%(name)s)") % vmmap)
                    _GLANCE_IMAGES[vmmap['mpid']] = vmmap
                _GLANCE_IMAGES[vmmap['checksum']] = vmmap
                _GLANCE_IMAGES[vmmap['name']] = vmmap
    return _GLANCE_IMAGES
Пример #3
0
 def test_openstack_out_parse_block_body_ne(self):
     _, b, _, _ = openstack_out.parse_block(neutron_agent_list)
     self.assertEqual(len(b), 5)
     self.assertEqual(b[3], [
         '75b1db74-fea4-46ed-8133-2eefe1155074', 'L3 agent', 'c7-netw',
         'xxx', 'True'
     ])
Пример #4
0
 def test_glance_ids_tenant(self):
     add_args = []
     if 'OS_TENANT_ID' in os.environ:
         add_args = ['--owner', os.environ['OS_TENANT_ID']]
     elif 'OS_TENANT_NAME' in os.environ:
         tenant_name = os.environ['OS_TENANT_NAME']
         ret = utils.run(['keystone', 'tenant-get', tenant_name],
                         out=True, err=True)
         status, _, out, err = ret
         if status:
             self.assertTrue(len(out) > 0)
             _, block, _, _ = openstack_out.parse_block(out)
             self.assertTrue(len(block) > 0)
             for prop, val in block:
                 if prop == 'id':
                     add_args = ['--owner', val]
                     break
             self.fail('TENANT "%s" not found by keystone...' % tenant_name)
         else:
             print 'OUT:', out
             print 'ERR:', err
             self.fail('Unable to run keystone tenant-get %s' % tenant_name)
     self.assertTrue(len(add_args) == 2)
     l1 = glance.glance_ids(None, *add_args)
     self.assertTrue(set() < l1)
     # We can see more images if we are administrator and don't filter on tenant
     l2 = glance.glance_ids(names=None)
     self.assertTrue(set() < l1 <= l2)
Пример #5
0
 def test_openstack_out_parse_block_header_ne(self):
     h, _, _, _ = openstack_out.parse_block(neutron_agent_list)
     self.assertEqual(len(h), 5)
     self.assertEqual(h[0], 'id')
     self.assertEqual(h[1], 'agent_type')
     self.assertEqual(h[2], 'host')
     self.assertEqual(h[3], 'alive')
     self.assertEqual(h[4], 'admin_state_up')
Пример #6
0
 def test_openstack_out_parse_block_header_ne(self):
     h, _, _, _ = openstack_out.parse_block(neutron_agent_list)
     self.assertEqual(len(h), 5)
     self.assertEqual(h[0], 'id')
     self.assertEqual(h[1], 'agent_type')
     self.assertEqual(h[2], 'host')
     self.assertEqual(h[3], 'alive')
     self.assertEqual(h[4], 'admin_state_up')
Пример #7
0
def glance_ids(names=None, *args):
    ret = set()
    # Single name ?
    if names is not None and isinstance(names, (str, unicode)):
        names = [names]
    imglist = glance_run('image-list', glance_args=None, subcmd_args=args)
    if imglist:
        _, block, _, _ = openstack_out.parse_block(imglist)
        for image_id, image_name in block:
            # Filtering or not ?
            if (names is None or (utils.is_iter(names) and
                                  (image_name in names or image_id in names))):
                ret.add(image_id)
    return ret
Пример #8
0
def glance_ids(names=None, *args):
    ret = set()
    # Single name ?
    if names is not None and isinstance(names, (str, unicode)):
        names = [names]
    imglist = glance_run('image-list', glance_args=None, subcmd_args=args)
    if imglist:
        _, block, _, _ = openstack_out.parse_block(imglist)
        for image_id, image_name in block:
            # Filtering or not ?
            if (names is None or (utils.is_iter(names) and
                                  (image_name in names or image_id in names))):
                ret.add(image_id)
    return ret
Пример #9
0
def glance_import_id(base, md5=None, name=None, diskformat=None):
    g_args = None
    args = ['--container-format', 'bare', '--file', base]
    if diskformat is not None:
        args += ['--disk-format', diskformat]
    if name is not None:
        args += ['--name', name]
    if md5 is not None:
        args += ['--checksum', md5]
        # Passing in the checksum has been deprecated in API v2.x
        g_args = ['--os-image-api-version', '1']
    err_msg = 'failed to import image into glance: %s from %s' % (name, base)
    out = glance_run('image-create', glance_args=g_args, subcmd_args=args,
                     err_msg=err_msg)
    if out:
        _, block, _, _ = openstack_out.parse_block(out)
        for property_name, value in block:
            if property_name == 'id':
                return value
    return False
Пример #10
0
def glance_import_id(base, md5=None, name=None, diskformat=None):
    g_args = None
    args = ['--container-format', 'bare', '--file', base]
    if diskformat is not None:
        args += ['--disk-format', diskformat]
    if name is not None:
        args += ['--name', name]
    if md5 is not None:
        args += ['--checksum', md5]
        # Passing in the checksum has been deprecated in API v2.x
        g_args = ['--os-image-api-version', '1']
    err_msg = 'failed to import image into glance: %s from %s' % (name, base)
    out = glance_run('image-create', glance_args=g_args, subcmd_args=args,
                     err_msg=err_msg)
    if out:
        _, block, _, _ = openstack_out.parse_block(out)
        for property_name, value in block:
            if property_name == 'id':
                return value
    return False
Пример #11
0
def get_glance_images():
    '''Get info about images already in glance
       Cache those informations to speedup subsequent calls
    '''
    global _GLANCE_IMAGES
    if _GLANCE_IMAGES is None:
        _GLANCE_IMAGES = {}
        add_args = []
        tenant_msg = 'Using %s environment variable to filter image list'
        if 'OS_TENANT_ID' in os.environ:
            vprint(tenant_msg % 'OS_TENANT_ID')
            add_args = ['--owner', os.environ['OS_TENANT_ID']]
        elif 'OS_TENANT_NAME' in os.environ:
            vprint(tenant_msg % 'OS_TENANT_NAME')
            cmd = ['keystone', 'tenant-get', os.environ['OS_TENANT_NAME']]
            status, _, out, err = utils.run(cmd, out=True, err=True)
            if status:
                _, block, _, _ = openstack_out.parse_block(out)
                for prop, val in block:
                    if prop == 'id':
                        add_args = ['--owner', val]
                        break
            else:
                vprint('Failed to run : %s' % ' '.join(cmd))
                vprint('OUT: ' + str(out))
                vprint('ERR: ' + str(err))
        for imgid in glance.glance_ids(None, *add_args):
            img = glance.glance_show(imgid)
            if img:
                vmmap = openstack_out.map_block(img)
                if 'mpid' in vmmap:
                    vprint(("Found 'mpid' property (%(mpid)s) already set on " +
                            "image: %(id)s (%(name)s)") % vmmap)
                    _GLANCE_IMAGES[vmmap['mpid']] = vmmap
                _GLANCE_IMAGES[vmmap['checksum']] = vmmap
                _GLANCE_IMAGES[vmmap['name']] = vmmap
    return _GLANCE_IMAGES
Пример #12
0
 def test_openstack_out_parse_block_header_gl(self):
     h, _, _, _ = openstack_out.parse_block(glance_image_show)
     self.assertEqual(len(h), 2)
     self.assertEqual(h[0], 'Property')
     self.assertEqual(h[1], 'Value')
Пример #13
0
 def test_openstack_out_get_field_ok_uuids(self):
     _, rows, _, _ = openstack_out.parse_block(neutron_agent_list)
     for row in rows:
         u = uuid.UUID(row[0])
         self.assertEqual(uuid.UUID, type(u))
Пример #14
0
 def test_openstack_out_parse_block_body_gl(self):
     _, b, _, _ = openstack_out.parse_block(glance_image_show)
     self.assertEqual(len(b), 15)
     self.assertEqual(b[0], ['checksum', 'ee1eca47dc88f4879d8a229cc70a07c6'])
     self.assertEqual(b[1], ['container_format', 'bare'])
Пример #15
0
 def test_openstack_out_parse_block_body_ne(self):
     _, b, _, _ = openstack_out.parse_block(neutron_agent_list)
     self.assertEqual(len(b), 5)
     self.assertEqual(b[3], ['75b1db74-fea4-46ed-8133-2eefe1155074', 'L3 agent', 'c7-netw', 'xxx', 'True'])
Пример #16
0
 def test_openstack_out_parse_block_header_pb(self):
     h, _, _, _ = openstack_out.parse_block(pb)
     self.assertEqual(len(h), 2)
     self.assertEqual(h[0], '1')
     self.assertEqual(h[1], '2')
Пример #17
0
 def test_openstack_out_parse_block_body_pb(self):
     _, b, _, _ = openstack_out.parse_block(pb)
     self.assertEqual(len(b), 3)
     self.assertEqual(b[0], ['', ''])
     self.assertEqual(b[1], ['', ''])
     self.assertEqual(b[2], ['UN', 'DEUX'])
Пример #18
0
 def test_openstack_out_parse_block_header_gl(self):
     h, _, _, _ = openstack_out.parse_block(glance_image_show)
     self.assertEqual(len(h), 2)
     self.assertEqual(h[0], 'Property')
     self.assertEqual(h[1], 'Value')
Пример #19
0
 def test_openstack_out_parse_block_header_pb(self):
     h, _, _, _ = openstack_out.parse_block(pb)
     self.assertEqual(len(h), 2)
     self.assertEqual(h[0], '1')
     self.assertEqual(h[1], '2')
Пример #20
0
 def test_openstack_out_get_field_ok_uuids(self):
     _, rows, _, _ = openstack_out.parse_block(neutron_agent_list)
     for row in rows:
         u = uuid.UUID(row[0])
         self.assertEqual(uuid.UUID, type(u))
Пример #21
0
 def test_openstack_out_parse_block_body_pb(self):
     _, b, _, _ = openstack_out.parse_block(pb)
     self.assertEqual(len(b), 3)
     self.assertEqual(b[0], ['', ''])
     self.assertEqual(b[1], ['', ''])
     self.assertEqual(b[2], ['UN', 'DEUX'])
Пример #22
0
 def test_openstack_out_parse_block_body_gl(self):
     _, b, _, _ = openstack_out.parse_block(glance_image_show)
     self.assertEqual(len(b), 15)
     self.assertEqual(b[0],
                      ['checksum', 'ee1eca47dc88f4879d8a229cc70a07c6'])
     self.assertEqual(b[1], ['container_format', 'bare'])