from himlarcli.printer import Printer from himlarcli import utils as himutils from datetime import date, timedelta from collections import OrderedDict parser = Parser() options = parser.parse_args() printer = Printer(options.format) kc= Keystone(options.config, debug=options.debug) kc.set_domain(options.domain) kc.set_dry_run(options.dry_run) logger = kc.get_logger() # Billing will always use all regions regions = kc.find_regions() def action_whales(): start = himutils.get_date(options.start, date.today() - timedelta(days=1)) stop = himutils.get_date(options.end, date.today() + timedelta(days=1)) if start > stop: himutils.sys_error('start %s must be fore stop %s' % (start, stop)) logger.debug('=> start date = %s', start) logger.debug('=> stop date = %s', stop) for region in regions: nc = Nova(options.config, debug=options.debug, log=logger, region=region) cc = Cinder(options.config, debug=options.debug, log=logger, region=region) project_usage = nc.get_usage(start=start, end=stop) logger.debug('=> threshold for whales filter %s', options.threshold) print_header = True
from himlarcli.cinder import Cinder from himlarcli.nova import Nova from himlarcli.neutron import Neutron from himlarcli.parser import Parser from himlarcli.printer import Printer from himlarcli import utils as himutils himutils.is_virtual_env() parser = Parser() options = parser.parse_args() printer = Printer(options.format) ksclient = Keystone(options.config, debug=options.debug) logger = ksclient.get_logger() regions = ksclient.find_regions(region_name=options.region) if not regions: himutils.sys_error('no regions found!') def action_show(): for region in regions: novaclient = Nova(options.config, debug=options.debug, log=logger, region=region) cinderclient = Cinder(options.config, debug=options.debug, log=logger, region=region)
from himlarcli.parser import Parser from himlarcli.printer import Printer from himlarcli import utils as himutils himutils.is_virtual_env() parser = Parser() options = parser.parse_args() printer = Printer(options.format) ksclient = Keystone(options.config, debug=options.debug) ksclient.set_dry_run(options.dry_run) logger = ksclient.get_logger() if hasattr(options, 'region'): regions = ksclient.find_regions(region_name=options.region) else: regions = ksclient.find_regions() if not regions: himutils.sys_error('no valid regions found!') def action_volume(): projects = ksclient.get_projects(domain=options.domain) for region in regions: cinderclient = Cinder(options.config, debug=options.debug, log=logger, region=region) # Quotas quotas = dict({'in_use': 0, 'quota': 0}) for project in projects: if not hasattr(project, "type"): # unknown project type logger.debug('=> unknow project type %s', project.name)
from himlarcli.neutron import Neutron from himlarcli.parser import Parser from himlarcli import utils as himutils parser = Parser() parser.toggle_show('dry-run') parser.toggle_show('format') options = parser.parse_args() kc= Keystone(options.config, debug=options.debug) kc.set_domain(options.domain) logger = kc.get_logger() # Region if hasattr(options, 'region'): regions = kc.find_regions(region_name=options.region) else: regions = kc.find_regions() logger.debug('=> regions used: %s', ','.join(regions)) Base = declarative_base() class Owner(Base): __tablename__ = 'owners' ip = Column(String(16), primary_key=True) organization = Column(String(16), nullable=False) project_name = Column(String(255), nullable=False) admin = Column(String(255)) user = Column(String(255)) timestamp = Column(DateTime, default=datetime.now)
from himlarcli.glance import Glance from himlarcli.parser import Parser from himlarcli.printer import Printer from himlarcli import utils as himutils himutils.is_virtual_env() parser = Parser() options = parser.parse_args() printer = Printer(options.format) ksclient = Keystone(options.config, debug=options.debug) ksclient.set_dry_run(options.dry_run) logger = ksclient.get_logger() regions = ksclient.find_regions() def action_disabled(): for region in regions: novaclient = Nova(options.config, debug=options.debug, log=logger, region=region) instances = novaclient.get_instances() printer.output_dict({'header': '%s: Instances in disabled project (host, name, project)' % region}) groups = {'group1': 0, 'group2': 0, 'group3': 0} count = 0 for i in instances: project = ksclient.get_by_id('project', i.tenant_id) if project.enabled: continue host = getattr(i, 'OS-EXT-SRV-ATTR:host').split('.')[0] output = {'name': i.name, 'project': project.name, 'status': host}
from himlarcli.statsdclient import StatsdClient parser = Parser() options = parser.parse_args() printer = Printer(options.format) kc = Keystone(options.config, debug=options.debug) kc.set_domain(options.domain) kc.set_dry_run(options.dry_run) logger = kc.get_logger() statsd = StatsdClient(options.config, debug=options.debug, log=logger) statsd.set_dry_run(options.dry_run) # Region if hasattr(options, 'region'): regions = kc.find_regions(region_name=options.region) else: regions = kc.find_regions() def action_compute(): stats = dict() for region in regions: metrics = ['vcpus', 'vcpus_used', 'running_vms', 'memory_mb_used', 'memory_mb', 'local_gb', 'local_gb_used'] nc = Nova(options.config, debug=options.debug, region=region, log=logger) azs = nc.get_availability_zones() zone_hosts = dict() # Availablity zones for az in azs: if ('iaas-team-only' in az.zoneName or region not in az.zoneName or not az.hosts):
from himlarcli.printer import Printer from himlarcli import utils as utils from himlarcli.mail import Mail from datetime import datetime, date, timedelta import re parser = Parser() options = parser.parse_args() printer = Printer(options.format) kc = Keystone(options.config, debug=options.debug) kc.set_domain(options.domain) kc.set_dry_run(options.dry_run) logger = kc.get_logger() regions = kc.find_regions() def action_disable(): projects = kc.get_projects() subject = '[NREC] Your project is due for deletion' logfile = 'logs/expired-disabled-{}.log'.format(date.today().isoformat()) if options.template: template = options.template else: template = 'notify/notify_expired_last.txt' mail = utils.get_client(Mail, options, logger) fromaddr = mail.get_config('mail', 'from_addr') for project in projects: project = expired_project(project) if not project:
from himlarcli.glance import Glance from himlarcli.parser import Parser from himlarcli.printer import Printer from himlarcli import utils as himutils himutils.is_virtual_env() parser = Parser() options = parser.parse_args() printer = Printer(options.format) ksclient = Keystone(options.config, debug=options.debug) ksclient.set_dry_run(options.dry_run) logger = ksclient.get_logger() regions = ksclient.find_regions() def action_disabled(): for region in regions: novaclient = Nova(options.config, debug=options.debug, log=logger, region=region) instances = novaclient.get_instances() printer.output_dict({ 'header': '%s: Instances in disabled project (host, name, project)' % region }) groups = {'group1': 0, 'group2': 0, 'group3': 0} count = 0
from himlarcli.nova import Nova from himlarcli.parser import Parser from himlarcli.printer import Printer from himlarcli import utils as utils parser = Parser() options = parser.parse_args() printer = Printer(options.format) kc = Keystone(options.config, debug=options.debug) kc.set_domain(options.domain) kc.set_dry_run(options.dry_run) logger = kc.get_logger() # Check if region options is used and if it is a valid region if options.region and options.region in kc.find_regions(options.region): region = options.region else: region = kc.get_region() # use default from config def action_list(): search_opts = {} if options.project: project = kc.get_project_by_name(project_name=options.project) if not project: utils.sys_error('Project {} not found'.format(options.project)) search_opts['project_id'] = project.id else: project_id = None cc = Cinder(options.config, debug=options.debug, log=logger, region=region) volumes = cc.get_volumes(detailed=True, search_opts=search_opts)