"""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)
Exemple #2
0
"""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))
Exemple #3
0
"""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
Exemple #4
0
"""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')
            )
        )
Exemple #5
0
"""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():
Exemple #6
0
"""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():
Exemple #7
0
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)
Exemple #8
0
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.")
Exemple #9
0
"""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))
Exemple #10
0
"""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)
Exemple #11
0
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))
Exemple #12
0
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)
Exemple #14
0
"""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
Exemple #15
0
"""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')))
Exemple #16
0
"""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
Exemple #17
0
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()
Exemple #18
0
"""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))