lib/publiccloud/provider.pm

METHODS

generate_basename

Call: $self->generate_basename();

openqa test product name composition, based on basic product parameters values and eventual modifiers.

Returns a string-name containing distri, version, flavor, arch.

conv_openqa_tf_name

Does the conversion between PUBLIC_CLOUD_PROVIDER and Terraform providers name.

find_img

Retrieves the image-id by given image name.

upload_img

Upload a image to the CSP. Required parameter is the location of the image file. UEFI images are supported by giving the optional parameter type = 'uefi'. This is only supported on GCE at the momment.

Retrieves the image-id after upload or die.

img_proof

img_proof(instance_type => <string>, cleanup => <bool>, tests => <string>, timeout => <seconds>, results_dir => <string>, distro => <string>);

Call img-proof tool and retrieves a hashref as result. Do not die if img-proof call exit with error. $result_hash = { instance => <publiccloud:instance>, # instance object logfile => <string>, # the pytest logfile results => <string>, # json results file tests => <int>, # total number of tests pass => <int>, # successful tests skip => <int>, # skipped tests fail => <int>, # number of failed tests error => <int>, # number of errors };

parse_img_proof_output

Parse the output from img-proof command and retrieves instance-id, ip and logfile names.

create_ssh_key

Creates an ssh keypair in a given file path by $args{ssh_private_key_file}

place_ssh_config

Creates ~/.ssh/config file with all the common ssh client settings

run_img_proof

called by childs within img-proof function

get_image_id

get_image_id([$img_url]);

Retrieves the CSP image id if exists, otherwise exception is thrown. The given $img_url is optional, if not present it retrieves from PUBLIC_CLOUD_IMAGE_LOCATION. If PUBLIC_CLOUD_IMAGE_ID is set, then this value will be used

get_image_uri

Retrieves the CSP image uri if exists, otherwise exception is thrown. This is currently used specifically in Azure so the subroutine will die afterwards.

create_instance

Creates an instance on the public cloud provider. Retrieves a publiccloud::instance object.

image defines the image_id to create the instance. instance_type defines the flavor of the instance. If not specified, it will load it from PUBLIC_CLOUD_INSTANCE_TYPE.

create_instances

Creates multiple instances on the public cloud provider. Retrieves an array of publiccloud::instance objects.

image defines the image_id to create the instance. instance_type defines the flavor of the instance. If not specified, it will load it from PUBLIC_CLOUD_INSTANCE_TYPE. timeout Parameter to pass to instance::wait_for_ssh. proceed_on_failure Same as timeout.

on_terraform_apply_timeout

This method can be overwritten by child classes to do some special cleanup task if 'apply' fails. Terraform was already terminated using the QUIT signal and openqa has a valid shell. The working directory is always the terraform directory, where the statefile and the *.tf is placed.

on_terraform_destroy_failure

This method can be overwritten by child classes to do some special cleanup task if 'destroy' fails (including timeout). The working directory is always the terraform directory, where the statefile and the *.tf is placed. Returns 1 if the fallback cleanup succeeded (caller should not die), or a false value if it did not (caller should die).

terraform_prepare_env

This method is used to initialize the terraform environment. it is executed only once, guareded by `terraform_env_prepared` member.

terraform_apply

Calls terraform tool and applies the corresponding configuration .tf file

terraform_destroy

Destroys the current terraform deployment

terraform_param_tags

Build the tags parameter for terraform. It is a single depth json like c<{"key": "value"}> where c<value> must be a string.

get_terraform_output

Query the terraform data structure in json format. Input: <jq-query-format> string; <empty> = no query then full output of data structure. E.g: to get the VM instance name from json data structure, the call is: get_terraform_output(".vm_name.value[0]"); To get the complete output structure, the call is: get_terraform_output();

teardown

This method is calling the terraform_destroy() subroutine.

stop_instance

This function implements a provider specifc stop call for a given instance.

start_instance

This function implements a provider specifc start call for a given instance.

get_state_from_instance

This function implements a provider specifc get_state call for a given instance.