diff --git a/data/publiccloud/terraform/azure.tf b/data/publiccloud/terraform/azure.tf index 81bbff42be49..54c0ad186f9a 100644 --- a/data/publiccloud/terraform/azure.tf +++ b/data/publiccloud/terraform/azure.tf @@ -241,3 +241,12 @@ data "azurerm_public_ip" "openqa-publicip" { output "public_ip" { value = data.azurerm_public_ip.openqa-publicip.*.ip_address } + +output "instance_id" { + value = azurerm_linux_virtual_machine.openqa-vm.*.id +} + +output "resource_group_name" { + value = azurerm_resource_group.openqa-group.*.name +} + diff --git a/data/publiccloud/terraform/azure_cloud-netconfig.tf b/data/publiccloud/terraform/azure_cloud-netconfig.tf index 7374c7d68fa9..093dd21b5b20 100644 --- a/data/publiccloud/terraform/azure_cloud-netconfig.tf +++ b/data/publiccloud/terraform/azure_cloud-netconfig.tf @@ -247,3 +247,12 @@ data "azurerm_public_ip" "openqa-secondary-publicip" { output "secondary_public_ip" { value = data.azurerm_public_ip.openqa-secondary-publicip.*.ip_address } + +output "instance_id" { + value = azurerm_linux_virtual_machine.openqa-vm.*.id +} + +output "resource_group_name" { + value = azurerm_resource_group.openqa-group.*.name +} + diff --git a/data/publiccloud/terraform/azure_nfstest.tf b/data/publiccloud/terraform/azure_nfstest.tf index 27477a981694..51293c7b7cb4 100644 --- a/data/publiccloud/terraform/azure_nfstest.tf +++ b/data/publiccloud/terraform/azure_nfstest.tf @@ -235,3 +235,12 @@ output "public_ip" { output "resource_id" { value = element(random_id.service.*.hex, 0) } + +output "instance_id" { + value = azurerm_linux_virtual_machine.openqa-vm.*.id +} + +output "resource_group_name" { + value = azurerm_resource_group.openqa-group.*.name +} + diff --git a/lib/publiccloud/azure.pm b/lib/publiccloud/azure.pm index e98ef463a29b..28c4ddbcc141 100644 --- a/lib/publiccloud/azure.pm +++ b/lib/publiccloud/azure.pm @@ -11,7 +11,6 @@ package publiccloud::azure; use Mojo::Base 'publiccloud::provider'; use Mojo::JSON qw(decode_json encode_json); use Term::ANSIColor 2.01 'colorstrip'; -use Data::Dumper; use testapi qw(is_serial_terminal :DEFAULT); use mmapi 'get_current_job_id'; use utils qw(script_output_retry); @@ -633,13 +632,23 @@ This method is called called after each test on failure or success to revoke the sub cleanup { my ($self, $args) = @_; + + script_run('cd ' . get_var('PUBLIC_CLOUD_TERRAFORM_DIR', '~/terraform')); + #my $terraform_output = script_output('terraform output -json', proceed_on_failure => 1); + #my $terraform_output_json = decode_json($terraform_output); + #my $instance_id = $terraform_output_json->{instance_id}->{value}[0]; + my $instance_id = $self->get_terraform_output('.instance_id.value[0]'); + $instance_id =~ s/.*\/(.*)/$1/; + #my $resource_group = $terraform_output_json->{resource_group_name}->{value}[0]; + my $resource_group = $self->get_terraform_output('.resource_group_name.value[0]'); + script_run('cd'); + select_host_console(force => 1); $self->get_image_version() if (get_var('PUBLIC_CLOUD_BUILD')); - if (!check_var('PUBLIC_CLOUD_SLES4SAP', 1) && defined($args->{my_instance}->{instance_id})) { - my $id = $args->{my_instance}->{instance_id}; - script_run("timeout 110 az vm boot-diagnostics get-boot-log --ids $id | jq -r '.' > bootlog.txt", timeout => 120); + if (!check_var('PUBLIC_CLOUD_SLES4SAP', 1) && defined($instance_id) && defined($resource_group)) { + script_run("timeout 110 az vm boot-diagnostics get-boot-log --name $instance_id --resource-group $resource_group | jq -r '.' > bootlog.txt", timeout => 120); upload_logs("bootlog.txt", failok => 1); } $self->SUPER::cleanup(); diff --git a/lib/publiccloud/ec2.pm b/lib/publiccloud/ec2.pm index 02c0173e17de..9d85232a3dc1 100644 --- a/lib/publiccloud/ec2.pm +++ b/lib/publiccloud/ec2.pm @@ -210,13 +210,16 @@ sub img_proof { sub cleanup { my ($self, $args) = @_; - script_run('cd ~/terraform'); - my $instance_id = script_output('terraform output -json | jq -r ".vm_name.value[0]"', proceed_on_failure => 1); - script_run('cd'); select_host_console(force => 1); + + script_run('cd ' . get_var('PUBLIC_CLOUD_TERRAFORM_DIR', '~/terraform')); + #my $instance_id = script_output('terraform output -json | jq -r ".vm_name.value[0]"', proceed_on_failure => 1); + my $instance_id = $self->get_terraform_output('.vm_name.value[]'); + script_run('cd'); + if (!check_var('PUBLIC_CLOUD_SLES4SAP', 1) && defined($instance_id)) { - script_run("aws ec2 get-console-output --instance-id $instance_id | jq -r '.Output' > console.txt"); + script_run("aws ec2 get-console-output --latest --color=on --no-paginate --output text --instance-id $instance_id &> console.txt"); upload_logs("console.txt", failok => 1); script_run("aws ec2 get-console-screenshot --instance-id $instance_id | jq -r '.ImageData' | base64 --decode > console.jpg"); diff --git a/tests/publiccloud/ssh_interactive_end.pm b/tests/publiccloud/ssh_interactive_end.pm index d2a206f4bde2..1b5c73359f79 100644 --- a/tests/publiccloud/ssh_interactive_end.pm +++ b/tests/publiccloud/ssh_interactive_end.pm @@ -16,7 +16,6 @@ use utils; sub run { my ($self, $args) = @_; select_host_console(force => 1); - $args->{my_provider}->cleanup($args) unless check_var('PUBLIC_CLOUD_SLES4SAP', 1); } 1;