def _get_system_volume(vm_): """ Construct VM system volume list from cloud profile config """ # Override system volume size if 'disk_size' is defined in cloud profile disk_size = get_size(vm_)["disk"] if "disk_size" in vm_: disk_size = vm_["disk_size"] # Construct the system volume volume = Volume( name="{} Storage".format(vm_["name"]), size=disk_size, disk_type=get_disk_type(vm_), ) if "image_password" in vm_: image_password = vm_["image_password"] volume.image_password = image_password # Retrieve list of SSH public keys ssh_keys = get_public_keys(vm_) volume.ssh_keys = ssh_keys if "image_alias" in vm_.keys(): volume.image_alias = vm_["image_alias"] else: volume.image = get_image(vm_)["id"] # Set volume availability zone if defined in the cloud profile if "disk_availability_zone" in vm_: volume.availability_zone = vm_["disk_availability_zone"] return volume
def _get_system_volume(vm_): ''' Construct VM system volume list from cloud profile config ''' # Override system volume size if 'disk_size' is defined in cloud profile disk_size = get_size(vm_)['disk'] if 'disk_size' in vm_: disk_size = vm_['disk_size'] # Construct the system volume volume = Volume( name='{0} Storage'.format(vm_['name']), size=disk_size, disk_type=get_disk_type(vm_) ) if 'image_password' in vm_: image_password = vm_['image_password'] volume.image_password = image_password # Retrieve list of SSH public keys ssh_keys = get_public_keys(vm_) volume.ssh_keys = ssh_keys if 'image_alias' in vm_.keys(): volume.image_alias = vm_['image_alias'] else: volume.image = get_image(vm_)['id'] # Set volume availability zone if defined in the cloud profile if 'disk_availability_zone' in vm_: volume.availability_zone = vm_['disk_availability_zone'] return volume
def _create_volume(module, profitbricks, datacenter, name): size = module.params.get('size') bus = module.params.get('bus') image = module.params.get('image') image_password = module.params.get('image_password') ssh_keys = module.params.get('ssh_keys') disk_type = module.params.get('disk_type') availability_zone = module.params.get('availability_zone') licence_type = module.params.get('licence_type') wait_timeout = module.params.get('wait_timeout') wait = module.params.get('wait') if module.check_mode: module.exit_json(changed=True) try: v = Volume( name=name, size=size, bus=bus, image_password=image_password, ssh_keys=ssh_keys, disk_type=disk_type, licence_type=licence_type, availability_zone=availability_zone ) try: UUID(image) except Exception: v.image_alias = image else: v.image = image volume_response = profitbricks.create_volume(datacenter, v) if wait: _wait_for_completion(profitbricks, volume_response, wait_timeout, "_create_volume") except Exception as e: module.fail_json(msg="failed to create the volume: %s" % to_native(e)) return volume_response
def _create_machine(module, profitbricks, datacenter, name): cores = module.params.get('cores') ram = module.params.get('ram') cpu_family = module.params.get('cpu_family') volume_size = module.params.get('volume_size') disk_type = module.params.get('disk_type') availability_zone = module.params.get('availability_zone') volume_availability_zone = module.params.get('volume_availability_zone') image_password = module.params.get('image_password') ssh_keys = module.params.get('ssh_keys') bus = module.params.get('bus') lan = module.params.get('lan') nat = module.params.get('nat') assign_public_ip = module.params.get('assign_public_ip') subscription_user = module.params.get('subscription_user') subscription_password = module.params.get('subscription_password') location = module.params.get('location') image = module.params.get('image') assign_public_ip = module.boolean(module.params.get('assign_public_ip')) wait = module.params.get('wait') wait_timeout = module.params.get('wait_timeout') if assign_public_ip: public_found = False lans = profitbricks.list_lans(datacenter) for lan in lans['items']: if lan['properties']['public']: public_found = True lan = lan['id'] if not public_found: i = LAN(name='public', public=True) lan_response = profitbricks.create_lan(datacenter, i) _wait_for_completion(profitbricks, lan_response, wait_timeout, "_create_machine") lan = lan_response['id'] v = Volume(name=str(uuid.uuid4()).replace('-', '')[:10], size=volume_size, image_password=image_password, ssh_keys=ssh_keys, disk_type=disk_type, availability_zone=volume_availability_zone, bus=bus) try: UUID(image) except: v.image_alias = image else: v.image = image n = NIC(name=str(uuid.uuid4()).replace('-', '')[:10], nat=nat, lan=int(lan)) s = Server( name=name, ram=ram, cores=cores, cpu_family=cpu_family, availability_zone=availability_zone, create_volumes=[v], nics=[n], ) try: create_server_response = profitbricks.create_server( datacenter_id=datacenter, server=s) _wait_for_completion(profitbricks, create_server_response, wait_timeout, "create_virtual_machine") server_response = profitbricks.get_server( datacenter_id=datacenter, server_id=create_server_response['id'], depth=3) except Exception as e: module.fail_json(msg="failed to create the new server: %s" % e.content) else: server_response['nic'] = server_response['entities']['nics']['items'][ 0] return server_response
def _create_machine(module, profitbricks, datacenter, name): cores = module.params.get('cores') ram = module.params.get('ram') cpu_family = module.params.get('cpu_family') volume_size = module.params.get('volume_size') disk_type = module.params.get('disk_type') availability_zone = module.params.get('availability_zone') volume_availability_zone = module.params.get('volume_availability_zone') image_password = module.params.get('image_password') ssh_keys = module.params.get('ssh_keys') bus = module.params.get('bus') lan = module.params.get('lan') nat = module.params.get('nat') image = module.params.get('image') assign_public_ip = module.boolean(module.params.get('assign_public_ip')) wait = module.params.get('wait') wait_timeout = module.params.get('wait_timeout') nics = [] if assign_public_ip: public_lan = _get_lan_by_id_or_properties( profitbricks.list_lans(datacenter)['items'], public=True) public_ip_lan_id = public_lan['id'] if public_lan is not None else None if public_ip_lan_id is None: i = LAN(name='public', public=True) lan_response = profitbricks.create_lan(datacenter, i) _wait_for_completion(profitbricks, lan_response, wait_timeout, "_create_machine") public_ip_lan_id = lan_response['id'] nics.append( NIC(name=str(uuid4()).replace('-', '')[:10], nat=nat, lan=int(public_ip_lan_id))) if lan is not None: matching_lan = _get_lan_by_id_or_properties( profitbricks.list_lans(datacenter)['items'], lan, name=lan) nics.append( NIC(name=str(uuid4()).replace('-', '')[:10], nat=nat, lan=int(matching_lan['id']))) v = Volume(name=str(uuid4()).replace('-', '')[:10], size=volume_size, image_password=image_password, ssh_keys=ssh_keys, disk_type=disk_type, availability_zone=volume_availability_zone, bus=bus) try: UUID(image) except Exception: v.image_alias = image else: v.image = image s = Server( name=name, ram=ram, cores=cores, cpu_family=cpu_family, availability_zone=availability_zone, create_volumes=[v], nics=nics, ) try: create_server_response = profitbricks.create_server( datacenter_id=datacenter, server=s) _wait_for_completion(profitbricks, create_server_response, wait_timeout, "create_virtual_machine") server_response = profitbricks.get_server( datacenter_id=datacenter, server_id=create_server_response['id'], depth=3) except Exception as e: module.fail_json(msg="failed to create the new server: %s" % to_native(e)) else: server_response['nic'] = server_response['entities']['nics']['items'][ 0] return server_response