def list_share_types(self, list_all=True, microversion=None): """List share types. :param list_all: bool -- whether to list all share types or only public """ cmd = 'type-list' if list_all: cmd += ' --all' share_types_raw = self.manila(cmd, microversion=microversion) share_types = output_parser.listing(share_types_raw) return share_types
def list_share_types(self, list_all=True): """List share types. :param list_all: bool -- whether to list all share types or only public """ cmd = 'type-list' if list_all: cmd += ' --all' share_types_raw = self.manila(cmd) share_types = output_parser.listing(share_types_raw) return share_types
def test_limits_feature(env): """Test case for Ceilometer mandatory limits feature. (QA-2039) Actions: 1. Generate data in MongoDB with a help of 'mongo-generator.py'; 2. Run 'ceilometer meter-list' and check that number of items == 100; 3. Run 'ceilometer sample-list' and check that number of items == 100; 4. Run 'ceilometer resource-list' and check that number of items == 100; 5. Run 'ceilometer event-list --no-traits' and check that number of items == 100; """ script_name = 'mongo-generator.py' script_path = scripts_dir_path() + script_name set_env = 'source /root/openrc && ' ceil_meter_list = set_env + 'ceilometer meter-list' ceil_sample_list = set_env + 'ceilometer sample-list' ceil_res_list = set_env + 'ceilometer resource-list' ceil_event_list = set_env + 'ceilometer event-list --no-traits' with env.get_nodes_by_role('controller')[0].ssh() as remote: remote.upload(script_path, '/root/{0}'.format(script_name)) cmd = ('python /root/{0} --users 1 --projects 1 ' '--resources_per_user_project 200 ' '--samples_per_user_project 1000').format(script_name) remote.check_call(cmd) ceil_meter_list_out = remote.check_call(ceil_meter_list)['stdout'] ceil_sample_list_out = remote.check_call(ceil_sample_list)['stdout'] ceil_res_list_out = remote.check_call(ceil_res_list)['stdout'] ceil_event_list_out = remote.check_call(ceil_event_list)['stdout'] ceil_meter_list_out = parser.listing(ceil_meter_list_out) ceil_sample_list_out = parser.listing(ceil_sample_list_out) ceil_res_list_out = parser.listing(ceil_res_list_out) ceil_event_list_out = parser.listing(ceil_event_list_out) assert all(i == 100 for i in ( len(ceil_meter_list_out), len(ceil_sample_list_out), len(ceil_res_list_out), len(ceil_event_list_out)))
def test_shutdown_active_controller_during_upload( self, glance, image_file, suffix, timeout=60): """Check that image is created successfully if during creating image to perform shutdown of active controller Steps: 1. Create image using URL Link 2. Shutdown active controller during creation of image 3. Check that image is present in list and image status is `active` 4. Delete created image 5. Check that image deleted """ # Find a primary controller primary_controller = self.env.primary_controller mac = primary_controller.data['mac'] self.primary_node = DevopsClient.get_node_by_mac( env_name=self.env_name, mac=mac) name = 'Test_{}'.format(suffix[:6]) image_url = settings.GLANCE_IMAGE_URL cmd = ('image-create --name {name} --container-format bare ' '--disk-format qcow2 --location {image_url}'.format( name=name, image_url=image_url)) image = parser.details(glance(cmd)) logger.info('Image starts to upload') # Shutdown primary controller self.env.warm_shutdown_nodes([self.primary_node]) image_list = parser.listing(glance('image-list')) assert image['id'] in [x['ID'] for x in image_list] image_data = parser.details(glance('image-show {id}'.format(**image))) assert image_data['status'] == 'active' logger.info('Image is active') glance('image-delete {id}'.format(**image)) images = parser.listing(glance('image-list')) assert image['id'] not in [x['ID'] for x in images]
def list_access(self, share_id, columns=None, microversion=None): """Returns list of access rules for a share. :param share_id: str -- Name or ID of a share. :param columns: comma separated string of columns. Example, "--columns access_type,access_to" """ cmd = 'access-list %s ' % share_id if columns is not None: cmd += ' --columns ' + columns access_list_raw = self.manila(cmd, microversion=microversion) return output_parser.listing(access_list_raw)
def test_shutdown_primary_controller( self, glance, image_file, suffix, timeout=60): """Check creating image after shutdown primary controller Steps: 1. Shutdown primary controller 2. Create image from `image_file` 3. Check that image is present in list and image status is `active` 4. Delete created image 5. Check that image deleted """ # Find a primary controller primary_controller = self.env.primary_controller mac = primary_controller.data['mac'] primary_node = DevopsClient.get_node_by_mac( env_name=self.env_name, mac=mac) # Shutdown primary controller self.env.warm_shutdown_nodes([primary_node]) name = 'Test_{}'.format(suffix[:6]) cmd = ('image-create --name {name} --container-format bare ' '--disk-format qcow2 --file {file}'.format( name=name, file=image_file)) image = parser.details(glance(cmd)) logger.info('Image starts to upload') image_list = parser.listing(glance('image-list')) assert image['id'] in [x['ID'] for x in image_list] image_data = parser.details(glance('image-show {id}'.format(**image))) assert image_data['status'] == 'active' logger.info('Image is active') glance('image-delete {id}'.format(**image)) images = parser.listing(glance('image-list')) assert image['id'] not in [x['ID'] for x in images]
def list_share_types(self, list_all=True, columns=None, microversion=None): """List share types. :param list_all: bool -- whether to list all share types or only public :param columns: comma separated string of columns. Example, "--columns id,name" """ cmd = 'type-list' if list_all: cmd += ' --all' if columns is not None: cmd += ' --columns ' + columns share_types_raw = self.manila(cmd, microversion=microversion) share_types = output_parser.listing(share_types_raw) return share_types
def create_share_type(self, name=None, driver_handles_share_servers=True, snapshot_support=True, is_public=True): """Creates share type. :param name: text -- name of share type to use, if not set then autogenerated will be used :param driver_handles_share_servers: bool/str -- boolean or its string alias. Default is True. :param snapshot_support: bool/str -- boolean or its string alias. Default is True. :param is_public: bool/str -- boolean or its string alias. Default is True. """ if name is None: name = data_utils.rand_name('manilaclient_functional_test') dhss = driver_handles_share_servers if not isinstance(dhss, six.string_types): dhss = six.text_type(dhss) if not isinstance(snapshot_support, six.string_types): snapshot_support = six.text_type(snapshot_support) if not isinstance(is_public, six.string_types): is_public = six.text_type(is_public) cmd = ('type-create %(name)s %(dhss)s --is-public %(is_public)s ' '--snapshot-support %(snapshot_support)s') % { 'name': name, 'dhss': dhss, 'is_public': is_public, 'snapshot_support': snapshot_support} share_type_raw = self.manila(cmd) # NOTE(vponomaryov): share type creation response is "list"-like with # only one element: # [{ # 'ID': '%id%', # 'Name': '%name%', # 'Visibility': 'public', # 'is_default': '-', # 'required_extra_specs': 'driver_handles_share_servers : False', # }] share_type = output_parser.listing(share_type_raw)[0] return share_type
def list_share_type_access(self, share_type_id, microversion=None): projects_raw = self.manila( 'type-access-list %s' % share_type_id, microversion=microversion) projects = output_parser.listing(projects_raw) project_ids = [pr['Project_ID'] for pr in projects] return project_ids
def test_listing(self): expected = [{'ID': '11'}, {'ID': '21'}, {'ID': '31'}] actual = output_parser.listing(self.LISTING_OUTPUT) self.assertIsInstance(actual, list) self.assertEqual(expected, actual)
def list_access(self, share_id, microversion=None): access_list_raw = self.manila('access-list %s' % share_id, microversion=microversion) return output_parser.listing(access_list_raw)
def list_share_type_access(self, share_type_id, microversion=None): projects_raw = self.manila('type-access-list %s' % share_type_id, microversion=microversion) projects = output_parser.listing(projects_raw) project_ids = [pr['Project_ID'] for pr in projects] return project_ids
def list_access(self, share_id): access_list_raw = self.manila('access-list %s' % share_id) return output_parser.listing(access_list_raw)
def list_access(self, share_id, microversion=None): access_list_raw = self.manila( 'access-list %s' % share_id, microversion=microversion) return output_parser.listing(access_list_raw)