def a_created_product_with_name(self, step, product_name, metadatas=None): """ Creates new product in SDC if not exists, using default values. - Product parameters: * Metadata: Default values if metadatas is None * Attributes: if exist in world.attributes - list - Assertions: * Product response is OK :param step: Lettuce step :param product_name: The name of the product :param metadatas: Metadata list to be used in the new product :return: None """ response = self.api_utils.retrieve_product(headers=world.headers, product_id=product_name) if response.ok: print "WARNING: Product %s already exists. It will not be created." % product_name else: metadata_list = DEFAULT_METADATA[METADATA] if metadatas is None else metadatas if world.attributes is None: body_model = default_product(name=product_name, metadata=metadata_list) else: body_model = product_with_all_parameters(name=product_name, description='QA Test', metadata=metadata_list, attributes=world.attributes) body = body_model_to_body_request(body_model, world.headers[CONTENT_TYPE], body_model_root_element=PRODUCT) response = self.api_utils.add_new_product(headers=world.headers, body=body) assert_true(response.ok, response.content)
def install_software(step, software_name, version): model_install_request = install_simple_model(version, world.group, software_name) body_request = body_model_to_body_request(model_install_request, world.content_type) # tmp_dict = {SOFTWARE_NAME: software_name, VERSION: version, GROUP: world.group} world.response = api_utils.install(world.node_name, body_request, headers=world.headers) # Save software installation structure and node name to be checked world.software_to_generate.append(software_to_install_response_model(software_name, version)) if world.node_name not in world.configured_node_list: world.configured_node_list.append(world.node_name)
def i_update_the_metadata_of_the_product(step, metadata_key, product_name): world.metadata_key_request = metadata_key world.metadata_to_be_updated = dict() assert_true(len(step.hashes) == 1, "Only one metadata is accepted in the dataset for this test case") dataset = dataset_utils.prepare_data(step.hashes[0]) world.metadata_to_be_updated = {METADATA: dict(dataset)} body_request = body_model_to_body_request(body_model=world.metadata_to_be_updated, content_type=world.headers[CONTENT_TYPE], body_model_root_element=METADATA) world.response = api_utils.update_product_metadata(body=body_request, headers=world.headers, product_id=product_name, metadata_key=metadata_key)
def install_software(step, software_name, version): model_install_request = install_simple_model(version, world.group, software_name) body_request = body_model_to_body_request(model_install_request, world.content_type) # tmp_dict = {SOFTWARE_NAME: software_name, VERSION: version, GROUP: world.group} world.response = api_utils.install(world.node_name, body_request, headers=world.headers) # Save software installation structure and node name to be checked world.software_to_generate.append( software_to_install_response_model(software_name, version)) if world.node_name not in world.configured_node_list: world.configured_node_list.append(world.node_name)
def uninstall_software(step, software_name, version): model_install_request = install_simple_model(version, world.group, software_name) body_request = body_model_to_body_request(model_install_request, world.content_type) world.response = api_utils.uninstall(world.node_name, body_request, headers=world.headers) if len(world.software_to_generate) == 0: # Save software installation structure and node name to be checked world.software_to_generate.append(software_to_uninstall_response_model(software_name, version)) else: # Update software operation for validations for software in world.software_to_generate: if software[OP_SOFTWARE_NAME] == software_name and software[VERSION] == version: software[ACTION] = UNINSTALL #software[INSTALL_ATTRIBUTES] = None #TODO: CLAUDIA-4366. To comment out when fixed if world.node_name not in world.configured_node_list: world.configured_node_list.append(world.node_name)
def i_update_the_metadata_of_the_product(step, metadata_key, product_name): world.metadata_key_request = metadata_key world.metadata_to_be_updated = dict() assert_true( len(step.hashes) == 1, "Only one metadata is accepted in the dataset for this test case") dataset = dataset_utils.prepare_data(step.hashes[0]) world.metadata_to_be_updated = {METADATA: dict(dataset)} body_request = body_model_to_body_request( body_model=world.metadata_to_be_updated, content_type=world.headers[CONTENT_TYPE], body_model_root_element=METADATA) world.response = api_utils.update_product_metadata( body=body_request, headers=world.headers, product_id=product_name, metadata_key=metadata_key)
def i_install_the_product_in_the_vm(self, step): """ Install a product in a virtual machine. :param step: Lettuce step data :return: The response is set into world.response """ if world.instance_attributes is None: body_model = simple_installation_body(product_name=world.product_name, product_version=world.product_version, hostname=world.vm_hostname, ip=world.vm_ip, fqn=world.vm_fqn, ostype=world.vm_ostype) else: body_model = installation_body_with_attributes(product_name=world.product_name, product_version=world.product_version, hostname=world.vm_hostname, ip=world.vm_ip, fqn=world.vm_fqn, ostype=world.vm_ostype, attributes=world.instance_attributes) body = body_model_to_body_request(body_model, world.headers[CONTENT_TYPE], body_model_root_element=PRODUCT_INSTANCE) world.response = self.api_utils.install_product(headers=world.headers, vdc_id=world.tenant_id, body=body)
def a_created_release(self, step, product_name, product_version): """ Creates new release for the product if not exists, using default values. - Assertions: * Release response is OK :param step: Lettuce step :param product_name: The name of the product :param product_version: The version for the product release :return: None """ response = self.api_utils.retrieve_product_release_information(headers=world.headers, product_id=product_name, version=product_version) if response.ok: print "WARNING: Version %s for the product %s already exists. It will not be created." % \ (product_version, product_name) else: body_model = create_product_release(version=product_version) body = body_model_to_body_request(body_model, world.headers[CONTENT_TYPE], body_model_root_element=PRODUCT_RELEASE) response = self.api_utils.add_product_release(headers=world.headers, body=body, product_id=product_name) assert_true(response.ok, response.content)
def uninstall_software(step, software_name, version): model_install_request = install_simple_model(version, world.group, software_name) body_request = body_model_to_body_request(model_install_request, world.content_type) world.response = api_utils.uninstall(world.node_name, body_request, headers=world.headers) if len(world.software_to_generate) == 0: # Save software installation structure and node name to be checked world.software_to_generate.append( software_to_uninstall_response_model(software_name, version)) else: # Update software operation for validations for software in world.software_to_generate: if software[OP_SOFTWARE_NAME] == software_name and software[ VERSION] == version: software[ACTION] = UNINSTALL #software[INSTALL_ATTRIBUTES] = None #TODO: CLAUDIA-4366. To comment out when fixed if world.node_name not in world.configured_node_list: world.configured_node_list.append(world.node_name)