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))
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))
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))
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)
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.")
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))