Exemplo n.º 1
0
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
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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}
Exemplo n.º 6
0
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):
Exemplo n.º 7
0
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:
Exemplo n.º 8
0
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
Exemplo n.º 9
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)