コード例 #1
0
def get_cloud_api(config):
    '''get an aws connection or an openstack connection...'''
    if config.cloud == 'aws':
        print 'Creating an Aws-Ec2 connection.'
        if config.aws_access_key_id == None or config.aws_secret_access_key == None:
            print 'Input Invalid, aws-access-key-id and aws-secret-key-id is necessary for AWS cloud.'
            return
        return AWS_API(config)

    elif config.cloud == 'openstack':
        if not (config.user_name and config.user_passwd and config.user_tenant
                and config.auth_url):
            print 'Input Invalid, user-name, user-password, user-tenant and auth-url is necessary for OpenStack cloud.'
            return
        return Openstack_API(config)
コード例 #2
0
 def get_cloud_api(self):
     if not (self.config.user_name and self.config.user_passwd
             and self.config.user_tenant and self.config.auth_url):
         print 'Input Invalid, user-name, user-password, user-tenant and auth-url is necessary for OpenStack cloud.'
         return
     return Openstack_API(self.config)
コード例 #3
0
    def __init__(self):
	conf = MetaConfigure().config
	self.cloud_api = Openstack_API(conf)

	self.boot_type = conf.boot_type
        self.flavor_ids=[]
        self.image_ids=[]
        self.volume_ids=[]
        self.nec_ids=[]

        if hasattr(conf, 'image_ids'):
            self.image_ids = conf.image_ids or []
	    print self.image_ids

        if hasattr(conf, 'net_ids'):
            self.instance_net_ids = []
            self.proxy_net_ids = []
	    for net_id in conf.net_ids:
                self.instance_net_ids.append({"net-id":net_id})
                self.proxy_net_ids.append({"net-id":net_id})
	    print self.instance_net_ids

        if hasattr(conf, 'meta'):
            self.meta_list = conf.meta or {}

        if hasattr(conf, 'flavor_ids'):
            self.flavor_ids = conf.flavor_ids or []
	    print self.flavor_ids

        if hasattr(conf, 'volume_ids'):
            self.volume_ids = conf.volume_ids or []

	if hasattr(conf,"image_names") and conf.image_names:
            for iname in conf.image_names:
                self.image_ids.append(self.cloud_api.get_imageid_by_name(iname))

        if hasattr(conf,"flavor_names") and conf.flavor_names:
            for fname in conf.flavor_names:
                self.flavor_ids.append(self.cloud_api.get_flavorid_by_name(fname))
	self.meta_list={}
	self.proxy_ip='0.0.0.0'
	self.proxy_port=str(conf.proxy_port)
	self.host_addr=conf.host_addr

	file_or_string=open('vm_rc.local')
	self.vm_rc = file_or_string.read()
	self.vm_rc.encode('base64')
	file_or_string.close()

	file_or_string=open('ProvisionVM.py')
	self.vm_prov = file_or_string.read()
	self.vm_prov.encode('base64')
	file_or_string.close()

	file_or_string=open('proxy_rc.local')
	self.proxy_rc = file_or_string.read()
	self.proxy_rc.encode('base64')
	file_or_string.close()

	file_or_string=open('ProvisionProxy.py.tar.gz')
	self.proxy_prov = file_or_string.read()
	self.proxy_prov.encode('base64')
	file_or_string.close()

	self.proxy_addr="0.0.0.0:1111"
	print "image:%s;net: %s; %s ; meta: %s; flavor: %s; volumes_ids:%s" % (self.image_ids, self.instance_net_ids, self.proxy_net_ids, self.meta_list, self.flavor_ids, self.volume_ids)

	'''random liftime for vm instance'''
	self.lifetime = int(conf.lifetime)
	self.random_lifetime = conf.random_lifetime
	self.min_lifetime = conf.min_lifetime
	self.max_lifetime = conf.max_lifetime
コード例 #4
0
class InstancePatitioner:
    def __init__(self):
	conf = MetaConfigure().config
	self.cloud_api = Openstack_API(conf)

	self.boot_type = conf.boot_type
        self.flavor_ids=[]
        self.image_ids=[]
        self.volume_ids=[]
        self.nec_ids=[]

        if hasattr(conf, 'image_ids'):
            self.image_ids = conf.image_ids or []
	    print self.image_ids

        if hasattr(conf, 'net_ids'):
            self.instance_net_ids = []
            self.proxy_net_ids = []
	    for net_id in conf.net_ids:
                self.instance_net_ids.append({"net-id":net_id})
                self.proxy_net_ids.append({"net-id":net_id})
	    print self.instance_net_ids

        if hasattr(conf, 'meta'):
            self.meta_list = conf.meta or {}

        if hasattr(conf, 'flavor_ids'):
            self.flavor_ids = conf.flavor_ids or []
	    print self.flavor_ids

        if hasattr(conf, 'volume_ids'):
            self.volume_ids = conf.volume_ids or []

	if hasattr(conf,"image_names") and conf.image_names:
            for iname in conf.image_names:
                self.image_ids.append(self.cloud_api.get_imageid_by_name(iname))

        if hasattr(conf,"flavor_names") and conf.flavor_names:
            for fname in conf.flavor_names:
                self.flavor_ids.append(self.cloud_api.get_flavorid_by_name(fname))
	self.meta_list={}
	self.proxy_ip='0.0.0.0'
	self.proxy_port=str(conf.proxy_port)
	self.host_addr=conf.host_addr

	file_or_string=open('vm_rc.local')
	self.vm_rc = file_or_string.read()
	self.vm_rc.encode('base64')
	file_or_string.close()

	file_or_string=open('ProvisionVM.py')
	self.vm_prov = file_or_string.read()
	self.vm_prov.encode('base64')
	file_or_string.close()

	file_or_string=open('proxy_rc.local')
	self.proxy_rc = file_or_string.read()
	self.proxy_rc.encode('base64')
	file_or_string.close()

	file_or_string=open('ProvisionProxy.py.tar.gz')
	self.proxy_prov = file_or_string.read()
	self.proxy_prov.encode('base64')
	file_or_string.close()

	self.proxy_addr="0.0.0.0:1111"
	print "image:%s;net: %s; %s ; meta: %s; flavor: %s; volumes_ids:%s" % (self.image_ids, self.instance_net_ids, self.proxy_net_ids, self.meta_list, self.flavor_ids, self.volume_ids)

	'''random liftime for vm instance'''
	self.lifetime = int(conf.lifetime)
	self.random_lifetime = conf.random_lifetime
	self.min_lifetime = conf.min_lifetime
	self.max_lifetime = conf.max_lifetime

    def set_proxy_ip(self, ip):
	self.proxy_ip=str(ip)
	self.proxy_addr=self.proxy_ip + ":" + self.proxy_port

    def get_vm_lifetime(self):
	lifetime = self.lifetime

	if self.random_lifetime == "True":
	    lifetime = random.randint(self.min_lifetime, self.max_lifetime)

	return lifetime

    def get_instance_parameter(self, name):
	files={}
	files['/etc/rc.local'] = self.vm_rc
	files['/home/ProvisionVM.py']=self.vm_prov

	parram_args={}
	parram_args['name']=name
	parram_args['files']=files
	parram_args['image_ids']=self.image_ids
	parram_args['net_ids']=self.instance_net_ids
	#parram_args['meta']=self.meta_list
	parram_args['meta']={}
	parram_args['meta']['hostname']=name
	parram_args['meta']['proxy_addr']=self.proxy_addr
	parram_args['meta']['req_time']=str(time.time())

	parram_args['flavor_ids']=self.flavor_ids
	parram_args['volume_ids']=self.volume_ids
	parram_args['boot_type']=self.boot_type
	return parram_args, self.get_vm_lifetime()

    def get_proxy_parameter(self, name):
	files={}
	files['/etc/rc.local'] = self.proxy_rc

	files['/home/ProvisionProxy.py.tar.gz'] = self.proxy_prov
	parram_args={}
	parram_args['name']=name
	parram_args['files']=files
	parram_args['image_ids']=self.image_ids
	parram_args['net_ids']=self.proxy_net_ids
	#parram_args['meta']=self.meta_list
	parram_args['meta']={}
	parram_args['meta']['host_addr']=self.host_addr
	parram_args['meta']['proxy_port']='8821'
	parram_args['meta']['report_online']='True'
	parram_args['meta']['key']=str(time.time())
	print parram_args['meta']['key']
	
	parram_args['flavor_ids']=self.flavor_ids
	parram_args['volume_ids']=self.volume_ids
	parram_args['boot_type']=self.boot_type
	return parram_args

    def create(self, name, image, flavor, meta=None, files=None,
               reservation_id=None, min_count=None,
               max_count=None, security_groups=None, userdata=None,
               key_name=None, availability_zone=None,
               block_device_mapping=None, block_device_mapping_v2=None,
               nics=None, scheduler_hints=None,
               config_drive=None, disk_config=None, **kwargs):
    	pass