Exemple #1
0
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)

    glance.images.upload(image.id, open(imagedict.get('file'), 'rb'))
    logger.info("Created image {0}".format(image.name))
Exemple #2
0
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 #3
0
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 #4
0
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 #5
0
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 #6
0
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))