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