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