def setUpClass(cls): block = [{"volume_id": "sample_id", "delete_on_termination": "0", "device_name": "vda"}] server_request_object = CreateServer( name='cctestserver', flavor_ref='2', image_ref='sample-image-ref', block_device_mapping=block) cls.server_request_json = server_request_object.serialize('json')
def setUpClass(cls): block = [{ "volume_id": "sample_id", "delete_on_termination": "0", "device_name": "vda" }] server_request_object = CreateServer(name='cctestserver', flavor_ref='2', image_ref='sample-image-ref', block_device_mapping=block) cls.server_request_json = server_request_object.serialize('json')
def _obj_to_json(self): server = CreateServer(name=self.name, imageRef=self.image_ref, flavorRef=self.flavor_ref, personality=self.personality, metadata=self.metadata, diskConfig=self.disk_config, networks=self.networks) server_json = server._obj_to_json() body = {'type': 'launch_server', 'args': json.loads(server_json)} if self.load_balancers: body['args']['loadBalancers'] = self.load_balancers #if self.disk_config: # del body['args']['server']['diskConfig'] return json.dumps(body)
def _obj_to_json(self): server = CreateServer(name=self.name, imageRef=self.image_ref, flavorRef=self.flavor_ref, personality=self.personality, metadata=self.metadata, diskConfig=self.disk_config, networks=self.networks) server_json = server._obj_to_json() body = {'type': 'launch_server', 'args': json.loads(server_json)} if self.load_balancers: body['args']['loadBalancers'] = self.load_balancers #if self.disk_config: # del body['args']['server']['diskConfig'] return json.dumps(body)
def setUpClass(cls): block = [{"volume_id": "sample_id", "delete_on_termination": "0", "device_name": "vda"}] server_request_object = CreateServer( name='cctestserver', flavor_ref='2', image_ref='sample-image-ref', block_device_mapping=block) cls.server_request = server_request_object.serialize('xml') root = ET.fromstring(cls.server_request) cls.server_request_xml = root.attrib cls.server_request_xml_child = root.getchildren()
def _obj_to_json(self): kwargs = { "name": self.name, "imageRef": self.image_ref, "flavorRef": self.flavor_ref, "personality": self.personality, "metadata": self.metadata, "diskConfig": self.disk_config, "networks": self.networks } server_json = CreateServer(**kwargs)._obj_to_json() server_json = json.loads(server_json) # allow null args specifically - cloudcafe removes any that are None for k, v in kwargs.iteritems(): if v is null: server_json['server'][k] = None # TODO: pass this in kwargs once Cloudcafe is updated so that # CreateServer takes a block_device_mapping kwarg if self.block_device_mapping: server_json['server'][ 'block_device_mapping'] = self.block_device_mapping body = {'type': 'launch_server', 'args': server_json} if self.load_balancers: body['args']['loadBalancers'] = self.load_balancers return json.dumps(body)
def setUpClass(cls): block = [{ "volume_id": "sample_id", "delete_on_termination": "0", "device_name": "vda" }] server_request_object = CreateServer(name='cctestserver', flavor_ref='2', image_ref='sample-image-ref', block_device_mapping=block) cls.server_request = server_request_object.serialize('xml') root = ET.fromstring(cls.server_request) cls.server_request_xml = root.attrib cls.server_request_xml_child = root.getchildren()
def create_server(self, name, image_ref, flavor_ref, personality=None, metadata=None, accessIPv4=None, accessIPv6=None, disk_config=None, networks=None, admin_pass=None, key_name=None, requestslib_kwargs=None): """ @summary: Creates an instance of a server given the provided parameters @param name: Name of the server @type name: String @param image_ref: Identifier for the image used to build the server @type image_ref: String @param flavor_ref: Identifier for the flavor used to build the server @type flavor_ref: String @param metadata: A dictionary of values to be used as server metadata @type meta: Dictionary @param personality: A list of dictionaries for files to be injected into the server. @type personality: List @param accessIPv4: IPv4 address for the server. @type accessIPv4: String @param accessIPv6: IPv6 address for the server. @type accessIPv6: String @param disk_config: MANUAL/AUTO/None @type disk_config: String @return: Response Object containing response code and the server domain object @rtype: Requests.response """ server_request_object = CreateServer(name=name, flavorRef=flavor_ref, imageRef=image_ref, personality=personality, metadata=metadata, accessIPv4=accessIPv4, accessIPv6=accessIPv6, diskConfig=disk_config, networks=networks, adminPass=admin_pass, key_name=key_name) url = '{base_url}/servers'.format(base_url=self.url) resp = self.request('POST', url, response_entity_type=Server, request_entity=server_request_object, requestslib_kwargs=requestslib_kwargs) return resp
def create_server(self, name, image_ref, flavor_ref, personality=None, user_data=None, metadata=None, accessIPv4=None, accessIPv6=None, disk_config=None, networks=None, admin_pass=None, key_name=None, config_drive=None, scheduler_hints=None, requestslib_kwargs=None, block_device_mapping=None): """ @summary: Creates an instance of a server given the provided parameters @param name: Name of the server @type name: String @param image_ref: Identifier for the image used to build the server @type image_ref: String @param flavor_ref: Identifier for the flavor used to build the server @type flavor_ref: String @param metadata: A dictionary of values to be used as server metadata @type meta: Dictionary @param personality: A list of dictionaries for files to be injected into the server. @type personality: List @param block_device_mapping: A list of dictionaries needed for boot from volume feature @type block_device_mapping: List @param user_data: Config Init User data @type user_data: String @param accessIPv4: IPv4 address for the server. @type accessIPv4: String @param accessIPv6: IPv6 address for the server. @type accessIPv6: String @param disk_config: MANUAL/AUTO/None @type disk_config: String @param config_drive: false/true @type config_drive: String @return: Response Object containing response code and the server domain object @rtype: Requests.response """ default_files = self.config.default_injected_files # Encode the file contents for personality_file in default_files: personality_file['contents'] = base64.b64encode( personality_file['contents']) if personality is None: personality = default_files else: personality += default_files server_request_object = CreateServer( name=name, flavor_ref=flavor_ref, image_ref=image_ref, personality=personality, block_device_mapping=block_device_mapping, user_data=user_data, metadata=metadata, accessIPv4=accessIPv4, accessIPv6=accessIPv6, disk_config=disk_config, networks=networks, admin_pass=admin_pass, key_name=key_name, config_drive=config_drive, scheduler_hints=scheduler_hints) url = '{base_url}/servers'.format(base_url=self.url) resp = self.request('POST', url, response_entity_type=Server, request_entity=server_request_object, requestslib_kwargs=requestslib_kwargs) return resp