def cli(ctx, config_file): """Get nova cores quotas.""" setattr(cli, '__doc__', DOC) output = { 'measurement_name': COMMAND_NAME, 'meta': { 'quotas': 'cores' }, 'variables': {} } nova_config = utils.read_config(config_file=config_file)['nova'] interface = nova_config.pop('interface', 'internal') _ost = ost.OpenStack(os_auth_args=nova_config) try: variables = output['variables'] for project in _ost.get_projects(): limits = _ost.get_compute_limits(project_id=project.id, interface=interface) variables[project.name] = int(limits['quota_set']['cores']) except Exception as exp: output['exit_code'] = 1 output['message'] = '{} failed -- {}'.format( COMMAND_NAME, utils.log_exception(exp=exp)) else: output['exit_code'] = 0 output['message'] = '{} is ok'.format(COMMAND_NAME) finally: return output
def cli(ctx, config_file): """Get nova instance quotas.""" setattr(cli, '__doc__', DOC) # Lower level import because we only want to load this module # when this plugin is called. from monitorstack.utils import os_utils as ost output = { 'measurement_name': COMMAND_NAME, 'meta': { 'quotas': 'instances' }, 'variables': {} } nova_config = utils.read_config(config_file=config_file)['nova'] interface = nova_config.pop('interface', 'internal') _ost = ost.OpenStack(os_auth_args=nova_config) try: variables = output['variables'] for project in _ost.get_projects(): limits = _ost.get_compute_limits(project_id=project.id, interface=interface) variables[project.name] = int(limits['quota_set']['instances']) except Exception as exp: output['exit_code'] = 1 output['message'] = '{} failed -- {}'.format( COMMAND_NAME, utils.log_exception(exp=exp)) else: output['exit_code'] = 0 output['message'] = '{} is ok'.format(COMMAND_NAME) finally: return output
def read_config(): """Load the test config file. :returns: dict """ os_config_file = os.path.expanduser( os.path.abspath( os.path.dirname(__file__) + '/files/test-openstack.ini')) return utils.read_config(os_config_file)
def cli(ctx, config_file): """Get nova cores quotas.""" setattr(cli, '__doc__', DOC) # Lower level import because we only want to load this module # when this plugin is called. from monitorstack.utils import os_utils as ost output = { 'measurement_name': COMMAND_NAME, 'meta': { 'block_pools': 'usage' }, 'variables': {} } config = utils.read_config(config_file=config_file)['cinder'] interface = config.pop('interface', 'internal') _ost = ost.OpenStack(os_auth_args=config) try: variables = output['variables'] for item in _ost.get_volume_pool_stats(interface=interface): cap = item['capabilities'] total_capacity_gb = float(cap.get('total_capacity_gb', 0)) free_capacity_gb = float(cap.get('free_capacity_gb', 0)) percent_used = 100 * (free_capacity_gb / total_capacity_gb) pool_name = cap.get('pool_name') output['meta'][pool_name] = True free_metric = '{}_free_capacity_gb'.format(pool_name) variables[free_metric] = free_capacity_gb total_metric = '{}_total_capacity_gb'.format(pool_name) variables[total_metric] = total_capacity_gb percent_metric = '{}_percent_used'.format(pool_name) variables[percent_metric] = percent_used except Exception as exp: output['exit_code'] = 1 output['message'] = '{} failed -- {}'.format( COMMAND_NAME, utils.log_exception(exp=exp)) else: output['exit_code'] = 0 output['message'] = '{} is ok'.format(COMMAND_NAME) finally: return output
def setUp(self): """Initial setup for class.""" os_config_file = os.path.expanduser( os.path.abspath( os.path.dirname(__file__) + '/files/test-openstack.ini' ) ) self.config = utils.read_config(os_config_file) conf = utils.ConfigParser.RawConfigParser() conf.read([os_config_file]) self.config_defaults = conf.defaults() self.g_testfile = os.path.join( os.path.expanduser('~'), '.cache/monitorstack.cache' ) self.t_testfile = tempfile.mkdtemp()
def cli(ctx, config_file): """Get nova cores quotas.""" setattr(cli, '__doc__', DOC) output = { 'measurement_name': COMMAND_NAME, 'meta': { 'block_pools': 'totals' }, 'variables': {} } config = utils.read_config(config_file=config_file)['cinder'] interface = config.pop('interface', 'internal') _ost = ost.OpenStack(os_auth_args=config) try: variables = output['variables'] total_capacity_gb = 0 free_capacity_gb = 0 for item in _ost.get_volume_pool_stats(interface=interface): cap = item['capabilities'] output['meta'][cap.get('pool_name')] = True free_capacity_gb += float(cap.get('free_capacity_gb', 0)) total_capacity_gb += float(cap.get('total_capacity_gb', 0)) else: used_capacity = total_capacity_gb - free_capacity_gb total_percent = 100 * (free_capacity_gb / total_capacity_gb) variables['cinder_total_percent_used'] = total_percent variables['cinder_total_free_capacity'] = free_capacity_gb variables['cinder_total_used_capacity'] = used_capacity variables['cinder_total_capacity'] = total_capacity_gb except Exception as exp: output['exit_code'] = 1 output['message'] = '{} failed -- {}'.format( COMMAND_NAME, utils.log_exception(exp=exp) ) else: output['exit_code'] = 0 output['message'] = '{} is ok'.format(COMMAND_NAME) finally: return output
def cli(ctx, config_file): """Get nova used ram.""" setattr(cli, '__doc__', DOC) # Lower level import because we only want to load this module # when this plugin is called. from monitorstack.utils import os_utils as ost output = { 'measurement_name': COMMAND_NAME, 'meta': { 'used': 'ram' }, 'variables': {} } used_collection = collections.Counter() nova_config = utils.read_config(config_file=config_file)['nova'] _ost = ost.OpenStack(os_auth_args=nova_config) try: flavors = _ost.get_flavors() variables = output['variables'] for used in _ost.get_consumer_usage(): flavor = flavors[used['flavor']['id']] project_name = _ost.get_project_name(project_id=used['project_id']) used_collection[project_name] += int(flavor['ram']) flavor_id = used['flavor']['id'] output['meta'][flavor_id] = True flavor_name = _ost.get_flavor_name(flavor_id=flavor_id) output['meta'][flavor_name] = True variables.update(used_collection) except Exception as exp: output['exit_code'] = 1 output['message'] = '{} failed -- {}'.format( COMMAND_NAME, utils.log_exception(exp=exp)) else: output['exit_code'] = 0 output['message'] = '{} is ok'.format(COMMAND_NAME) finally: return output
def cli(ctx, config_file): """Get nova used disk.""" setattr(cli, '__doc__', DOC) output = { 'measurement_name': COMMAND_NAME, 'meta': { 'used': 'disk' }, 'variables': {} } used_collection = collections.Counter() nova_config = utils.read_config(config_file=config_file)['nova'] _ost = ost.OpenStack(os_auth_args=nova_config) try: flavors = _ost.get_flavors() variables = output['variables'] for used in _ost.get_consumer_usage(): flavor = flavors[used['flavor']['id']] project_name = _ost.get_project_name(project_id=used['project_id']) used_collection[project_name] += int(flavor['disk']) flavor_id = used['flavor']['id'] output['meta'][flavor_id] = True flavor_name = _ost.get_flavor_name(flavor_id=flavor_id) output['meta'][flavor_name] = True variables.update(used_collection) except Exception as exp: output['exit_code'] = 1 output['message'] = '{} failed -- {}'.format( COMMAND_NAME, utils.log_exception(exp=exp)) else: output['exit_code'] = 0 output['message'] = '{} is ok'.format(COMMAND_NAME) finally: return output