def server_confirm_or_reject_resize(): test_id = request.args.get('test_id') if not request.json: abort(401) confirm = request.json['confirm'] server_name = request.json['server'] sess = _create_session(int(test_id)) nova = nova_cli.Client('2.1', session=sess) servers = nova.servers.list(search_opts={"name": server_name}) if servers and len(servers): server = servers[0] db = Session() server_dao = db.query(OSServer).filter( OSServer.uid == server.id).first() if confirm: server.confirm_resize() _create_test_log(db, test_id, 'Server %s CONFIRM RESIZE' % repr(server_dao)) server_dao.flavor_alt = None else: server.revert_resize() _create_test_log(db, test_id, 'Server %s REVERT RESIZE' % repr(server_dao)) server_dao.flavor = server.flavor_alt server_dao.flavor_alt = None db.commit() return jsonify(success=True), 201 else: abort(404)
def server_resize(): test_id = request.args.get('test_id') if not request.json: abort(401) flavor_name = request.json['flavor'] server_name = request.json['server'] sess = _create_session(int(test_id)) nova = nova_cli.Client('2.1', session=sess) flavor = nova.flavors.find(name=flavor_name) servers = nova.servers.list(search_opts={"name": server_name}) if flavor and servers and len(servers): server = servers[0] if server.flavor['id'] == flavor.id: abort(401) else: server.resize(flavor=flavor.id) db = Session() server_dao = db.query(OSServer).filter( OSServer.uid == server.id).first() flavor_dao = db.query(OSFlavor).filter( OSFlavor.uid == flavor.id).first() _create_test_log( db, test_id, 'Server %s RESIZE %s' % (repr(server_dao), repr(flavor_dao))) server_dao.flavor_alt = server_dao.flavor server_dao.flavor = flavor_dao db.add(server_dao) db.commit() return jsonify(success=True), 201 else: abort(404)
def server_create(): if not request.json: abort(400) test_id = request.args.get('test_id') db = Session() sess = _create_session(int(test_id)) nova = nova_cli.Client(session=sess, version='2.1') glance = glance_cli.Client('2', session=sess) neutron = neutron_cli.Client(session=sess) flavor = nova.flavors.find(name=request.json['flavor']) image = list( glance.images.list(filters={"name": request.json['image']}))[0] network = neutron.find_resource('network', request.json['network']) server = nova.servers.create(name=request.json['name'], flavor=flavor.id, image=image.id, network=network['id']) if server: server_dao = _server_dao_create( db, server, test_id, image=_image_dao_create(db, image, test_id, True), flavor=_flavor_dao_create(db, flavor, test_id, True), network=_network_dao_create(db, network, test_id, True)) _create_test_log(db, test_id, 'Server CREATE %s' % repr(server_dao)) db.commit() return jsonify(_os_server_to_json(server)), 201 else: abort(401)
def image_delete(): test_id = request.args.get('test_id') image_name = request.args.get('image_name') sess = _create_session(int(test_id)) glance = glance_cli.Client('2', session=sess) db = Session() image_dao = db.query(OSImage).filter(OSImage.name == image_name).first() glance.images.delete(image_dao.uid) _create_test_log(db, test_id, 'Image DELETE %s' % repr(image_dao)) db.delete(image_dao) db.commit() return jsonify(success=True)
def flavor_delete(): test_id = request.args.get('test_id') flavor_name = request.args.get('flavor_name') sess = _create_session(int(test_id)) nova = nova_cli.Client(session=sess, version='2.1') flavor = nova.flavors.find(name=flavor_name) nova.flavors.delete(flavor) if flavor: db = Session() flavor_dao = db.query(OSFlavor).filter( OSFlavor.name == flavor.name).first() _create_test_log(db, test_id, 'Flavor DELETE %s' % repr(flavor_dao)) db.delete(flavor_dao) db.commit() return jsonify(success=True)
def volume_delete(test_id): name = request.args.get('volume_name') sess = _create_session(test_id) cinder = cinder_cli.Client(CINDER_VERSION, session=sess) volumes = cinder.volumes.list(search_opts={"name": name}) if volumes and len(volumes): volume = volumes[0] id = volume.id cinder.volumes.delete(volume) transaction = Session() volume_dao = transaction.query(OSVolume).filter(OSVolume.uid == id).first() _create_test_log(transaction, test_id, 'Volume %s DELETE' % repr(volume_dao)) transaction.delete(volume_dao) transaction.commit() return jsonify(success=True) else: abort(404)
def server_migrate(): test_id = request.args.get('test_id') if not request.json: abort(401) server_name = request.json['server'] sess = _create_session(test_id) nova = nova_cli.Client('2.1', session=sess) servers = nova.servers.list(search_opts={"name": server_name}) if servers and len(servers): server = servers[0] nova.servers.migrate(server) db = Session() server_dao = db.query(OSServer).filter( OSServer.uid == server.id).first() _create_test_log(db, test_id, 'Server %s MIGRATE' % repr(server_dao)) db.commit() return jsonify(success=True) else: abort(401)
def flavor_create(): if not request.json: abort(400) test_id = request.args.get('key') sess = _create_session(int(test_id)) nova = nova_cli.Client(session=sess, version='2.1') flavor = nova.flavors.create(name=request.json['name'], ram=request.json['ram'], vcpus=request.json['vcpus'], disk=request.json['disk']) if flavor: db = Session() flavor_dao = _flavor_dao_create(flavor, test_id, db) _create_test_log(db, test_id, 'Flavor CREATE %s' % repr(flavor_dao)) db.commit() return jsonify(_os_flavor_to_json(flavor)), 201 else: abort(401)
def server_shelve_offload(): test_id = request.args.get('test_id') if not request.json: abort(401) server_name = request.json["server"] sess = _create_session(int(test_id)) nova = nova_cli.Client('2.1', session=sess) servers = nova.servers.list(search_opts={"name": server_name}) if servers and len(servers): server = servers[0] server.shelve_offload() db = Session() server_dao = db.query(OSServer).filter( OSServer.uid == server.id).first() _create_test_log(db, test_id, 'Server %s SHELVE OFFLOAD' % repr(server_dao)) db.commit() return jsonify(success=True) else: abort(404)
def _network_dao_create(sess, network, test_id, or_update=False): network_dao = OSNetwork() if or_update: network_result = sess.query(OSNetwork).filter( OSNetwork.name == network['name']).first() if network_result: network_dao = network_result network_dao.uid = network['id'] network_dao.name = network['name'] network_dao.project_uid = network['project_id'] network_dao.test_id = int(test_id) sess.add(network_dao) if not or_update: _create_test_log(sess, test_id, 'Network CREATE %s' % repr(network_dao)) return network_dao
def server_delete(): test_id = request.args.get('test_id') server_name = request.args.get('server_name') sess = _create_session(int(test_id)) nova = nova_cli.Client('2.1', session=sess) servers = nova.servers.list(search_opts={"name": server_name}) if servers and len(servers): server = servers[0] nova.servers.delete(server.id) db = Session() server_dao = db.query(OSServer).filter( OSServer.name == server_name).first() if server_dao: db.delete(server_dao) _create_test_log(db, test_id, 'Server DELETE %s' % repr(server_dao)) db.commit() return jsonify(success=True) else: return abort(404)
def _volume_dao_create(transaction, test_id, volume, or_update=False): volume_dao = OSVolume() if or_update: volume_result = transaction.query(OSVolume).filter(OSVolume.name == volume.name).first() if volume_result: volume_dao = volume_result volume_dao.test_id = test_id volume_dao.uid = volume.id volume_dao.name = volume.name volume_dao.size = volume.size volume_dao.availability_zone = volume.availability_zone volume_dao.status = volume.status transaction.add(volume_dao) if not or_update: _create_test_log(transaction, test_id, 'Volume %s CREATE' % repr(volume_dao)) return volume_dao
def image_create(): if not request.json: abort(400) test_id = request.args.get('test_id') sess = _create_session(int(test_id)) glance = glance_cli.Client('2', session=sess) image = glance.images.create( name=request.json['name'], disk_format=request.json['disk_format'], container_format=request.json['container_format']) if image: data = request.json["data"] decoded_data = base64.b64decode(data) with tempfile.NamedTemporaryFile() as temp: temp.write(decoded_data) glance.images.upload(image.id, temp) db = Session() image_dao = _image_dao_create(db, image, test_id) _create_test_log(db, test_id, 'Image CREATE %s' % repr(image_dao)) db.commit() return jsonify(_os_image_to_json(image)), 201 else: abort(401)