Example #1
0
    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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
    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)
Example #8
0
    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)
Example #9
0
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)