Skip to content

Commit

Permalink
Add network peering to IBSm in sles4sap publiccloud (#17305)
Browse files Browse the repository at this point in the history
* Add network peering to IBSm in sles4sap publiccloud

Add creation and delete of network peering for AWS tests modules used in
mr_test and HanaSR.
Change AWS config.yaml templates to be usable with catalog images.
Change Terraform variable used in the AWS config.yaml to select the VM
type.

* Fix for required variables in network_peering
  • Loading branch information
mpagot authored Jun 28, 2023
1 parent 4d75b78 commit 58b16ca
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 35 deletions.
38 changes: 19 additions & 19 deletions data/sles4sap/qe_sap_deployment/sles4sap_aws_generic.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,30 +12,30 @@ apiver: 3
terraform:
variables:
# GENERAL VARIABLES #
aws_region: "%PUBLIC_CLOUD_REGION%"
aws_credentials: "/root/amazon_credentials"
admin_user: "cloudadmin"
deployment_name: "%QESAP_DEPLOYMENT_NAME%"
public_key: "~/.ssh/id_rsa.pub"
private_key: "~/.ssh/id_rsa"
os_image: "%SLE_IMAGE%"
os_owner: "self"
hana_os_major_version: "%HANA_OS_MAJOR_VERSION%"
aws_region: '%PUBLIC_CLOUD_REGION%'
aws_credentials: '/root/amazon_credentials'
admin_user: 'cloudadmin'
deployment_name: '%QESAP_DEPLOYMENT_NAME%'
public_key: '~/.ssh/id_rsa.pub'
private_key: '~/.ssh/id_rsa'
os_image: '%SLE_IMAGE%'
os_owner: '%SLE_IMAGE_OWNER%'
hana_os_major_version: '%HANA_OS_MAJOR_VERSION%'

# HANA
hana_count: "%NODE_COUNT%"
hana_ha_enabled: "%HA_CLUSTER%"
hana_instancetype: "%PUBLIC_CLOUD_INSTANCE_TYPE%"
hana_cluster_fencing_mechanism: "%FENCING_MECHANISM%"
hana_count: '%NODE_COUNT%'
hana_ha_enabled: '%HA_CLUSTER%'
hana_instancetype: '%PUBLIC_CLOUD_INSTANCE_TYPE%'
hana_cluster_fencing_mechanism: '%FENCING_MECHANISM%'

ansible:
az_storage_account_name: "%HANA_ACCOUNT%"
az_container_name: "%HANA_CONTAINER%"
az_sas_token: "%HANA_TOKEN%"
az_storage_account_name: '%HANA_ACCOUNT%'
az_container_name: '%HANA_CONTAINER%'
az_sas_token: '%HANA_TOKEN%'
hana_media:
- "%HANA_SAR%"
- "%HANA_CLIENT_SAR%"
- "%HANA_SAPCAR%"
- '%HANA_SAR%'
- '%HANA_CLIENT_SAR%'
- '%HANA_SAPCAR%'
destroy:
- deregister.yaml

6 changes: 3 additions & 3 deletions data/sles4sap/qe_sap_deployment/sles4sap_azure_generic.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ terraform:
hana_cluster_fencing_mechanism: '%FENCING_MECHANISM%'

ansible:
az_storage_account_name: "%HANA_ACCOUNT%"
az_container_name: "%HANA_CONTAINER%"
az_sas_token: "%HANA_TOKEN%"
az_storage_account_name: '%HANA_ACCOUNT%'
az_container_name: '%HANA_CONTAINER%'
az_sas_token: '%HANA_TOKEN%'
hana_media:
- '%HANA_SAR%'
- '%HANA_CLIENT_SAR%'
Expand Down
22 changes: 14 additions & 8 deletions lib/sles4sap_publiccloud_basetest.pm
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,22 @@ sub cleanup {
# Skip cleanup if ansible inventory is not present (deployment could not have been done without it)
next if (script_run 'test -f ' . qesap_get_inventory(get_required_var('PUBLIC_CLOUD_PROVIDER')));

if (is_azure && check_var('IS_MAINTENANCE', 1)) {
if (check_var('IS_MAINTENANCE', 1)) {
record_info('Cleanup', `Executing peering cleanup (if peering is present)`);
my $rg = qesap_az_get_resource_group();
my $ibsm_rg = get_required_var('IBSM_RG');
# Check that required vars are available befor delleting the peering
if (defined $rg && $rg ne '' && defined $ibsm_rg && $ibsm_rg ne '') {
qesap_az_vnet_peering_delete(source_group => $rg, target_group => $ibsm_rg);
if (is_azure) {
my $rg = qesap_az_get_resource_group();
my $ibsm_rg = get_required_var('IBSM_RG');
# Check that required vars are available befor delleting the peering
if (defined $rg && $rg ne '' && defined $ibsm_rg && $ibsm_rg ne '') {
qesap_az_vnet_peering_delete(source_group => $rg, target_group => $ibsm_rg);
}
else {
record_info('No peering', 'No peering exists, peering destruction skipped');
}
}
else {
record_info('No peering', 'No peering exists, peering destruction skipped');
elsif (is_ec2) {
my $deployment_name = qesap_calculate_deployment_name();
qesap_aws_delete_transit_gateway_vpc_attachment(name => $deployment_name . '*');
}
}

Expand Down
23 changes: 18 additions & 5 deletions tests/sles4sap/publiccloud/network_peering.pm
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,22 @@ use mmapi 'get_current_job_id';
use Mojo::Base 'publiccloud::basetest';
use testapi;
use qesapdeployment;
use publiccloud::utils qw(is_azure is_ec2);

sub run {
my ($self, $run_args) = @_;
my $instance = $run_args->{my_instance};
record_info("$instance");
my $rg = qesap_az_get_resource_group();
my $ibs_mirror_resource_group = get_required_var('IBSM_RG');
qesap_az_vnet_peering(source_group => $rg, target_group => $ibs_mirror_resource_group);
if (is_azure) {
my $rg = qesap_az_get_resource_group();
qesap_az_vnet_peering(source_group => $rg, target_group => $ibs_mirror_resource_group);
} elsif (is_ec2) {
my $deployment_name = qesap_calculate_deployment_name(get_var('PUBLIC_CLOUD_RESOURCE_GROUP', 'qesaposd'));
my $vpc_id = qesap_aws_get_vpc_id(resource_group => $deployment_name . '*');
my $ibs_mirror_target_ip = get_required_var('IBSM_IPRANGE'); # '10.254.254.240/28'
die 'Error in network peering setup.' if !qesap_aws_vnet_peering(target_ip => $ibs_mirror_target_ip, vpc_id => $vpc_id);
}
}

sub test_flags {
Expand All @@ -28,9 +36,14 @@ sub post_fail_hook {
my ($self) = shift;
qesap_upload_logs();

# destroy the network peering, if it was created
qesap_az_vnet_peering_delete(source_group => qesap_az_get_resource_group(),
target_group => get_required_var('IBSM_RG'));
if (is_azure) {
# destroy the network peering, if it was created
qesap_az_vnet_peering_delete(source_group => qesap_az_get_resource_group(),
target_group => get_required_var('IBSM_RG'));
} elsif (is_ec2) {
my $deployment_name = qesap_calculate_deployment_name();
qesap_aws_delete_transit_gateway_vpc_attachment(name => $deployment_name . '*');
}

my $inventory = qesap_get_inventory(get_required_var('PUBLIC_CLOUD_PROVIDER'));
qesap_execute(cmd => 'ansible', cmd_options => '-d', verbose => 1, timeout => 300) unless (script_run("test -e $inventory"));
Expand Down

0 comments on commit 58b16ca

Please sign in to comment.