"""This is just a playing around module. Please ignore it""" import datetime import randomload.config as config # from randomload.actions.cinder import create as volume_create # from randomload.actions.cinder import delete as volume_delete from randomload.actions.cinder import list as volume_list from randomload.actions.cinder import usage as volume_usage from randomload.args import parser as argparser from randomload.clients import ClientManager from randomload.log import logging logger = logging.getLogger() logger.setLevel(logging.DEBUG) logger = logging.getLogger('randomload') logger.setLevel(logging.DEBUG) if __name__ == '__main__': args = argparser.parse_args() conf = config.load(args.config_file) clients = ClientManager(**conf.get('auth_kwargs', {})) volume_list(clients, conf) now = datetime.datetime.utcnow() end = now start = end - datetime.timedelta(days=14) metadata = '{"color": "blue"}' volume_usage(clients, conf, start=start, end=end, metadata=metadata)
"""This is just a playing around module. Please ignore it""" from randomload.log import logging logger = logging.getLogger('randomload.actions.nova.list') def list(clients, conf): logger.info("Listing active servers") nova = clients.get_nova() servers = nova.servers.list() for s in servers: logger.info("{0} - {1} - {2}".format(s.name, s.metadata, s.status))
"""This is just a playing around module. Please ignore it""" from randomload.log import logging import six from six.moves.urllib import parse from novaclient import base logger = logging.getLogger('randomload.actions.nova.usage') class Usage(base.Resource): def __repr__(self): return "<ComputeUsage>" class UsageManager(base.ManagerWithFind): resource_class = Usage def list(self, start, end, detailed=False, metadata=None): if metadata is None: metadata = {} opts = { 'start': start.isoformat(), 'end': end.isoformat(), 'detailed': int(bool(detailed)) } if metadata: opts['metadata'] = metadata
"""This is just a playing around module. Please ignore it""" from randomload.log import logging logger = logging.getLogger('randomload.actions.glance.list') def _property(image, prop): return image.get(prop, None) def list(clients, conf, **properties): logger.info("Listing active images") glance = clients.get_glance() images = glance.images.list(**properties) for i in images: logger.info( "{0} - {1} - {2} - {3}" .format( i.name, _property(i, 'app_id'), _property(i, 'color'), _property(i, 'environment') ) )
"""This is just a playing around module. Please ignore it""" import json import six from randomload.log import logging from six.moves.urllib import parse logger = logging.getLogger('randomload.actions.glance.usage') class Controller(object): def __init__(self, http_client): self.http_client = http_client def list(self, start, end, detailed=False, metadata=None): if metadata is None: metadata = {} opts = { 'start': start.isoformat(), 'end': end.isoformat(), 'detailed': int(bool(detailed)) } if isinstance(metadata, dict): metadata = json.dumps(metadata) if metadata: opts['metadata'] = metadata qparams = {} for opt, val in opts.items():
from randomload import utils from randomload.log import logging logger = logging.getLogger('randomload.actions.glance.create') def create(clients, conf=None): """Creates a glance image :param clients: randomload.clients.Clientmanager :param conf: Dict """ logger.info("Taking action image_create") if conf is None: conf = {} glance_conf = conf.get('glance', {}) glance = clients.get_glance() name = utils.randomname(prefix='random-image') imagedict = utils.randomfromlist(glance_conf.get('images')) kwargs = { 'name': name, 'disk_format': imagedict.get('disk_format'), 'container_format': imagedict.get('container_format'), 'app_id': 'randomload' } possible_metadata = glance_conf.get('metadata', {}) for metakey, valuelist in possible_metadata.items(): kwargs[metakey] = utils.randomfromlist(valuelist) image = glance.images.create(**kwargs)
from randomload import utils from randomload.log import logging logger = logging.getLogger('randomload.actions.nova.delete') def delete(clients, conf=None): """Deletes random server. :param clients: randomload.clients.ClientManager :param conf: Dict """ logger.info("Taking action delete") nova = clients.get_nova() if conf is None: conf = {} l = nova.servers.list(search_opts={'status': 'active'}) s = utils.randomfromlist(l) if s: logger.info("Deleting {0} ...".format(s)) nova.servers.delete(s) else: logger.info("Nothing to delete.")
"""Module containing action to create a cinder volume.""" from randomload import utils from randomload.log import logging logger = logging.getLogger('randomload.actions.cinder.create') def create(clients, conf=None): """Creates server with random image and flavor. :param clients: randomload.clients.ClientManager :param conf: Configuration """ logger.info("Taking action create") cinder = clients.get_cinder() if conf is None: conf = {} cinderconf = conf.get('cinder', {}) name = utils.randomname(prefix='random-volume') size = utils.randomfromlist(cinderconf.get('sizes', [1])) meta = {'app': 'randomload'} possible_metadata = cinderconf.get('metadata', {}) for metakey, valuelist in possible_metadata.items(): meta[metakey] = utils.randomfromlist(valuelist) volume = cinder.volumes.create(name=name, size=size, metadata=meta) logger.info("Created volume {0} with metadata {1}" .format(volume.name, volume.metadata))
"""Module containing action to create a nova server.""" from randomload import utils from randomload.log import logging logger = logging.getLogger('randomload.actions.nova.create') def create(clients, conf=None): """Creates server with random image and flavor. :param clients: randomload.clients.ClientManager :param conf: Configuration """ logger.info("Taking action create") nova = clients.get_nova() if conf is None: conf = {} nova_conf = conf.get('nova') flavor = utils.randomfromlist(nova_conf.get('flavors', [])) flavor = nova.flavors.get(flavor) image = utils.randomfromlist(nova_conf.get('images', [])) name = utils.randomname() meta = {} possible_metadata = nova_conf.get('metadata', {}) for metakey, valuelist in possible_metadata.items(): meta[metakey] = utils.randomfromlist(valuelist) msg = ("Creating {0} - {1} with image {2} with metadata {3}") logger.info(msg.format(name, flavor, image, meta)) nova.servers.create(name, image, flavor, meta=meta)
from randomload import utils from randomload.log import logging logger = logging.getLogger('randomload.actions.cinder.delete') def delete(clients, conf=None): """Deletes random server. :param clients: randomload.clients.ClientManager :param conf: Dict """ logger.info("Taking action delete") cinder = clients.get_cinder() if conf is None: conf = {} search_opts = { 'metadata': { 'app': 'randomload' }, 'status': 'available' } volumes = cinder.volumes.list(search_opts=search_opts) if not volumes: logger.info("Nothing to delete.") else: volume = utils.randomfromlist(volumes) cinder.volumes.delete(volume) logger.info("Deleted volume {0} - {1} - {2}" .format(volume.name, volume.size, volume.metadata))
from randomload import utils from randomload.log import logging logger = logging.getLogger('randomload.actions.glance.delete') def delete(clients, conf=None): """Deletes a random image created by randomload. :param clients: randomload.clients.ClientManager :param conf: Dict """ logger.info("Taking action delete") glance = clients.get_glance() if conf is None: conf = {} image_gen = glance.images.list(filters={'tag': ['randomload']}) images = [i for i in image_gen] if not images: logger.info("Nothing to delete") return image = utils.randomfromlist(images) glance.images.delete(image.id) logger.info("Deleted image {0}".format(image.name))
"""This is just a playing around module. Please ignore it""" import randomload.config as config from randomload.actions.glance import create as image_create from randomload.args import parser as argparser from randomload.clients import ClientManager from randomload.log import logging logger = logging.getLogger("randomload") logger.setLevel(logging.DEBUG) if __name__ == "__main__": args = argparser.parse_args() conf = config.load(args.config_file) clients = ClientManager( auth_url=conf.get("auth_url"), username=conf.get("username"), password=conf.get("password"), project_id=conf.get("project_id"), ) properties = {"app_id": "randomload"} image_create(clients, conf)
"""This is just a playing around module. Please ignore it""" from randomload.log import logging import six from six.moves.urllib import parse from cinderclient import base logger = logging.getLogger('randomload.actions.cinder.usage') class Usage(base.Resource): def __repr__(self): return "<VolumeUsage>" class UsageManager(base.ManagerWithFind): resource_class = Usage def list(self, start, end, metadata=None): if metadata is None: metadata = {} opts = { 'start': start.isoformat(), 'end': end.isoformat() } if metadata: opts['metadata'] = metadata
"""This is just a playing around module. Please ignore it""" from randomload.log import logging logger = logging.getLogger('randomload.actions.glance.list') def _property(image, prop): return image.get(prop, None) def list(clients, conf, **properties): logger.info("Listing active images") glance = clients.get_glance() images = glance.images.list(**properties) for i in images: logger.info("{0} - {1} - {2} - {3}".format(i.name, _property(i, 'app_id'), _property(i, 'color'), _property(i, 'environment')))
from randomload.actions.nova import list as server_list from randomload.actions.nova import usage as server_usage # from randomload.actions.cinder import create as volume_create # from randomload.actions.cinder import delete as volume_delete from randomload.actions.cinder import list as volume_list from randomload.actions.cinder import usage as volume_usage # from randomload.actions.glance import create as image_create # from randomload.actions.glance import delete as image_delete from randomload.actions.glance import list as image_list from randomload.actions.glance import usage as image_usage from randomload.args import parser as argparser from randomload.clients import ClientManager from randomload.log import logging logger = logging.getLogger('randomload') if __name__ == '__main__': args = argparser.parse_args() conf = config.load(args.config_file) clients = ClientManager(auth_url=conf.get('auth_url'), username=conf.get('username'), password=conf.get('password'), project_id=conf.get('project_id')) server_list(clients, conf) volume_list(clients, conf) image_list(clients, conf) logger.info("\n\n") now = datetime.datetime.utcnow()
"""This is just a playing around module. Please ignore it""" from randomload.log import logging logger = logging.getLogger('randomload.actions.cinder.list') def list(clients, conf): logger.info("Listing active volumes") cinder = clients.get_cinder() volumes = cinder.volumes.list() for v in volumes: logger.info("{0} - {1}".format(v.name, v.metadata))