def register_image(self): """ trove images for ubuntu http://tarballs.openstack.org/trove/images/ubuntu/ building guest images http://docs.openstack.org/developer/trove/dev/building_guest_images.html ``` git clone https://github.com/openstack/trove-integration git clone https://github.com/openstack/tripleo-image-elements.git export PATH_TRIPLEO_ELEMENTS=$PWD/tripleo-image-elements export REDSTACK_SCRIPTS=$PWD/trove-integration/scripts export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive" export ELEMENTS_PATH=$REDSTACK_SCRIPTS/files/elements:$PATH_TRIPLEO_ELEMENTS/elements disk-image-create -a amd64 -o ./ubuntu-percona.qemu ubuntu vm heat-cfntools \ cloud-init-datasources ubuntu-guest ubuntu-mysql ``` """ glance = Glance() image_id = glance.create_image( 'trove_mysql', 'http://tarballs.openstack.org/trove/images/ubuntu/mysql.qcow2') sudo("/opt/trove/bin/trove-manage --config-file /etc/trove/trove.conf datastore_update mysql ''") # noqa sudo("/opt/trove/bin/trove-manage --config-file /etc/trove/trove.conf datastore_version_update mysql mysql-5.6 mysql {0} '' 1".format(image_id)) # noqa
def basic(self): data = self.init() if env.host != env.hosts[0]: return keystone = Keystone() keystone.create_user(data["user"], data["password"], [["admin", "admin"]], False) glance = Glance() image_id = glance.create_image(data["image"]["name"], data["image"]["src_url"]) net_id = utils.oscmd( "neutron net-list | grep ' {0} ' | awk '{{print $2}}'".format(env.cluster["neutron"]["test_net"]) ) nova = Nova() nova.create_flavor("test-flavor", 62, 2, 1) test_stack = {"image_id": image_id, "net_id": net_id, "flavor": "test-flavor"} filer.template("/tmp/stack-nova.yml", src="stack/stack-nova.yml", data=test_stack) filer.template("/tmp/autoscale.yml", src="stack/autoscale.yml", data=test_stack) with api.warn_only(): result = utils.oscmd("heat stack-list | grep stack-nova") if result.return_code == 0: utils.oscmd("heat stack-delete -y stack-nova") time.sleep(3) utils.oscmd("heat stack-create -f /tmp/stack-nova.yml stack-nova")
def Launchmain(): drive = Launch() glanceObj = Glance(drive.logObj) choiceId = drive.imageId try: imageUrl = glanceObj.get_image_url(drive.logObj, choiceId, drive.endPointObj) except OperationError, e : sys.stderr.write( "\n" + str (e) + "\n") return e.err
def populate_endpoint(self): endPointObj = Endpoint() for module in self.jsonOfLogin['access']['serviceCatalog'] : if "glance" == module['name']: glanceObj = Glance(self) glanceObj.set_endpoint_values(module['endpoints'][0]['adminURL'],module['endpoints'][0]['internalURL'],module['endpoints'][0]['publicURL'], module['endpoints'][0]['region'], module['endpoints'][0]['id']) endPointObj.glance = glanceObj if "nova" == module['name'] : novaObj = Nova() novaObj.set_endpoint_values(module['endpoints'][0]['adminURL'],module['endpoints'][0]['internalURL'],module['endpoints'][0]['publicURL'], module['endpoints'][0]['region'], module['endpoints'][0]['id']) endPointObj.nova = novaObj if "quantum" == module['name']: quantumObj = Quantum() quantumObj.set_endpoint_values(module['endpoints'][0]['adminURL'],module['endpoints'][0]['internalURL'],module['endpoints'][0]['publicURL'], module['endpoints'][0]['region'], module['endpoints'][0]['id']) endPointObj.quantum = quantumObj if "cinder" == module['name']: cinderObj = Cinder() cinderObj.set_endpoint_values(module['endpoints'][0]['adminURL'],module['endpoints'][0]['internalURL'],module['endpoints'][0]['publicURL'], module['endpoints'][0]['region'], module['endpoints'][0]['id']) endPointObj.cinder = cinderObj if "keystone" == module['name']: keystoneObj = Keystone() keystoneObj.set_endpoint_values(module['endpoints'][0]['adminURL'],module['endpoints'][0]['internalURL'],module['endpoints'][0]['publicURL'], module['endpoints'][0]['region'], module['endpoints'][0]['id']) endPointObj.keystone = keystoneObj return endPointObj
def __init__(self): self.__config = Config('config.ini') server = self.__config.get_server() domain = self.__config.get_domain() username = self.__config.get_username() password = self.__config.get_password() self.__network_name = self.__config.get_internal_network() auth = Auth(server, 5000, username, password, domain) auth_token = auth.get_auth_token() tenant_id = auth.get_tenant_id() self.__nova = Nova(server, 8774, auth_token, tenant_id) self.__glance = Glance(server, 9292, auth_token) self.__network = Network(server, 9696, auth_token) self.__key_pair = self.__config.get_key_pair() self.__user_vm = self.__config.get_user_vm()
try: self.endPointObj = self.logObj.login() # generates a token and populateendpoints self.xAuthToken = self.logObj.get_token() print str(self.endPointObj) print "Patzaks: change" except OperationError, e : sys.stderr.write( "\n" + str(e.err)) exit(e.err) def Uploadmain (): try : drive = Upload() except InvalidArgumentsException ,e: sys.stderr.write("\narguments error\n") return e.value glanceObj = Glance(drive.logObj) try : createdImageUrl = glanceObj.create_image(drive.logObj, drive.imageName, drive.endPointObj, drive.containerFormat, drive.diskFormat) print "Created Image Url: " + createdImageUrl # TBD : debugging message except OperationError, e: sys.stderr.write( "\n" + str (e.err)) return (e.err) try: glanceObj.upload_image(drive.logObj, drive.imagePath) except OperationError, e: sys.stderr.write("\n" + str(e.err)) return (e.err) return (0)
class OpenStack(Cal): def __init__(self): self.__config = Config('config.ini') server = self.__config.get_server() domain = self.__config.get_domain() username = self.__config.get_username() password = self.__config.get_password() self.__network_name = self.__config.get_internal_network() auth = Auth(server, 5000, username, password, domain) auth_token = auth.get_auth_token() tenant_id = auth.get_tenant_id() self.__nova = Nova(server, 8774, auth_token, tenant_id) self.__glance = Glance(server, 9292, auth_token) self.__network = Network(server, 9696, auth_token) self.__key_pair = self.__config.get_key_pair() self.__user_vm = self.__config.get_user_vm() def start(self, name='test'): image_name = self.__config.get_image_name() key_name = self.__config.get_key_name() flavor = self.__config.get_flavor() image_ref = self.__glance.get_image_ref(image_name) network_id = self.__network.get_network_id(self.__network_name) server_id = self.__nova.create(image_ref, name, flavor, network_id=network_id, key_name=key_name) return server_id def stop(self): ret = self.__nova.delete() return ret def status(self): return self.__nova.show_details() def associate_floating_ip(self): return self.__nova.add_floating_ip() def execute(self, command): ip = self.__nova.get_floating_ip() cmd = 'ssh -i ' + self.__key_pair + ' ' + self.__user_vm + '@' + ip + ' ' + command cmd_run = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) return cmd_run.communicate() def put_data(self, source, destination): ip = self.__nova.get_floating_ip() cmd = 'ssh-keygen -R ' + ip subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) cmd = 'scp -i ' + self.__key_pair + ' -r ' + source + ' ' + self.__user_vm + '@' + ip + ':' + destination proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) proc.communicate() def get_data(self, source, destination): ip = self.__nova.get_floating_ip() cmd = 'ssh-keygen -R ' + ip subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) cmd = 'scp -i ' + self.__key_pair + ' -r ' + self.__user_vm + '@' + ip + ':' + destination + ' ' + source proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) proc.communicate() def backup(self, name='backup'): return self.__nova.backup(name) def restore(self): return self.__nova.restore() def get_system_info(self): absolute = self.__nova.get_system_info() print print 'maxTotalInstances: %d' % absolute['maxTotalInstances'] print 'totalInstancesUsed: %d' % absolute['maxTotalCores'] print print 'maxTotalRAMSize: %d' % absolute['maxTotalRAMSize'] print 'totalRAMUsed: %d' % absolute['totalRAMUsed'] print print 'maxTotalCores: %d' % absolute['maxTotalCores'] print 'totalCoresUsed: %d' % absolute['totalCoresUsed'] print print 'maxTotalFloatingIps: %d' % absolute['maxTotalFloatingIps'] print 'totalFloatingIpsUsed: %d' % absolute['totalFloatingIpsUsed'] print