Skip to content

Commit

Permalink
Simplify publiccloud/cloud_netconfig test
Browse files Browse the repository at this point in the history
  • Loading branch information
pdostal committed Aug 9, 2024
1 parent b955beb commit aff55f1
Showing 1 changed file with 14 additions and 46 deletions.
60 changes: 14 additions & 46 deletions tests/publiccloud/cloud_netconfig.pm
Original file line number Diff line number Diff line change
Expand Up @@ -19,70 +19,38 @@ use publiccloud::utils qw(is_azure is_ec2 is_gce);
sub run {
my ($self, $args) = @_;
my $instance = $args->{my_instance};
my $os_version = get_var('VERSION');
my $pers_net_rules = '/etc/udev/rules.d/75-persistent-net-generator.rules';

# Cloud metadata service API is reachable at local destination
# 169.254.169.254 in case of all public cloud providers.
my $pc_meta_api_ip = '169.254.169.254';

my $cloud_netconfig_svc_status = $instance->ssh_script_run(
cmd => 'systemctl status cloud-netconfig.service');
if ($cloud_netconfig_svc_status == 0 || $cloud_netconfig_svc_status == 3)
{
record_info('Success', 'Status of cloud-netconfig.service is OK.');
}
else {
die('cloud-netconfig.service status appears to be incorrect!');
}
$instance->ssh_assert_script_run('systemctl is-enabled cloud-netconfig.service');

$instance->ssh_assert_script_run(
cmd => 'systemctl status cloud-netconfig.timer',
fail_message => 'cloud-netconfig.timer appears not to be started.'
);
$instance->ssh_assert_script_run('systemctl status cloud-netconfig.timer');

# 75-persistent-net-generator.rules is usually a symlink to /dev/null in SLES 12+
$instance->ssh_assert_script_run(
cmd => "test -L $pers_net_rules",
fail_message => "File \"$pers_net_rules\" should be a symlink to "
. "\"/dev/null\" in SLES 12+."
);
$instance->ssh_assert_script_run("test -L $pers_net_rules");

my $grep_cloudvm_ipv4_cmd =
'ip -4 addr show eth0 | grep -oP "^\s+inet\s(\d+\.){3}\d+" | '
. 'sed "s/ *inet //g"';
my $local_eth0_ip =
$instance->ssh_script_output(cmd => $grep_cloudvm_ipv4_cmd);
my $local_eth0_ip = $instance->ssh_script_output(qq(ip -4 -o a s eth0 | grep -Po "inet \\K[\\d.]+"));
chomp($local_eth0_ip);

my $query_meta_ipv4_cmd = "";
if (is_azure()) {
$query_meta_ipv4_cmd =
'curl -H Metadata:true '
. "\"http://$pc_meta_api_ip/metadata/instance/network/interface/0/"
. 'ipv4/ipAddress/0/privateIpAddress?api-version=2023-07-01'
. '&format=text"';
}
elsif (is_ec2()) {
my $access_token = $instance->ssh_script_output(cmd => "curl -X PUT http://$pc_meta_api_ip/latest/api/token -H \"X-aws-ec2-metadata-token-ttl-seconds: 60\"");
$query_meta_ipv4_cmd = qq(curl -H Metadata:true "http://$pc_meta_api_ip/metadata/instance/network/interface/0/ipv4/ipAddress/0/privateIpAddress?api-version=2023-07-01&format=text");
} elsif (is_ec2()) {
my $access_token = $instance->ssh_script_output(qq(curl -X PUT http://$pc_meta_api_ip/latest/api/token -H "X-aws-ec2-metadata-token-ttl-seconds: 60"));
record_info("DEBUG", $access_token);
$query_meta_ipv4_cmd =
"curl -H \"X-aws-ec2-metadata-token: $access_token\" \"http://$pc_meta_api_ip/latest/meta-data/local-ipv4\"";
}
elsif (is_gce()) {
$query_meta_ipv4_cmd =
'curl -H "Metadata-Flavor: Google" '
. "\"http://$pc_meta_api_ip/computeMetadata/v1/instance/"
. 'network-interfaces/0/ip"';
$query_meta_ipv4_cmd = qq(curl -H "X-aws-ec2-metadata-token: $access_token" "http://$pc_meta_api_ip/latest/meta-data/local-ipv4");
} elsif (is_gce()) {
$query_meta_ipv4_cmd = qq(curl -H "Metadata-Flavor: Google" "http://$pc_meta_api_ip/computeMetadata/v1/instance/network-interfaces/0/ip");
} else {
die("Unsupported public cloud provider.");
die("Unsupported public cloud provider");
}
my $metadata_eth0_ip =
$instance->ssh_script_output(cmd => $query_meta_ipv4_cmd);
my $metadata_eth0_ip = $instance->ssh_script_output($query_meta_ipv4_cmd);
die("Failed to get IP from metadata server") unless length($metadata_eth0_ip);
assert_equals($metadata_eth0_ip, $local_eth0_ip,
'Locally assigned IP does not equal the IP retrieved from CSP '
. ' metadata service.');
assert_equals($metadata_eth0_ip, $local_eth0_ip, 'Locally assigned IP does not equal the IP retrieved from CSP metadata service.');
}

1;

0 comments on commit aff55f1

Please sign in to comment.