From c705167da9e63f586d6fb1692e000b71256bf8b0 Mon Sep 17 00:00:00 2001 From: shimkus Date: Wed, 1 Mar 2023 22:22:21 +0000 Subject: [PATCH] Release commited to v10.3.0.0 tag --- .gitlab-ci.yml | 278 -- .gitmodules | 4 - Makefile | 35 - automated-test-scripts/Makefile | 19 - .../common/azure-bigiq-standalone-2.0.json | 605 --- .../common/azure-environment.json | 253 - .../common/bigiq_config.base64 | 1 - automated-test-scripts/common/bigiq_config.py | 328 -- .../common/bigiq_delete.yaml | 19 - .../common/bigiq_license_revoke.sh | 72 - automated-test-scripts/common/test_aws.ucs | Bin 133270 -> 0 bytes automated-test-scripts/common/test_azure.ucs | Bin 148639 -> 0 bytes .../common/verify_provisioned_modules.sh | 128 - .../1nic/existing-stack/bigiq/parameters.yaml | 0 .../1nic/existing-stack/payg/parameters.yaml | 0 .../bigiq/bigip_version_parameters.yaml | 68 - .../1nic/new-stack/bigiq/parameters.yaml | 72 - .../new-stack/bigiq/postpub_parameters.yaml | 72 - .../new-stack/bigiq/prepub_parameters.yaml | 72 - .../payg/bigip_version_parameters.yaml | 65 - .../1nic/new-stack/payg/parameters.yaml | 69 - .../new-stack/payg/postpub_parameters.yaml | 69 - .../new-stack/payg/prepub_parameters.yaml | 69 - .../existing-stack/bigiq-payg/parameters.yaml | 8 - .../1nic/existing-stack/bigiq/parameters.yaml | 0 .../1nic/existing-stack/payg/parameters.yaml | 0 .../bigiq/bigip_version_parameters.yaml | 64 - .../1nic/new-stack/bigiq/parameters.yaml | 68 - .../new-stack/bigiq/postpub_parameters.yaml | 68 - .../new-stack/bigiq/prepub_parameters.yaml | 67 - .../payg/bigip_version_parameters.yaml | 61 - .../1nic/new-stack/payg/parameters.yaml | 65 - .../new-stack/payg/postpub_parameters.yaml | 65 - .../new-stack/payg/prepub_parameters.yaml | 64 - .../1nic/existing-stack/bigiq/parameters.yaml | 0 .../1nic/existing-stack/payg/parameters.yaml | 0 .../bigiq/bigip_version_parameters.yaml | 66 - .../1nic/new-stack/bigiq/parameters.yaml | 71 - .../new-stack/bigiq/postpub_parameters.yaml | 71 - .../new-stack/bigiq/prepub_parameters.yaml | 70 - .../payg/bigip_version_parameters.yaml | 63 - .../1nic/new-stack/payg/parameters.yaml | 68 - .../new-stack/payg/postpub_parameters.yaml | 68 - .../new-stack/payg/prepub_parameters.yaml | 67 - .../existing-stack/bigiq-payg/parameters.yaml | 8 - .../1nic/existing-stack/bigiq/parameters.yaml | 0 .../1nic/existing-stack/payg/parameters.yaml | 0 .../bigiq/bigip_version_parameters.yaml | 63 - .../1nic/new-stack/bigiq/parameters.yaml | 68 - .../new-stack/bigiq/postpub_parameters.yaml | 68 - .../new-stack/bigiq/prepub_parameters.yaml | 67 - .../payg/bigip_version_parameters.yaml | 60 - .../1nic/new-stack/payg/parameters.yaml | 65 - .../new-stack/payg/postpub_parameters.yaml | 65 - .../new-stack/payg/prepub_parameters.yaml | 64 - .../byol/bigip_version_parameters.yaml | 45 - .../2nic/existing-stack/byol/parameters.yaml | 51 - .../byol/postpub_parameters.yaml | 51 - .../byol/prepub_parameters.yaml | 54 - .../2nic/new-stack/byol/parameters.yaml | 49 - .../byol/bigip_version_parameters.yaml | 47 - .../2nic/existing-stack/byol/parameters.yaml | 55 - .../byol/postpub_parameters.yaml | 55 - .../byol/prepub_parameters.yaml | 54 - .../existing-stack/bigiq/parameters.yaml | 0 .../n-nic/existing-stack/byol/parameters.yaml | 0 .../existing-stack/byol/parameters0.yaml | 0 .../n-nic/existing-stack/payg/parameters.yaml | 0 .../learning-stack/bigiq/parameters.yaml | 8 - .../n-nic/learning-stack/byol/parameters.yaml | 8 - .../n-nic/learning-stack/payg/parameters.yaml | 8 - .../bigiq/bigip_version_parameters.yaml | 50 - .../n-nic/new-stack/bigiq/parameters.yaml | 55 - .../new-stack/bigiq/postpub_parameters.yaml | 55 - .../new-stack/bigiq/prepub_parameters.yaml | 54 - .../byol/bigip_version_parameters.yaml | 50 - .../n-nic/new-stack/byol/parameters.yaml | 55 - .../new-stack/byol/postpub_parameters.yaml | 55 - .../new-stack/byol/prepub_parameters.yaml | 54 - .../payg/bigip_version_parameters.yaml | 47 - .../n-nic/new-stack/payg/parameters.yaml | 52 - .../new-stack/payg/postpub_parameters.yaml | 52 - .../new-stack/payg/prepub_parameters.yaml | 51 - .../1nic/existing-stack/bigiq/parameters.yaml | 0 .../existing-stack/bigiq/parameters0.yaml | 0 .../1nic/existing-stack/byol/parameters.yaml | 0 .../1nic/existing-stack/payg/parameters.yaml | 0 .../bigiq/bigip_version_parameters.yaml | 50 - .../1nic/new-stack/bigiq/parameters.yaml | 54 - .../new-stack/bigiq/postpub_parameters.yaml | 55 - .../new-stack/bigiq/prepub_parameters.yaml | 54 - .../byol/bigip_version_parameters.yaml | 50 - .../1nic/new-stack/byol/parameters.yaml | 54 - .../new-stack/byol/postpub_parameters.yaml | 55 - .../new-stack/byol/prepub_parameters.yaml | 54 - .../payg/bigip_version_parameters.yaml | 47 - .../1nic/new-stack/payg/parameters.yaml | 51 - .../new-stack/payg/postpub_parameters.yaml | 52 - .../new-stack/payg/prepub_parameters.yaml | 51 - .../production-stack/bigiq/parameters.yaml | 1 - .../production-stack/byol/parameters.yaml | 0 .../production-stack/payg/parameters.yaml | 0 .../3nic/existing-stack/bigiq/parameters.yaml | 0 .../3nic/existing-stack/byol/parameters.yaml | 0 .../3nic/existing-stack/payg/parameters.yaml | 0 .../bigiq/bigip_version_parameters.yaml | 54 - .../3nic/new-stack/bigiq/parameters.yaml | 59 - .../new-stack/bigiq/postpub_parameters.yaml | 59 - .../new-stack/bigiq/prepub_parameters.yaml | 58 - .../byol/bigip_version_parameters.yaml | 54 - .../3nic/new-stack/byol/parameters.yaml | 59 - .../new-stack/byol/postpub_parameters.yaml | 59 - .../new-stack/byol/prepub_parameters.yaml | 58 - .../payg/bigip_version_parameters.yaml | 51 - .../3nic/new-stack/payg/parameters.yaml | 56 - .../new-stack/payg/postpub_parameters.yaml | 56 - .../new-stack/payg/prepub_parameters.yaml | 55 - .../iapps/f5.http.v1.2.0rc7.tmpl | 4278 ----------------- .../3nic+webserver/BYOL/parameters.yaml | 0 .../3nic+webserver/BYOL/parameters0.yaml | 0 .../3nic+webserver/PAYG/parameters.yaml | 0 .../1nic/existing-stack/bigiq/parameters.yaml | 0 .../1nic/existing-stack/byol/parameters.yaml | 0 .../1nic/existing-stack/payg/parameters.yaml | 0 .../bigiq/bigip_version_parameters.yaml | 49 - .../1nic/new-stack/bigiq/parameters.yaml | 54 - .../new-stack/bigiq/postpub_parameters.yaml | 54 - .../new-stack/bigiq/prepub_parameters.yaml | 53 - .../byol/bigip_version_parameters.yaml | 47 - .../1nic/new-stack/byol/parameters.yaml | 52 - .../new-stack/byol/postpub_parameters.yaml | 52 - .../new-stack/byol/prepub_parameters.yaml | 51 - .../payg/bigip_version_parameters.yaml | 46 - .../1nic/new-stack/payg/parameters.yaml | 51 - .../new-stack/payg/postpub_parameters.yaml | 51 - .../new-stack/payg/prepub_parameters.yaml | 50 - .../production-stack/byol/parameters.yaml | 0 .../production-stack/payg/parameters.yaml | 0 .../2nic/existing-stack/bigiq/parameters.yaml | 0 .../2nic/existing-stack/byol/parameters.yaml | 0 .../2nic/existing-stack/payg/parameters.yaml | 0 .../bigiq/bigip_version_parameters.yaml | 49 - .../2nic/new-stack/bigiq/parameters.yaml | 54 - .../new-stack/bigiq/postpub_parameters.yaml | 54 - .../new-stack/bigiq/prepub_parameters.yaml | 53 - .../byol/bigip_version_parameters.yaml | 47 - .../2nic/new-stack/byol/parameters.yaml | 52 - .../new-stack/byol/postpub_parameters.yaml | 52 - .../new-stack/byol/prepub_parameters.yaml | 51 - .../payg/bigip_version_parameters.yaml | 46 - .../2nic/new-stack/payg/parameters.yaml | 51 - .../new-stack/payg/postpub_parameters.yaml | 51 - .../new-stack/payg/prepub_parameters.yaml | 50 - .../production-stack/byol/parameters.yaml | 0 .../production-stack/payg/parameters.yaml | 0 .../3nic/existing-stack/bigiq/parameters.yaml | 0 .../3nic/existing-stack/byol/parameters.yaml | 0 .../3nic/existing-stack/payg/parameters.yaml | 0 .../3nic/learning-stack/bigiq/parameters.yaml | 8 - .../3nic/learning-stack/byol/parameters.yaml | 8 - .../3nic/learning-stack/payg/parameters.yaml | 8 - .../bigiq/bigip_version_parameters.yaml | 49 - .../3nic/new-stack/bigiq/parameters.yaml | 54 - .../new-stack/bigiq/postpub_parameters.yaml | 54 - .../new-stack/bigiq/prepub_parameters.yaml | 53 - .../byol/bigip_version_parameters.yaml | 47 - .../3nic/new-stack/byol/parameters.yaml | 52 - .../new-stack/byol/postpub_parameters.yaml | 52 - .../new-stack/byol/prepub_parameters.yaml | 51 - .../payg/bigip_version_parameters.yaml | 46 - .../3nic/new-stack/payg/parameters.yaml | 51 - .../new-stack/payg/postpub_parameters.yaml | 51 - .../new-stack/payg/prepub_parameters.yaml | 50 - .../production-stack/byol/parameters.yaml | 0 .../production-stack/payg/parameters.yaml | 0 .../existing-stack/bigiq/parameters.yaml | 0 .../n-nic/existing-stack/byol/parameters.yaml | 0 .../n-nic/existing-stack/payg/parameters.yaml | 0 .../bigiq/bigip_version_parameters.yaml | 50 - .../n-nic/new-stack/bigiq/parameters.yaml | 55 - .../new-stack/bigiq/postpub_parameters.yaml | 55 - .../new-stack/bigiq/prepub_parameters.yaml | 55 - .../byol/bigip_version_parameters.yaml | 48 - .../n-nic/new-stack/byol/parameters.yaml | 53 - .../new-stack/byol/postpub_parameters.yaml | 53 - .../new-stack/byol/prepub_parameters.yaml | 53 - .../payg/bigip_version_parameters.yaml | 47 - .../n-nic/new-stack/payg/parameters.yaml | 52 - .../new-stack/payg/postpub_parameters.yaml | 52 - .../new-stack/payg/prepub_parameters.yaml | 52 - .../production-stack/byol/parameters.yaml | 0 .../production-stack/payg/parameters.yaml | 0 .../bigiq/bigip_version_parameters.yaml | 64 - .../1nic/existing-stack/bigiq/parameters.yaml | 70 - .../bigiq/postpub_parameters.yaml | 70 - .../bigiq/prepub_parameters.yaml | 69 - .../payg/bigip_version_parameters.yaml | 59 - .../1nic/existing-stack/payg/parameters.yaml | 66 - .../payg/postpub_parameters.yaml | 66 - .../payg/prepub_parameters.yaml | 66 - .../payg/prepub_parameters_v14.yaml | 66 - .../payg/prepub_parameters_v15.yaml | 66 - .../bigiq/bigip_version_parameters.yaml | 60 - .../1nic/existing-stack/bigiq/parameters.yaml | 68 - .../bigiq/postpub_parameters.yaml | 68 - .../bigiq/prepub_parameters.yaml | 68 - .../payg/bigip_version_parameters.yaml | 55 - .../1nic/existing-stack/payg/parameters.yaml | 63 - .../payg/postpub_parameters.yaml | 63 - .../payg/prepub_parameters.yaml | 62 - .../bigiq/bigip_version_parameters.yaml | 64 - .../1nic/new-stack/bigiq/parameters.yaml | 70 - .../new-stack/bigiq/postpub_parameters.yaml | 70 - .../new-stack/bigiq/prepub_parameters.yaml | 69 - .../payg/bigip_version_parameters.yaml | 61 - .../1nic/new-stack/payg/parameters.yaml | 67 - .../new-stack/payg/postpub_parameters.yaml | 67 - .../new-stack/payg/prepub_parameters.yaml | 66 - .../bigiq/bigip_version_parameters.yaml | 63 - .../1nic/existing-stack/bigiq/parameters.yaml | 70 - .../bigiq/postpub_parameters.yaml | 69 - .../bigiq/prepub_parameters.yaml | 69 - .../payg/bigip_version_parameters.yaml | 59 - .../1nic/existing-stack/payg/parameters.yaml | 67 - .../payg/postpub_parameters.yaml | 67 - .../payg/prepub_parameters.yaml | 66 - .../bigiq/bigip_version_parameters.yaml | 60 - .../1nic/existing-stack/bigiq/parameters.yaml | 68 - .../bigiq/postpub_parameters.yaml | 68 - .../bigiq/prepub_parameters.yaml | 67 - .../payg/bigip_version_parameters.yaml | 57 - .../1nic/existing-stack/payg/parameters.yaml | 65 - .../payg/postpub_parameters.yaml | 65 - .../payg/prepub_parameters.yaml | 64 - .../payg/prepub_parameters_v14.yaml | 64 - .../payg/prepub_parameters_v15.yaml | 64 - .../bigiq/bigip_version_parameters.yaml | 51 - .../existing-stack/bigiq/parameters.yaml | 58 - .../bigiq/postpub_parameters.yaml | 58 - .../bigiq/prepub_parameters.yaml | 57 - .../byol/bigip_version_parameters.yaml | 51 - .../n-nic/existing-stack/byol/parameters.yaml | 58 - .../byol/postpub_parameters.yaml | 58 - .../byol/prepub_parameters.yaml | 57 - .../payg/bigip_version_parameters.yaml | 48 - .../n-nic/existing-stack/payg/parameters.yaml | 55 - .../payg/postpub_parameters.yaml | 55 - .../payg/prepub_parameters.yaml | 54 - .../payg/prepub_parameters_v14.yaml | 54 - .../payg/prepub_parameters_v15.yaml | 54 - .../bigiq/bigip_version_parameters.yaml | 49 - .../1nic/existing-stack/bigiq/parameters.yaml | 54 - .../bigiq/postpub_parameters.yaml | 56 - .../bigiq/prepub_parameters.yaml | 55 - .../byol/bigip_version_parameters.yaml | 49 - .../1nic/existing-stack/byol/parameters.yaml | 55 - .../byol/postpub_parameters.yaml | 56 - .../byol/prepub_parameters.yaml | 55 - .../payg/bigip_version_parameters.yaml | 46 - .../1nic/existing-stack/payg/parameters.yaml | 52 - .../payg/postpub_parameters.yaml | 53 - .../payg/prepub_parameters.yaml | 52 - .../bigiq/bigip_version_parameters.yaml | 50 - .../3nic/existing-stack/bigiq/parameters.yaml | 57 - .../bigiq/postpub_parameters.yaml | 57 - .../bigiq/prepub_parameters.yaml | 57 - .../byol/bigip_version_parameters.yaml | 50 - .../3nic/existing-stack/byol/parameters.yaml | 57 - .../byol/postpub_parameters.yaml | 57 - .../byol/prepub_parameters.yaml | 56 - .../payg/bigip_version_parameters.yaml | 45 - .../3nic/existing-stack/payg/parameters.yaml | 52 - .../payg/postpub_parameters.yaml | 52 - .../payg/prepub_parameters.yaml | 52 - .../payg/prepub_parameters_v14.yaml | 52 - .../payg/prepub_parameters_v15.yaml | 52 - .../bigiq/bigip_version_parameters.yaml | 49 - .../1nic/existing-stack/bigiq/parameters.yaml | 56 - .../bigiq/postpub_parameters.yaml | 56 - .../bigiq/prepub_parameters.yaml | 55 - .../byol/bigip_version_parameters.yaml | 47 - .../1nic/existing-stack/byol/parameters.yaml | 54 - .../byol/postpub_parameters.yaml | 54 - .../byol/prepub_parameters.yaml | 53 - .../payg/bigip_version_parameters.yaml | 46 - .../1nic/existing-stack/payg/parameters.yaml | 53 - .../payg/postpub_parameters.yaml | 53 - .../payg/prepub_parameters.yaml | 52 - .../payg/prepub_parameters_v14.yaml | 52 - .../payg/prepub_parameters_v15.yaml | 52 - .../bigiq/bigip_version_parameters.yaml | 49 - .../2nic/existing-stack/bigiq/parameters.yaml | 56 - .../bigiq/postpub_parameters.yaml | 56 - .../bigiq/prepub_parameters.yaml | 55 - .../byol/bigip_version_parameters.yaml | 47 - .../2nic/existing-stack/byol/parameters.yaml | 54 - .../byol/postpub_parameters.yaml | 54 - .../byol/prepub_parameters.yaml | 53 - .../payg/bigip_version_parameters.yaml | 46 - .../2nic/existing-stack/payg/parameters.yaml | 53 - .../payg/postpub_parameters.yaml | 53 - .../payg/prepub_parameters.yaml | 52 - .../payg/prepub_parameters_v14.yaml | 52 - .../payg/prepub_parameters_v15.yaml | 52 - .../bigiq/bigip_version_parameters.yaml | 49 - .../3nic/existing-stack/bigiq/parameters.yaml | 56 - .../bigiq/postpub_parameters.yaml | 56 - .../bigiq/prepub_parameters.yaml | 55 - .../byol/bigip_version_parameters.yaml | 47 - .../3nic/existing-stack/byol/parameters.yaml | 54 - .../byol/postpub_parameters.yaml | 54 - .../byol/prepub_parameters.yaml | 53 - .../payg/bigip_version_parameters.yaml | 46 - .../3nic/existing-stack/payg/parameters.yaml | 53 - .../payg/postpub_parameters.yaml | 53 - .../payg/prepub_parameters.yaml | 52 - .../payg/prepub_parameters_v14.yaml | 52 - .../payg/prepub_parameters_v15.yaml | 52 - .../bigiq/bigip_version_parameters.yaml | 50 - .../existing-stack/bigiq/parameters.yaml | 57 - .../bigiq/postpub_parameters.yaml | 57 - .../bigiq/prepub_parameters.yaml | 56 - .../byol/bigip_version_parameters.yaml | 48 - .../n-nic/existing-stack/byol/parameters.yaml | 55 - .../byol/postpub_parameters.yaml | 55 - .../byol/prepub_parameters.yaml | 54 - .../payg/bigip_version_parameters.yaml | 48 - .../n-nic/existing-stack/payg/parameters.yaml | 55 - .../payg/postpub_parameters.yaml | 55 - .../payg/prepub_parameters.yaml | 54 - .../payg/prepub_parameters_v14.yaml | 54 - .../payg/prepub_parameters_v15.yaml | 54 - .../data/test_policies/azure/all.yaml | 56 - .../test_policies/azure/all_autoscale.yaml | 12 - .../test_policies/azure/all_failover.yaml | 17 - .../test_policies/azure/all_standalone.yaml | 16 - .../data/test_policies/azure/all_v14.yaml | 31 - .../data/test_policies/azure/all_v15.yaml | 31 - .../test_policies/azure_pre_release_test.yaml | 68 - .../scheduled/friday_develop.yaml | 9 - .../test_policies/scheduled/friday_main.yaml | 9 - .../scheduled/monday_develop.yaml | 10 - .../test_policies/scheduled/monday_main.yaml | 9 - .../scheduled/saturday_develop.yaml | 9 - .../scheduled/saturday_main.yaml | 15 - .../scheduled/sunday_develop.yaml | 15 - .../test_policies/scheduled/sunday_main.yaml | 10 - .../scheduled/thursday_develop.yaml | 9 - .../scheduled/thursday_main.yaml | 9 - .../scheduled/tuesday_develop.yaml | 9 - .../test_policies/scheduled/tuesday_main.yaml | 14 - .../scheduled/wednesday_develop.yaml | 14 - .../scheduled/wednesday_main.yaml | 9 - .../data/test_policies/shimkus.yaml | 66 - automated-test-scripts/env.sh | 16 - .../common/azure-bigiq-standalone-2.0.json | 606 --- .../common/azure-bigiq-standalone.json | 606 --- .../common/azure-environment-2.0.json | 196 - .../common/azure-environment.json | 253 - .../common/azure-gtm-2.0.json | 834 ---- .../common/azure-gtm.json | 836 ---- .../common/azure-vnet-bastion-2.0.json | 449 -- .../common/azure-vnet-bastion.json | 482 -- .../common/azure-vnet-peer.json | 911 ---- .../common/capture_deployment_status.sh | 15 - .../common/capture_logs.sh | 123 - .../common/capture_logs_bigiq.sh | 65 - .../common/create_bigiq_deployment.sh | 46 - .../common/create_bigiq_payg_deployment.sh | 21 - .../common/create_deployment.sh | 101 - .../common/create_environment.sh | 94 - .../common/create_environment_svcs.sh | 43 - .../common/create_resource_group.sh | 6 - .../common/create_resource_group_vnet.sh | 10 - .../common/create_role_assignment.sh | 16 - .../common/delete_deployment.sh | 19 - .../common/delete_deployment_vnet.sh | 11 - .../common/find_bigiq.sh | 28 - .../common/helper_init.sh | 11 - .../common/reboot_vm.sh | 51 - .../common/update_user.sh | 41 - .../common/verify_AS3.sh | 32 - .../common/verify_acceleratedNetworking.sh | 40 - .../common/verify_app_services.sh | 21 - .../common/verify_bigiq_ready_env.sh | 24 - .../common/verify_create.sh | 16 - .../common/verify_create_env.sh | 16 - .../common/verify_create_env_svcs.sh | 33 - .../common/verify_declaration_url_AS3.sh | 42 - .../common/verify_delete.sh | 20 - .../common/verify_file_permissions.sh | 55 - .../common/verify_iapps.sh | 47 - .../common/verify_image_version.sh | 34 - .../common/verify_ip_allocation_method.sh | 45 - .../common/verify_lic_pool_keys.sh | 26 - .../common/verify_license.sh | 33 - .../common/verify_logs.sh | 50 - .../common/verify_mcp_ready.sh | 33 - .../common/verify_networking.sh | 35 - .../common/verify_ntp.sh | 40 - .../common/verify_onboard_bigiq.sh | 48 - .../common/verify_phone_home.sh | 42 - .../common/verify_provisioned_modules.sh | 85 - .../common/verify_reg_pool_keys.sh | 25 - .../common/verify_registration_key.sh | 34 - .../common/verify_sync.sh | 30 - .../common/verify_time_zone.sh | 34 - .../common/verify_vlans.sh | 49 - .../2nic/existing-stack/byol/daily_test.yaml | 30 - .../existing-stack/byol/promote_secondary.sh | 17 - .../existing-stack/byol/verify_cluster.sh | 16 - .../byol/verify_failover_to_0.sh | 16 - .../existing-stack/byol/verify_pip_on_0.sh | 15 - .../existing-stack/byol/verify_pip_on_1.sh | 15 - .../2nic/new-stack/byol/daily_test.yaml | 24 - .../2nic/existing-stack/byol/daily_test.yaml | 25 - .../autoscale/create_enviroment_svcs.sh | 31 - .../supported/autoscale/daily_test.yaml | 45 - .../supported/autoscale/daily_test_exp.yaml | 38 - .../autoscale/delete_dns_provider.sh | 19 - .../supported/autoscale/scale_down.sh | 13 - .../supported/autoscale/scale_up.sh | 13 - .../autoscale/verify_autoscale_metrics.sh | 18 - .../autoscale/verify_create_env_svcs.sh | 11 - .../autoscale/verify_dns_provider.sh | 23 - .../supported/autoscale/verify_inst_pub_ip.sh | 22 - .../autoscale/verify_license_revoke.sh | 55 - .../supported/autoscale/verify_scale_down.sh | 14 - .../autoscale/verify_scale_up_sync.sh | 20 - .../autoscale/verify_static_vmss_image.sh | 20 - .../autoscale/verify_update_autoscale_ucs.sh | 90 - .../supported/failover/verify_sync.sh | 47 - .../failover/via-api/daily_test.yaml | 46 - .../failover/via-api/force_standby.sh | 74 - .../failover/via-api/update_cfe_config.sh | 34 - .../supported/failover/via-api/verify_CFE.sh | 37 - .../via-api/verify_declaration_CFE.sh | 38 - .../failover/via-api/verify_failover.sh | 77 - .../via-api/verify_failover_initial.sh | 72 - .../supported/failover/via-lb/daily_test.yaml | 32 - .../supported/standalone/daily_test.yaml | 33 - .../standalone/daily_test_existing.yaml | 28 - .../supported/standalone/daily_test_ps.yaml | 27 - automated-test-scripts/sleep/10_minutes.sh | 7 - automated-test-scripts/sleep/15_minutes.sh | 7 - automated-test-scripts/sleep/1_minute.sh | 7 - automated-test-scripts/sleep/20_minutes.sh | 7 - automated-test-scripts/sleep/25_minutes.sh | 7 - automated-test-scripts/sleep/2_minutes.sh | 7 - automated-test-scripts/sleep/30_minutes.sh | 7 - automated-test-scripts/sleep/35_minutes.sh | 7 - automated-test-scripts/sleep/3_minutes.sh | 7 - automated-test-scripts/sleep/40_minutes.sh | 7 - automated-test-scripts/sleep/45_minutes.sh | 7 - automated-test-scripts/sleep/4_minutes.sh | 7 - automated-test-scripts/sleep/50_minutes.sh | 7 - automated-test-scripts/sleep/55_minutes.sh | 7 - automated-test-scripts/sleep/5_minutes.sh | 7 - automated-test-scripts/sleep/60_minutes.sh | 7 - automated-test-scripts/sleep/8_minutes.sh | 7 - cloud-tools | 1 - 461 files changed, 29628 deletions(-) delete mode 100644 .gitlab-ci.yml delete mode 100644 .gitmodules delete mode 100644 Makefile delete mode 100644 automated-test-scripts/Makefile delete mode 100644 automated-test-scripts/common/azure-bigiq-standalone-2.0.json delete mode 100644 automated-test-scripts/common/azure-environment.json delete mode 100644 automated-test-scripts/common/bigiq_config.base64 delete mode 100644 automated-test-scripts/common/bigiq_config.py delete mode 100644 automated-test-scripts/common/bigiq_delete.yaml delete mode 100644 automated-test-scripts/common/bigiq_license_revoke.sh delete mode 100644 automated-test-scripts/common/test_aws.ucs delete mode 100644 automated-test-scripts/common/test_azure.ucs delete mode 100644 automated-test-scripts/common/verify_provisioned_modules.sh delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/existing-stack/bigiq-payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/existing-stack/bigiq-payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/new-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/byol/parameters0.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/bigiq/parameters0.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/production-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/production-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/production-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/learning-stack/iapps/f5.http.v1.2.0rc7.tmpl delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/standalone/3nic+webserver/BYOL/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/standalone/3nic+webserver/BYOL/parameters0.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/standalone/3nic+webserver/PAYG/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/production-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/production-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/production-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/2nic/production-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/learning-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/learning-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/learning-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/production-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/3nic/production-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/production-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/n-nic/production-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-dns/1nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-dns/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-dns/1nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-dns/1nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-dns/1nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-dns/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-dns/1nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-dns/1nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-dns/1nic/existing-stack/payg/prepub_parameters_v14.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-dns/1nic/existing-stack/payg/prepub_parameters_v15.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/new-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/new-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/new-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/ltm/via-lb/1nic/new-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-dns/1nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-dns/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-dns/1nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-dns/1nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-dns/1nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-dns/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-dns/1nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-dns/1nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-lb/1nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-lb/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-lb/1nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-lb/1nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-lb/1nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-lb/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-lb/1nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-lb/1nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-lb/1nic/existing-stack/payg/prepub_parameters_v14.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/autoscale/waf/via-lb/1nic/existing-stack/payg/prepub_parameters_v15.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/payg/prepub_parameters_v14.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-api/n-nic/existing-stack/payg/prepub_parameters_v15.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/1nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/payg/prepub_parameters_v14.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/failover/same-net/via-lb/3nic/existing-stack/payg/prepub_parameters_v15.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/payg/prepub_parameters_v14.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/1nic/existing-stack/payg/prepub_parameters_v15.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/payg/prepub_parameters_v14.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/2nic/existing-stack/payg/prepub_parameters_v15.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/payg/prepub_parameters_v14.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/3nic/existing-stack/payg/prepub_parameters_v15.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/bigiq/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/bigiq/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/bigiq/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/bigiq/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/byol/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/byol/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/byol/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/byol/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/payg/bigip_version_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/payg/parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/payg/postpub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/payg/prepub_parameters.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/payg/prepub_parameters_v14.yaml delete mode 100644 automated-test-scripts/data/f5-azure-arm-templates/supported/standalone/n-nic/existing-stack/payg/prepub_parameters_v15.yaml delete mode 100644 automated-test-scripts/data/test_policies/azure/all.yaml delete mode 100644 automated-test-scripts/data/test_policies/azure/all_autoscale.yaml delete mode 100644 automated-test-scripts/data/test_policies/azure/all_failover.yaml delete mode 100644 automated-test-scripts/data/test_policies/azure/all_standalone.yaml delete mode 100644 automated-test-scripts/data/test_policies/azure/all_v14.yaml delete mode 100644 automated-test-scripts/data/test_policies/azure/all_v15.yaml delete mode 100644 automated-test-scripts/data/test_policies/azure_pre_release_test.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/friday_develop.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/friday_main.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/monday_develop.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/monday_main.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/saturday_develop.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/saturday_main.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/sunday_develop.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/sunday_main.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/thursday_develop.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/thursday_main.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/tuesday_develop.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/tuesday_main.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/wednesday_develop.yaml delete mode 100644 automated-test-scripts/data/test_policies/scheduled/wednesday_main.yaml delete mode 100644 automated-test-scripts/data/test_policies/shimkus.yaml delete mode 100644 automated-test-scripts/env.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/azure-bigiq-standalone-2.0.json delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/azure-bigiq-standalone.json delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/azure-environment-2.0.json delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/azure-environment.json delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/azure-gtm-2.0.json delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/azure-gtm.json delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/azure-vnet-bastion-2.0.json delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/azure-vnet-bastion.json delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/azure-vnet-peer.json delete mode 100755 automated-test-scripts/f5-azure-arm-templates/common/capture_deployment_status.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/capture_logs.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/capture_logs_bigiq.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/create_bigiq_deployment.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/create_bigiq_payg_deployment.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/create_deployment.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/create_environment.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/create_environment_svcs.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/create_resource_group.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/create_resource_group_vnet.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/create_role_assignment.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/delete_deployment.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/delete_deployment_vnet.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/find_bigiq.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/helper_init.sh delete mode 100755 automated-test-scripts/f5-azure-arm-templates/common/reboot_vm.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/update_user.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_AS3.sh delete mode 100755 automated-test-scripts/f5-azure-arm-templates/common/verify_acceleratedNetworking.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_app_services.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_bigiq_ready_env.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_create.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_create_env.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_create_env_svcs.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_declaration_url_AS3.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_delete.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_file_permissions.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_iapps.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_image_version.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_ip_allocation_method.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_lic_pool_keys.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_license.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_logs.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_mcp_ready.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_networking.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_ntp.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_onboard_bigiq.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_phone_home.sh delete mode 100755 automated-test-scripts/f5-azure-arm-templates/common/verify_provisioned_modules.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_reg_pool_keys.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_registration_key.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_sync.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_time_zone.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/common/verify_vlans.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/experimental/bigiq/licenseManager/cluster/2nic/existing-stack/byol/daily_test.yaml delete mode 100644 automated-test-scripts/f5-azure-arm-templates/experimental/bigiq/licenseManager/cluster/2nic/existing-stack/byol/promote_secondary.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/experimental/bigiq/licenseManager/cluster/2nic/existing-stack/byol/verify_cluster.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/experimental/bigiq/licenseManager/cluster/2nic/existing-stack/byol/verify_failover_to_0.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/experimental/bigiq/licenseManager/cluster/2nic/existing-stack/byol/verify_pip_on_0.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/experimental/bigiq/licenseManager/cluster/2nic/existing-stack/byol/verify_pip_on_1.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/experimental/bigiq/licenseManager/cluster/2nic/new-stack/byol/daily_test.yaml delete mode 100644 automated-test-scripts/f5-azure-arm-templates/experimental/bigiq/licenseManager/standalone/2nic/existing-stack/byol/daily_test.yaml delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/create_enviroment_svcs.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/daily_test.yaml delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/daily_test_exp.yaml delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/delete_dns_provider.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/scale_down.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/scale_up.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/verify_autoscale_metrics.sh delete mode 100755 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/verify_create_env_svcs.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/verify_dns_provider.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/verify_inst_pub_ip.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/verify_license_revoke.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/verify_scale_down.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/verify_scale_up_sync.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/verify_static_vmss_image.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/autoscale/verify_update_autoscale_ucs.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/failover/verify_sync.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/failover/via-api/daily_test.yaml delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/failover/via-api/force_standby.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/failover/via-api/update_cfe_config.sh delete mode 100755 automated-test-scripts/f5-azure-arm-templates/supported/failover/via-api/verify_CFE.sh delete mode 100755 automated-test-scripts/f5-azure-arm-templates/supported/failover/via-api/verify_declaration_CFE.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/failover/via-api/verify_failover.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/failover/via-api/verify_failover_initial.sh delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/failover/via-lb/daily_test.yaml delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/standalone/daily_test.yaml delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/standalone/daily_test_existing.yaml delete mode 100644 automated-test-scripts/f5-azure-arm-templates/supported/standalone/daily_test_ps.yaml delete mode 100644 automated-test-scripts/sleep/10_minutes.sh delete mode 100644 automated-test-scripts/sleep/15_minutes.sh delete mode 100644 automated-test-scripts/sleep/1_minute.sh delete mode 100644 automated-test-scripts/sleep/20_minutes.sh delete mode 100644 automated-test-scripts/sleep/25_minutes.sh delete mode 100644 automated-test-scripts/sleep/2_minutes.sh delete mode 100644 automated-test-scripts/sleep/30_minutes.sh delete mode 100644 automated-test-scripts/sleep/35_minutes.sh delete mode 100644 automated-test-scripts/sleep/3_minutes.sh delete mode 100644 automated-test-scripts/sleep/40_minutes.sh delete mode 100644 automated-test-scripts/sleep/45_minutes.sh delete mode 100644 automated-test-scripts/sleep/4_minutes.sh delete mode 100644 automated-test-scripts/sleep/50_minutes.sh delete mode 100644 automated-test-scripts/sleep/55_minutes.sh delete mode 100644 automated-test-scripts/sleep/5_minutes.sh delete mode 100644 automated-test-scripts/sleep/60_minutes.sh delete mode 100644 automated-test-scripts/sleep/8_minutes.sh delete mode 160000 cloud-tools diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 55d74ffba1..0000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,278 +0,0 @@ -image: ${ARTIFACTORY_SERVER}/dockerhub-remote/python:3.7-alpine - -services: - - ${ARTIFACTORY_SERVER}/dockerhub-remote/docker:dind - -stages: - - lint-tests - - smoke-tests - - release_test_prep - - sprinkle-tests - - droplets - - publish - - release - - post-release-tests - - admin - -variables: - GIT_SUBMODULE_STRATEGY: recursive - -# validate README file(s) only contain links that respond with 200 OK -# this pre-release job only checks internal links to avoid failures -# when tag version is unpublished -run_link_checker: - image: ${ARTIFACTORY_SERVER}/dockerhub-remote/node:10 - stage: smoke-tests - tags: - - docker-executor - only: - refs: - # run only on release branch and develop - - /^R.*/ - - develop - except: - refs: - - schedules - - triggers - - pipelines - variables: - - $RELEASE_RUNTIME_INIT_TESTS == "true" - script: - - make link_check - -# lint -lint_generator: - image: ${ARTIFACTORY_SERVER}/dockerhub-remote/python:3.7-alpine - stage: lint-tests - tags: - - docker-executor - except: - refs: - - schedules - - triggers - - pipelines - variables: - - $RELEASE_RUNTIME_INIT_TESTS == "true" - script: - - apk add --no-cache build-base - - apk add libffi-dev - - cd cloud-tools/template-generator - - pip install -r requirements.txt - - make lint - -# validate the template generator 'source' file(s) are always in sync with the -# generated content - i.e. running 'make all' after checking out a stable branch -# should never result in different generated content -run_generator_and_validate_no_diff: - stage: smoke-tests - tags: - - docker-executor - except: - refs: - - schedules - - triggers - - pipelines - variables: - - $RELEASE_RUNTIME_INIT_TESTS == "true" - script: - - apk add --no-cache build-base gcc musl-dev python3-dev libffi-dev - - apk add --no-cache git - - apk add --no-cache jq - - apk add --no-cache curl - - curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz - - mkdir -p /usr/local/gcloud && tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz && /usr/local/gcloud/google-cloud-sdk/install.sh --quiet && rm /tmp/google-cloud-sdk.tar.gz - - PATH="$PATH:/usr/local/gcloud/google-cloud-sdk/bin" - - cd cloud-tools/template-generator - - pip install -r requirements.txt - - python template_generator/main.py --azure - - if git diff | grep 'diff --git'; then exit 1; else exit 0; fi - -# run template generator smoke tests - validate file contents, etc. -run_smoke_tests: - stage: smoke-tests - tags: - - docker-executor - except: - refs: - - schedules - - triggers - - pipelines - variables: - - $RELEASE_RUNTIME_INIT_TESTS == "true" - script: - - apk add --no-cache build-base - - apk add --no-cache bash - - make run_smoke_tests - -pre_release_test_job: - stage: sprinkle-tests - tags: - - docker-executor - only: - refs: - - main - except: - variables: - - $ANALYTICS_MESSAGE_PROCESS == "true" - - $ANALYTICS_SCRIPTS_PROCESS == "true" - - $VERIFY_REGKEY_COUNT == "true" - - $REAPER_RUN == "true" - - $DAILY_TESTS_MONITOR == "true" - - $RELEASE_RUNTIME_INIT_TESTS == "true" - refs: - - schedules - - triggers - - pipelines - variables: - TEST_POLICY: automated-test-scripts/data/test_policies/azure_pre_release_test.yaml - STACK_TYPE: dewdrop-preproduction - script: - - pip install -r cloud-tools/master-job/requirements.txt - - cloud-tools/master-job/sprinkler.py --test-plan $TEST_POLICY --token $CI_JOB_TOKEN --branch $CI_COMMIT_REF_NAME --stack-type $STACK_TYPE --project-id $CI_PROJECT_ID - retry: - max: 2 - when: - - runner_system_failure - - stuck_or_timeout_failure - -post_release_test_job: - stage: sprinkle-tests - tags: - - docker-executor - only: - - schedules - except: - variables: - - $ANALYTICS_MESSAGE_PROCESS == "true" - - $ANALYTICS_SCRIPTS_PROCESS == "true" - - $VERIFY_REGKEY_COUNT == "true" - - $REAPER_RUN == "true" - - $DAILY_TESTS_MONITOR == "true" - - $RELEASE_RUNTIME_INIT_TESTS == "true" - - $UPDATE_SCHEDULES == "true" - variables: - TEST_POLICY: automated-test-scripts/data/test_policies/post_release_test.yaml - STACK_TYPE: dewdrop-preproduction - # Added a manual trigger for now so that this job doesn't get triggered after every commit - when: manual - script: - - pip install -r cloud-tools/master-job/requirements.txt - - cloud-tools/master-job/sprinkler.py --test-plan $TEST_POLICY --token $CI_JOB_TOKEN --branch $CI_COMMIT_REF_NAME --stack-type $STACK_TYPE --project-id $CI_PROJECT_ID - retry: - max: 2 - when: - - runner_system_failure - - stuck_or_timeout_failure - -scheduled_test_job: - stage: sprinkle-tests - tags: - - docker-executor - only: - - schedules - except: - variables: - - $ANALYTICS_MESSAGE_PROCESS == "true" - - $ANALYTICS_SCRIPTS_PROCESS == "true" - - $VERIFY_REGKEY_COUNT == "true" - - $REAPER_RUN == "true" - - $DAILY_TESTS_MONITOR == "true" - - $UPDATE_SCHEDULES == "true" - variables: - TEST_POLICY: set in schedule! - STACK_TYPE: dewdrop-production - script: - - pip install -r cloud-tools/master-job/requirements.txt - - cloud-tools/master-job/sprinkler.py --test-plan $TEST_POLICY --token $CI_JOB_TOKEN --branch $CI_COMMIT_REF_NAME --stack-type $STACK_TYPE --project-id $CI_PROJECT_ID - retry: - max: 2 - when: - - runner_system_failure - - stuck_or_timeout_failure - - -# This job gets triggered by the sprinkler.py script that get ran by the 'master_test_job' it ingests TEMPLATE_URL -# and TEMPLATE_PARAMETERS which are passed down by the sprinkler.py script. Using the variables runs dewdrop with -# the set environment variables -dewdrop_test_run: - image: ${ARTIFACTORY_SERVER}/ecosystems-cloudsolutions-docker-dev/dewdrop:$DEWDROP_IMAGE_ID - stage: droplets - tags: - - docker-executor - variables: - SSH_KEY: "$SSH_KEY" - AZURE_TENANT_ID: "$AZURE_TENANT_ID" - AZURE_CLIENT_ID: "$AZURE_CLIENT_ID" - AZURE_SERVICE_PRINCIPAL: "$AZURE_SERVICE_PRINCIPAL" - AZURE_SUBSCRIPTION_ID: "$AZURE_SUBSCRIPTION_ID" - TEMPLATE_URL: "$TEMPLATE_URL" - TEMPLATE_PARAMETERS: "$TEMPLATE_PARAMETERS" - STACK_TYPE: "$STACK_TYPE" - GITLAB_JOB_URL: "$CI_JOB_URL" - only: - variables: - - $RUN_SCHEDULED_DEWDROP_TEST == "true" - script: - # the dewdrop image itself does not contain any test files, so ensure dewdrop - # is run from the known location where test policies expect it to be - # location: root of the cloud factory repository - - if [ "$CLOUD_PROVIDER_ENVIRONMENT" == "aws_china" ]; then - - AWS_DEFAULT_REGION=$AWS_CHINA_DEFAULT_REGION - - AWS_ACCESS_KEY_ID=$AWS_CHINA_ACCESS_KEY_ID - - AWS_SECRET_ACCESS_KEY=$AWS_CHINA_SECRET_ACCESS_KEY - - fi - - python /dewdrop/dewdrop-docker.py - -publish_to_github: - image: ${ARTIFACTORY_SERVER}/dockerhub-remote/node:8 - stage: release - only: - - /(^publish-(v\d*[1-9]*\.)(\d*[1-9]*\.)(\d).(\d))/ - script: - # install jq - - apt-get update - - apt-get install -y jq - # Execute Release script to push source to github repo - - ./cloud-tools/release-tool/publish_github.sh "$ALLOWED_DIRS" "$ALLOWED_FILES" - variables: - ALLOWED_DIRS: ".github images supported" - ALLOWED_FILES: ".gitignore README.md azure-bigip-version-matrix.md azure-offer-list.yaml azure-timezone-list.md azure-update-bigip-image.md bigip-12-note.md iapp-migration.md slack-channel-statement.md template-index.md" - GITLAB_API_URL: "$AZURE_URL" - GITHUB_API_TOKEN: "$AZURE_GITHUB_API_TOKEN" - GITLAB_PRIVATE_TOKEN: "$AZURE_GITLAB_API_TOKEN" - -# validate README file(s) only contain links that respond with 200 OK -run_link_checker_release: - image: ${ARTIFACTORY_SERVER}/dockerhub-remote/node:10 - stage: post-release-tests - tags: - - docker-executor - only: - # run only after release has been published - - /(^publish-(v\d*[1-9]*\.)(\d*[1-9]*\.)(\d).(\d))/ - except: - refs: - - schedules - - triggers - - pipelines - variables: - - $RELEASE_RUNTIME_INIT_TESTS == "true" - script: - - make link_check_release - -# manually scheduled job to enable/disable daily scheduled test jobs -update_daily_test_schedules: - image: ${ARTIFACTORY_SERVER}/dockerhub-remote/node:8 - stage: admin - only: - variables: - - $UPDATE_SCHEDULES == "true" - script: - - apt-get update - - apt-get install -y jq - - ./cloud-tools/scheduler-tool/activate-schedule.sh - variables: - FILTER: "$FILTER" - GIT_LAB_API_URL: "$AZURE_URL" - GIT_LAB_PRIVATE_TOKEN: "$AZURE_GITLAB_API_TOKEN" - STATE: "$STATE" diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index fc7256d40e..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "cloud-tools"] - path = cloud-tools - url = ../../automation-templates/cloud-tools.git - branch = develop diff --git a/Makefile b/Makefile deleted file mode 100644 index 42e8e36b29..0000000000 --- a/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# Cloud factory top-level Makefile - -CUR_DIR := $(cwd) -PROJECT_DIR := . -LINK_CHECK_DIR := cloud-tools/link_checker -CRAWLER_DIR := cloud-tools/crawler -SMOKE_TEST_DIR := cloud-tools/linters -PARSER_DIR := cloud-tools/parameter-parser -DIFF_VAR :=`diff ${PARSER_DIR}/parameters_diff_expected.yaml ${PARSER_DIR}/parameters_diff.yaml` -DIFF_VAR_OUTPUTS :=`diff ${PARSER_DIR}/outputs_diff_expected.yaml ${PARSER_DIR}/outputs_diff.yaml` - - -.PHONY: help -help: - @echo "Check MakeFile" - -link_check: - echo "Running link checker against all markdown files"; - cd ${LINK_CHECK_DIR} && npm install && cd ${CUR_DIR}; - ${LINK_CHECK_DIR}/link_checker.sh ${PROJECT_DIR} "cloud-tools node_modules archived experimental template-generator" link_checker_config.json - -link_check_release: - echo "Running link checker against all markdown files"; - cd ${LINK_CHECK_DIR} && npm install && cd ${CUR_DIR}; - ${LINK_CHECK_DIR}/link_checker.sh ${PROJECT_DIR} "cloud-tools node_modules archived experimental template-generator" link_checker_config_release.json - -run_crawler: - echo "Running crawler against cloud factory artifacts"; - cd ${CRAWLER_DIR} && bash ./run_crawler.sh && cd ${CUR_DIR}; - echo "Updated file: ${CRAWLER_DIR}/data.json" - -run_smoke_tests: run_crawler - echo "Running smoke tests"; - pip install -r cloud-tools/linters/requirements.txt; - pytest ${SMOKE_TEST_DIR} --full-trace -v; diff --git a/automated-test-scripts/Makefile b/automated-test-scripts/Makefile deleted file mode 100644 index 23c12b4dec..0000000000 --- a/automated-test-scripts/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -#!make -current_dir := $(shell pwd) -# Create an environmental script and refernce it here (.gitignore set to ignore env.sh) -# example: export GOOGLE_PROJECT_ID=my_project_id -# option 1 all env variables refrenced in rules need be defined in env.sh -# option 2 have env vars set prior to running make rule -include env.sh -.PHONY: help -help: - @echo "Please use \`make ' where is one of" - @echo " 'azure_network_mod' using dewdrop docker image:stable, runs standalone test defined in env varable AZURE_TEMPLATE_TEST_URL/AZURE_TEMPLATE_TEST_PARMS" - @echo " 'azure_autoscale_v2' using dewdrop docker image:stable, runs standalone test defined in env varable AZURE_TEMPLATE_TEST_URL_API/AZURE_TEMPLATE_TEST_PARAMS_API" - -.PHONY: gce -env: - env -# Azure V2 -azure_standalone: - docker run -it -v ${current_dir}:/automated-test-scripts -v ${current_dir}/../supported:/supported -e SSH_KEY="${DEWPT_PRIVATE_KEY}" -e AZURE_TENANT_ID="${AZURE_TENANT_ID}" -e AZURE_CLIENT_ID="${AZURE_CLIENT_ID}" -e AZURE_SERVICE_PRINCIPAL="${AZURE_SERVICE_PRINCIPAL}" -e STACK_TYPE="${STACK_TYPE}" -e AZURE_SUBSCRIPTION_ID="${AZURE_SUBSCRIPTION_ID}" -e TEMPLATE_URL="${AZURE_TEMPLATE_TEST_URL_STANDALONE}" -e TEMPLATE_PARAMETERS="${AZURE_TEMPLATE_TEST_PARAMS_STANDALONE}" artifactory.f5net.com/ecosystems-cloudsolutions-docker-dev/dewdrop:stable diff --git a/automated-test-scripts/common/azure-bigiq-standalone-2.0.json b/automated-test-scripts/common/azure-bigiq-standalone-2.0.json deleted file mode 100644 index 207df197fb..0000000000 --- a/automated-test-scripts/common/azure-bigiq-standalone-2.0.json +++ /dev/null @@ -1,605 +0,0 @@ -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", - "contentVersion": "5.3.0.0", - "parameters": { - "adminUsername": { - "defaultValue": "azureuser", - "metadata": { - "description": "User name for the Virtual Machine." - }, - "type": "string" - }, - "adminPassword": { - "metadata": { - "description": "Password to login to the Virtual Machine. Note: There are a number of special characters that you should avoid using for F5 product user accounts. See [K2873](https://support.f5.com/csp/article/K2873) for details." - }, - "type": "securestring" - }, - "authenticationType": { - "allowedValues": [ - "password", - "sshPublicKey" - ], - "defaultValue": "password", - "metadata": { - "description": "Type of authentication to use on the Virtual Machine, password based authentication or key based authentication." - }, - "type": "string" - }, - "masterKey": { - "defaultValue": "34jkcvni389#494kcx@dfkdi9H", - "metadata": { - "description": "Specify BIG-IQ master Key." - }, - "type": "securestring" - }, - "dnsLabel": { - "defaultValue": "", - "metadata": { - "description": "Unique DNS Name for the Public IP address used to access the Virtual Machine." - }, - "type": "string" - }, - "instanceName": { - "defaultValue": "f5bigiq01", - "metadata": { - "description": "Name of the Virtual Machine." - }, - "type": "string" - }, - "instanceType": { - "allowedValues": [ - "Standard_D4s_v3", - "Standard_D2s_v3", - "Standard_D8s_v3" - ], - "defaultValue": "Standard_D4s_v3", - "metadata": { - "description": "Instance size of the Virtual Machine." - }, - "type": "string" - }, - "bigIqVersion": { - "allowedValues": [ - "8.0.001000" - ], - "defaultValue": "8.0.001000", - "metadata": { - "description": "F5 BIG-IQ version you want to use." - }, - "type": "string" - }, - "bigIqLicenseKey1": { - "defaultValue": "", - "metadata": { - "description": "F5 BYOL BIG-IQ License Manager registration key." - }, - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "licensePoolKeys": { - "defaultValue": "Do_Not_Create", - "metadata": { - "description": "Enter a pool name and registration key using the format of name:key. Leave Do_Not_Create if you do not want to create a licensing pool on BIG-IQ at this time." - }, - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "regPoolKeys": { - "defaultValue": "Do_Not_Create", - "metadata": { - "description": "Enter a pool name and a list of individual BIG-IP registration keys in the format of name:key,key,key. Leave Do_Not_Create if you do not want to create a reg key pool on BIG-IQ at this time." - }, - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "numberOfInternalIps": { - "allowedValues": [ - 0, - 1 - ], - "defaultValue": 1, - "metadata": { - "description": "The number of public/private IP addresses you want to deploy for the application traffic (internal) NIC on the BIG-IQ VE to be used for virtual servers." - }, - "type": "int" - }, - "vnetName": { - "defaultValue": "existingStackVnet", - "metadata": { - "description": "The name of the existing virtual network to which you want to connect the BIG-IQ VEs." - }, - "type": "string" - }, - "vnetResourceGroupName": { - "metadata": { - "description": "The name of the resource group that contains the Virtual Network where the BIG-IQ VE will be placed." - }, - "type": "string" - }, - "mgmtSubnetName": { - "defaultValue": "mgmt", - "metadata": { - "description": "Name of the existing mgmt subnet - with external access to the Internet. **Important**: The subnet you provide for the mgmt NIC **must** be unique." - }, - "type": "string" - }, - "mgmtIpAddress": { - "defaultValue": "192.168.1.100", - "metadata": { - "description": "MGMT subnet IP Address to use for the BIG-IQ management IP address." - }, - "type": "string" - }, - "internalSubnetName": { - "defaultValue": "internal", - "metadata": { - "description": "Name of the existing internal subnet. **Important**: The subnet you provide for the internal NIC **must** be unique." - }, - "type": "string" - }, - "internalIpAddressRangeStart": { - "defaultValue": "192.168.2.100", - "metadata": { - "description": "The static private IP address want to assign to the first internal Azure public IP (for self IP). An additional private IP address will be assigned for each public IP address you specified in **numberOfInternalIps**. For example, entering 10.100.1.50 here and choosing 2 in numberOfInternalIps would result in 10.100.1.50 (self IP), 10.100.1.51 and 10.100.1.52 being configured as static private IP addresses for internal virtual servers." - }, - "type": "string" - }, - "avSetChoice": { - "defaultValue": "CREATE_NEW", - "metadata": { - "description": "If you want the VM placed in a new Azure Availability Set, leave the default value of **CREATE_NEW**, otherwise specify the name of the existing Availability Set you want to use. Note: If you are using an existing AV Set, this deployment must be in the same Azure Resource Group as the AV Set." - }, - "type": "string" - }, - "ntpServer": { - "defaultValue": "0.pool.ntp.org", - "metadata": { - "description": "Leave the default NTP server the BIG-IQ uses, or replace the default NTP server with the one you want to use." - }, - "type": "string" - }, - "timeZone": { - "defaultValue": "UTC", - "metadata": { - "description": "If you would like to change the time zone the BIG-IQ uses, enter the time zone you want to use. This is based on the tz database found in /usr/share/zoneinfo (see the full list [here](https://github.com/F5Networks/f5-azure-arm-templates/blob/master/azure-timezone-list.md)). Example values: UTC, US/Pacific, US/Eastern, Europe/London or Asia/Singapore." - }, - "type": "string" - }, - "customImage": { - "defaultValue": "OPTIONAL", - "metadata": { - "description": "If you would like to deploy using a local BIG-IQ image, provide either the full URL to the VHD in Azure storage **or** the full resource ID to an existing Microsoft.Compute image resource. **Note**: Unless specifically required, leave the default of **OPTIONAL**." - }, - "type": "string" - }, - "restrictedSrcAddress": { - "defaultValue": "*", - "metadata": { - "description": "Source Address(es) for Management Access. The IP address range used to SSH and access management GUI on the BIG-IQ." - }, - "type": "string" - }, - "restrictedSrcAddressApp": { - "defaultValue": "*", - "metadata": { - "description": "Source Address(es) for internal Management Access. The IP address range that can be used to access BIG-IQ on the specified internal network via port 443." - }, - "type": "string" - }, - "tagValues": { - "defaultValue": { - "application": "dewdrop", - "cost": "COST", - "environment": "bigiq", - "group": "GROUP", - "owner": "OWNER" - }, - "metadata": { - "description": "Default key/value resource tags will be added to the resources in this deployment, if you would like the values to be unique adjust them as needed for each key." - }, - "type": "object" - }, - "allowUsageAnalytics": { - "allowedValues": [ - "Yes", - "No" - ], - "defaultValue": "No", - "metadata": { - "description": "This deployment can send anonymous statistics to F5 to help us determine how to improve our solutions. If you select **No** statistics are not sent." - }, - "type": "string" - } - }, - "variables": { - "computeApiVersion": "2017-12-01", - "networkApiVersion": "2017-11-01", - "storageApiVersion": "2017-10-01", - "location": "[resourceGroup().location]", - "adminPassword": "[replace(parameters('adminPassword'),'\\n', '\n')]", - "subscriptionID": "[subscription().subscriptionId]", - "resourceGroupName": "[resourceGroup().name]", - "singleQuote": "'", - "f5CloudLibsTag": "v4.8.1", - "f5CloudLibsAzureTag": "v2.8.0", - "dnsLabel": "[toLower(parameters('dnsLabel'))]", - "skuToUse": "f5-bigiq-virtual-edition-byol", - "offerToUse": "f5-big-iq", - "imagePlan": { - "name": "[variables('skuToUse')]", - "product": "[variables('offerToUse')]", - "publisher": "f5-networks" - }, - "imageReference": { - "offer": "[variables('offerToUse')]", - "publisher": "f5-networks", - "sku": "[variables('skuToUse')]", - "version": "[parameters('bigIqVersion')]" - }, - "instanceName": "[toLower(parameters('instanceName'))]", - "newAvailabilitySetName": "[concat(variables('dnsLabel'), '-avset')]", - "availabilitySetName": "[replace(parameters('avSetChoice'), 'CREATE_NEW', variables('newAvailabilitySetName'))]", - "virtualNetworkName": "[parameters('vnetName')]", - "vnetId": "[resourceId(parameters('vnetResourceGroupName'),'Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", - "publicIPAddressType": "Static", - "mgmtPublicIPAddressName": "[concat(variables('dnsLabel'), '-mgmt-pip')]", - "mgmtPublicIPAddressId": "[resourceId('Microsoft.Network/publicIPAddresses', variables('mgmtPublicIPAddressName'))]", - "mgmtNsgID": "[resourceId('Microsoft.Network/networkSecurityGroups/',concat(variables('dnsLabel'),'-mgmt-nsg'))]", - "mgmtNicName": "[concat(variables('dnsLabel'), '-mgmt')]", - "mgmtSubnetName": "[parameters('mgmtSubnetName')]", - "mgmtSubnetId": "[concat(variables('vnetId'), '/subnets/', variables('mgmtSubnetName'))]", - "mgmtSubnetPrivateAddress": "[parameters('mgmtIpAddress')]", - "intNsgID": "[resourceId('Microsoft.Network/networkSecurityGroups/',concat(variables('dnsLabel'),'-int-nsg'))]", - "intNicName": "[concat(variables('dnsLabel'), '-int')]", - "intSubnetName": "[parameters('internalSubnetName')]", - "intSubnetId": "[concat(variables('vnetId'), '/subnets/', variables('intSubnetName'))]", - "intSubnetPrivateAddress": "[parameters('internalIpAddressRangeStart')]", - "intSubnetPrivateAddressPrefixArray": "[split(parameters('internalIpAddressRangeStart'), '.')]", - "intSubnetPrivateAddressPrefix": "[concat(variables('intSubnetPrivateAddressPrefixArray')[0], '.', variables('intSubnetPrivateAddressPrefixArray')[1], '.', variables('intSubnetPrivateAddressPrefixArray')[2], '.')]", - "intSubnetPrivateAddressSuffixInt": "[int(variables('intSubnetPrivateAddressPrefixArray')[3])]", - "numberOfInternalIps": "[parameters('numberOfInternalIps')]", - "tagValues": "[parameters('tagValues')]", - "newDataStorageAccountName": "[concat(uniqueString(variables('dnsLabel'), resourceGroup().id, deployment().name), 'data000')]", - "dataStorageAccountType": "Standard_LRS", - "deploymentId": "[concat(variables('subscriptionId'), resourceGroup().id, deployment().name, variables('dnsLabel'))]", - "customImage": "[replace(parameters('customImage'), 'OPTIONAL', '')]", - "useCustomImage": "[not(empty(variables('customImage')))]", - "createNewCustomImage": "[contains(variables('customImage'), 'https://')]", - "newCustomImageName": "[concat(variables('dnsLabel'), 'image')]", - "storageProfileArray": { - "customImage": { - "imageReference": { - "id": "[if(variables('createNewCustomImage'), resourceId('Microsoft.Compute/images', variables('newCustomImageName')), variables('customImage'))]" - } - }, - "platformImage": { - "imageReference": "[variables('imageReference')]", - "osDisk": { - "createOption": "FromImage" - } - } - }, - "premiumInstanceArray": [ - "Standard_DS2", - "Standard_DS3", - "Standard_DS4", - "Standard_DS11", - "Standard_DS12", - "Standard_DS13", - "Standard_DS14", - "Standard_DS2_v2", - "Standard_DS3_v2", - "Standard_DS4_v2", - "Standard_DS5_v2", - "Standard_DS11_v2", - "Standard_DS12_v2", - "Standard_DS13_v2", - "Standard_DS14_v2", - "Standard_DS15_v2", - "Standard_F2S", - "Standard_F4S", - "Standard_F8S", - "Standard_F16S", - "Standard_GS2", - "Standard_GS3", - "Standard_GS4", - "Standard_GS5" - ], - "bigiqConfigEncoded": "IyEgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMi43CgppbXBvcnQgc3VicHJvY2VzcwppbXBvcnQgcmVxdWVzdHMKaW1wb3J0IHRpbWUKaW1wb3J0IGFyZ3BhcnNlCmltcG9ydCBvcwoKIyB1c2FnZTogYmlnaXEtY29uZmlnLnB5IFstaF0KI1stLWxpY2Vuc2VrZXkgTElDRU5TRUtFWV0KI1stLW1hc3RlcmtleSBNQVNURVJLRVldCiNbLS1wZXJzb25hbGl0eSBQRVJTT05BTElUWV0gWy0taG9zdG5hbWUgSE9TVE5BTUVdCiNbLS1tYW5hZ2VtZW50SXBBZGRyZXNzIE1BTkFHRU1FTlRJUEFERFJFU1NdCiNbLS1tYW5hZ2VtZW50Um91dGVBZGRyZXNzIE1BTkFHRU1FTlRST1VURUFERFJFU1NdCiNbLS1kaXNjb3ZlcnlBZGRyZXNzIERJU0NPVkVSWUFERFJFU1NdCiNbLS10aW1lem9uZSBUSU1FWk9ORV0KI1stLW50cF9zZXJ2ZXJzIE5UUF9TRVJWRVJTIFtOVFBfU0VSVkVSUyAuLi5dXQojWy0tZG5zX3NlcnZlcnMgRE5TX1NFUlZFUlMgW0ROU19TRVJWRVJTIC4uLl1dCiNbLS11c2VyIFVTRVJdCiNbLS1wYXNzd29yZCBQQVNTV09SRF0KI1stLXV0aWxpdHkgVVRJTElUWSBMSUNFTlNFS0VZXQoKY2xhc3MgU2V0dXA6CgogICAgQkFTRV9VUkw9Imh0dHA6Ly9sb2NhbGhvc3Q6ODEwMCIKICAgIAogICAgZGVmIGdldF9hcmd1bWVudHMoc2VsZik6CiAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J1NldHVwIGEgQklHLUlRIGluIG9uZSBjb21tYW5kJykKICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWxpY2Vuc2VrZXkiLCB0eXBlPXN0ciwgaGVscD0iVGhlIGxpY2Vuc2Uga2V5IikKICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW1hc3RlcmtleSIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgbWFzdGVya2V5IHBhc3NwaHJhc2UiLCBkZWZhdWx0PSJUaGlzaXN0aGVtYXN0ZXJrZXkjMTIzNCIpCiAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1wZXJzb25hbGl0eSIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgc3lzdGVtIHBlcnNvbmFsaXR5IHtiaWdfaXEsIGxvZ2dpbmdfbm9kZX0iLCBkZWZhdWx0PSJiaWdfaXEiKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taG9zdG5hbWUiLCB0eXBlPXN0ciwgaGVscD0iVGhlIHN5c3RlbSBob3N0bmFtZSIsIGRlZmF1bHQ9ImJpZ2lxMS5jb20iKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tbWFuYWdlbWVudElwQWRkcmVzcyIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgbWFuYWdlbWVudCBJUCBhZGRyZXNzIGVnLiAxMC4xNDUuMS4xLzE2IiwgZGVmYXVsdD1Ob25lKQogICAgICAgICNwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW1hbmFnZW1lbnRSb3V0ZUFkZHJlc3MiLCB0eXBlPXN0ciwgaGVscD0iVGhlIG1hbmFnZW1lbnQgcm91dGUgYWRkcmVzcyBlZy4gMTAuMTQ1LjEuMSIsIGRlZmF1bHQ9Tm9uZSkKICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWRpc2NvdmVyeUFkZHJlc3MiLCB0eXBlPXN0ciwgaGVscD0iVGhlIGRpc2NvdmVyeSBhZGRyZXNzIGVnLiAxMC4xNDUuMS4xIiwgZGVmYXVsdD1Ob25lKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdGltZXpvbmUiLCB0eXBlPXN0ciwgaGVscD0iVGhlIHN5c3RlbSB0aW1lem9uZSIsIGRlZmF1bHQ9IkFtZXJpY2EvTG9zX0FuZ2VsZXMiKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdXNlciIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgYWRtaW4gdXNlcm5hbWUiLCBkZWZhdWx0PSJhZG1pbiIpCiAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1wYXNzd29yZCIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgYWRtaW4gcGFzc3dvcmQiLCBkZWZhdWx0PSJhZG1pbiIpCiAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tbnRwX3NlcnZlcnMiLAogICAgICAgICAgICB0eXBlPXN0ciwKICAgICAgICAgICAgbmFyZ3M9IisiLAogICAgICAgICAgICBoZWxwPSJOVFAgc2VydmVycyBhcyBhIGxpc3QsIGVnIC0tbnRwLXNlcnZlcnMgdGltZS5uaXN0LmdvdiB0aW1lLm1pY3Jvc29mdC5jb20iLAogICAgICAgICAgICBkZWZhdWx0PVsidGltZS5uaXN0LmdvdiJdCiAgICAgICAgKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLWRuc19zZXJ2ZXJzIiwKICAgICAgICAgICAgdHlwZT1zdHIsCiAgICAgICAgICAgIG5hcmdzPSIrIiwKICAgICAgICAgICAgaGVscD0iRE5TIHNlcnZlcnMgYXMgYSBsaXN0LCBlZyAtLWRucy1zZXJ2ZXJzIDguOC40LjQgOC44LjguOCA5LjkuOS45IiwKICAgICAgICAgICAgZGVmYXVsdD1bIjguOC44LjgiXQogICAgICAgICkKICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXV0aWxpdHkiLCB0eXBlPXN0ciwgaGVscD0iVXRpbGl0eSBMaWNlbnNlIEtleSIpCiAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKCkKCiAgICBkZWYgYXV0aChzZWxmLCB1c2VyLCBwYXNzd29yZCk6CiAgICAgICAgc2VsZi5zZXNzaW9uID0gcmVxdWVzdHMuc2Vzc2lvbigpCiAgICAgICAgc2VsZi5zZXNzaW9uLmF1dGggPSAoc3RyKHVzZXIpLCBzdHIocGFzc3dvcmQpKQoKICAgIGRlZiB3YWl0X2Zvcl9zZXR1cF9tb2RlKHNlbGYpOgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHByaW50KCJXYWl0aW5nIGZvciBzZXR1cCBtb2RlIikKICAgICAgICAgICAgdGltZS5zbGVlcCg1KQogICAgICAgICAgICByZXN1bHQgPSBzZWxmLnNlc3Npb24uZ2V0KFNldHVwLkJBU0VfVVJMICsgIi9pbmZvL3N5c3RlbSIpCiAgICAgICAgICAgIGlmIHJlc3VsdC5zdGF0dXNfY29kZSAhPSAyMDA6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICByZXN1bHRfanNvbiA9IHJlc3VsdC5qc29uKCkKICAgICAgICAgICAgaWYgcmVzdWx0X2pzb24uZ2V0KCJhdmFpbGFibGUiKSBhbmQgcmVzdWx0X2pzb24uZ2V0KCJpc1NldHVwZCIpOgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICBkZWYgc2V0X2xpY2Vuc2Uoc2VsZiwgbGljZW5zZV9rZXkpOgogICAgICAgIGlmIG5vdCBsaWNlbnNlX2tleToKICAgICAgICAgICAgcHJpbnQoIk5vIGxpY2Vuc2UgcHJvdmlkZWQsIHNraXBwaW5nIGxpY2Vuc2luZyIpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBwcmludCgiU2V0dGluZyBsaWNlbnNlIHRvICIgKyBzdHIobGljZW5zZV9rZXkpKQoKICAgICAgICBpZiBsaWNlbnNlX2tleSA9PSAic2tpcExpY2Vuc2U6dHJ1ZSI6CiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2Vzc2lvbi5wb3N0KAogICAgICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvbGljZW5zZSIsCiAgICAgICAgICAgICAgICBqc29uPXsKICAgICAgICAgICAgICAgICAgICAibGljZW5zZVRleHQiOiAic2tpcExpY2Vuc2U6dHJ1ZSIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIHJlc3VsdC5yYWlzZV9mb3Jfc3RhdHVzKCkKICAgICAgICAgICAgcmVzdWx0X2JvZHkgPSByZXN1bHQuanNvbigpCiAgICAgICAgICAgIHByaW50KHJlc3VsdF9ib2R5KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2Vzc2lvbi5wb3N0KAogICAgICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvbGljZW5zZS9hY3RpdmF0ZSIsCiAgICAgICAgICAgICAgICBqc29uPXsKICAgICAgICAgICAgICAgICAgICAiYmFzZVJlZ0tleSI6IGxpY2Vuc2Vfa2V5LAogICAgICAgICAgICAgICAgICAgICJhZGRPbktleXMiOltdLAogICAgICAgICAgICAgICAgICAgICJhY3RpdmF0aW9uTWV0aG9kIjoiQVVUT01BVElDIgogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgcmVzdWx0LnJhaXNlX2Zvcl9zdGF0dXMoKQogICAgICAgICAgICByZXN1bHRfYm9keSA9IHJlc3VsdC5qc29uKCkKICAgICAgICAgICAgcHJpbnQocmVzdWx0X2JvZHkpCiAgICAgICAgICAgIGlmICJORUVEX0VVTEFfQUNDRVBUIiBpbiByZXN1bHRfYm9keS5nZXQoInN0YXR1cyIpOgogICAgICAgICAgICAgICAgcHJpbnQoIkFjY2VwdGluZyBFVUxBIikKCiAgICAgICAgICAgICAgICBhY2NlcHRfZXVsYV9ib2R5ID0gewogICAgICAgICAgICAgICAgICAgICJiYXNlUmVnS2V5IjogbGljZW5zZV9rZXksCiAgICAgICAgICAgICAgICAgICAgImRvc3NpZXIiOiByZXN1bHRfYm9keS5nZXQoImRvc3NpZXIiKSwKICAgICAgICAgICAgICAgICAgICAiZXVsYVRleHQiOiByZXN1bHRfYm9keS5nZXQoImV1bGFUZXh0IikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2Vzc2lvbi5wb3N0KAogICAgICAgICAgICAgICAgICAgIFNldHVwLkJBU0VfVVJMICsgIi9tZ210L3NldHVwL2xpY2Vuc2UvYWNjZXB0LWV1bGEiLAogICAgICAgICAgICAgICAgICAgIGpzb249YWNjZXB0X2V1bGFfYm9keQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgcmVzdWx0LnJhaXNlX2Zvcl9zdGF0dXMoKQoKICAgICAgICBwcmludCgiU2F2aW5nIGxpY2Vuc2UgdG8gc2VydmljZS5jb25maWcuanNvbiIpCiAgICAgICAgc2VsZi5zZXNzaW9uLnBvc3QoCiAgICAgICAgICAgIFNldHVwLkJBU0VfVVJMICsgIi9tZ210L3NldHVwL2xpY2Vuc2UiLAogICAgICAgICAgICBqc29uPXsKICAgICAgICAgICAgICAgICJsaWNlbnNlVGV4dCI6IHJlc3VsdC5qc29uKCkuZ2V0KCJsaWNlbnNlVGV4dCIpCiAgICAgICAgICAgIH0pCgogICAgZGVmIHNldF9tYXN0ZXJrZXkoc2VsZiwgbWFzdGVya2V5KToKICAgICAgICBwcmludCgiU2V0dGluZyBtYXN0ZXIga2V5IHRvICIgKyBzdHIobWFzdGVya2V5KSkKICAgICAgICByZXN1bHQgPSBzZWxmLnNlc3Npb24ucG9zdCgKICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvbWFzdGVya2V5IiwKICAgICAgICAgICAganNvbj17CiAgICAgICAgICAgICAgICAicGFzc3BocmFzZSI6IG1hc3RlcmtleQogICAgICAgICAgICB9KQogICAgICAgIHJlc3VsdC5yYWlzZV9mb3Jfc3RhdHVzKCkKCiAgICBkZWYgc2V0X3BlcnNvbmFsaXR5KHNlbGYsIHBlcnNvbmFsaXR5KToKICAgICAgICBwcmludCgiU2V0dGluZyBwZXJzb25hbGl0eSB0byAiICsgc3RyKHBlcnNvbmFsaXR5KSkKICAgICAgICBzZWxmLnNlc3Npb24ucG9zdCgKICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvcGVyc29uYWxpdHkiLCBqc29uPXsgInN5c3RlbVBlcnNvbmFsaXR5IjogcGVyc29uYWxpdHkgfQogICAgICAgICkucmFpc2VfZm9yX3N0YXR1cygpCgogICAgZGVmIGFkZHJlc3Nlc19hcmVfdmFsaWQoc2VsZiwgYWRkcmVzc2VzKToKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBhZGRyZXNzZXMgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgIGFkZHJlc3Nlcy5nZXQoImhvc3RuYW1lIikgYW5kCiAgICAgICAgICAgIGFkZHJlc3Nlcy5nZXQoIm1hbmFnZW1lbnRJcEFkZHJlc3MiKSBhbmQKICAgICAgICAgICAgI2FkZHJlc3Nlcy5nZXQoIm1hbmFnZW1lbnRSb3V0ZUFkZHJlc3MiKSBhbmQKICAgICAgICAgICAgYWRkcmVzc2VzLmdldCgiZGlzY292ZXJ5QWRkcmVzcyIpCiAgICAgICAgKQoKICAgIGRlZiBzZXRfYWRkcmVzc2VzKHNlbGYsIGFkZHJlc3Nlcyk6CiAgICAgICAgaWYgbm90IHNlbGYuYWRkcmVzc2VzX2FyZV92YWxpZChhZGRyZXNzZXMpOgogICAgICAgICAgICBwcmludCgiTWlzc2luZyBhZGRyZXNzIGFyZ3VtZW50cywgc2tpcHBpbmcgZm9yIG5vdywgdGhpcyBpc24ndCBjcml0aWNhbCB0byBzZXR1cCIpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBwcmludCgiU2V0dGluZyBhZGRyZXNzZXMgdG8iKQogICAgICAgIGJvZHkgPSB7CiAgICAgICAgICAgICAgICAiaG9zdG5hbWUiOmFkZHJlc3Nlcy5nZXQoImhvc3RuYW1lIiksCiAgICAgICAgICAgICAgICAibWFuYWdlbWVudElwQWRkcmVzcyI6YWRkcmVzc2VzLmdldCgibWFuYWdlbWVudElwQWRkcmVzcyIpLAogICAgICAgICAgICAgICAgIyJtYW5hZ2VtZW50Um91dGVBZGRyZXNzIjphZGRyZXNzZXMuZ2V0KCJtYW5hZ2VtZW50Um91dGVBZGRyZXNzIiksCiAgICAgICAgICAgICAgICAiZGlzY292ZXJ5QWRkcmVzcyI6YWRkcmVzc2VzLmdldCgiZGlzY292ZXJ5QWRkcmVzcyIpCiAgICAgICAgICAgIH0KICAgICAgICBwcmludChib2R5KQoKICAgICAgICBzZWxmLnNlc3Npb24ucG9zdCgKICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvYWRkcmVzcyIsCiAgICAgICAgICAgIGpzb249Ym9keSkucmFpc2VfZm9yX3N0YXR1cygpCgogICAgZGVmIHNldF9zZXJ2aWNlcyhzZWxmLCBudHBfc2VydmVycywgdGltZXpvbmUsIGRuc19zZXJ2ZXJzKToKICAgICAgICBwcmludCgiU2V0dGluZyBOVFAgc2VydmVycyIpCiAgICAgICAgc2VsZi5zZXNzaW9uLnBvc3QoU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvbnRwIiwganNvbj17ICJzZXJ2ZXJzIjogbnRwX3NlcnZlcnMsICJ0aW1lem9uZSI6IHRpbWV6b25lIH0pLnJhaXNlX2Zvcl9zdGF0dXMoKQogICAgICAgIHByaW50KCJTZXR0aW5nIEROUyBzZXJ2ZXJzIikKICAgICAgICBzZWxmLnNlc3Npb24ucG9zdChTZXR1cC5CQVNFX1VSTCArICIvbWdtdC9zZXR1cC9kbnMiLCBqc29uPXsgInNlcnZlcnMiOiBkbnNfc2VydmVycywgInNlYXJjaCI6IFsgImxvY2FsaG9zdCIgXSB9KS5yYWlzZV9mb3Jfc3RhdHVzKCkKCgogICAgZGVmIGxhdW5jaF9iaWdpcShzZWxmKToKICAgICAgICBwcmludCgiTGF1bmNoaW5nIEJJRy1JUSIpCiAgICAgICAgcmVzdWx0ID0gc2VsZi5zZXNzaW9uLnBvc3QoU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvbGF1bmNoIikKICAgICAgICByZXN1bHQucmFpc2VfZm9yX3N0YXR1cygpCiAgICAgICAgc2tpcCA9IDAKICAgICAgICB0b3AgPSAxMDAKICAgICAgICB0aW1lc3RhbXAgPSByZXN1bHQuanNvbigpLmdldCgiZmlsZVRpbWVzdGFtcCIpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5zZXNzaW9uLmdldCgKICAgICAgICAgICAgICAgIFNldHVwLkJBU0VfVVJMICsgIi9tZ210L3NldHVwL2xhdW5jaC9tb25pdG9yP2RhdGV0aW1lPXtkYXRldGltZX0mdG9wPXt0b3B9JnNraXA9e3NraXB9IgogICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lPXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgdG9wPXRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgc2tpcD1za2lwCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCgogICAgICAgICAgICByZXN1bHRfanNvbiA9IHJlc3VsdC5qc29uKCkKCiAgICAgICAgICAgIGlmIHJlc3VsdF9qc29uLmdldCgic3RhdHVzIikgPT0gIkNPTVBMRVRFIjoKICAgICAgICAgICAgICAgIHByaW50KCJTZXR1cCBjb21wbGV0ZSIpCiAgICAgICAgICAgICAgICBwcmludCgiR2V0IHBnaW5pdCBhbmQgdG9rdVVwZ3JhZGUgc3RhdHVzIHdpdGgiKQogICAgICAgICAgICAgICAgcHJpbnQoInRhaWwgLWYgL3Zhci9sb2cvYm9vdHN0cmFwLSIgKyB0aW1lc3RhbXAgKyAiLioiKQogICAgICAgICAgICAgICAgcHJpbnQoIkdldCByZXN0amF2YWQgc3RhdHVzIHdpdGgiKQogICAgICAgICAgICAgICAgcHJpbnQoInJlc3RjdXJsIC9zaGFyZWQvc3lzdGVtLXN0YXJ0ZWQiKQogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIGpzb24gPSByZXN1bHQuanNvbigpCgogICAgICAgICAgICBsaW5lcyA9IHJlc3VsdC5qc29uKCkuZ2V0KCJsaW5lcyIpCiAgICAgICAgICAgIHNraXAgKz0gbGVuKGxpbmVzKQoKICAgICAgICAgICAgaWYgbGluZXM6CiAgICAgICAgICAgICAgICBwcmludCgiXG4iLmpvaW4obGluZXMpKQoKICAgICAgICAgICAgdGltZS5zbGVlcCgxKQoKICAgIGRlZiBlbmFibGVfYmFzaWNfYXV0aChzZWxmKToKICAgICAgICB3aXRoIG9wZW4oIi9ldGMvYmlnc3RhcnQvc2NyaXB0cy9zZXR1cGQiLCBtb2RlPSJyKyIpIGFzIHNldHVwZF9zY3JpcHQ6CiAgICAgICAgICAgIHByaW50KCJFbmFibGluZyBiYXNpYyBhdXRoIikKICAgICAgICAgICAgZmlsZV9jb250ZW50cyA9IHNldHVwZF9zY3JpcHQucmVhZCgpCiAgICAgICAgICAgIGZpbGVfY29udGVudHMgPSBmaWxlX2NvbnRlbnRzLnJlcGxhY2UoIiNleHBvcnQgQklHSVFfQkFTSUNfQVVUSF9FTkFCTEVEPVRydWUiLCAiZXhwb3J0IEJJR0lRX0JBU0lDX0FVVEhfRU5BQkxFRD1UcnVlIikKICAgICAgICAgICAgc2V0dXBkX3NjcmlwdC5zZWVrKDApCiAgICAgICAgICAgIHNldHVwZF9zY3JpcHQud3JpdGUoZmlsZV9jb250ZW50cykKICAgICAgICAgICAgc2V0dXBkX3NjcmlwdC50cnVuY2F0ZSgpCiAgICAgICAgcHJpbnQoIlJlc3RhcnRpbmcgc2V0dXBkIikKICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJiaWdzdGFydCIsICJyZXN0YXJ0IiwgInNldHVwZCJdKQoKICAgIGRlZiB3YWl0X2Zvcl9pbml0aWFsX2FjdGl2YXRpb24oc2VsZik6CiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgcHJpbnQoIldhaXRpbmcgZm9yIGluaXRpYWxfYWN0aXZhdGlvbiBjbGllbnQiKQogICAgICAgICAgICB0aW1lLnNsZWVwKDUpCiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2Vzc2lvbi5nZXQoU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvY20vZGV2aWNlL2xpY2Vuc2luZy9wb29sL2luaXRpYWwtYWN0aXZhdGlvbiIpCiAgICAgICAgICAgIGlmIHJlc3VsdC5zdGF0dXNfY29kZSAhPSAyMDA6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICByZXN1bHRfanNvbiA9IHJlc3VsdC5qc29uKCkKICAgICAgICAgICAgaWYgcmVzdWx0X2pzb24uZ2V0KCJzZWxmTGluayIpID09ICJodHRwczovL2xvY2FsaG9zdC9tZ210L2NtL2RldmljZS9saWNlbnNpbmcvcG9vbC9pbml0aWFsLWFjdGl2YXRpb24iOgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICBkZWYgY3JlYXRlX3V0aWxpdHlfcG9vbChzZWxmLCB1dGlsaXR5KToKICAgICAgICBpZiBub3QgdXRpbGl0eToKICAgICAgICAgICAgcHJpbnQoIk5vIGxpY2Vuc2UgcHJvdmlkZWQsIHNraXBwaW5nIGxpY2Vuc2UgcG9vbCBjcmVhdGlvbiIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHByaW50KCJBZGRpbmcgdXRpbGl0eSBsaWNlbnNlICIgKyBzdHIodXRpbGl0eSkpCiAgICAgICAgcmVzdWx0ID0gc2VsZi5zZXNzaW9uLnBvc3QoU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvY20vZGV2aWNlL2xpY2Vuc2luZy9wb29sL2luaXRpYWwtYWN0aXZhdGlvbiIsIGpzb249eyJyZWdLZXkiOiB1dGlsaXR5LCAibmFtZSI6ICJwcm9kdWN0aW9uIiwgInN0YXR1cyI6IkFDVElWQVRJTkdfQVVUT01BVElDIn0pCiAgICAgICAgcmVzdWx0LnJhaXNlX2Zvcl9zdGF0dXMoKQogICAgICAgIHJlc3VsdF9ib2R5ID0gcmVzdWx0Lmpzb24oKQogICAgICAgIHByaW50KHJlc3VsdF9ib2R5KQogICAgCiAgICBkZWYgYWN0aXZhdGVfdXRpbGl0eV9wb29sKHNlbGYsIHV0aWxpdHkpOgogICAgICAgIGlmIG5vdCB1dGlsaXR5OgogICAgICAgICAgICBwcmludCgiTm8gbGljZW5zZSBwcm92aWRlZCwgc2tpcHBpbmcgbGljZW5zZSBwb29sIGFjdGl2YXRpb24iKQogICAgICAgICAgICByZXR1cm4KICAgICAgICByZXN1bHQgPSBzZWxmLnNlc3Npb24uZ2V0KAogICAgICAgICAgICBTZXR1cC5CQVNFX1VSTCArICIvbWdtdC9jbS9kZXZpY2UvbGljZW5zaW5nL3Bvb2wvaW5pdGlhbC1hY3RpdmF0aW9uLyIgKyBzdHIodXRpbGl0eSkKICAgICAgICAgICAgKQogICAgICAgIHJlc3VsdC5yYWlzZV9mb3Jfc3RhdHVzKCkKICAgICAgICByZXN1bHRfYm9keSA9IHJlc3VsdC5qc29uKCkKICAgICAgICBldWxhX3RleHQgPSByZXN1bHRfYm9keS5nZXQoImV1bGFUZXh0IikgCiAgICAgICAgaWYgIk5FRURfRVVMQV9BQ0NFUFQiIGluIHJlc3VsdF9ib2R5LmdldCgic3RhdHVzIik6CiAgICAgICAgICAgIHByaW50KCJBY2NlcHRpbmcgRVVMQSIpCiAgICAgICAgICAgIGFjY2VwdF9ldWxhX2JvZHkgPSB7CiAgICAgICAgICAgICAgICAic3RhdHVzIjogIkFDVElWQVRJTkdfQVVUT01BVElDX0VVTEFfQUNDRVBURUQiLAogICAgICAgICAgICAgICAgImV1bGFUZXh0IjogZXVsYV90ZXh0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5zZXNzaW9uLnBhdGNoKAogICAgICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvY20vZGV2aWNlL2xpY2Vuc2luZy9wb29sL2luaXRpYWwtYWN0aXZhdGlvbi8iICsgc3RyKHV0aWxpdHkpLAogICAgICAgICAgICAgICAganNvbj1hY2NlcHRfZXVsYV9ib2R5CiAgICAgICAgICAgICkKICAgICAgICAgICAgcmVzdWx0LnJhaXNlX2Zvcl9zdGF0dXMoKQogICAgICAgICAgICByZXN1bHRfYm9keSA9IHJlc3VsdC5qc29uKCkKICAgICAgICAgICAgcHJpbnQocmVzdWx0X2JvZHkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoIkV1bGEgYWxyZWFkeSBhY2NlcHRlZCIpCiAgICAgICAgICAgIHByaW50KHJlc3VsdF9ib2R5KQoKICAgIGRlZiB2ZXJpZnlfdXRpbGl0eV9hY3RpdmF0aW9uKHNlbGYsIHV0aWxpdHkpOgogICAgICAgIGlmIG5vdCB1dGlsaXR5OgogICAgICAgICAgICBwcmludCgiTm8gbGljZW5zZSBwcm92aWRlZCwgc2tpcHBpbmcgbGljZW5zZSBwb29sIGFjdGl2YXRpb24gdmVyaWZpY2F0aW9uIikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgcmVzdWx0ID0gc2VsZi5zZXNzaW9uLmdldCgKICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvY20vZGV2aWNlL2xpY2Vuc2luZy9wb29sL2luaXRpYWwtYWN0aXZhdGlvbi8iICsgc3RyKHV0aWxpdHkpCiAgICAgICAgICAgICkKICAgICAgICByZXN1bHQucmFpc2VfZm9yX3N0YXR1cygpCiAgICAgICAgcmVzdWx0X2JvZHkgPSByZXN1bHQuanNvbigpCiAgICAgICAgaSA9IDAKICAgICAgICB3aGlsZSAiUkVBRFkiIG5vdCBpbiByZXN1bHRfYm9keS5nZXQoInN0YXR1cyIpIGFuZCBpIDwgMTIwOgogICAgICAgICAgICBpKz0xCiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2Vzc2lvbi5nZXQoCiAgICAgICAgICAgICAgICBTZXR1cC5CQVNFX1VSTCArICIvbWdtdC9jbS9kZXZpY2UvbGljZW5zaW5nL3Bvb2wvaW5pdGlhbC1hY3RpdmF0aW9uLyIgKyBzdHIodXRpbGl0eSkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgcmVzdWx0LnJhaXNlX2Zvcl9zdGF0dXMoKQogICAgICAgICAgICByZXN1bHRfYm9keSA9IHJlc3VsdC5qc29uKCkKICAgICAgICAgICAgcHJpbnQoIkxpY2Vuc2Ugbm90IHJlYWR5OiIgKyBzdHIocmVzdWx0X2JvZHkpKQogICAgICAgICAgICBwcmludCgiV2FpdGluZyBmb3IgNSBzZWNvbmRzIikKICAgICAgICAgICAgdGltZS5zbGVlcCg1KQogICAgICAgIGlmIGkgPT0gMTIwOgogICAgICAgICAgICBwcmludCgiTUFYIHRyeSdzIHJlYWNoZWQsIGV4aXRpbmciKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50KCJMaWNlbnNlIHJlYWR5OiIgKyBzdHIocmVzdWx0X2JvZHkpKQogICAgICAgICAgICBzZWxmLnRvdWNoKCIvY29uZmlnL2Nsb3VkL2NvbmZpZ19jb21wbGV0ZSIpCgogICAgZGVmIHRvdWNoKHNlbGYsIHBhdGgpOgogICAgICAgIHdpdGggb3BlbihwYXRoLCAnYScpOgogICAgICAgICAgICBvcy51dGltZShwYXRoLCBOb25lKQoKICAgIGRlZiBtYWluKHNlbGYpOgogICAgICAgIGFyZ3MgPSBzZWxmLmdldF9hcmd1bWVudHMoKQogICAgICAgIHRpbWUuc2xlZXAoMTgwKQogICAgICAgIHByaW50KCJSdW5uaW5nIEJJR0lRIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGVzZSBhcmd1bWVudHMiKQogICAgICAgIHByaW50KGFyZ3MpCiAgICAgICAgc2VsZi5lbmFibGVfYmFzaWNfYXV0aCgpCiAgICAgICAgdGltZS5zbGVlcCg1KQogICAgICAgIHNlbGYuYXV0aChhcmdzLnVzZXIsYXJncy5wYXNzd29yZCkKICAgICAgICB0aW1lLnNsZWVwKDUpCiAgICAgICAgc2VsZi53YWl0X2Zvcl9zZXR1cF9tb2RlKCkKICAgICAgICBzZWxmLnNldF9saWNlbnNlKGFyZ3MubGljZW5zZWtleSkKICAgICAgICBzZWxmLnNldF9tYXN0ZXJrZXkoYXJncy5tYXN0ZXJrZXkpCiAgICAgICAgc2VsZi5zZXRfcGVyc29uYWxpdHkoYXJncy5wZXJzb25hbGl0eSkKICAgICAgICBzZWxmLnNldF9hZGRyZXNzZXMoewogICAgICAgICAgICAgICAgImhvc3RuYW1lIjogYXJncy5ob3N0bmFtZSwKICAgICAgICAgICAgICAgICJtYW5hZ2VtZW50SXBBZGRyZXNzIjogYXJncy5tYW5hZ2VtZW50SXBBZGRyZXNzLAogICAgICAgICAgICAgICAgIyJtYW5hZ2VtZW50Um91dGVBZGRyZXNzIjogYXJncy5tYW5hZ2VtZW50Um91dGVBZGRyZXNzLAogICAgICAgICAgICAgICAgImRpc2NvdmVyeUFkZHJlc3MiOiBhcmdzLmRpc2NvdmVyeUFkZHJlc3MKICAgICAgICAgICAgfSkKICAgICAgICBzZWxmLnNldF9zZXJ2aWNlcyhudHBfc2VydmVycz1hcmdzLm50cF9zZXJ2ZXJzLCB0aW1lem9uZT1hcmdzLnRpbWV6b25lLCBkbnNfc2VydmVycz1hcmdzLmRuc19zZXJ2ZXJzKQogICAgICAgIHNlbGYubGF1bmNoX2JpZ2lxKCkKICAgICAgICB0aW1lLnNsZWVwKDEyMCkKICAgICAgICBzZWxmLmVuYWJsZV9iYXNpY19hdXRoKCkKICAgICAgICBzZWxmLmF1dGgoYXJncy51c2VyLGFyZ3MucGFzc3dvcmQpCiAgICAgICAgdGltZS5zbGVlcCgxNSkKICAgICAgICBzZWxmLndhaXRfZm9yX2luaXRpYWxfYWN0aXZhdGlvbigpCiAgICAgICAgdGltZS5zbGVlcCgxNSkKICAgICAgICBzZWxmLmNyZWF0ZV91dGlsaXR5X3Bvb2woYXJncy51dGlsaXR5KQogICAgICAgIHRpbWUuc2xlZXAoMTUpCiAgICAgICAgc2VsZi5hY3RpdmF0ZV91dGlsaXR5X3Bvb2woYXJncy51dGlsaXR5KQogICAgICAgIHNlbGYudmVyaWZ5X3V0aWxpdHlfYWN0aXZhdGlvbihhcmdzLnV0aWxpdHkpCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgc2V0dXAgPSBTZXR1cCgpCiAgICBzZXR1cC5tYWluKCk=", - "customConfig": "### START (INPUT) CUSTOM CONFIGURATION HERE\n", - "installCustomConfig": "[concat(variables('singleQuote'), '#!/bin/bash\n', variables('customConfig'), variables('singleQuote'))]" - }, - "resources": [ - { - "apiVersion": "[variables('networkApiVersion')]", - "location": "[variables('location')]", - "name": "[variables('mgmtPublicIPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('dnsLabel')]" - }, - "idleTimeoutInMinutes": 30, - "publicIPAllocationMethod": "[variables('publicIPAddressType')]" - }, - "tags": "[if(empty(variables('tagValues')), json('null'), variables('tagValues'))]", - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('networkApiVersion')]", - "dependsOn": [ - "[variables('mgmtPublicIPAddressId')]", - "[variables('mgmtNsgID')]" - ], - "location": "[variables('location')]", - "name": "[variables('mgmtNicName')]", - "properties": { - "ipConfigurations": [ - { - "name": "[concat(variables('instanceName'), '-ipconfig1')]", - "properties": { - "PublicIpAddress": { - "Id": "[variables('mgmtPublicIPAddressId')]" - }, - "privateIPAddress": "[variables('mgmtSubnetPrivateAddress')]", - "privateIPAllocationMethod": "Static", - "subnet": { - "id": "[variables('mgmtSubnetId')]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[variables('mgmtNsgID')]" - } - }, - "tags": "[if(empty(variables('tagValues')), json('null'), variables('tagValues'))]", - "type": "Microsoft.Network/networkInterfaces" - }, - { - "apiVersion": "[variables('networkApiVersion')]", - "dependsOn": [ - "[variables('intNsgID')]" - ], - "location": "[variables('location')]", - "name": "[variables('intNicName')]", - "properties": { - "copy": [ - { - "count": "[add(variables('numberOfInternalIps'), 1)]", - "input": { - "name": "[if(equals(copyIndex('ipConfigurations', 1), 1), concat(variables('instanceName'), '-self-ipconfig'), concat(variables('resourceGroupName'), '-int-ipconfig', sub(copyIndex('ipConfigurations', 1), 2)))]", - "properties": { - "primary": "[if(equals(copyIndex('ipConfigurations', 1), 1), 'True', 'False')]", - "privateIPAddress": "[if(equals(copyIndex('ipConfigurations', 1), 1), variables('intSubnetPrivateAddress'), concat(variables('intSubnetPrivateAddressPrefix'), add(variables('intSubnetPrivateAddressSuffixInt'), sub(copyIndex('ipConfigurations', 1), 1))))]", - "privateIPAllocationMethod": "Static", - "subnet": { - "id": "[variables('intSubnetId')]" - } - } - }, - "name": "ipConfigurations" - } - ], - "networkSecurityGroup": { - "id": "[concat(variables('intNsgID'))]" - } - }, - "tags": "[if(empty(variables('tagValues')), json('null'), variables('tagValues'))]", - "type": "Microsoft.Network/networkInterfaces" - }, - { - "apiVersion": "[variables('networkApiVersion')]", - "location": "[variables('location')]", - "name": "[concat(variables('dnsLabel'), '-mgmt-nsg')]", - "properties": { - "securityRules": [ - { - "name": "mgmt_allow_https", - "properties": { - "access": "Allow", - "description": "", - "destinationAddressPrefix": "*", - "destinationPortRange": "443", - "direction": "Inbound", - "priority": 101, - "protocol": "Tcp", - "sourceAddressPrefix": "[parameters('restrictedSrcAddress')]", - "sourcePortRange": "*" - } - }, - { - "name": "allow_ssh_22", - "properties": { - "access": "Allow", - "description": "", - "destinationAddressPrefix": "*", - "destinationPortRange": "22", - "direction": "Inbound", - "priority": 102, - "protocol": "Tcp", - "sourceAddressPrefix": "[parameters('restrictedSrcAddress')]", - "sourcePortRange": "*" - } - } - ] - }, - "tags": "[if(empty(variables('tagValues')), json('null'), variables('tagValues'))]", - "type": "Microsoft.Network/networkSecurityGroups" - }, - { - "apiVersion": "[variables('networkApiVersion')]", - "location": "[variables('location')]", - "name": "[concat(variables('dnsLabel'), '-int-nsg')]", - "properties": { - "securityRules": [ - { - "name": "int_allow_https", - "properties": { - "access": "Allow", - "description": "", - "destinationAddressPrefix": "*", - "destinationPortRange": "443", - "direction": "Inbound", - "priority": 101, - "protocol": "Tcp", - "sourceAddressPrefix": "[parameters('restrictedSrcAddressApp')]", - "sourcePortRange": "*" - } - }, - { - "name": "int_allow_ssh_22", - "properties": { - "access": "Allow", - "description": "", - "destinationAddressPrefix": "*", - "destinationPortRange": "22", - "direction": "Inbound", - "priority": 102, - "protocol": "Tcp", - "sourceAddressPrefix": "[parameters('restrictedSrcAddressApp')]", - "sourcePortRange": "*" - } - } - ] - }, - "tags": "[if(empty(variables('tagValues')), json('null'), variables('tagValues'))]", - "type": "Microsoft.Network/networkSecurityGroups" - }, - { - "apiVersion": "[variables('computeApiVersion')]", - "condition": "[equals(toUpper(parameters('avSetChoice')), 'CREATE_NEW')]", - "location": "[variables('location')]", - "name": "[variables('availabilitySetName')]", - "properties": { - "PlatformFaultDomainCount": 2, - "PlatformUpdateDomainCount": 2 - }, - "sku": { - "name": "Aligned" - }, - "tags": "[if(empty(variables('tagValues')), json('null'), variables('tagValues'))]", - "type": "Microsoft.Compute/availabilitySets" - }, - { - "apiVersion": "[variables('storageApiVersion')]", - "kind": "Storage", - "location": "[variables('location')]", - "name": "[variables('newDataStorageAccountName')]", - "properties": { - "supportsHttpsTrafficOnly": true - }, - "sku": { - "name": "[variables('dataStorageAccountType')]", - "tier": "Standard" - }, - "tags": "[if(empty(variables('tagValues')), json('null'), variables('tagValues'))]", - "type": "Microsoft.Storage/storageAccounts" - }, - { - "apiVersion": "[variables('computeApiVersion')]", - "condition": "[and(variables('useCustomImage'), variables('createNewCustomImage'))]", - "location": "[variables('location')]", - "name": "[variables('newCustomImageName')]", - "properties": { - "storageProfile": { - "osDisk": { - "blobUri": "[variables('customImage')]", - "osState": "Generalized", - "osType": "Linux", - "storageAccountType": "[if(contains(variables('premiumInstanceArray'), parameters('instanceType')), 'Premium_LRS', 'Standard_LRS')]" - } - } - }, - "tags": "[if(empty(variables('tagValues')), json('null'), variables('tagValues'))]", - "type": "Microsoft.Compute/images" - }, - { - "apiVersion": "[variables('computeApiVersion')]", - "dependsOn": [ - "[concat('Microsoft.Storage/storageAccounts/', variables('newDataStorageAccountName'))]", - "[concat('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]", - "[variables('newCustomImageName')]", - "[concat('Microsoft.Network/networkInterfaces/', variables('mgmtNicName'))]", - "[concat('Microsoft.Network/networkInterfaces/', variables('intNicName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('instanceName')]", - "plan": "[if(variables('useCustomImage'), json('null'), variables('imagePlan'))]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('availabilitySetName'))]" - }, - "diagnosticsProfile": { - "bootDiagnostics": { - "enabled": true, - "storageUri": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('newDataStorageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).primaryEndpoints.blob]" - } - }, - "hardwareProfile": { - "vmSize": "[parameters('instanceType')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('mgmtNicName'))]", - "properties": { - "primary": true - } - }, - { - "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('intNicName'))]", - "properties": { - "primary": false - } - } - ] - }, - "osProfile": { - "adminPassword": "[variables('adminPassword')]", - "adminUsername": "[parameters('adminUsername')]", - "computerName": "[variables('instanceName')]", - "linuxConfiguration": "[json('null')]" - }, - "storageProfile": "[if(variables('useCustomImage'), variables('storageProfileArray').customImage, variables('storageProfileArray').platformImage)]" - }, - "tags": "[if(empty(variables('tagValues')), json('null'), variables('tagValues'))]", - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('computeApiVersion')]", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('instanceName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('instanceName'),'/start')]", - "properties": { - "protectedSettings": { - "commandToExecute": "[concat('mkdir -p /var/log/cloud/azure; mkdir -p /config/cloud; set-basic-auth on; echo ', variables('bigiqConfigEncoded'), ' | /usr/bin/base64 -d > /config/cloud/bigiqConfigEncoded.sh; chmod +x /config/cloud/bigiqConfigEncoded.sh;', ' /config/cloud/bigiqConfigEncoded.sh --licensekey ', parameters('bigIqLicenseKey1'), ' --ntp_servers ', parameters('ntpServer'), ' --timezone ', parameters('timeZone'), ' --utility ', parameters('licensePoolKeys'), ' --password ', variables('adminPassword'), ' --masterkey ', parameters('masterKey'), ' &>> /var/log/cloud/azure/install.log &')]" - }, - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0" - }, - "tags": "[if(empty(variables('tagValues')), json('null'), variables('tagValues'))]", - "type": "Microsoft.Compute/virtualMachines/extensions" - } - ], - "outputs": { - "GUI-URL": { - "type": "string", - "value": "[concat('https://', reference(variables('mgmtPublicIPAddressId')).dnsSettings.fqdn, ':', 443)]" - }, - "SSH-URL": { - "type": "string", - "value": "[concat(reference(variables('mgmtPublicIPAddressId')).dnsSettings.fqdn, ' ',22)]" - }, - "bigiqIp": { - "type": "string", - "value": "[reference(variables('mgmtPublicIPAddressName')).ipAddress]" - } - } -} \ No newline at end of file diff --git a/automated-test-scripts/common/azure-environment.json b/automated-test-scripts/common/azure-environment.json deleted file mode 100644 index 02da9c37e7..0000000000 --- a/automated-test-scripts/common/azure-environment.json +++ /dev/null @@ -1,253 +0,0 @@ -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", - "contentVersion": "7.2.0.0", - "parameters": { - "deployBigiq": { - "defaultValue": "No", - "allowedValues": [ - "Yes", - "No" - ], - "metadata": { - "description": "Are you deploying a BIG-IQ?" - }, - "type": "string" - }, - "deployGtm": { - "defaultValue": "No", - "allowedValues": [ - "Yes", - "No" - ], - "metadata": { - "description": "Are you deploying a GTM?" - }, - "type": "string" - }, - "deployRouter": { - "defaultValue": "No", - "allowedValues": [ - "Yes", - "No" - ], - "metadata": { - "description": "Are you deploying a router and peered vNet?" - }, - "type": "string" - }, - "dnsLabel": { - "defaultValue": "", - "metadata": { - "description": "Unique DNS Name for the Public IP address used to access the Virtual Machine." - }, - "type": "string" - }, - "stackType": { - "type": "string", - "defaultValue": "existing-stack", - "metadata": { - "description": "Type of stack used by the dewdrop test." - }, - "allowedValues": [ - "existing-stack", - "production-stack", - "new-stack" - ] - }, - "vnetResourceGroupName": { - "type": "string", - "defaultValue": "NOT_SPECIFIED", - "metadata": { - "description": "Resource group where to deploy virtual network." - } - }, - "bastionSshKey": { - "metadata": { - "description": "SSH public key to login to the bastion host" - }, - "type": "securestring" - }, - "bigiqPassword": { - "metadata": { - "description": "Password to login to the BIG-IQ." - }, - "type": "securestring" - }, - "gtmPassword": { - "metadata": { - "description": "Password to login to the GTM." - }, - "type": "securestring" - }, - "routerPassword": { - "metadata": { - "description": "Password to login to the LTM." - }, - "type": "securestring" - }, - "bigiqLicenseKey": { - "defaultValue": "", - "metadata": { - "description": "The license token for the BIG-IQ." - }, - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "gtmLicenseKey": { - "defaultValue": "", - "metadata": { - "description": "The license token for the GTM." - }, - "type": "string" - }, - "routerLicenseKey": { - "defaultValue": "", - "metadata": { - "description": "The license token for the LTM." - }, - "type": "string" - }, - "licensePoolKeys": { - "defaultValue": "Do_Not_Create", - "metadata": { - "description": "Enter a pool name and registration key using the format of name:key. Leave Do_Not_Create if you do not want to create a licensing pool on BIG-IQ at this time." - }, - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "variables": { - "deploymentApiVersion": "2017-05-10", - "resourceGroupName": "[resourceGroup().name]", - "vnetResourceGroupName": "[if(equals(parameters('vnetResourceGroupName'), 'NOT_SPECIFIED'), variables('resourceGroupName'), parameters('vnetResourceGroupName'))]", - "dnsLabelBigiq": "[concat(parameters('dnsLabel'), '-bigiq')]", - "dnsLabelRouter": "[concat(parameters('dnsLabel'), '-router')]", - "dnsLabelGtm": "[concat(parameters('dnsLabel'), '-dns')]" - }, - "resources": [ - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "[variables('deploymentApiVersion')]", - "name": "networkTemplate", - "resourceGroup": "[variables('vnetResourceGroupName')]", - "properties": { - "mode": "Incremental", - "templateLink": { - "uri": "https://s3.amazonaws.com/f5-cft/QA/azure-vnet-bastion.json", - "contentVersion": "1.0.0.0" - }, - "parameters": { - "stackType":{ "value": "[parameters('stackType')]" }, - "adminKey":{ "value": "[parameters('bastionSshKey')]" }, - "routeTableName":{ "value": "[concat(parameters('dnsLabel'), '-rt')]"} - } - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "[variables('deploymentApiVersion')]", - "condition": "[equals(parameters('deployBigiq'), 'Yes')]", - "dependsOn": [ - "networkTemplate" - ], - "name": "bigiqTemplate", - "properties": { - "mode": "Incremental", - "templateLink": { - "uri": "https://s3.amazonaws.com/f5-cft/QA/azure-bigiq-standalone-2.0.json", - "contentVersion": "5.3.0.0" - }, - "parameters": { - "adminPassword":{ "value": "[parameters('bigiqPassword')]" }, - "dnsLabel":{ "value": "[variables('dnsLabelBigiq')]" }, - "bigiqLicenseKey1":{ "value": "[parameters('bigiqLicenseKey')]" }, - "licensePoolKeys":{ "value": "[parameters('licensePoolKeys')]" }, - "vnetResourceGroupName":{ "value": "[variables('resourceGroupName')]" } - } - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "[variables('deploymentApiVersion')]", - "condition": "[equals(parameters('deployGtm'), 'Yes')]", - "dependsOn": [ - "networkTemplate" - ], - "name": "gtmTemplate", - "properties": { - "mode": "Incremental", - "templateLink": { - "uri": "https://s3.amazonaws.com/f5-cft/QA/azure-gtm.json", - "contentVersion": "6.0.4.0" - }, - "parameters": { - "adminPasswordOrKey":{ "value": "[parameters('gtmPassword')]" }, - "dnsLabel":{ "value": "[variables('dnsLabelGtm')]" }, - "licenseKey1":{ "value": "[parameters('gtmLicenseKey')]" }, - "vnetResourceGroupName":{ "value": "[variables('resourceGroupName')]" } - } - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "[variables('deploymentApiVersion')]", - "condition": "[equals(parameters('deployRouter'), 'Yes')]", - "dependsOn": [ - "networkTemplate" - ], - "name": "routerTemplate", - "properties": { - "mode": "Incremental", - "templateLink": { - "uri": "https://s3.amazonaws.com/f5-cft/QA/azure-vnet-peer.json", - "contentVersion": "7.2.0.0" - }, - "parameters": { - "adminPasswordOrKey":{ "value": "[parameters('routerPassword')]" }, - "dnsLabel":{ "value": "[variables('dnsLabelRouter')]" }, - "licenseKey1":{ "value": "[parameters('routerLicenseKey')]" }, - "vnetResourceGroupName":{ "value": "[variables('resourceGroupName')]" } - } - } - } - ], - "outputs": { - "bastionIp": { - "condition": "[equals(parameters('stackType'),'production-stack')]", - "type": "string", - "value": "[reference('networkTemplate').outputs.bastionIp.value]" - }, - "gtmGui": { - "condition": "[equals(parameters('deployGtm'), 'Yes')]", - "type": "string", - "value": "[reference('gtmTemplate').outputs['GUI-URL'].value]" - }, - "gtmSsh": { - "condition": "[equals(parameters('deployGtm'), 'Yes')]", - "type": "string", - "value": "[reference('gtmTemplate').outputs['SSH-URL'].value]" - }, - "gtmIp": { - "condition": "[equals(parameters('deployGtm'), 'Yes')]", - "type": "string", - "value": "[reference('gtmTemplate').outputs.gtmIp.value]" - }, - "bigiqGui": { - "condition": "[equals(parameters('deployBigiq'), 'Yes')]", - "type": "string", - "value": "[reference('bigiqTemplate').outputs['GUI-URL'].value]" - }, - "bigiqSsh": { - "condition": "[equals(parameters('deployBigiq'), 'Yes')]", - "type": "string", - "value": "[reference('bigiqTemplate').outputs['SSH-URL'].value]" - }, - "bigiqIp": { - "condition": "[equals(parameters('deployBigiq'), 'Yes')]", - "type": "string", - "value": "[reference('bigiqTemplate').outputs.bigiqIp.value]" - } - } -} \ No newline at end of file diff --git a/automated-test-scripts/common/bigiq_config.base64 b/automated-test-scripts/common/bigiq_config.base64 deleted file mode 100644 index ce84a4293d..0000000000 --- a/automated-test-scripts/common/bigiq_config.base64 +++ /dev/null @@ -1 +0,0 @@ -IyEgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMi43CgppbXBvcnQgc3VicHJvY2VzcwppbXBvcnQgcmVxdWVzdHMKaW1wb3J0IHRpbWUKaW1wb3J0IGFyZ3BhcnNlCmltcG9ydCBvcwoKIyB1c2FnZTogYmlnaXEtY29uZmlnLnB5IFstaF0KI1stLWxpY2Vuc2VrZXkgTElDRU5TRUtFWV0KI1stLW1hc3RlcmtleSBNQVNURVJLRVldCiNbLS1wZXJzb25hbGl0eSBQRVJTT05BTElUWV0gWy0taG9zdG5hbWUgSE9TVE5BTUVdCiNbLS1tYW5hZ2VtZW50SXBBZGRyZXNzIE1BTkFHRU1FTlRJUEFERFJFU1NdCiNbLS1tYW5hZ2VtZW50Um91dGVBZGRyZXNzIE1BTkFHRU1FTlRST1VURUFERFJFU1NdCiNbLS1kaXNjb3ZlcnlBZGRyZXNzIERJU0NPVkVSWUFERFJFU1NdCiNbLS10aW1lem9uZSBUSU1FWk9ORV0KI1stLW50cF9zZXJ2ZXJzIE5UUF9TRVJWRVJTIFtOVFBfU0VSVkVSUyAuLi5dXQojWy0tZG5zX3NlcnZlcnMgRE5TX1NFUlZFUlMgW0ROU19TRVJWRVJTIC4uLl1dCiNbLS11c2VyIFVTRVJdCiNbLS1wYXNzd29yZCBQQVNTV09SRF0KI1stLXV0aWxpdHkgVVRJTElUWSBMSUNFTlNFS0VZXQoKY2xhc3MgU2V0dXA6CgogICAgQkFTRV9VUkw9Imh0dHA6Ly9sb2NhbGhvc3Q6ODEwMCIKICAgIAogICAgZGVmIGdldF9hcmd1bWVudHMoc2VsZik6CiAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J1NldHVwIGEgQklHLUlRIGluIG9uZSBjb21tYW5kJykKICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWxpY2Vuc2VrZXkiLCB0eXBlPXN0ciwgaGVscD0iVGhlIGxpY2Vuc2Uga2V5IikKICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW1hc3RlcmtleSIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgbWFzdGVya2V5IHBhc3NwaHJhc2UiLCBkZWZhdWx0PSJUaGlzaXN0aGVtYXN0ZXJrZXkjMTIzNCIpCiAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1wZXJzb25hbGl0eSIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgc3lzdGVtIHBlcnNvbmFsaXR5IHtiaWdfaXEsIGxvZ2dpbmdfbm9kZX0iLCBkZWZhdWx0PSJiaWdfaXEiKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taG9zdG5hbWUiLCB0eXBlPXN0ciwgaGVscD0iVGhlIHN5c3RlbSBob3N0bmFtZSIsIGRlZmF1bHQ9ImJpZ2lxMS5jb20iKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tbWFuYWdlbWVudElwQWRkcmVzcyIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgbWFuYWdlbWVudCBJUCBhZGRyZXNzIGVnLiAxMC4xNDUuMS4xLzE2IiwgZGVmYXVsdD1Ob25lKQogICAgICAgICNwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW1hbmFnZW1lbnRSb3V0ZUFkZHJlc3MiLCB0eXBlPXN0ciwgaGVscD0iVGhlIG1hbmFnZW1lbnQgcm91dGUgYWRkcmVzcyBlZy4gMTAuMTQ1LjEuMSIsIGRlZmF1bHQ9Tm9uZSkKICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWRpc2NvdmVyeUFkZHJlc3MiLCB0eXBlPXN0ciwgaGVscD0iVGhlIGRpc2NvdmVyeSBhZGRyZXNzIGVnLiAxMC4xNDUuMS4xIiwgZGVmYXVsdD1Ob25lKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdGltZXpvbmUiLCB0eXBlPXN0ciwgaGVscD0iVGhlIHN5c3RlbSB0aW1lem9uZSIsIGRlZmF1bHQ9IkFtZXJpY2EvTG9zX0FuZ2VsZXMiKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdXNlciIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgYWRtaW4gdXNlcm5hbWUiLCBkZWZhdWx0PSJhZG1pbiIpCiAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1wYXNzd29yZCIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgYWRtaW4gcGFzc3dvcmQiLCBkZWZhdWx0PSJhZG1pbiIpCiAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tbnRwX3NlcnZlcnMiLAogICAgICAgICAgICB0eXBlPXN0ciwKICAgICAgICAgICAgbmFyZ3M9IisiLAogICAgICAgICAgICBoZWxwPSJOVFAgc2VydmVycyBhcyBhIGxpc3QsIGVnIC0tbnRwLXNlcnZlcnMgdGltZS5uaXN0LmdvdiB0aW1lLm1pY3Jvc29mdC5jb20iLAogICAgICAgICAgICBkZWZhdWx0PVsidGltZS5uaXN0LmdvdiJdCiAgICAgICAgKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLWRuc19zZXJ2ZXJzIiwKICAgICAgICAgICAgdHlwZT1zdHIsCiAgICAgICAgICAgIG5hcmdzPSIrIiwKICAgICAgICAgICAgaGVscD0iRE5TIHNlcnZlcnMgYXMgYSBsaXN0LCBlZyAtLWRucy1zZXJ2ZXJzIDguOC40LjQgOC44LjguOCA5LjkuOS45IiwKICAgICAgICAgICAgZGVmYXVsdD1bIjguOC44LjgiXQogICAgICAgICkKICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXV0aWxpdHkiLCB0eXBlPXN0ciwgaGVscD0iVXRpbGl0eSBMaWNlbnNlIEtleSIpCiAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKCkKCiAgICBkZWYgYXV0aChzZWxmLCB1c2VyLCBwYXNzd29yZCk6CiAgICAgICAgc2VsZi5zZXNzaW9uID0gcmVxdWVzdHMuc2Vzc2lvbigpCiAgICAgICAgc2VsZi5zZXNzaW9uLmF1dGggPSAoc3RyKHVzZXIpLCBzdHIocGFzc3dvcmQpKQoKICAgIGRlZiB3YWl0X2Zvcl9zZXR1cF9tb2RlKHNlbGYpOgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHByaW50KCJXYWl0aW5nIGZvciBzZXR1cCBtb2RlIikKICAgICAgICAgICAgdGltZS5zbGVlcCg1KQogICAgICAgICAgICByZXN1bHQgPSBzZWxmLnNlc3Npb24uZ2V0KFNldHVwLkJBU0VfVVJMICsgIi9pbmZvL3N5c3RlbSIpCiAgICAgICAgICAgIGlmIHJlc3VsdC5zdGF0dXNfY29kZSAhPSAyMDA6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICByZXN1bHRfanNvbiA9IHJlc3VsdC5qc29uKCkKICAgICAgICAgICAgaWYgcmVzdWx0X2pzb24uZ2V0KCJhdmFpbGFibGUiKSBhbmQgcmVzdWx0X2pzb24uZ2V0KCJpc1NldHVwZCIpOgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICBkZWYgc2V0X2xpY2Vuc2Uoc2VsZiwgbGljZW5zZV9rZXkpOgogICAgICAgIGlmIG5vdCBsaWNlbnNlX2tleToKICAgICAgICAgICAgcHJpbnQoIk5vIGxpY2Vuc2UgcHJvdmlkZWQsIHNraXBwaW5nIGxpY2Vuc2luZyIpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBwcmludCgiU2V0dGluZyBsaWNlbnNlIHRvICIgKyBzdHIobGljZW5zZV9rZXkpKQoKICAgICAgICBpZiBsaWNlbnNlX2tleSA9PSAic2tpcExpY2Vuc2U6dHJ1ZSI6CiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2Vzc2lvbi5wb3N0KAogICAgICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvbGljZW5zZSIsCiAgICAgICAgICAgICAgICBqc29uPXsKICAgICAgICAgICAgICAgICAgICAibGljZW5zZVRleHQiOiAic2tpcExpY2Vuc2U6dHJ1ZSIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIHJlc3VsdC5yYWlzZV9mb3Jfc3RhdHVzKCkKICAgICAgICAgICAgcmVzdWx0X2JvZHkgPSByZXN1bHQuanNvbigpCiAgICAgICAgICAgIHByaW50KHJlc3VsdF9ib2R5KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2Vzc2lvbi5wb3N0KAogICAgICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvbGljZW5zZS9hY3RpdmF0ZSIsCiAgICAgICAgICAgICAgICBqc29uPXsKICAgICAgICAgICAgICAgICAgICAiYmFzZVJlZ0tleSI6IGxpY2Vuc2Vfa2V5LAogICAgICAgICAgICAgICAgICAgICJhZGRPbktleXMiOltdLAogICAgICAgICAgICAgICAgICAgICJhY3RpdmF0aW9uTWV0aG9kIjoiQVVUT01BVElDIgogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgcmVzdWx0LnJhaXNlX2Zvcl9zdGF0dXMoKQogICAgICAgICAgICByZXN1bHRfYm9keSA9IHJlc3VsdC5qc29uKCkKICAgICAgICAgICAgcHJpbnQocmVzdWx0X2JvZHkpCiAgICAgICAgICAgIGlmICJORUVEX0VVTEFfQUNDRVBUIiBpbiByZXN1bHRfYm9keS5nZXQoInN0YXR1cyIpOgogICAgICAgICAgICAgICAgcHJpbnQoIkFjY2VwdGluZyBFVUxBIikKCiAgICAgICAgICAgICAgICBhY2NlcHRfZXVsYV9ib2R5ID0gewogICAgICAgICAgICAgICAgICAgICJiYXNlUmVnS2V5IjogbGljZW5zZV9rZXksCiAgICAgICAgICAgICAgICAgICAgImRvc3NpZXIiOiByZXN1bHRfYm9keS5nZXQoImRvc3NpZXIiKSwKICAgICAgICAgICAgICAgICAgICAiZXVsYVRleHQiOiByZXN1bHRfYm9keS5nZXQoImV1bGFUZXh0IikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2Vzc2lvbi5wb3N0KAogICAgICAgICAgICAgICAgICAgIFNldHVwLkJBU0VfVVJMICsgIi9tZ210L3NldHVwL2xpY2Vuc2UvYWNjZXB0LWV1bGEiLAogICAgICAgICAgICAgICAgICAgIGpzb249YWNjZXB0X2V1bGFfYm9keQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgcmVzdWx0LnJhaXNlX2Zvcl9zdGF0dXMoKQoKICAgICAgICBwcmludCgiU2F2aW5nIGxpY2Vuc2UgdG8gc2VydmljZS5jb25maWcuanNvbiIpCiAgICAgICAgc2VsZi5zZXNzaW9uLnBvc3QoCiAgICAgICAgICAgIFNldHVwLkJBU0VfVVJMICsgIi9tZ210L3NldHVwL2xpY2Vuc2UiLAogICAgICAgICAgICBqc29uPXsKICAgICAgICAgICAgICAgICJsaWNlbnNlVGV4dCI6IHJlc3VsdC5qc29uKCkuZ2V0KCJsaWNlbnNlVGV4dCIpCiAgICAgICAgICAgIH0pCgogICAgZGVmIHNldF9tYXN0ZXJrZXkoc2VsZiwgbWFzdGVya2V5KToKICAgICAgICBwcmludCgiU2V0dGluZyBtYXN0ZXIga2V5IHRvICIgKyBzdHIobWFzdGVya2V5KSkKICAgICAgICByZXN1bHQgPSBzZWxmLnNlc3Npb24ucG9zdCgKICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvbWFzdGVya2V5IiwKICAgICAgICAgICAganNvbj17CiAgICAgICAgICAgICAgICAicGFzc3BocmFzZSI6IG1hc3RlcmtleQogICAgICAgICAgICB9KQogICAgICAgIHJlc3VsdC5yYWlzZV9mb3Jfc3RhdHVzKCkKCiAgICBkZWYgc2V0X3BlcnNvbmFsaXR5KHNlbGYsIHBlcnNvbmFsaXR5KToKICAgICAgICBwcmludCgiU2V0dGluZyBwZXJzb25hbGl0eSB0byAiICsgc3RyKHBlcnNvbmFsaXR5KSkKICAgICAgICBzZWxmLnNlc3Npb24ucG9zdCgKICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvcGVyc29uYWxpdHkiLCBqc29uPXsgInN5c3RlbVBlcnNvbmFsaXR5IjogcGVyc29uYWxpdHkgfQogICAgICAgICkucmFpc2VfZm9yX3N0YXR1cygpCgogICAgZGVmIGFkZHJlc3Nlc19hcmVfdmFsaWQoc2VsZiwgYWRkcmVzc2VzKToKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBhZGRyZXNzZXMgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgIGFkZHJlc3Nlcy5nZXQoImhvc3RuYW1lIikgYW5kCiAgICAgICAgICAgIGFkZHJlc3Nlcy5nZXQoIm1hbmFnZW1lbnRJcEFkZHJlc3MiKSBhbmQKICAgICAgICAgICAgI2FkZHJlc3Nlcy5nZXQoIm1hbmFnZW1lbnRSb3V0ZUFkZHJlc3MiKSBhbmQKICAgICAgICAgICAgYWRkcmVzc2VzLmdldCgiZGlzY292ZXJ5QWRkcmVzcyIpCiAgICAgICAgKQoKICAgIGRlZiBzZXRfYWRkcmVzc2VzKHNlbGYsIGFkZHJlc3Nlcyk6CiAgICAgICAgaWYgbm90IHNlbGYuYWRkcmVzc2VzX2FyZV92YWxpZChhZGRyZXNzZXMpOgogICAgICAgICAgICBwcmludCgiTWlzc2luZyBhZGRyZXNzIGFyZ3VtZW50cywgc2tpcHBpbmcgZm9yIG5vdywgdGhpcyBpc24ndCBjcml0aWNhbCB0byBzZXR1cCIpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBwcmludCgiU2V0dGluZyBhZGRyZXNzZXMgdG8iKQogICAgICAgIGJvZHkgPSB7CiAgICAgICAgICAgICAgICAiaG9zdG5hbWUiOmFkZHJlc3Nlcy5nZXQoImhvc3RuYW1lIiksCiAgICAgICAgICAgICAgICAibWFuYWdlbWVudElwQWRkcmVzcyI6YWRkcmVzc2VzLmdldCgibWFuYWdlbWVudElwQWRkcmVzcyIpLAogICAgICAgICAgICAgICAgIyJtYW5hZ2VtZW50Um91dGVBZGRyZXNzIjphZGRyZXNzZXMuZ2V0KCJtYW5hZ2VtZW50Um91dGVBZGRyZXNzIiksCiAgICAgICAgICAgICAgICAiZGlzY292ZXJ5QWRkcmVzcyI6YWRkcmVzc2VzLmdldCgiZGlzY292ZXJ5QWRkcmVzcyIpCiAgICAgICAgICAgIH0KICAgICAgICBwcmludChib2R5KQoKICAgICAgICBzZWxmLnNlc3Npb24ucG9zdCgKICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvYWRkcmVzcyIsCiAgICAgICAgICAgIGpzb249Ym9keSkucmFpc2VfZm9yX3N0YXR1cygpCgogICAgZGVmIHNldF9zZXJ2aWNlcyhzZWxmLCBudHBfc2VydmVycywgdGltZXpvbmUsIGRuc19zZXJ2ZXJzKToKICAgICAgICBwcmludCgiU2V0dGluZyBOVFAgc2VydmVycyIpCiAgICAgICAgc2VsZi5zZXNzaW9uLnBvc3QoU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvbnRwIiwganNvbj17ICJzZXJ2ZXJzIjogbnRwX3NlcnZlcnMsICJ0aW1lem9uZSI6IHRpbWV6b25lIH0pLnJhaXNlX2Zvcl9zdGF0dXMoKQogICAgICAgIHByaW50KCJTZXR0aW5nIEROUyBzZXJ2ZXJzIikKICAgICAgICBzZWxmLnNlc3Npb24ucG9zdChTZXR1cC5CQVNFX1VSTCArICIvbWdtdC9zZXR1cC9kbnMiLCBqc29uPXsgInNlcnZlcnMiOiBkbnNfc2VydmVycywgInNlYXJjaCI6IFsgImxvY2FsaG9zdCIgXSB9KS5yYWlzZV9mb3Jfc3RhdHVzKCkKCgogICAgZGVmIGxhdW5jaF9iaWdpcShzZWxmKToKICAgICAgICBwcmludCgiTGF1bmNoaW5nIEJJRy1JUSIpCiAgICAgICAgcmVzdWx0ID0gc2VsZi5zZXNzaW9uLnBvc3QoU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvc2V0dXAvbGF1bmNoIikKICAgICAgICByZXN1bHQucmFpc2VfZm9yX3N0YXR1cygpCiAgICAgICAgc2tpcCA9IDAKICAgICAgICB0b3AgPSAxMDAKICAgICAgICB0aW1lc3RhbXAgPSByZXN1bHQuanNvbigpLmdldCgiZmlsZVRpbWVzdGFtcCIpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5zZXNzaW9uLmdldCgKICAgICAgICAgICAgICAgIFNldHVwLkJBU0VfVVJMICsgIi9tZ210L3NldHVwL2xhdW5jaC9tb25pdG9yP2RhdGV0aW1lPXtkYXRldGltZX0mdG9wPXt0b3B9JnNraXA9e3NraXB9IgogICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lPXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgdG9wPXRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgc2tpcD1za2lwCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCgogICAgICAgICAgICByZXN1bHRfanNvbiA9IHJlc3VsdC5qc29uKCkKCiAgICAgICAgICAgIGlmIHJlc3VsdF9qc29uLmdldCgic3RhdHVzIikgPT0gIkNPTVBMRVRFIjoKICAgICAgICAgICAgICAgIHByaW50KCJTZXR1cCBjb21wbGV0ZSIpCiAgICAgICAgICAgICAgICBwcmludCgiR2V0IHBnaW5pdCBhbmQgdG9rdVVwZ3JhZGUgc3RhdHVzIHdpdGgiKQogICAgICAgICAgICAgICAgcHJpbnQoInRhaWwgLWYgL3Zhci9sb2cvYm9vdHN0cmFwLSIgKyB0aW1lc3RhbXAgKyAiLioiKQogICAgICAgICAgICAgICAgcHJpbnQoIkdldCByZXN0amF2YWQgc3RhdHVzIHdpdGgiKQogICAgICAgICAgICAgICAgcHJpbnQoInJlc3RjdXJsIC9zaGFyZWQvc3lzdGVtLXN0YXJ0ZWQiKQogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIGpzb24gPSByZXN1bHQuanNvbigpCgogICAgICAgICAgICBsaW5lcyA9IHJlc3VsdC5qc29uKCkuZ2V0KCJsaW5lcyIpCiAgICAgICAgICAgIHNraXAgKz0gbGVuKGxpbmVzKQoKICAgICAgICAgICAgaWYgbGluZXM6CiAgICAgICAgICAgICAgICBwcmludCgiXG4iLmpvaW4obGluZXMpKQoKICAgICAgICAgICAgdGltZS5zbGVlcCgxKQoKICAgIGRlZiBlbmFibGVfYmFzaWNfYXV0aChzZWxmKToKICAgICAgICB3aXRoIG9wZW4oIi9ldGMvYmlnc3RhcnQvc2NyaXB0cy9zZXR1cGQiLCBtb2RlPSJyKyIpIGFzIHNldHVwZF9zY3JpcHQ6CiAgICAgICAgICAgIHByaW50KCJFbmFibGluZyBiYXNpYyBhdXRoIikKICAgICAgICAgICAgZmlsZV9jb250ZW50cyA9IHNldHVwZF9zY3JpcHQucmVhZCgpCiAgICAgICAgICAgIGZpbGVfY29udGVudHMgPSBmaWxlX2NvbnRlbnRzLnJlcGxhY2UoIiNleHBvcnQgQklHSVFfQkFTSUNfQVVUSF9FTkFCTEVEPVRydWUiLCAiZXhwb3J0IEJJR0lRX0JBU0lDX0FVVEhfRU5BQkxFRD1UcnVlIikKICAgICAgICAgICAgc2V0dXBkX3NjcmlwdC5zZWVrKDApCiAgICAgICAgICAgIHNldHVwZF9zY3JpcHQud3JpdGUoZmlsZV9jb250ZW50cykKICAgICAgICAgICAgc2V0dXBkX3NjcmlwdC50cnVuY2F0ZSgpCiAgICAgICAgcHJpbnQoIlJlc3RhcnRpbmcgc2V0dXBkIikKICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJiaWdzdGFydCIsICJyZXN0YXJ0IiwgInNldHVwZCJdKQoKICAgIGRlZiB3YWl0X2Zvcl9pbml0aWFsX2FjdGl2YXRpb24oc2VsZik6CiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgcHJpbnQoIldhaXRpbmcgZm9yIGluaXRpYWxfYWN0aXZhdGlvbiBjbGllbnQiKQogICAgICAgICAgICB0aW1lLnNsZWVwKDUpCiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2Vzc2lvbi5nZXQoU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvY20vZGV2aWNlL2xpY2Vuc2luZy9wb29sL2luaXRpYWwtYWN0aXZhdGlvbiIpCiAgICAgICAgICAgIGlmIHJlc3VsdC5zdGF0dXNfY29kZSAhPSAyMDA6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICByZXN1bHRfanNvbiA9IHJlc3VsdC5qc29uKCkKICAgICAgICAgICAgaWYgcmVzdWx0X2pzb24uZ2V0KCJzZWxmTGluayIpID09ICJodHRwczovL2xvY2FsaG9zdC9tZ210L2NtL2RldmljZS9saWNlbnNpbmcvcG9vbC9pbml0aWFsLWFjdGl2YXRpb24iOgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICBkZWYgY3JlYXRlX3V0aWxpdHlfcG9vbChzZWxmLCB1dGlsaXR5KToKICAgICAgICBpZiBub3QgdXRpbGl0eToKICAgICAgICAgICAgcHJpbnQoIk5vIGxpY2Vuc2UgcHJvdmlkZWQsIHNraXBwaW5nIGxpY2Vuc2UgcG9vbCBjcmVhdGlvbiIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHByaW50KCJBZGRpbmcgdXRpbGl0eSBsaWNlbnNlICIgKyBzdHIodXRpbGl0eSkpCiAgICAgICAgcmVzdWx0ID0gc2VsZi5zZXNzaW9uLnBvc3QoU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvY20vZGV2aWNlL2xpY2Vuc2luZy9wb29sL2luaXRpYWwtYWN0aXZhdGlvbiIsIGpzb249eyJyZWdLZXkiOiB1dGlsaXR5LCAibmFtZSI6ICJwcm9kdWN0aW9uIiwgInN0YXR1cyI6IkFDVElWQVRJTkdfQVVUT01BVElDIn0pCiAgICAgICAgcmVzdWx0LnJhaXNlX2Zvcl9zdGF0dXMoKQogICAgICAgIHJlc3VsdF9ib2R5ID0gcmVzdWx0Lmpzb24oKQogICAgICAgIHByaW50KHJlc3VsdF9ib2R5KQogICAgCiAgICBkZWYgYWN0aXZhdGVfdXRpbGl0eV9wb29sKHNlbGYsIHV0aWxpdHkpOgogICAgICAgIGlmIG5vdCB1dGlsaXR5OgogICAgICAgICAgICBwcmludCgiTm8gbGljZW5zZSBwcm92aWRlZCwgc2tpcHBpbmcgbGljZW5zZSBwb29sIGFjdGl2YXRpb24iKQogICAgICAgICAgICByZXR1cm4KICAgICAgICByZXN1bHQgPSBzZWxmLnNlc3Npb24uZ2V0KAogICAgICAgICAgICBTZXR1cC5CQVNFX1VSTCArICIvbWdtdC9jbS9kZXZpY2UvbGljZW5zaW5nL3Bvb2wvaW5pdGlhbC1hY3RpdmF0aW9uLyIgKyBzdHIodXRpbGl0eSkKICAgICAgICAgICAgKQogICAgICAgIHJlc3VsdC5yYWlzZV9mb3Jfc3RhdHVzKCkKICAgICAgICByZXN1bHRfYm9keSA9IHJlc3VsdC5qc29uKCkKICAgICAgICBldWxhX3RleHQgPSByZXN1bHRfYm9keS5nZXQoImV1bGFUZXh0IikgCiAgICAgICAgaWYgIk5FRURfRVVMQV9BQ0NFUFQiIGluIHJlc3VsdF9ib2R5LmdldCgic3RhdHVzIik6CiAgICAgICAgICAgIHByaW50KCJBY2NlcHRpbmcgRVVMQSIpCiAgICAgICAgICAgIGFjY2VwdF9ldWxhX2JvZHkgPSB7CiAgICAgICAgICAgICAgICAic3RhdHVzIjogIkFDVElWQVRJTkdfQVVUT01BVElDX0VVTEFfQUNDRVBURUQiLAogICAgICAgICAgICAgICAgImV1bGFUZXh0IjogZXVsYV90ZXh0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5zZXNzaW9uLnBhdGNoKAogICAgICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvY20vZGV2aWNlL2xpY2Vuc2luZy9wb29sL2luaXRpYWwtYWN0aXZhdGlvbi8iICsgc3RyKHV0aWxpdHkpLAogICAgICAgICAgICAgICAganNvbj1hY2NlcHRfZXVsYV9ib2R5CiAgICAgICAgICAgICkKICAgICAgICAgICAgcmVzdWx0LnJhaXNlX2Zvcl9zdGF0dXMoKQogICAgICAgICAgICByZXN1bHRfYm9keSA9IHJlc3VsdC5qc29uKCkKICAgICAgICAgICAgcHJpbnQocmVzdWx0X2JvZHkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoIkV1bGEgYWxyZWFkeSBhY2NlcHRlZCIpCiAgICAgICAgICAgIHByaW50KHJlc3VsdF9ib2R5KQoKICAgIGRlZiB2ZXJpZnlfdXRpbGl0eV9hY3RpdmF0aW9uKHNlbGYsIHV0aWxpdHkpOgogICAgICAgIGlmIG5vdCB1dGlsaXR5OgogICAgICAgICAgICBwcmludCgiTm8gbGljZW5zZSBwcm92aWRlZCwgc2tpcHBpbmcgbGljZW5zZSBwb29sIGFjdGl2YXRpb24gdmVyaWZpY2F0aW9uIikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgcmVzdWx0ID0gc2VsZi5zZXNzaW9uLmdldCgKICAgICAgICAgICAgU2V0dXAuQkFTRV9VUkwgKyAiL21nbXQvY20vZGV2aWNlL2xpY2Vuc2luZy9wb29sL2luaXRpYWwtYWN0aXZhdGlvbi8iICsgc3RyKHV0aWxpdHkpCiAgICAgICAgICAgICkKICAgICAgICByZXN1bHQucmFpc2VfZm9yX3N0YXR1cygpCiAgICAgICAgcmVzdWx0X2JvZHkgPSByZXN1bHQuanNvbigpCiAgICAgICAgaSA9IDAKICAgICAgICB3aGlsZSAiUkVBRFkiIG5vdCBpbiByZXN1bHRfYm9keS5nZXQoInN0YXR1cyIpIGFuZCBpIDwgMTIwOgogICAgICAgICAgICBpKz0xCiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2Vzc2lvbi5nZXQoCiAgICAgICAgICAgICAgICBTZXR1cC5CQVNFX1VSTCArICIvbWdtdC9jbS9kZXZpY2UvbGljZW5zaW5nL3Bvb2wvaW5pdGlhbC1hY3RpdmF0aW9uLyIgKyBzdHIodXRpbGl0eSkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgcmVzdWx0LnJhaXNlX2Zvcl9zdGF0dXMoKQogICAgICAgICAgICByZXN1bHRfYm9keSA9IHJlc3VsdC5qc29uKCkKICAgICAgICAgICAgcHJpbnQoIkxpY2Vuc2Ugbm90IHJlYWR5OiIgKyBzdHIocmVzdWx0X2JvZHkpKQogICAgICAgICAgICBwcmludCgiV2FpdGluZyBmb3IgNSBzZWNvbmRzIikKICAgICAgICAgICAgdGltZS5zbGVlcCg1KQogICAgICAgIGlmIGkgPT0gMTIwOgogICAgICAgICAgICBwcmludCgiTUFYIHRyeSdzIHJlYWNoZWQsIGV4aXRpbmciKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50KCJMaWNlbnNlIHJlYWR5OiIgKyBzdHIocmVzdWx0X2JvZHkpKQogICAgICAgICAgICBzZWxmLnRvdWNoKCIvY29uZmlnL2Nsb3VkL2NvbmZpZ19jb21wbGV0ZSIpCgogICAgZGVmIHRvdWNoKHNlbGYsIHBhdGgpOgogICAgICAgIHdpdGggb3BlbihwYXRoLCAnYScpOgogICAgICAgICAgICBvcy51dGltZShwYXRoLCBOb25lKQoKICAgIGRlZiBtYWluKHNlbGYpOgogICAgICAgIGFyZ3MgPSBzZWxmLmdldF9hcmd1bWVudHMoKQogICAgICAgIHRpbWUuc2xlZXAoMTgwKQogICAgICAgIHByaW50KCJSdW5uaW5nIEJJR0lRIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGVzZSBhcmd1bWVudHMiKQogICAgICAgIHByaW50KGFyZ3MpCiAgICAgICAgc2VsZi5lbmFibGVfYmFzaWNfYXV0aCgpCiAgICAgICAgdGltZS5zbGVlcCg1KQogICAgICAgIHNlbGYuYXV0aChhcmdzLnVzZXIsYXJncy5wYXNzd29yZCkKICAgICAgICB0aW1lLnNsZWVwKDUpCiAgICAgICAgc2VsZi53YWl0X2Zvcl9zZXR1cF9tb2RlKCkKICAgICAgICBzZWxmLnNldF9saWNlbnNlKGFyZ3MubGljZW5zZWtleSkKICAgICAgICBzZWxmLnNldF9tYXN0ZXJrZXkoYXJncy5tYXN0ZXJrZXkpCiAgICAgICAgc2VsZi5zZXRfcGVyc29uYWxpdHkoYXJncy5wZXJzb25hbGl0eSkKICAgICAgICBzZWxmLnNldF9hZGRyZXNzZXMoewogICAgICAgICAgICAgICAgImhvc3RuYW1lIjogYXJncy5ob3N0bmFtZSwKICAgICAgICAgICAgICAgICJtYW5hZ2VtZW50SXBBZGRyZXNzIjogYXJncy5tYW5hZ2VtZW50SXBBZGRyZXNzLAogICAgICAgICAgICAgICAgIyJtYW5hZ2VtZW50Um91dGVBZGRyZXNzIjogYXJncy5tYW5hZ2VtZW50Um91dGVBZGRyZXNzLAogICAgICAgICAgICAgICAgImRpc2NvdmVyeUFkZHJlc3MiOiBhcmdzLmRpc2NvdmVyeUFkZHJlc3MKICAgICAgICAgICAgfSkKICAgICAgICBzZWxmLnNldF9zZXJ2aWNlcyhudHBfc2VydmVycz1hcmdzLm50cF9zZXJ2ZXJzLCB0aW1lem9uZT1hcmdzLnRpbWV6b25lLCBkbnNfc2VydmVycz1hcmdzLmRuc19zZXJ2ZXJzKQogICAgICAgIHNlbGYubGF1bmNoX2JpZ2lxKCkKICAgICAgICB0aW1lLnNsZWVwKDEyMCkKICAgICAgICBzZWxmLmVuYWJsZV9iYXNpY19hdXRoKCkKICAgICAgICBzZWxmLmF1dGgoYXJncy51c2VyLGFyZ3MucGFzc3dvcmQpCiAgICAgICAgdGltZS5zbGVlcCgxNSkKICAgICAgICBzZWxmLndhaXRfZm9yX2luaXRpYWxfYWN0aXZhdGlvbigpCiAgICAgICAgdGltZS5zbGVlcCgxNSkKICAgICAgICBzZWxmLmNyZWF0ZV91dGlsaXR5X3Bvb2woYXJncy51dGlsaXR5KQogICAgICAgIHRpbWUuc2xlZXAoMTUpCiAgICAgICAgc2VsZi5hY3RpdmF0ZV91dGlsaXR5X3Bvb2woYXJncy51dGlsaXR5KQogICAgICAgIHNlbGYudmVyaWZ5X3V0aWxpdHlfYWN0aXZhdGlvbihhcmdzLnV0aWxpdHkpCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgc2V0dXAgPSBTZXR1cCgpCiAgICBzZXR1cC5tYWluKCk= \ No newline at end of file diff --git a/automated-test-scripts/common/bigiq_config.py b/automated-test-scripts/common/bigiq_config.py deleted file mode 100644 index 30ada7a97a..0000000000 --- a/automated-test-scripts/common/bigiq_config.py +++ /dev/null @@ -1,328 +0,0 @@ -#! /usr/local/bin/python2.7 - -import subprocess -import requests -import time -import argparse -import os - -# usage: bigiq-config.py [-h] -#[--licensekey LICENSEKEY] -#[--masterkey MASTERKEY] -#[--personality PERSONALITY] [--hostname HOSTNAME] -#[--managementIpAddress MANAGEMENTIPADDRESS] -#[--managementRouteAddress MANAGEMENTROUTEADDRESS] -#[--discoveryAddress DISCOVERYADDRESS] -#[--timezone TIMEZONE] -#[--ntp_servers NTP_SERVERS [NTP_SERVERS ...]] -#[--dns_servers DNS_SERVERS [DNS_SERVERS ...]] -#[--user USER] -#[--password PASSWORD] -#[--utility UTILITY LICENSEKEY] - -class Setup: - - BASE_URL="http://localhost:8100" - - def get_arguments(self): - parser = argparse.ArgumentParser(description='Setup a BIG-IQ in one command') - parser.add_argument("--licensekey", type=str, help="The license key") - parser.add_argument("--masterkey", type=str, help="The masterkey passphrase", default="Thisisthemasterkey#1234") - parser.add_argument("--personality", type=str, help="The system personality {big_iq, logging_node}", default="big_iq") - parser.add_argument("--hostname", type=str, help="The system hostname", default="bigiq1.com") - parser.add_argument("--managementIpAddress", type=str, help="The management IP address eg. 10.145.1.1/16", default=None) - #parser.add_argument("--managementRouteAddress", type=str, help="The management route address eg. 10.145.1.1", default=None) - parser.add_argument("--discoveryAddress", type=str, help="The discovery address eg. 10.145.1.1", default=None) - parser.add_argument("--timezone", type=str, help="The system timezone", default="America/Los_Angeles") - parser.add_argument("--user", type=str, help="The admin username", default="admin") - parser.add_argument("--password", type=str, help="The admin password", default="admin") - parser.add_argument( - "--ntp_servers", - type=str, - nargs="+", - help="NTP servers as a list, eg --ntp-servers time.nist.gov time.microsoft.com", - default=["time.nist.gov"] - ) - parser.add_argument( - "--dns_servers", - type=str, - nargs="+", - help="DNS servers as a list, eg --dns-servers 8.8.4.4 8.8.8.8 9.9.9.9", - default=["8.8.8.8"] - ) - parser.add_argument("--utility", type=str, help="Utility License Key") - return parser.parse_args() - - def auth(self, user, password): - self.session = requests.session() - self.session.auth = (str(user), str(password)) - - def wait_for_setup_mode(self): - while True: - print("Waiting for setup mode") - time.sleep(5) - result = self.session.get(Setup.BASE_URL + "/info/system") - if result.status_code != 200: - continue - result_json = result.json() - if result_json.get("available") and result_json.get("isSetupd"): - break - - def set_license(self, license_key): - if not license_key: - print("No license provided, skipping licensing") - return - - print("Setting license to " + str(license_key)) - - if license_key == "skipLicense:true": - result = self.session.post( - Setup.BASE_URL + "/mgmt/setup/license", - json={ - "licenseText": "skipLicense:true" - }) - result.raise_for_status() - result_body = result.json() - print(result_body) - else: - result = self.session.post( - Setup.BASE_URL + "/mgmt/setup/license/activate", - json={ - "baseRegKey": license_key, - "addOnKeys":[], - "activationMethod":"AUTOMATIC" - }) - result.raise_for_status() - result_body = result.json() - print(result_body) - if "NEED_EULA_ACCEPT" in result_body.get("status"): - print("Accepting EULA") - - accept_eula_body = { - "baseRegKey": license_key, - "dossier": result_body.get("dossier"), - "eulaText": result_body.get("eulaText") - } - result = self.session.post( - Setup.BASE_URL + "/mgmt/setup/license/accept-eula", - json=accept_eula_body - ) - result.raise_for_status() - - print("Saving license to service.config.json") - self.session.post( - Setup.BASE_URL + "/mgmt/setup/license", - json={ - "licenseText": result.json().get("licenseText") - }) - - def set_masterkey(self, masterkey): - print("Setting master key to " + str(masterkey)) - result = self.session.post( - Setup.BASE_URL + "/mgmt/setup/masterkey", - json={ - "passphrase": masterkey - }) - result.raise_for_status() - - def set_personality(self, personality): - print("Setting personality to " + str(personality)) - self.session.post( - Setup.BASE_URL + "/mgmt/setup/personality", json={ "systemPersonality": personality } - ).raise_for_status() - - def addresses_are_valid(self, addresses): - return ( - addresses is not None and - addresses.get("hostname") and - addresses.get("managementIpAddress") and - #addresses.get("managementRouteAddress") and - addresses.get("discoveryAddress") - ) - - def set_addresses(self, addresses): - if not self.addresses_are_valid(addresses): - print("Missing address arguments, skipping for now, this isn't critical to setup") - return - - print("Setting addresses to") - body = { - "hostname":addresses.get("hostname"), - "managementIpAddress":addresses.get("managementIpAddress"), - #"managementRouteAddress":addresses.get("managementRouteAddress"), - "discoveryAddress":addresses.get("discoveryAddress") - } - print(body) - - self.session.post( - Setup.BASE_URL + "/mgmt/setup/address", - json=body).raise_for_status() - - def set_services(self, ntp_servers, timezone, dns_servers): - print("Setting NTP servers") - self.session.post(Setup.BASE_URL + "/mgmt/setup/ntp", json={ "servers": ntp_servers, "timezone": timezone }).raise_for_status() - print("Setting DNS servers") - self.session.post(Setup.BASE_URL + "/mgmt/setup/dns", json={ "servers": dns_servers, "search": [ "localhost" ] }).raise_for_status() - - - def launch_bigiq(self): - print("Launching BIG-IQ") - result = self.session.post(Setup.BASE_URL + "/mgmt/setup/launch") - result.raise_for_status() - skip = 0 - top = 100 - timestamp = result.json().get("fileTimestamp") - while True: - result = self.session.get( - Setup.BASE_URL + "/mgmt/setup/launch/monitor?datetime={datetime}&top={top}&skip={skip}" - .format( - datetime=timestamp, - top=top, - skip=skip - ) - ) - - result_json = result.json() - - if result_json.get("status") == "COMPLETE": - print("Setup complete") - print("Get pginit and tokuUpgrade status with") - print("tail -f /var/log/bootstrap-" + timestamp + ".*") - print("Get restjavad status with") - print("restcurl /shared/system-started") - break - - json = result.json() - - lines = result.json().get("lines") - skip += len(lines) - - if lines: - print("\n".join(lines)) - - time.sleep(1) - - def enable_basic_auth(self): - with open("/etc/bigstart/scripts/setupd", mode="r+") as setupd_script: - print("Enabling basic auth") - file_contents = setupd_script.read() - file_contents = file_contents.replace("#export BIGIQ_BASIC_AUTH_ENABLED=True", "export BIGIQ_BASIC_AUTH_ENABLED=True") - setupd_script.seek(0) - setupd_script.write(file_contents) - setupd_script.truncate() - print("Restarting setupd") - subprocess.check_call(["bigstart", "restart", "setupd"]) - - def wait_for_initial_activation(self): - while True: - print("Waiting for initial_activation client") - time.sleep(5) - result = self.session.get(Setup.BASE_URL + "/mgmt/cm/device/licensing/pool/initial-activation") - if result.status_code != 200: - continue - result_json = result.json() - if result_json.get("selfLink") == "https://localhost/mgmt/cm/device/licensing/pool/initial-activation": - break - - def create_utility_pool(self, utility): - if not utility: - print("No license provided, skipping license pool creation") - return - print("Adding utility license " + str(utility)) - result = self.session.post(Setup.BASE_URL + "/mgmt/cm/device/licensing/pool/initial-activation", json={"regKey": utility, "name": "production", "status":"ACTIVATING_AUTOMATIC"}) - result.raise_for_status() - result_body = result.json() - print(result_body) - - def activate_utility_pool(self, utility): - if not utility: - print("No license provided, skipping license pool activation") - return - result = self.session.get( - Setup.BASE_URL + "/mgmt/cm/device/licensing/pool/initial-activation/" + str(utility) - ) - result.raise_for_status() - result_body = result.json() - eula_text = result_body.get("eulaText") - if "NEED_EULA_ACCEPT" in result_body.get("status"): - print("Accepting EULA") - accept_eula_body = { - "status": "ACTIVATING_AUTOMATIC_EULA_ACCEPTED", - "eulaText": eula_text - } - result = self.session.patch( - Setup.BASE_URL + "/mgmt/cm/device/licensing/pool/initial-activation/" + str(utility), - json=accept_eula_body - ) - result.raise_for_status() - result_body = result.json() - print(result_body) - else: - print("Eula already accepted") - print(result_body) - - def verify_utility_activation(self, utility): - if not utility: - print("No license provided, skipping license pool activation verification") - return - result = self.session.get( - Setup.BASE_URL + "/mgmt/cm/device/licensing/pool/initial-activation/" + str(utility) - ) - result.raise_for_status() - result_body = result.json() - i = 0 - while "READY" not in result_body.get("status") and i < 120: - i+=1 - result = self.session.get( - Setup.BASE_URL + "/mgmt/cm/device/licensing/pool/initial-activation/" + str(utility) - ) - result.raise_for_status() - result_body = result.json() - print("License not ready:" + str(result_body)) - print("Waiting for 5 seconds") - time.sleep(5) - if i == 120: - print("MAX try's reached, exiting") - else: - print("License ready:" + str(result_body)) - self.touch("/config/cloud/config_complete") - - def touch(self, path): - with open(path, 'a'): - os.utime(path, None) - - def main(self): - args = self.get_arguments() - time.sleep(180) - print("Running BIGIQ configuration with these arguments") - print(args) - self.enable_basic_auth() - time.sleep(5) - self.auth(args.user,args.password) - time.sleep(5) - self.wait_for_setup_mode() - self.set_license(args.licensekey) - self.set_masterkey(args.masterkey) - self.set_personality(args.personality) - self.set_addresses({ - "hostname": args.hostname, - "managementIpAddress": args.managementIpAddress, - #"managementRouteAddress": args.managementRouteAddress, - "discoveryAddress": args.discoveryAddress - }) - self.set_services(ntp_servers=args.ntp_servers, timezone=args.timezone, dns_servers=args.dns_servers) - self.launch_bigiq() - time.sleep(120) - self.enable_basic_auth() - self.auth(args.user,args.password) - time.sleep(15) - self.wait_for_initial_activation() - time.sleep(15) - self.create_utility_pool(args.utility) - time.sleep(15) - self.activate_utility_pool(args.utility) - self.verify_utility_activation(args.utility) - -if __name__ == "__main__": - setup = Setup() - setup.main() \ No newline at end of file diff --git a/automated-test-scripts/common/bigiq_delete.yaml b/automated-test-scripts/common/bigiq_delete.yaml deleted file mode 100644 index 2af839a77f..0000000000 --- a/automated-test-scripts/common/bigiq_delete.yaml +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: BIG-IQ license revoke -onStart: -- ./bigiq_license_revoke.sh -onFail: -- ../sleep/5_minutes.sh -params: -- tag: LICENSE HOSTS - values: - - 10.146.1.99 10.146.1.102 52.7.25.126 52.52.243.250 - - 10.146.1.99 - - 10.146.1.102 - - 52.7.25.126 - - 52.52.243.250 -- tag: LICENSE POOLS - values: - - production clpv2 - - production - - clpv2 \ No newline at end of file diff --git a/automated-test-scripts/common/bigiq_license_revoke.sh b/automated-test-scripts/common/bigiq_license_revoke.sh deleted file mode 100644 index 5c457bd6fb..0000000000 --- a/automated-test-scripts/common/bigiq_license_revoke.sh +++ /dev/null @@ -1,72 +0,0 @@ -# expectValue = "Licenses deleted" -# scriptTimeout = 15 -# replayEnabled = false -# replayTimeout = 0 - -# This test is to be used to revoke licenses from specified -# BIG-IQ's and pools -# Tested with BIG-IQ 5.3, 5.2 -HOSTS="" -USER="admin" -POOLS="" -# Loop through HOST and then POOL attempting to delete licenses -for HOST in $HOSTS; do - if [[ $HOST = *"10.146"* ]]; then - PSWD='B@giq2017' - else - PSWD='B!giq2017' - fi - printf "\nHost: $HOST Password: $PSWD" - # Version Check as API's are different - bigiq_version=`curl -sku ${USER}:"${PSWD}" https://${HOST}/mgmt/shared/resolver/device-groups/cm-shared-all-big-iqs/devices | jq -r .items[].version` - printf "\nBIG-IQ Version: $bigiq_version" - if [[ $bigiq_version == "5.3"* ]]; then - for POOL in $POOLS; do - if [ $POOL != "production" ]; then - POOLID=`curl -sku ${USER}:"${PSWD}" https://${HOST}/mgmt/cm/device/licensing/pool/regkey/licenses | jq -r '.items[] | select(.name == "'${POOL}'") | .id'` - printf "\nPool ID for $POOL is $POOLID" - # for each license key in the pool, get the regKey: - LICS=`curl -sku ${USER}:"${PSWD}" https://${HOST}/mgmt/cm/device/licensing/pool/regkey/licenses/${POOLID}/offerings | jq -r .items[].regKey` - printf "\nLicense Keys: $LICS" - # For each regKey do "stuff" - for LIC in $LICS; do - printf "\nGetting info on $LIC" - LICINFO=`curl -sku ${USER}:"${PSWD}" https://${HOST}/mgmt/cm/device/licensing/pool/regkey/licenses/${POOLID}/offerings/${LIC}` - ##### echo $LICINFO | jq .status - MBRINFO=`curl -sku ${USER}:"${PSWD}" https://${HOST}/mgmt/cm/device/licensing/pool/regkey/licenses/${POOLID}/offerings/${LIC}/members` - ##### echo $MBRINFO | jq .items[] - # Deleting - MBRID=`echo $MBRINFO | jq -r .items[0].id` - if [[ $MBRID != "null" ]]; then - echo "Deleting device..." - curl -sku ${USER}:"${PSWD}" -H "Content-Type: application/json" -X DELETE https://${HOST}/mgmt/cm/device/licensing/pool/regkey/licenses/${POOLID}/offerings/${LIC}/members/${MBRID} -d '{"username":"admin","password":"admin","id":"'${MBRID}'"}' - fi - done - else - printf "\n Unable to process utility pools. It is a TO DO ITEM in this script for version 5.3" - fi - done - else - # Assume v5.3 or later and use newer API's - LICS=`curl -sku ${USER}:"${PSWD}" https://${HOST}/mgmt/cm/device/licensing/assignments |jq -r '.items[].deviceAddress'` - if [ -n "$LICS" ]; then - for POOL in $POOLS; do - for LIC in $LICS; do - LIC_DETAILS=`curl -sku ${USER}:"${PSWD}" https://${HOST}/mgmt/cm/device/licensing/assignments |jq -r '.items[] | select(.deviceAddress | contains ("'${LIC}'")) |(.)'` - LIC_ASSIGN_TYPE=`echo $LIC_DETAILS | jq .assignmentType --raw-output` - printf "\nRevoke lic for ip $LIC assignmentType: $LIC_ASSIGN_TYPE" - if [[ $LIC_ASSIGN_TYPE == *"UNREACHABLE"* ]]; then - LIC_MAC=`echo $LIC_DETAILS | jq .macAddress --raw-output | head -n1` - printf "\nRevoking unreachable device, MAC: $LIC_MAC" - curl -sku ${USER}:"${PSWD}" -d "{\"licensePoolName\": \"${POOL}\", \"command\": \"revoke\", \"address\": \"${LIC}\", \"assignmentType\": \"UNREACHABLE\", \"macAddress\": \"${LIC_MAC}\"}" -H "Content-Type: application/json" -X POST https://${HOST}/mgmt/cm/device/tasks/licensing/pool/member-management - else - curl -sku ${USER}:"${PSWD}" -d "{\"licensePoolName\": \"${POOL}\", \"command\": \"revoke\", \"address\": \"${LIC}\", \"user\": \"admin\", \"password\": \"admin\"}" -H "Content-Type: application/json" -X POST https://${HOST}/mgmt/cm/device/tasks/licensing/pool/member-management - fi - done - done - else - printf "\nServer: $HOST returned no licenses to process." - fi - fi -done -printf "\nLicenses deleted" \ No newline at end of file diff --git a/automated-test-scripts/common/test_aws.ucs b/automated-test-scripts/common/test_aws.ucs deleted file mode 100644 index 2ed6dc7994dfdeb001825cf8483ca0327a03378c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133270 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 ~QIlDG!vG{*dfvdT-Y{8jm~Hm@ zDbsGJcaTutCM&ehtGX58N7a{k8WvK)a7`#c-&OO6v3>;Mx%$#bp0BTw$HPyAvD1{0 zmG)nA4N)<_2!kEnnEPpPaiQTQ=w8((6zz+l{^>TgiRC{&J|CZt&&TKE^YQuke0)AW sAD@rU$LHho@%i|Cd_F!OpO4SS=i~G7`S^T%{@;K84{?SZBmiIz0QGtJhyVZp diff --git a/automated-test-scripts/common/test_azure.ucs b/automated-test-scripts/common/test_azure.ucs deleted file mode 100644 index b022702345d71a124e8451498f9600766dc40f8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148639 zcmV(?K-a$?iwFQ|tgT-F1MFSvccWI4&u9G=tkbhOnH@{E(@y8HJ!g=FZPJp^0J7b? zJBJ{IEXEQjfb4cU{l9NrUIKKHY^w0=hxJL?mVnEBRMoA=uj*=JsdqdyU1x3w;aAQ4 zoWRfbZ{J40;V1h2?)&)j+42d~kmSNzd7tCi_L{Ur1}ckbK;Pp%~#3v*{_2SQ*z*uvcN z*&mL3*YSZwJRklNtmx*AZ-$QNwnpa4{wev6HPE_-d4dZ+31{t-mTE6;Gk_aTTRm_6 z(@hvP zTz(v0>CQYK?i-udy?JN*g?ohm3^wbv=ZAlrpSLY<_19MGPcu8Pd}kevKwmgPG-%<` z41_z|wP9%XOqf0iW^u3r8{oqCT<7=ba~oP(`*y1}PwD(6xt*+SnFd1hbM~b0bOX`g(>ynXu+j8c@e+zFur|%pa3s6H3(F;2;Q3~`EDap~W4+8bc_f_v_2180_A;<@&0Hm85xluD z>1px2!u;mn{ug2CS>{qm#~oiUH_Yu?urPgCn&)htq^ZUs~Ge)}Bsp8bkOz~*qe_BP@BU&B?f5ROe) z1@94fArMy9`WV(Gw1q!}JKtUlN9x9P*+PvM!1hP*bpXrtP0%TP|3AT>JDqQSZM7`; zAROJk`5e6f=ER9RfBVO+3-A6mqJdA0cZFeZ9Pxzo{^aMMCd1c(|r;GSpRz)7Jlw~D`D+B zK(xT+L0b@hfxT1+LdUun9-VN(+JslaMiMT}PyntK%%yLevnOZ@y2386Ol#q|cDwa; z%q9QEXu2~Vi28-14!8XA+Zz4?GMt+$XZiI0*ND>M54qd_5X{GW;rQac@XcrF8I0l0 z*%u(PL=@(P-}{1O1bTk+Ic|+zIy(9EL#(PC3CCXf(n)r$z-(U&zP<8b!(_wCCMoc? zlNxWI(G9D1^o+kMvT!FBY8`l-{ckX0Frb}wzVC(=yzJriW?H|2SzzLNkT!tog^%rp z|I%JCb+FTBZ8$UA4H>7_eXhnk?_KZFjd~uu^igvYE^3C`Pawk53sB0 z&Vajx&|WcVU<=u`{ING>F#YJCPPkfk!oZkK+sx)NW{z(#_J|A&D}bw& zx1GLwcYgN#d(ul5>_KL`-|Mx-UQd~fbmMZMbj5)&kVcpKmGwb~zpaMZ=nWIRZshm7q;+tc)}XxB54t zaU*pNaXcQ#J&|DXVGebPbyON@vMygs@lw6Km$|`@q)Qk#G(8x^1X{bbq?29gO1zd8 zl`YW-=&2_SS)bvnfmpBojC%DeRT6chCl1FVtQBh9ugD2Z5J){~%tjAur|a_Q5-C?? zP3#V&z9B|SX28ygqk=0f7FJA9MO!d-ydPoGpmKnsxleF^diY9X{|ev2mNdhF*s{U(dW`zR0%Y} zm?ALSclFkrtR&4omU4@vX{^KIji^c^_<&SqI07@B7o)EX#X6+TU1Dj-sBol-1T0uj z=#&H)iGf6*;tQnu3|wh>5__CA)Yu-C<#qLWi7+dK5F$>KV?ju8oWbDsfG#-tCMaQA!_rj zmPArc2a-p9=@v;@Ma7*+aP&0w!kDN74MSNw(_1|e7-g_vY!K=2oSj@A{gUikSCZIA za@uyLsYD~bBZ`)G(0T`?wOFo$6OlQmsYKjIfA=L9frK+o)nYCp3T(Aq%B zKaeN|l#GBd-*bK3*;y_=rQ6-iO*?GU~li~3dl=6hf*!ivkx5v)%x*w&efRyMh0(}C4Y zC545pqKVBrEe9a}kxkzYGb1hCyLytU%NJ}nz`7ObWmHL)vTo}i$2GX%A;!=d(~Yy7 z87n(9qt_7hEtYc>vNJbUMwrazPh@HRar1X%76khKEznjkagx*}O^^rckT#*9m0_EpJQP>e1x?c+Qv zjr?s#naZfA1YcYBRqNuh?Gq#Q z@B@#OD1)IuB8Q0*=Cj*RUHMK_x{Hf!CD8mj2B#~)Xed$7C9#M)7fGjq)ZwpA33^F%k z#)d310DG7|5mSc=Nza>zSS8vV-c_;NUoCYxrLIec#;DB^dwqh)*u#scB#o_;ffJHt zjkP|CFi&-mA|i1S?F5VrcC?|si>yL#(_1$gBeXFy^lEf$ZaT}roZE)&&Pd&DbtP|p zrb?cBGA)muyo=Tn0j5jThFc5*P6NwN0Ei_`>3xuN=Cgzss2UnR!VNeT#nwkElv|Hs=~rDJ8Yg7kngJ$ zG5-P;p|$#FTiA4<+N5C|AaIXksXGAS!w8(;#iYC$ADALnnE;ba~T^{mu08+AjFRvEi7h z5$=KAybgkR1P~&r6E4-o>bmo@jun80+K>ckSQZvIuMjm|lW1*RD;qXL*t_b-t+^h| zvM;w`4=I*?xLAmI`4kz057;3p6=V{$-=l`s5Y6j$7ozi35(WfQL6XOiQ;GK%_}(er z6UR?bEfr8A1e;xvB52L%f+x5rx|2W#84|h5oT35`Hy2iF07K831PLaoql}30$yv=g z%JSsh08}A!aHW99WCWB*?L>q!ra@Ri&%YPCz~ECAVpug_+}lCTz@H?g|->pFf!t=3Hw250$=rA;YYaIi~3IVs^aS z+v(^jwSBNr*@%fu0&l8D^`h2@D*NO)Iq7&$5P8w=sf^ad zHhYg%_flmNbF#|gP%l>{_X1)7yoM~Og92n9Fyshx5cyzgsW*Wouc>i0n3lsPBp0!uNDB!f06gp}T{WG%&k%rQ4!J`51Ys1VF|c@*h0ZJ~Oq+?gQ4NxuZhD|uwZXLG zL#v5KKa}5rtZkBMw{@+X3Va~0Ivz)s$23YK&GU9M!PGGftvt%oKV&Ypm=#pYRRcSoYWAbMda;c~Ur53SHtLkjAMuagv zT9pe%AgVA-R>zXYd;c%VK;BmNz@;$dJ5O<@(Jo>D7l|pBLnS7t*DH|Ta8V=TydzFA zU%hu#6QaWf5sX2vl5b<1Xe@%oF%-uHr;4QBAsVk%rHM%55F+hro(QNa1yd!)@$BKu z4n)+_*lpk_gG<;Zg&+|Rc{LQ@MUK7K8^~;dFjZ&w0S+2Tu%Jz)-xYi`5NNXE zLRCIs+~HSyGg#3;k;CbE*b{=9G(U^ZJS1FZH&+(uO98os(dsK`g3=R2gWo=o9zmkb z7f!Jf_54{wSBCFJ3v6r&8jAmiuMh4~wY`!<`?y~kHbU$v}(@^MvJwsfb2 z<^u^tT)`=fMgs-PduNGIt>{2+K@BOm4QdAv_m}4&I24(yKGU9FLVd)_foi5y`#YI2 zvA<9t#T+0Hf86IiAUFyrrqZrDVE}vvf1o{MiK0SN0p&?-kW`_TBBp?CVbqUjhzP4d zleC}b2OaeA4{?bFL>}oLj~zBuzp)d;co^VUp^k>i-51{(9dkzoX(mf%rFS%DA5sjQ1S4IpBzdiTkSI@WZuHb?f`d6Y za;kyzMv=m~n28i+&jEY)Wh%c6(J?gKT))giN$ja5tqu1aoB%pNdyY4IUjFu6=5Q3)#lERH_bhxprYogK#?u=p4z3jE>Z>QQxkY{39E}J z67UL18^weNSayXZTAG>B=tDtyrCH?RcpytJcL(R!x?I4peq(r4BWD8XlipsxrXJ3- zSb+ekcp+$G88 zPTj$T{=a-LY3TM!XSEcsq#im&gCGQyiY1!!B+EDs3LBgr6TwSNB@4{bsl2p>;hM_K zEe5zyUa}V?pc42Ty3!SxpbGP}lN17A<*^FL0z6=luAJj51m&q=6?w5vU6->mM}?yF z5I53GscYlm4+m_)2Aqcldw5%c5pAF z{8uw536lHjl_c7q0)aT&qS9qeRH=K5A-Pie2+?1y+7KPAOLh)CRqd|bS}YXI)?ltk z5eZ8pAd3KN+LRWOP<_rzjXr0l3XPPl88YtHyoJMNV>Ij6@LYt^QSygb8qDmqi znm22b^lX9MKC;7*bQxC)gV1|fD2+u%GkC8hzv2s81{F>ssGHUDg1{ryVIdqkB6eoc zKvk0UO6LK$TTqnYt8~)SIYvv{54kysk4&XLpKDpwC+w)B$h$_Jn9w92Axb@G<^aan zZ@jwEctBU2o~yTY1`ZFm_c;`kX$Bx{0~zP0sa6HV@V~r8SMJ<;TTq)71sy8t!%K*BoSgv~%l* zzK|owm&rosA_JXLNoNuWN;$@#8LR}sBJv{)iQ_WOr(NRguIiFt1jPcY&~69}#i1fE zarI+G#=r@7&P;2<0Yr4vnt%0+3ggmt~)L)?15it1(}5LvqK6gY6X#;`j>ijx6x ztvkvvU^zNK(NSXH5owK~t=oe#i8O*@(+rcqMc)jXqiKL%7B{9m(URhX39f~JPO~`> zMv9bi$_g)}hfGviPR!*_VK!k-bJ~IMQme9z0Rrj#D@n`DO5b$hv39_`pWL4xH;n5sF}J$b2wfpJk1mp z?2%|WKN(Z&`?8kWH#Fc&qD1mN9wJIL676=%myan%Ok&Htl{ueeo8B!=6{D7B#ESR|O|AthOhJ zKzjHp{b|xfCn#~O6xw?J_%lGpX<7|!0d9V2HcYzbb0WSJr}7+*e8ogT>QyV%x)OsKd2aqrpmJTwiV@du{C^N{xw=*MRXip(}CcmvCpIDUa8n^Et~5N*l90ckbM! zzdP-X6&O=9u#J^zW#7)vk9|7`k7xFSW7)^fEbhe8nPz`<+;Cm^(3$zpJZyFB(2D-) zn6rO|&dQEIEW98L+B4gIia&d6+g;Agb@5Y&{nKWhh`(QX;Vk~k4T47}v=+IGYZJap zE(Z&9<~=5V+t$W+!l&Y=j%%*$U~O7ms@(W!^JA4p85IOah5_PswnPufd(kTGVmFBZ9V zy);7@#cIoavxT*EY&YEfCi|nkw1LTk><%U*3m-bpI@tMw{cmj6v+ZE>H&{y`OK0xD zTtuC$zE=9kZL+fneuG&re}+FF?Bn=>eb@4Tx1Y?_GLf4>`nxk*75?tTx(Da0PEjk_ zJ_Wz>e=|n+HtDn%zw21O4bm=j%w@p6?%H<&lf#@#{|wUEEM0g2*)cPiC^aI6Sdg;|(yxzp}_euZnE z^KeepqU8H!JZ;Bz67T86UUo9Z+55!>k&uL#w-BIhWzY5B55Sv9ijwV^UxTA+jaf66 zC<$K!Xf(PT-3_BqFIx)rZtZddlkj`P$+G#Aye~$hY?17V>GaP^qINx9(M>x(+%ONX z`}+GEI2^@HYof3D+3NJa=F9K<@y>6MH{N^Ak5;*1^VeQCQp>Nuit^>x-%QTY+uA>Q z+t+vB_Vu@o`1s)Uv--l?Tl3|&u=Vms??OEO9mH47O8ZBznw$2IUNuAQAH9B_UOQlK zot@gmyba>@Bb$GJ|Bc^&{dm4%C}Wl=p2CgpGb?9~JOnil$P z>{avls+Km-aQ4|KOoQrk87@6c*_*LUCrs-!s--04pXq05iKuy!imz#-L8vH^D-ZN+vAFWHOQ!7# zzWSv}DtryG{5fZj%gK>`{k8djLxC)xxk>YTqv^pz;P^}`-OrA1tJP;RS2IfTort|9L(Y|oTkp)2%hsbti_1qVM;8g0MblkCIphhrv#`_i9xKj+NT{HKkE=h2$JnxCX< zejl@->njBbt*1%4G<1wcd(V8mewx3Z>ID;N&RKadRx>?$p*LBqezf)jHB0zZFW7n4 zN6b~?k*|KzdM<0fc2lXM;4FJHsy{c3*L-J&)XCi<&XX2N(UWxi=&51apjPK*s-Z+7ZkKOTQ!4?K4mzo!*# z@y~_+znKhLGbn3oQ?%6eEhc7en>BJn``>F+A+UXT&hvL zc;`5A>1V_J{*lU^3-4s2qLFc`gx|5wf3vYnc-(8597(TP=a!$c)0wvh1zB`+E~baDU&M2xU)wt)3^t>gp>C_+56G)Z46> zmUlwo-f?Xp_13D^5qT(iryKvB>s@`-zv)kkhH-EcNp%@&Yr^kuXO>)jVP>QICtvip zcP3nmy6>`w=}-92R3tped_U@0y{|Qsn3je1n>4cbs*+ciXQs66`x?nYq2Ad*9@C;H z@Vn93-aCn=!D?I0*e!J5FR@Ll6EVB|d6w%{U&OQML0dD;$~n^}rBq+A^3OyYviTdG2Kbp;YqATm@Cl&P5 z$=L0WsOz3|gleH3>|f=Zn^tBYh1cT%{yf-)HC+rtkK&;S;xW5%@8rh4w3NN=l{PPw zWqTi)kvH$(+q0om!TGY~{wBS}O?{G_^XndhUo)d7>TS=>LZAG8cs}cOFD)6@cyC=y z`)bJRnF|{$uz&X3MzCL|^quv`gE4a-*o?nhV;^ZtMYD4BUcXd9kE8qf(2PR+J+fSL zdZHVAuVXt-C)#T4qm8jti?<&zY-%cZZ#y2Jveeh+tn9V%I57vu(}km=AkwPw6AYm6 z()ZN*hfEsI)qDNxMRWOAokA<^yV=^V(p%HL91Jwus^$vP==fBx{yBFFx#{eVw%>33 zufr-|ykCN@0q|Kkb2Kye4d9EAhiNeBVM8fe&SF#gAtLT3f89(u-TW}8?^ajNoq8XR z*5O;v?T_+2&mP=JJ&3p2;iEHhbpVl>^RxsW!*N?{6`8sl3-e^ZoAh)5W_ZR_b5uuch(N zKHKUitftlG&y=U{k6~#wS`^Lhbyf_mebZSU?7aUBrSU}}S(31K`hUAx>}kn#Hf<8q z`kbytyZOHu!rdr{qfmbzG>s@O;fr2HjcKl@JeSpW`I&7;*emxrMC&Dl4qUFe$106dW=T{uFSoWUNl1vY@i zS_%ay9&MI=>AT@Ei(?-(6FEXwG!KfP#~&s^bA&t_3k0ECeB?==>T$biQ)(1T{MZZL zAIRUKSfycB*}4CgjetP3nY|hX0fPUcaP+s_KDn>fD#C+SZ@yoXuhnw>eZMnX2kI+}VJ$#$ zb_HtvmNQRpJ-u4<_4YxWuN9WLqar8aGyWXI8ZN|wH+pYK>n4o;3^OgaekvBZzo++Q2x7vH_Ag%~SuS$$*F8in70nVE3 zpVhKv`_*>KCW{tzLq(<`1qOn*E3m0HI-LB95peVM*UppB%79yB5u<^L#?O>Q0inQq z@I1#&zixXx@uLZte&`@&cdWn~&i{23OJ=<1Q~MTBoJ6yPOX*~9p-}MY7~}hp*KURl z7Q|T0T84!eN~LwU0MO*P|0txY>7J@5cQ;-rF#S&Al62Km#pX55BRpzV>*Wj3w1Sv? z&ZIN-S)a;&*(An3u3GndcVAXbBP_SpsPxJtRofsYVR8}nDNeHXAcCrB86rpWwq+Wd zd@xkIWAnx-D-Q)MH1&dd4vxqH`?p2&cKbC(t2Xmjh=Bn4BJ;*!QS*88$OS*1L{C|4 zV6RO-iBRi-fEF>^P1$(=tEFtY-}O>!6*$zj*88fB`XY{QTrm;SKxMb(Qgo?bKkIss z^7ioj9aYy%&2VZ+*B4}v`ZuA>)58g|$bhoio0L5p2R!Jb@a0<|tCysx8b?Nb2THww zIql=(i&ri~JPv<$d3NIt90~&fQah`8?>CFC-YixWwGaxC0La^02WXaw!xDEc9yv8^ zz@DY}MG0F7BI=GBua-n)W3EF5i}}t@YJJsDBHtI`jCy>D;i8y_gqTJzv9L7FUpUXs zxgYoL@+lEe@xmhPzdc|!YuN()J*|@`H&*v9yfG~3M+o1y% z_srut)amzcpRaH4dT+O1H%-+hZc?kpQIlE$;9AxV`+X-LwjoSN1s1{0Yu`E1Q)tTJ z%_9%O`Aa}GPogJB&-|46a^XaiAH5eyXhX_);Y_0>U`qAAd9|^$=BT2Clk_W3U38?m zKRfFA*shHgC(-l5ahdNsz1&l>5v>0pr4FvPs|G!S$f| zPC;|g*juz3PWwx=az$e)#73Vp{IuLmr4VJf&(az}5FfzW^T=Lzfkm|)`)(Pn@C zJt|B+n>_5f?#$*Dq6atD``p6ucz(SLdgork7q>-GFVcj?g+5LJRlQ^@e$L@i(hW}IXO{P~kjg~6m&A~5uxaQT70=|LN|lHZ zysDO_3k8k{A0xEUUdkk*RT}i39n?8=a3=r)0CZAX3=761{v(yj$v1IKs{rqHy>&p8 za=m%bsQ-^_PJ5-gY_bRnLpBYV(iMn)-Pm2tj~|(za@5AtiKs=JicHB?LZo7a^nV!m z5^lhH4#|265Mjr@gjwn@w5YQ0gv6Hs0fii2$F`)9ZWJ$^>OJw4Qpq4vap3w)Y72t} zoC+~3h#mD@INIsw%eB2 z!6HI#by`6ITi|159L+p*BTsW88~{_8U=0??hF$>~mv2A}w;s^RBv#+I`>X**O2;M= zn&)fb2;k@_=o9Yp=Tqu+y=p^ggjDR*MQqEtH3;7p#yZiookHk7?f43HSF zw_m+M&3lQ3)fp-nG;c{3$X*LBwOU5)HU;XhO6I}>dM%mbG69A&Xaa)u0bbk)S+J`Z@`#uv1FDS zFmj&3|O{#_8 zw|J{JzmSUe>Bm}WyQ~*0o%|zMS0J|#Rjq@G&r8}P+aCX7{;X%+W)(#LqGuhWhG8mk z;94FhOoWr@2}=I>7oQ{y3z4wUi+a{1+88Y0i8gE?ApDsHvEOTmbgO0kVG=OkNhRz1 z%IY?f+20^KegUNBJU|Rp-mcc>Lo?CYokyrHe7XGQlu;4txlcvA)G@Si%tJYkdcOaz z-FUf4#J$FmloP@wg8Z!6@q|e|$^8c@H9)eZ0K-6~N9k2y?#Ki*2~w=9=3}1p90pxA z4M^!Ko6gm^xx$P|&z`vDR3dI{sapSVdUtVk`4uwWBQE{EFSn=~pN%AB<*-DFDRX-j zh^viPk4Ay$`IMvrs~|AVCp^0a&-<&$X@|(h@ei#IO4yqH(X&NSHT)?_L)Cw+>8kyn zD;qc39h>_)e8IwAFTP&~VWhHfIgW$ccxfnH{Y5f7KXb|ZWOza9D*=aTn9+xhQ={Qu&siI&Z4PJhBITe(cauF)_Oa|wsNy7WT@MtYw zEC~5Unrr9ixU8!LSw?{>)*4d(R;-^ZuTrp7Fe zFGDG2b0tq>@lU?ENuo#5L$YTZCsmQwaJ6y#PR?6t*Aq(9tgT7;{=$u|#-~j9(IZbl zW0H->9ao^{OX~Zc$tB11On4t|;G(JbhHEUF$$xleKIyr;rTFV-LG;@vR%iB|>2ohP-`m;hE1*#9*@Bt*7*=h;aCzvMg3~eg$};8z zs4%(L!hv$QO2d%%&u)3MP>wDjP@G&e-;<8Frs?7(f{6-{-byiSn&n=#!Y%~ZQY+er zE-{lUrV{?n)ccJs_u_)wjL?q{ax(^OnwJn@b;0BSn}TvYN#5ykentDmczL6Kyfqu4 zJ_~ap$pSI|-MxbBt4$y%F9ags&il(IZ*Cg4`_&*|(^13te0lfn`u2YzxT}T&mhxF@ zAFADPA3>;_+W*2HxQQ!*0U&k33InH!ln}r@DhDuUxl!258UH32=wdMW&)GGL{SVW! zX(&h4U{Er)27$0Ln$6eV_7NHSHb5-c59vic#E8AbY&g+ULz$(1+(&fh3ot~Bzpt>4 zE|fe!>E7ce=CXfPyV*QU2DD%ha$psr^$5XhEl?=GxxRGfQS`w3S00y5o0d(zQ^a7^ zP*8kUgMfO3RtL=S`HZ>mu3!HG7)&dxVc<_19^M(vv#DWCeqt(ZL!6Bj2=rXR03ak} zy>TtMdZ^v=B8uXP*1}j1*MPnVm1PMKbjdgfO@W|$$rJJZ@=>qHE1$vCrWTevXK*o5_UWIT zWb|rDdvNB+3)E(l_0i}O5aquO`oI^L;q~MP1$*dmRP6l~u3yO^f6X~uv>U8Bqu>sY zPolJkjLX;XL>lIq+h0iJypUhnR|1^aR4wV_BI4Kd$t>az6cVbC8mH0(u9Jw29%>}N zre9N^Da9!!D-h2l+m?z>`?w?e6-aEVNLWGJ?5WFdP2v=Zp!kck2O6PtKjZ3(hqL!5 z(!XjL`zRIvnoUGZr+QN)+D0;U@RrNer|8?g8~LVK%-1Nq2-Co**cAJ6KV|-3w@s$+ zzq|J}0~y6i1lsaCn~?0v;{8Q~U!{BoF(a9%*iYSe-%RrwoWh8_es>AO*Q*(Knk`D> z^=!^b`bp-e$(D0~IoVm;Cnt(1_OmCU=21!_r@}{$IqO*wh?zR|A)SKG$yVmX=d>*#no$e+jHWw6ek`0qM7vgmNiS^cpe%fUq3>7V$S9zI;aUihnBO$s zA1zd)2a0ivX+6_dOe!kx^u3VzUU4O8hSK<(FvsUB_M=p%eckBynvqm&_Dy4wY`a3z zSo}{!?qVUo>j#?oG4T#7Xm`Ebtne!RNc>FsB}K0SMjxh($1o zD8!QPRuGeHC3z)Q5-2xHLq+1**Iy241d?&9-o5`?%vU>%NhCxs*Ui4(3?(@Nq%m}r z2;P66+N(zHmd`GpDK_^BpVIh`U@?H*{ z{gz5oiUr9jjyq373Y=p2E;6A+<)2U_g7%(2b2nA|gEm1ZII#=^BRbp;CM5HfFXZbd zihV>z35~6IKVg!eWt>lA*#AsPJe&6(=kX^Z(-c$jrag9fek9E_oioM$6r5r!4r$J@ zB~eCzSx=XAQ^kD$pH#=bG@c%Fxw-Ak@W(#lMKPDx@z%^4qwPsAtT zY?n%7HsRzS7K)RFl-B|bvjTihz|}nRXd-Px#RN&poUyMsS$boZB}!t>X#>lYj3q(( zP+ba2U}4ed7e-B^;J$e}osxJ{MJR|uiSCQzOrjVmL8eTL(A*8nsRB0@$RdxnU7>u0kFhTw5mi~J_=K*~LivcI+Cuq=s^UV`w~(Uh zLQA?3RbFWH(P40JPo+(bg9TU5ivj zA*!h(EDW(!W+{q8EKN$f0uj}yQWc3PAC0*5h5orqvmwxVASfzREc^96q^VA^L?o$D zv3x{QrJ{UfKfqFq)Jy-GVMt@Q8kR(Za`5HquLN?s$!In@Rc#Dj?q-ds8#?) zg^bpYKvE^6^4Z`kWmH--LA8w5P|{S)sQXXwRWp{mH(lk7gLRL+q=5QdWs8RKgrmDu$OopdpRpUrgvSB%GL=`rc$^*R0Mz!Jyvq%W5ZIq8_ zDsC(ph0ZHQPs&rHv5JjbqdcW}1I+l;%6+4!G8+_G{%0Q;n&Pl6xtUe;G;86`Q zO%;#2eMeKtqkKeD&7)@E5mfY8qR~|Ks9AV)`U*jHkBTcvDts)JKZ+_Jl~ALr^wH36 z$rN|OiXWBMNp?I)Qu$*kPDrYMxbWsF3UL@1nj#zqiKGBW21HwY!$49M-Y{4cMK{Vm z;R|kLNJPapGUlKzw2^@l71_wxgQmbn$srWQH4GL$XThKl71hXig07&3fuksQc7FmY~idYyNngSLEiK2Lg!J#W$kqZi%q7}JHNK~*Q zA4Y<}uxt~dDpZk6CbA+GIUIR`3Ij`0oTAt!@r5a}fg~$Rk?+d*f)u&(Nl}a<>k&aA ziVTOU2t`fJpe{gRpqFncmNUNaM6*v0J{TqQ*^pGZ$W>p03KzLRq^oX`&l$chgTW!F zYLO2gK}8D#L^En6l`QgcBdTIi?ppW?7MTu8P`$$75LB)(FceiQvVD=p`$JN#qOMdB z`RJ&sRAf^{SfQfwH^EOLbNi95GDS9$R8=W*c}rvQQxu5E`|~}dDGrgNkral=^&^s^ z5V;GILST>-gUBa|rVvEI5EMlqif$1UfXI+&ia+EU8AaiT42huV!_uva53OH1j7cN} zMWKh98A@^lNMqcZ2)+nHW|UHC%%sH+S^mBYn z@OJ_8mNz>d>2E&@Ia&lh3Ieshi{|ymz^03rh?P@-DE_QQZZw^8j)FMe0|Si0I1sZ? zZ&1)tdd4xS%R;Sa0RgZgX~6-4RW~~R!XEfk`2Ejo);etKH;p3%L)mcl0$SsRsWK11p%@z zbfS!l*I!tu2hhX|ocTiki($TQ67;9srv)2}KzG-K0i6p83BTNk{wNZaGXD#6=OW~H zF7wSX`S;i}sSD}E7w+ZFsplnJ%Cn5DG+`(Q?M6aTJ-I5gwQ9Zwzw zCUD_R1f0%vvo}%X-z1T-SF96M{JBX)=!%$Gql>w&X4mhD7}RRIzO%BxeG#V5c9$+t zhxm=zxG>ShQjdcz_UtC>&o5V6!da4SO_Hh+`piPl=gDPO6xQXaIMt1$>76G^6D?dG zQd^RrJu>05iSUJ5=$W!OPtlz%rmanb?z>6^uITdSx$wNKLM-#Yhgq(fr)8Vsn8f^z zlt?+x6(mrd>o;w^=Yq|`NGjpVVTrYT?;|J1(_5`2=p+r#q9D+s^E`4>RLzK2Emq4s zV0GVEv!z`I3{ynwJ(|cs=-FiNore+`KK&cinr-+mq2^a2e6X|~&k`1@)6Cj120Z=1 zm~4PM?j~G)Lfwz?HVe?^p12geHzp2*E1sO2Do(J9@|zWvSimAge`B>=0_*R*YA>?1 z8$a;HpUYKp%YntUf6M5zx<|%(V&+Wp8y^#0{2L=;$xE_sda5m2-lbZ!UUVdFsdOkB%D|lZ+H|*KhuOegvkBhV zb%egO30$7jvu=B7|M{inOQ3fZ8}rPfpj%4YL3m=DUX(j6ZT0Y2J66#eZKgxo)1owJ zvWU&v9hfniA6k1x+E>PhZQ9OQtn`-$#mIkt8HRf@a|7Mla+9Uz9Q!N7lv&@1959n* z6`IZFmU}$*qlG1v$+MvtmDb>Cb~~j#Io8x&Zz5l~^p?e@t>!CNPf_w<`P|qnQp=m( zIx$9n+>}nN$*b-`=;9HZZsKSNu7hIJwXXzxW{GEIJd9w!7^e16L3VTdORIm-^~w8LJoQ%8`B-GNyiGF*l+=Em1o z?YTzvw>}$ZsZ>#5OPZAqL95vf|Ry5`Pxy_Fk=rZg=}zAt#Jfp zi+A%K@lRB}^^MqbmUvGrv3BUy*3qs^4ymYuR3!`u$Vp4koN%2)W+Y@-DO7;4^cQI?b*hx3gT$wl)-YXhoR} zppwd&*2*oJkwz2dp>_Xg)8%6?JD{ZxXSIH8gdn8ZI9LnxU9DYWMJH|*Tp9?ET8=~y z29aVUR{Sj1j!Uikb-pkyL+SIMtH?EaK>AXCHSG5A6LMaSiZ$MxK@pQFzC)mBX)f8J zCX4p2LJNm9B9wF3Zb2GC=dUJz#kT+su+qu zw?l(*%nqUVrGyv+E#epDY!t6oiu02YP}~kNQqPJ24SmatxkoSD#kGvQj-^1rZBG>d zg+O}01aubEBIb^#EoirYhN`s=?Ja_>YGA>QgsOi;2sJiq$dT@x2h7opJ@Q2MFJa$^550-_DDscaPRpu3t}ssx3DW2SiGgy z1(`)kSr}vk{lFJbQQ}!bcbVRNEn$1rokRCl)YXcPNLd8d!w_?=dW9}1jP})pBpl*f zel@zmpZ2A$Ey~LVIFD|Fze5 zOR$wnZ;gPaB4>?^+`zR4zcecBaYA8JSR+;7%Kp){bZ5s*8EZR#wg6>E(KVcVE#x)dzR$j0fVZ4qUW ziXxcGB6L8f*%Dewnl=ruxwlDAyX!m<8dB4 z*=}VKS_=V&DKGH`8h`~3-#~?hF!k=qussl59$JPU1Xmh5hQXQ35g7s{HmtvHiD8!p z!p#E;6-X!H0R5+E7rBN?h~n=k{2}8c`T@g1Z4qVrJ|JbO)^=u|LtF%Pkigs>3lZLR z6v-2z*T*l|m27n|bAqT}--wv|B7|tFb-1}waaBN94`v*Nm|7sM0nM(4hLsqsgJq#2 zEX4S$>OfC?f-LOc=u^V8dqU$WN5+>eNv+#J-LGsW^ zFagA(b)sn_=AnPN(*d*CKZ6p$6Ogqh~;Y zwhqSFAps%Zf_4bEpdHdJXopTc*(U)Z=Z$?r-q@#`t^TiX=>j32tzE*|+9h4dy9B&J zWl68w$MzumSoSEpAgR2sj{u_Mk#jWKA8kY2Ivw~3{i++Lx&{$)pHerZAGr^dSj7#x z79eSEtX+#!a~kj#PNl{txm9};tSw1ZzZE!D^C&3-S*Wf}e#MyB!*4DO@{wr5Q(U?EN*XA+ zG$+72jbp!zDqd*u$?c2l`d8RE_jo3#!q2D(FUnR#hnk z&x~smRk+A_>dgeuFaH9V88w)NE#}usISu z&y2w3qP=npu(>cTh~R3|rPO-p4Lz$iUfmhLy51=b9E&zy*C0@Koifg$j#s_-QdxB5 z)?D?5)~sv6TD0$8poH83+NQ_ju^%lAZ~R$==aO&3>q)wJR;Fw!B3XLv2e4c;pPWUh%`K*S|0#*m*t&eR>)`2_ z9ytg?On!8tzVSe>WV7XDMMx~t6BnL|K@86F5MlttECtQA1w*w>jn+|^{I-Z~ir&&` zm{l{7rkn)#F7szv2wUGK!>rQ7c{Odr;vFkz%x$_%6{0U($~?N>_A<{ls-e(vkqKt& zQpbX0zDNH^?7+pg6UG#|)XS{@l?>gQiV&Fwp(%lGn2^vEy6X=Imw z@*CZ3nkZR~)bk-wQf>)D@U#v>s+4A$JqI*>s6z*|&GR$cvF%-i7zey%61wc?!H{H| zl2VS@ro);qp(7U}Qyy&(NVWIdpkq}lvXGo1(}{Ew5u5R_f!TON9!S)nB;Rc`sYE@wRu`-9?basF9823}%4J8M91A{n=o~hI$u%XIz{t6SZF&CF0|N4TEDRm2rih zm?eW5o7P+ni59cE&gR1R^k@xx#)|dG!PMF zEwOsNa30bu-Eucgqb|_p)s-c9YUp&8-t;b3^DhQz-dm%9+w15W|&! z?RA*gENh}#kP9sWEZRNmD6z7`w}>g;T8_f+WER_FVtW*dw^r2Tbu4Rv1bWS871^Tr zvbb+|kWf6b!HUfdlny^Ohhz&{G~&Iw0cwHQoA~*=JFcu0HG7d3D;s1NRf8hQLat{Q z*A8VyZuyiaoVFTg7e#q$yR}5R&4XlnRg-4GZk`=$gxGTL6;#kGcPqg5_Pct>a%*W& zDp>2NY3zD-39=;ISB7M{U@eSC{>PI3+e9D4RXw_uYU31h1jiYLaiAqY1n?iXq0B!NLr2MP?e~cOxeM3te|EA~ zv164(Wd9<@MMy_2V(zgdVg0)^8m+^YeG{b=%z+06f~g-(7^=IX9sP?(p2+@JNf*d? zWL^n5S^zGh?gW%Ecj=JEBQAZRTXAW7IG&2<%ol3`vbYi+u_V@m=c~}XB*V2ZwJ1%d zyMH)!rV|e)NITJ>^3+RXpFi^i)-Y6VRv;O>o%PRd6##6?D+K5?vmcL$Hph9Q0>FM< zwym2EV&QYgi$Ly*8WvVk){*j6;mqbvtY;nDt2p5%1luwCEEZ{!h90P>Qw>Fg(+C1E zQc)<}d;ZLV7}pKd-e}s^pP|~-5=tqaguw8>0_cG+o}vU(Ryi>Jp|mB_iFK#1r!}~Q>mf=k0WR}BS?KEv|dB8u6URd z3|!9ZR5({WoT)h(my@jByk|tBNjI*T03E_NkfIRG<@ztO`TtwXQ;1)(HcZI2E42rU z(%e|FSh@O(#aL=r;MpmZD=bQ5zrjMa1T+?`v{5L!1c&kXl<9erBmIJ)KMlPU%zi>j zbN>UnW0mQJ<~p938;ZfbDHJ!fEUnCMICoc(f9R2`tOf8M(XxTCXjxz_e(Y){B(^`L zVu(e_y$bMMs8pu0K!QZQY8oPFsnGD7lB`!WRB=j%Za=F(>_0+%JtfqAVjfc<C zU5;(Ma>iidGL|^?=pQd(Q{`+Q+JW6ChJ8H10vc}}CeK0xcmlMon}##e0|7g5%P`E- zP{CoAT^R)|#^EG<#zT|x6eT2m!UnxSXt=9&aS_HyS@DI{oCbNh}e218TbXY5#9#`D!v|ie4oF*kF{;5=1G*!AU5)E zP*i?qnH&+ClSqJS@EbIY^Jjw?kCGPs7ZmdJKBCOu0SLKH>L%%Q%9DFvU_w0KL)tWn z20LsX*RLW-O``XZ#Y4}Dro~r=MqK72yceo40|!RkFvlzwG519{IH6|N=0G;*JX>oZ z#5^TJ4M0;U$*?1s zNU4KY5<%k!!NR18Z~)VoHw&{1i{=-a4@Z9FKA->~?)X~UV=hAusG+n9fh_6Pfo9z1 z&#`nwBFHiIM+nKZc1%G>5HIx5&ZtuNRFI;=ytW-!bX;1T&QlE{Eu&upVms1o7T)01TM$RYb^`%brT=iOewRds+=KCFoqK*hXg!E^${=t?W{B zQi@5>-i+v^seokDzXq0igmVVAFt6n(TUt5va@ba1spqzk!}OburG1WG9@=0ds-8A2 zFEHW(y8TR#X1<@r?h&x(5|9)O6q&dVjueVuv9$*h2?_P){tr_+xBtn>o6Vjf+eZ2* z>o6# zMO+pipG83&g&N`FIgS!_%YUYz8s+bz?)2vJpL{`eSJN5--IAJ{G?{Ul%YlAptU~55 zlyIfVeYHXz$<0CQMkWj+MSErI8cKW-K2Tj!x`u?OD0!Gf(StQ`!-8iSZc2QQ?h7Mg znGD)nm)8(cUad1Y38q&KbCr1H=Ui$1$y{wz=b>ATKz0MyOA|N{e!if)uWlVBeDY1J z4z|aGPqL!aw>EjZQ}SgqGyuKjPVbJXw96_5(^}dTb4LBdBR_HpZts58tbB;P#Yf>Q zj!9{HJvH`Mj^T_Ow(ui{siyq)iLtXmW+u;24KmAO{vF!G;OPC&R2wY0R302{=S;Cb zBR>uJ8G{^kzl*w$oSAEvG-+%id|}PZ+GveGGU1zm;ey!VQP>_uJK~PuD%+Q|5!*7Y z@>~p$Mc8AM2v9-xSL$mvv6pTf`&&uF;v0^6W0#Ud%P?-Ao|hf$_GuJh$P;_avuTJv z2;UdsY-l^>UxjC*uoi9a6ItDfkAnN2W+vUHYljTQW_E4G<$gI#ZXO&#je{Y}Clj0K zY^}G!(O1YPdyC(y^RDuITh)H-N}d-_s%gopro;}YNegbPHpEh;M$FQaX`cjZuALe& zRu1E9_{*2}=fk?gs74g4@5UC%$mG=k=H@I-65BRFjV?=PR5c2wR-7(10^-e%bh~r2 z8d+kGoLpZWz#6jbY+fhbY|l((xm(_Zt;@1&`+IRMKF|7i3}84)Ax}&}hXwORFWDJ4 zwSCTfLGHeI4MD^@Y>^=_Qh?el>rv@L>@9Q@+DQ@4xn5HJvr5@8EO(>=C|}$IOMb0@ zK|!E1K5>&pteklA;Prp2SiNz0spSS3ip?4zFwLZa0-b)TbnA{e3F$vGt=9JV3wz*G z#Fbce5Fe0<)M~%}9x?NExKS7fViraTcGRwf{u$u9fI7x4XI{V&tGd-AhiUo5 zA9>>Fu7v&jj~cDRmS+^*#GxG+ly)^PO#F;EpqG2zaa%Wn|()-X5?}UhHuUZ~!%I8A=%0*%T?ZzdFJ7?jH`_T+x(=TBVMqH!yal}$J-*s`vHVrhx z#!dpvOKhN-uIXPEXG2cR5*Bb+nrs7FMGrir>#5}a)R9{A
5iGFA`mg3J848+_y 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�ls*$P_(8C`0%4?yh)a(s> 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 in -autoscale) - bigipAutoscaleGroup=$(aws cloudformation describe-stacks --stack-name --region --query 'Stacks[0].Outputs[?OutputKey==`bigipAutoscaleGroup`].OutputValue' --output text) - instanceId=$(aws autoscaling describe-auto-scaling-groups --region --auto-scaling-group-name $bigipAutoscaleGroup --query 'AutoScalingGroups[0].Instances[].InstanceId' --output text) - IP=$(aws ec2 describe-instances --instance-ids $instanceId --region --query 'Reservations[0].Instances[0].PublicIpAddress' --output text) - echo "Bigip1Url=$IP" ;; -ha) - case in - production-stack) - instanceId=$(aws cloudformation describe-stacks --region --stack-name |jq -r '.Stacks[0].Outputs[]|select (.OutputKey=="Bigip1InstanceId")|.OutputValue') - echo "instanceId=$instanceId" - IP=$(aws ec2 describe-instances --region --instance-ids $instanceId|jq -r '.Reservations[0].Instances[0].PrivateIpAddress') - echo "Bigip1Private=$IP" - instanceId2=$(aws cloudformation describe-stacks --region --stack-name |jq -r '.Stacks[0].Outputs[]|select (.OutputKey=="Bigip2InstanceId")|.OutputValue') - echo "instanceId=$instanceId2" - IP2=$(aws ec2 describe-instances --region --instance-ids $instanceId2|jq -r '.Reservations[0].Instances[0].PrivateIpAddress') - echo "Bigip1Private=$IP2" - bastion=$(aws cloudformation describe-stacks --region --stack-name -bastion|jq -r '.Stacks[0].Outputs[]|select (.OutputKey=="EIP1")|.OutputValue') - echo "Bastion host:$bastion" ;; - existing-stack) - IP=$(aws cloudformation describe-stacks --region --stack-name |jq -r '.Stacks[0].Outputs[]|select (.OutputKey=="Bigip1Url")|.OutputValue|split(":")[1]|.[2:]') - echo "Bigip1Url=$IP" - IP2=$(aws cloudformation describe-stacks --region --stack-name |jq -r '.Stacks[0].Outputs[]|select (.OutputKey=="Bigip2Url")|.OutputValue|split(":")[1]|.[2:]') - echo "Bigip2Url=$IP2" ;; - esac ;; -standalone) - case in - production-stack) - instanceId=$(aws cloudformation describe-stacks --region --stack-name |jq -r '.Stacks[0].Outputs[]|select (.OutputKey=="Bigip1InstanceId")|.OutputValue') - echo "instanceId=$instanceId" - IP=$(aws ec2 describe-instances --region --instance-ids $instanceId|jq -r '.Reservations[0].Instances[0].PrivateIpAddress') - echo "Bigip1Private=$IP" - bastion=$(aws cloudformation describe-stacks --region --stack-name -bastion|jq -r '.Stacks[0].Outputs[]|select (.OutputKey=="EIP1")|.OutputValue') - echo "Bastion host:$bastion" ;; - existing-stack) - IP=$(aws cloudformation describe-stacks --region --stack-name |jq -r '.Stacks[0].Outputs[]|select (.OutputKey=="Bigip1Url")|.OutputValue|split(":")[1]|.[2:]') - echo "Bigip1Url=$IP" ;; - esac ;; -*) - echo "No Matching type" - exit 1 ;; -esac - -# test for empty variables and set number of bigips -if [[ -n "$IP" && -n "$IP2" ]]; then - number_bigips=2 - echo "Number of bigips is equal to:$number_bigips" -elif [ -n "$IP" ]; then - number_bigips=1 - echo "Number of bigips is equal to:$number_bigips" -else - echo "Error, number of bigip addressess gathered incorrect:$IP,$IP2" - exit 1 -fi - -## validate all items in list are in response -provisioned_list=$(echo "" | sed 's/\\,/ /g') -matched_list=() -matched_list2=() -for module in ${provisioned_list[@]}; do - i_length=$((i_length+1)) - IFS=':' # colon is set as delimiter - read -ra MOD_LEV <<< "$module" # str is read into an array as tokens separated by IFS - echo "Checking for module: $module" - if [[ "" == "production-stack" ]]; then - response=$(ssh -o "StrictHostKeyChecking no" -i /etc/ssl/private/dewpt_private.pem -o ProxyCommand="ssh -o 'StrictHostKeyChecking no' -i /etc/ssl/private/dewpt_private.pem -W %h:%p ubuntu@$bastion" admin@"$IP" "tmsh list /sys provision ${MOD_LEV[0]}") - echo "Response: $response" - else - response=$(ssh -o "StrictHostKeyChecking no" -i /etc/ssl/private/dewpt_private.pem admin@${IP} "tmsh list /sys provision ${MOD_LEV[0]}") - echo "Response: $response" - fi - for i in $response; do - if echo $i | grep "${MOD_LEV[1]}" --silent; then - echo "match: $i $module" - matched_list+=("$module") - fi - done - r_length=${#matched_list[@]} - echo "i_length: $i_length r_length: $r_length" - if (( "$r_length" >= "$i_length" )); then - result="SUCCESS" - else - result="FAILURE" - fi - if [[ "$number_bigips" = 2 ]]; then - if [[ "" == "production-stack" ]]; then - response2=$(ssh -o "StrictHostKeyChecking no" -i /etc/ssl/private/dewpt_private.pem -o ProxyCommand="ssh -o 'StrictHostKeyChecking no' -i /etc/ssl/private/dewpt_private.pem -W %h:%p ubuntu@$bastion" admin@"$IP2" "tmsh list /sys provision ${MOD_LEV[1]}") - echo "Response: $response2" - else - response2=$(ssh -o "StrictHostKeyChecking no" -i /etc/ssl/private/dewpt_private.pem admin@${IP2} "tmsh list /sys provision ${MOD_LEV[1]}") - echo "Response: $response2" - fi - for i in $response2; do - if echo $i | grep "${MOD_LEV[1]}" --silent; then - echo "match: $i $module" - matched_list2+=("$module") - fi - done - r2_length=${#matched_list2[@]} - if (( "$r2_length" >= "$i_length" )); then - result2="SUCCESS" - else - result2="FAILURE" - fi - fi -done - -# evaluate results -if [[ "$number_bigips" = 1 ]]; then - if echo $result | grep 'SUCCESS'; then - echo "$result" - else - echo "$result" - fi -elif [[ "$number_bigips" = 2 ]]; then - if echo $result | grep 'SUCCESS' && echo $result2 | grep 'SUCCESS'; then - echo "SUCCESS" - else - echo "FAILED" - fi -fi \ No newline at end of file diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/existing-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/existing-stack/bigiq/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/existing-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/existing-stack/payg/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/bigip_version_parameters.yaml deleted file mode 100644 index 5ee1470ac7..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/bigip_version_parameters.yaml +++ /dev/null @@ -1,68 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-dns -AUTOSCALE TYPE URL: ltm/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: remove-existing-stack-azure -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -EXT ALB EXISTS: 'No' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: AllTwoBootLocations -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":5},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderHost":{"value":""},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/parameters.yaml deleted file mode 100644 index 8d1b9ec3bf..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/parameters.yaml +++ /dev/null @@ -1,72 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-dns -AUTOSCALE TYPE URL: ltm/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: R19-3-2 -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":5},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderHost":{"value":""},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/postpub_parameters.yaml deleted file mode 100644 index e8b18ee6c2..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/postpub_parameters.yaml +++ /dev/null @@ -1,72 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-dns -AUTOSCALE TYPE URL: ltm/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":5},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderHost":{"value":""},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/prepub_parameters.yaml deleted file mode 100644 index cce0f082aa..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/bigiq/prepub_parameters.yaml +++ /dev/null @@ -1,72 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-dns -AUTOSCALE TYPE URL: ltm/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: R19-3-2 -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":5},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderHost":{"value":""},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/bigip_version_parameters.yaml deleted file mode 100644 index a360a24c86..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/bigip_version_parameters.yaml +++ /dev/null @@ -1,65 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-dns -AUTOSCALE TYPE URL: ltm/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: remove-existing-stack-azure -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -EXT ALB EXISTS: 'No' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: Best25Mbps -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":5},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderHost":{"value":""},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/parameters.yaml deleted file mode 100644 index d8a759cd49..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/parameters.yaml +++ /dev/null @@ -1,69 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-dns -AUTOSCALE TYPE URL: ltm/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: R19-3-2 -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":5s},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderHost":{"value":""},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/postpub_parameters.yaml deleted file mode 100644 index d56bdc15e3..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/postpub_parameters.yaml +++ /dev/null @@ -1,69 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-dns -AUTOSCALE TYPE URL: ltm/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":5},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderHost":{"value":""},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/prepub_parameters.yaml deleted file mode 100644 index dea9481251..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-dns/1nic/new-stack/payg/prepub_parameters.yaml +++ /dev/null @@ -1,69 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-dns -AUTOSCALE TYPE URL: ltm/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: R19-3-2 -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":5},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderHost":{"value":""},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/existing-stack/bigiq-payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/existing-stack/bigiq-payg/parameters.yaml deleted file mode 100644 index c9eea4a299..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/existing-stack/bigiq-payg/parameters.yaml +++ /dev/null @@ -1,8 +0,0 @@ -BIGIP VERSION: 16.1.303000 -BRANCH: R19-3-2 -CREATE PUBLIC IP APP: 'null' -IMAGE URN: OPTIONAL -PHONEHOME: 'No' -PROVISION INT LB: 'null' -USER IDENTITY: NOT_SPECIFIED -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/existing-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/existing-stack/bigiq/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/existing-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/existing-stack/payg/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml deleted file mode 100644 index 9bdf2eb792..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml +++ /dev/null @@ -1,64 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-lb -AUTOSCALE TYPE URL: ltm/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: remove-existing-stack-azure -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -EXT ALB EXISTS: 'No' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: AllTwoBootLocations -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/parameters.yaml deleted file mode 100644 index c68548c1d3..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/parameters.yaml +++ /dev/null @@ -1,68 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-lb -AUTOSCALE TYPE URL: ltm/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml deleted file mode 100644 index c68548c1d3..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml +++ /dev/null @@ -1,68 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-lb -AUTOSCALE TYPE URL: ltm/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml deleted file mode 100644 index c41b1984e8..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml +++ /dev/null @@ -1,67 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOSCALE TYPE: ltm-via-lb -AUTOSCALE TYPE URL: ltm/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml deleted file mode 100644 index 18ef8aa675..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml +++ /dev/null @@ -1,61 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOSCALE TYPE: ltm-via-lb -AUTOSCALE TYPE URL: ltm/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: remove-existing-stack-azure -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -EXT ALB EXISTS: 'No' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: Best25Mbps -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/parameters.yaml deleted file mode 100644 index 78798a1687..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/parameters.yaml +++ /dev/null @@ -1,65 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOSCALE TYPE: ltm-via-lb -AUTOSCALE TYPE URL: ltm/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/postpub_parameters.yaml deleted file mode 100644 index 20a0b917bc..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/postpub_parameters.yaml +++ /dev/null @@ -1,65 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOSCALE TYPE: ltm-via-lb -AUTOSCALE TYPE URL: ltm/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_D4s_v4 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/prepub_parameters.yaml deleted file mode 100644 index 1f2f9d5cfc..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/ltm/via-lb/1nic/new-stack/payg/prepub_parameters.yaml +++ /dev/null @@ -1,64 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOSCALE TYPE: ltm-via-lb -AUTOSCALE TYPE URL: ltm/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: '' -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_D4s_v4 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: '' -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/existing-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/existing-stack/bigiq/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/existing-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/existing-stack/payg/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/bigip_version_parameters.yaml deleted file mode 100644 index 250a4a1c6f..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/bigip_version_parameters.yaml +++ /dev/null @@ -1,66 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-dns -AUTOSCALE TYPE URL: waf/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -EXT ALB EXISTS: 'No' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: AllTwoBootLocations -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":3},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"},"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/parameters.yaml deleted file mode 100644 index 8ee8ae6fda..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/parameters.yaml +++ /dev/null @@ -1,71 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-dns -AUTOSCALE TYPE URL: waf/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"autoscaleTimeout":{"value":3},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"},"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/postpub_parameters.yaml deleted file mode 100644 index 5f7d8942b4..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/postpub_parameters.yaml +++ /dev/null @@ -1,71 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-dns -AUTOSCALE TYPE URL: waf/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":3},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"},"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/prepub_parameters.yaml deleted file mode 100644 index def7ee0689..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/bigiq/prepub_parameters.yaml +++ /dev/null @@ -1,70 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-dns -AUTOSCALE TYPE URL: waf/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":3},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"},"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/bigip_version_parameters.yaml deleted file mode 100644 index 48b561b624..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/bigip_version_parameters.yaml +++ /dev/null @@ -1,63 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-dns -AUTOSCALE TYPE URL: waf/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -EXT ALB EXISTS: 'No' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: Best25Mbps -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"},"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/parameters.yaml deleted file mode 100644 index 0cea4eb128..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/parameters.yaml +++ /dev/null @@ -1,68 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-dns -AUTOSCALE TYPE URL: waf/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: R19-3-2 -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":3},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"},"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/postpub_parameters.yaml deleted file mode 100644 index af2781a9da..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/postpub_parameters.yaml +++ /dev/null @@ -1,68 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-dns -AUTOSCALE TYPE URL: waf/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":3},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"},"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/prepub_parameters.yaml deleted file mode 100644 index d563759ce3..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-dns/1nic/new-stack/payg/prepub_parameters.yaml +++ /dev/null @@ -1,67 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOFILL EVAL LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-dns -AUTOSCALE TYPE URL: waf/via-dns -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials;.dnsPasswd -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"autoscaleTimeout":{"value":3},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"dnsMemberIpType":{"value":""},"dnsMemberPort":{"value":"80"},"dnsProviderPort":{"value":"443"},"dnsProviderUser":{"value":""},"dnsProviderPassword":{"value":""},"dnsProviderPool":{"value":""},"dnsProviderDataCenter":{"value":"dewpt_datacenter"},"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/existing-stack/bigiq-payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/existing-stack/bigiq-payg/parameters.yaml deleted file mode 100644 index c9eea4a299..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/existing-stack/bigiq-payg/parameters.yaml +++ /dev/null @@ -1,8 +0,0 @@ -BIGIP VERSION: 16.1.303000 -BRANCH: R19-3-2 -CREATE PUBLIC IP APP: 'null' -IMAGE URN: OPTIONAL -PHONEHOME: 'No' -PROVISION INT LB: 'null' -USER IDENTITY: NOT_SPECIFIED -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/existing-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/existing-stack/bigiq/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/existing-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/existing-stack/payg/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml deleted file mode 100644 index a8f6ac0332..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml +++ /dev/null @@ -1,63 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-lb -AUTOSCALE TYPE URL: waf/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -EXT ALB EXISTS: 'No' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: AllTwoBootLocations -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/parameters.yaml deleted file mode 100644 index ec2eebd098..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/parameters.yaml +++ /dev/null @@ -1,68 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-lb -AUTOSCALE TYPE URL: waf/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"autoscaleTimeout":{"value":5},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml deleted file mode 100644 index ec2eebd098..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml +++ /dev/null @@ -1,68 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-lb -AUTOSCALE TYPE URL: waf/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"autoscaleTimeout":{"value":5},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml deleted file mode 100644 index 10c25ec78a..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml +++ /dev/null @@ -1,67 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -AUTOSCALE TYPE: waf-via-lb -AUTOSCALE TYPE URL: waf/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: .bigIqPasswd -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -LICENSE TYPE N: bq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"autoscaleTimeout":{"value":5},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml deleted file mode 100644 index f3545fc052..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml +++ /dev/null @@ -1,60 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOSCALE TYPE: waf-via-lb -AUTOSCALE TYPE URL: waf/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CREATE PUBLIC IP: 'Yes' -EXT ALB EXISTS: 'No' -CONFIG FILES: .passwd;.azCredentials -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: https://cdn.f5.com/product/cloudsolutions/declarations/sample_02.json -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: Best25Mbps -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/parameters.yaml deleted file mode 100644 index 7d54957eef..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/parameters.yaml +++ /dev/null @@ -1,65 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOSCALE TYPE: waf-via-lb -AUTOSCALE TYPE URL: waf/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: https://cdn.f5.com/product/cloudsolutions/declarations/sample_02.json -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"autoscaleTimeout":{"value":5},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/postpub_parameters.yaml deleted file mode 100644 index 7d54957eef..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/postpub_parameters.yaml +++ /dev/null @@ -1,65 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOSCALE TYPE: waf-via-lb -AUTOSCALE TYPE URL: waf/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: https://cdn.f5.com/product/cloudsolutions/declarations/sample_02.json -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"autoscaleTimeout":{"value":5},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/prepub_parameters.yaml deleted file mode 100644 index eb17e8fda9..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/autoscale/waf/via-lb/1nic/new-stack/payg/prepub_parameters.yaml +++ /dev/null @@ -1,64 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -APP INSIGHTS: CREATE_NEW -AUTOSCALE TYPE: waf-via-lb -AUTOSCALE TYPE URL: waf/via-lb -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: https://cdn.f5.com/product/cloudsolutions/declarations/sample_02.json -DNS LABEL: ',"dnsLabel":{"value":""}' -DNS MEMBER IP TYPE: public -DNS PROVIDER PASSWORD: B!gdns2017 -DNS PROVIDER USER: dewpt -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IAPP SERVICE LIST: dewpt-waf-service -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -LICENSE TYPE N: pg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"tenantId":{"value":""},"clientId":{"value":""},"servicePrincipalSecret":{"value":""},"vmScaleSetMinCount":{"value":2},"vmScaleSetMaxCount":{"value":4},"appInsights":{"value":""},"scaleOutCpuThreshold":{"value":80},"scaleInCpuThreshold":{"value":20},"autoscaleTimeout":{"value":5},"scaleOutThroughputThreshold":{"value":2000000},"scaleInThroughputThreshold":{"value":1000000},"scaleInTimeWindow":{"value":10},"scaleOutTimeWindow":{"value":10}' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-as- -SEQUENCE NUMBER: 1 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION DEPLOY NAME: dewpt-waf-service -SOLUTION LOGS: install.log;onboard.log;autoscale.log -SSH PORT: 50001 -STACK PARAM: ',"applicationProtocols":{"value":"http"},"applicationAddress":{"value":"255.255.255.254"},"applicationPort":{"value":"80"},"applicationSecurePort":{"value":"443"},"sslCert":{"value":"NOT_SPECIFIED"},"sslPswd":{"value":"NOT_SPECIFIED"},"applicationType":{"value":"Linux"},"blockingLevel":{"value":"medium"},"customPolicy":{"value":"NOT_SPECIFIED"},"notificationEmail":{"value":"OPTIONAL"}' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/autoscale//1nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: '' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/bigip_version_parameters.yaml deleted file mode 100644 index bd6575fcaf..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/bigip_version_parameters.yaml +++ /dev/null @@ -1,45 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -ADMIN USER: dewpoint -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIQ VERSION: 6.0.101000 -BRANCH: remove-existing-stack-azure -CLUSTER: 'Yes' -CLUSTER FOLDER: cluster -CUSTOM IMAGE PARAM: OPTIONAL -DNS LABEL: ',"dnsLabel":{"value":""}' -INSTANCE NAME: f5bigiqvm -INSTANCE TYPE: Standard_D4s_v4 -INTERNAL IP COUNT: 0 -LIC POOL PARAM: ',"licensePoolKeys":{"value":"Do_Not_Create"}' -LICENSE PARAM: ',"bigIqLicenseKey1":{"value":"GHZVH-LQPWQZ-SQZ-FSGZUTT-GJWPORB"},"bigIqLicenseKey2":{"value":"KCDYN-PUPDST-BXY-CDIZLNQ-BELAZTT"}' -LICENSE POOL KEYS: Do Not Create -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 2 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REG POOL PARAM: ',"regPoolKeys":{"value":"Do_Not_Create"}' -REGION: eastus -REGISTRATION POOL KEYS: Do Not Create -RESOURCE GROUP: dd-az-bigiq-cluster- -SEQUENCE NUMBER: 0 -SOLUTION LOGS: install.log;onboard.log;network.log -SSH PORT: 22 -STACK PARAM: ',"mgmtSubnetName":{"value":"mgmt"},"mgmtIpAddressRangeStart":{"value":"192.168.1.4"}' -STACK TYPE: existing-stack -STACK TYPE SHORT: es -SUBNET PARAM: ',"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"192.168.2.4"}' -SUBNET PARAM SELF: ',"internalIpSelfAddressRangeStart":{"value":"192.168.2.10"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/experimental/bigiq/licenseManagement//nic/existing-stack//azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetName":{"value":"existingStackVnet"},"vnetResourceGroupName":{"value":""}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/parameters.yaml deleted file mode 100644 index 37cb20f3fc..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/parameters.yaml +++ /dev/null @@ -1,51 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -ADMIN USER: dewpoint -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ VERSION: 6.0.101000 -BRANCH: R19-3-2 -CLUSTER: 'Yes' -CLUSTER FOLDER: cluster -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE PARAM: OPTIONAL -DNS LABEL: ',"dnsLabel":{"value":""}' -IMAGE URN: OPTIONAL -INSTANCE NAME: f5bigiqvm -INSTANCE TYPE: Standard_D4s_v4 -INTERNAL IP COUNT: 0 -LIC POOL PARAM: ',"licensePoolKeys":{"value":"Do_Not_Create"}' -LICENSE PARAM: ',"bigIqLicenseKey1":{"value":"GHZVH-LQPWQZ-SQZ-FSGZUTT-GJWPORB"},"bigIqLicenseKey2":{"value":"KCDYN-PUPDST-BXY-CDIZLNQ-BELAZTT"}' -LICENSE POOL KEYS: Do Not Create -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 2 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -REG POOL PARAM: ',"regPoolKeys":{"value":"Do_Not_Create"}' -REGION: eastus -REGISTRATION POOL KEYS: Do Not Create -RESOURCE GROUP: dd-az-bigiq-cluster- -SEQUENCE NUMBER: 0 -SOLUTION LOGS: install.log;onboard.log;network.log -SSH PORT: 22 -STACK PARAM: ',"mgmtSubnetName":{"value":"mgmt"},"mgmtIpAddressRangeStart":{"value":"192.168.1.4"}' -STACK TYPE: existing-stack -STACK TYPE SHORT: es -SUBNET PARAM: ',"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"192.168.2.4"}' -SUBNET PARAM SELF: ',"internalIpSelfAddressRangeStart":{"value":"192.168.2.10"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//experimental/bigiq/licenseManagement//nic/existing-stack//azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -USER IDENTITY: NOT_SPECIFIED -VNET PARAM: ',"vnetName":{"value":"existingStackVnet"},"vnetResourceGroupName":{"value":""}' -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/postpub_parameters.yaml deleted file mode 100644 index b5a4798563..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/postpub_parameters.yaml +++ /dev/null @@ -1,51 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -ADMIN USER: dewpoint -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ VERSION: 6.0.101000 -BRANCH: master -CLUSTER: 'Yes' -CLUSTER FOLDER: cluster -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE PARAM: OPTIONAL -DNS LABEL: ',"dnsLabel":{"value":""}' -IMAGE URN: OPTIONAL -INSTANCE NAME: f5bigiqvm -INSTANCE TYPE: Standard_D4s_v4 -INTERNAL IP COUNT: 0 -LIC POOL PARAM: ',"licensePoolKeys":{"value":"Do_Not_Create"}' -LICENSE PARAM: ',"bigIqLicenseKey1":{"value":"GHZVH-LQPWQZ-SQZ-FSGZUTT-GJWPORB"},"bigIqLicenseKey2":{"value":"KCDYN-PUPDST-BXY-CDIZLNQ-BELAZTT"}' -LICENSE POOL KEYS: Do Not Create -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 2 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -REG POOL PARAM: ',"regPoolKeys":{"value":"Do_Not_Create"}' -REGION: eastus -REGISTRATION POOL KEYS: Do Not Create -RESOURCE GROUP: dd-az-bigiq-cluster- -SEQUENCE NUMBER: 0 -SOLUTION LOGS: install.log;onboard.log;network.log -SSH PORT: 22 -STACK PARAM: ',"mgmtSubnetName":{"value":"mgmt"},"mgmtIpAddressRangeStart":{"value":"192.168.1.4"}' -STACK TYPE: existing-stack -STACK TYPE SHORT: es -SUBNET PARAM: ',"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"192.168.2.4"}' -SUBNET PARAM SELF: ',"internalIpSelfAddressRangeStart":{"value":"192.168.2.10"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//experimental/bigiq/licenseManagement//nic/existing-stack//azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -USER IDENTITY: NOT_SPECIFIED -VNET PARAM: ',"vnetName":{"value":"existingStackVnet"},"vnetResourceGroupName":{"value":""}' -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/prepub_parameters.yaml deleted file mode 100644 index 88ab254cc0..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/existing-stack/byol/prepub_parameters.yaml +++ /dev/null @@ -1,54 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -ADMIN USER: dewpoint -# AUTOFILL BIGIQ LICENSE KEY: '' -AUTOFILL BIGIQ LICENSE KEY 2: '' -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ VERSION: 6.1.000000 -CLUSTER: 'Yes' -CLUSTER FOLDER: cluster -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE PARAM: OPTIONAL -DNS LABEL: ',"dnsLabel":{"value":""}' -IMAGE URN: OPTIONAL -INSTANCE NAME: f5bigiqvm -INSTANCE TYPE: Standard_D4s_v4 -INTERNAL IP COUNT: 0 -LIC POOL PARAM: ',"licensePoolKeys":{"value":"Do_Not_Create"}' -LICENSE PARAM: ',"bigIqLicenseKey1":{"value":""},"bigIqLicenseKey2":{"value":""}' -LICENSE POOL KEYS: Do Not Create -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 2 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -REG POOL PARAM: ',"regPoolKeys":{"value":"Do_Not_Create"}' -REGION: eastus -REGISTRATION POOL KEYS: Do Not Create -RESOURCE GROUP: dd-az-bigiq-cluster- -SEQUENCE NUMBER: 0 -SOLUTION LOGS: install.log;onboard.log;network.log -SSH PORT: 22 -STACK PARAM: ',"mgmtSubnetName":{"value":"mgmt"},"mgmtIpAddressRangeStart":{"value":"192.168.1.40"}' -STACK TYPE: existing-stack -STACK TYPE SHORT: es -SUBNET PARAM: ',"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"192.168.2.40"}' -SUBNET PARAM SELF: ',"internalIpSelfAddressRangeStart":{"value":"192.168.2.100"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/experimental/bigiq/licenseManagement//nic/existing-stack//azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -USER IDENTITY: NOT_SPECIFIED -VNET PARAM: ',"vnetName":{"value":"existingStackVnet"},"vnetResourceGroupName":{"value":""}' -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/new-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/new-stack/byol/parameters.yaml deleted file mode 100644 index 881ca59929..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/cluster/2nic/new-stack/byol/parameters.yaml +++ /dev/null @@ -1,49 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -ADMIN USER: dewpoint -BASE VLAN NAME: internal -BIGIP VERSION: 16.1.303000 -BIGIQ VERSION: 6.0.101000 -BRANCH: R19-3-2 -CLUSTER: 'Yes' -CLUSTER FOLDER: cluster -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE PARAM: OPTIONAL -DNS LABEL: ',"dnsLabel":{"value":""}' -IMAGE URN: OPTIONAL -INSTANCE NAME: f5bigiqvm -INSTANCE TYPE: Standard_D4s_v4 -INTERNAL IP COUNT: 0 -LIC POOL PARAM: ',"licensePoolKeys":{"value":"Do_Not_Create"}' -LICENSE PARAM: ',"bigIqLicenseKey1":{"value":"MSJJW-GCGZBH-NWD-MGKSAWL-PZALRNS"},"bigIqLicenseKey2":{"value":"PDCZN-JMOTBI-QAA-DXEDCGV-DINZWYU"}' -LICENSE POOL KEYS: Do Not Create -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 2 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -REG POOL PARAM: ',"regPoolKeys":{"value":"Do_Not_Create"}' -REGION: eastus -REGISTRATION POOL KEYS: Do Not Create -RESOURCE GROUP: dd-az-bigiq-cluster- -SEQUENCE NUMBER: 0 -SOLUTION LOGS: install.log;onboard.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET PARAM: '' -SUBNET PARAM SELF: '' -TEMPLATE NAME: nic -TEMPLATE URL: https://gitlab.f5net.com/cloudsolutions/f5-cloud-factory/raw//f5-azure-arm-templates/experimental/bigiq/licenseManagement//nic/new-stack//azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -USER IDENTITY: NOT_SPECIFIED -VNET PARAM: ',"instanceName":{"value":"f5vm"},"vnetAddressPrefix":{"value":"10.100"}' -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/bigip_version_parameters.yaml deleted file mode 100644 index 4611f1b97d..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/bigip_version_parameters.yaml +++ /dev/null @@ -1,47 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -ADMIN USER: dewpoint -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIQ VERSION: 6.1.000000 -BRANCH: remove-existing-stack-azure -CLUSTER: 'No' -CLUSTER FOLDER: standalone -CUSTOM IMAGE PARAM: OPTIONAL -DNS LABEL: ',"dnsLabel":{"value":""}' -INSTANCE NAME: f5bigiqvm -INSTANCE TYPE: Standard_D4s_v4 -INTERNAL IP COUNT: 0 -LIC POOL PARAM: ',"licensePoolKeys":{"value":"Do_Not_Create"}' -LICENSE PARAM: ',"bigIqLicenseKey1":{"value":""},"bigIqLicenseKey2":{"value":""}' -LICENSE POOL KEYS: Do Not Create -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"numberOfInternalIps":{"value":}' -NIC COUNT: 2 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REG POOL PARAM: ',"regPoolKeys":{"value":"Do_Not_Create"}' -REGION: eastus -REGISTRATION POOL KEYS: Do Not Create -RESOURCE GROUP: dd---n-- -SEQUENCE NUMBER: 0 -SOLUTION LOGS: install.log;onboard.log;network.log -SSH PORT: 22 -STACK PARAM: ',"mgmtSubnetName":{"value":"mgmt"},"mgmtIpAddress":{"value":"192.168.1.4"}' -STACK TYPE: existing-stack -STACK TYPE SHORT: es -SUBNET PARAM: ',"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"192.168.2.4"}' -SUBNET PARAM SELF: ',"internalIpSelfAddressRangeStart":{"value":"192.168.2.10"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/experimental/bigiq/licenseManagement//nic/existing-stack//azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetName":{"value":"existingStackVnet"},"vnetResourceGroupName":{"value":""}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/parameters.yaml deleted file mode 100644 index efd85912f0..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/parameters.yaml +++ /dev/null @@ -1,55 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -ADMIN USER: dewpoint -# AUTOFILL BIGIQ LICENSE KEY: '' -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ VERSION: 6.1.000000 -BRANCH: R19-3-2 -CLUSTER: 'No' -CLUSTER FOLDER: standalone -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE PARAM: OPTIONAL -DNS LABEL: ',"dnsLabel":{"value":""}' -IMAGE URN: OPTIONAL -INSTANCE NAME: f5bigiqvm -INSTANCE TYPE: Standard_D4s_v4 -INTERNAL IP COUNT: 0 -LIC POOL PARAM: ',"licensePoolKeys":{"value":"Do_Not_Create"}' -LICENSE PARAM: ',"bigIqLicenseKey1":{"value":""}' -LICENSE POOL KEYS: Do Not Create -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"numberOfInternalIps":{"value":}' -NIC COUNT: 2 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REG POOL PARAM: ',"regPoolKeys":{"value":"Do_Not_Create"}' -REGION: eastus -REGISTRATION POOL KEYS: Do Not Create -RESOURCE GROUP: dd---n-- -SEQUENCE NUMBER: 0 -SOLUTION LOGS: install.log;onboard.log;network.log -SSH PORT: 22 -STACK PARAM: ',"mgmtSubnetName":{"value":"mgmt"},"mgmtIpAddress":{"value":"192.168.1.4"}' -STACK TYPE: existing-stack -STACK TYPE SHORT: es -SUBNET PARAM: ',"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"192.168.2.4"}' -SUBNET PARAM SELF: ',"internalIpSelfAddressRangeStart":{"value":"192.168.2.10"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//experimental/bigiq/licenseManagement//nic/existing-stack//azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -USER IDENTITY: NOT_SPECIFIED -VNET PARAM: ',"vnetName":{"value":"existingStackVnet"},"vnetResourceGroupName":{"value":""}' -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/postpub_parameters.yaml deleted file mode 100644 index 32a72251ef..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/postpub_parameters.yaml +++ /dev/null @@ -1,55 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -ADMIN USER: dewpoint -# AUTOFILL BIGIQ LICENSE KEY: '' -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ VERSION: 6.1.000000 -BRANCH: master -CLUSTER: 'No' -CLUSTER FOLDER: standalone -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE PARAM: OPTIONAL -DNS LABEL: ',"dnsLabel":{"value":""}' -IMAGE URN: OPTIONAL -INSTANCE NAME: f5bigiqvm -INSTANCE TYPE: Standard_D4s_v4 -INTERNAL IP COUNT: 0 -LIC POOL PARAM: ',"licensePoolKeys":{"value":"Do_Not_Create"}' -LICENSE PARAM: ',"bigIqLicenseKey1":{"value":""}' -LICENSE POOL KEYS: Do Not Create -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"numberOfInternalIps":{"value":}' -NIC COUNT: 2 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REG POOL PARAM: ',"regPoolKeys":{"value":"Do_Not_Create"}' -REGION: eastus -REGISTRATION POOL KEYS: Do Not Create -RESOURCE GROUP: dd---n-- -SEQUENCE NUMBER: 0 -SOLUTION LOGS: install.log;onboard.log;network.log -SSH PORT: 22 -STACK PARAM: ',"mgmtSubnetName":{"value":"mgmt"},"mgmtIpAddress":{"value":"192.168.1.4"}' -STACK TYPE: existing-stack -STACK TYPE SHORT: es -SUBNET PARAM: ',"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"192.168.2.4"}' -SUBNET PARAM SELF: ',"internalIpSelfAddressRangeStart":{"value":"192.168.2.10"}' -TEMPLATE NAME: nic -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//experimental/bigiq/licenseManagement//nic/existing-stack//azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -USER IDENTITY: NOT_SPECIFIED -VNET PARAM: ',"vnetName":{"value":"existingStackVnet"},"vnetResourceGroupName":{"value":""}' -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/prepub_parameters.yaml deleted file mode 100644 index 6780cb4aec..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/bigiq/licenseManagement/standalone/2nic/existing-stack/byol/prepub_parameters.yaml +++ /dev/null @@ -1,54 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -ADMIN USER: dewpoint -# AUTOFILL BIGIQ LICENSE KEY: '' -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ VERSION: 6.1.000000 -CLUSTER: 'No' -CLUSTER FOLDER: standalone -CREATE PUBLIC IP: 'Yes' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE PARAM: OPTIONAL -DNS LABEL: ',"dnsLabel":{"value":""}' -IMAGE URN: OPTIONAL -INSTANCE NAME: f5bigiqvm -INSTANCE TYPE: Standard_D4s_v4 -INTERNAL IP COUNT: 0 -LIC POOL PARAM: ',"licensePoolKeys":{"value":"Do_Not_Create"}' -LICENSE PARAM: ',"bigIqLicenseKey1":{"value":""}' -LICENSE POOL KEYS: Do Not Create -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"numberOfInternalIps":{"value":}' -NIC COUNT: 2 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REG POOL PARAM: ',"regPoolKeys":{"value":"Do_Not_Create"}' -REGION: eastus -REGISTRATION POOL KEYS: Do Not Create -RESOURCE GROUP: dd---n-- -SEQUENCE NUMBER: 0 -SOLUTION LOGS: install.log;onboard.log;network.log -SSH PORT: 22 -STACK PARAM: ',"mgmtSubnetName":{"value":"mgmt"},"mgmtIpAddress":{"value":"192.168.1.4"}' -STACK TYPE: existing-stack -STACK TYPE SHORT: es -SUBNET PARAM: ',"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"192.168.2.4"}' -SUBNET PARAM SELF: ',"internalIpSelfAddressRangeStart":{"value":"192.168.2.10"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/experimental/bigiq/licenseManagement//nic/existing-stack//azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -USER IDENTITY: NOT_SPECIFIED -VNET PARAM: ',"vnetName":{"value":"existingStackVnet"},"vnetResourceGroupName":{"value":""}' -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/bigiq/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/byol/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/byol/parameters0.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/byol/parameters0.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/existing-stack/payg/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/bigiq/parameters.yaml deleted file mode 100644 index c9eea4a299..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/bigiq/parameters.yaml +++ /dev/null @@ -1,8 +0,0 @@ -BIGIP VERSION: 16.1.303000 -BRANCH: R19-3-2 -CREATE PUBLIC IP APP: 'null' -IMAGE URN: OPTIONAL -PHONEHOME: 'No' -PROVISION INT LB: 'null' -USER IDENTITY: NOT_SPECIFIED -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/byol/parameters.yaml deleted file mode 100644 index c9eea4a299..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/byol/parameters.yaml +++ /dev/null @@ -1,8 +0,0 @@ -BIGIP VERSION: 16.1.303000 -BRANCH: R19-3-2 -CREATE PUBLIC IP APP: 'null' -IMAGE URN: OPTIONAL -PHONEHOME: 'No' -PROVISION INT LB: 'null' -USER IDENTITY: NOT_SPECIFIED -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/payg/parameters.yaml deleted file mode 100644 index 0b1480624f..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/learning-stack/payg/parameters.yaml +++ /dev/null @@ -1,8 +0,0 @@ -BIGIP VERSION: 16.1.303000 -BRANCH: R19-3-2 -CREATE PUBLIC IP APP: 'null' -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -PHONEHOME: 'No' -PROVISION INT LB: 'null' -USER IDENTITY: NOT_SPECIFIED -VNET RESOURCE GROUP: diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/bigip_version_parameters.yaml deleted file mode 100644 index 73358bb29d..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/bigip_version_parameters.yaml +++ /dev/null @@ -1,50 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: ukwest -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/parameters.yaml deleted file mode 100644 index 0a36d74deb..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/parameters.yaml +++ /dev/null @@ -1,55 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: ukwest -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/postpub_parameters.yaml deleted file mode 100644 index 0a36d74deb..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/postpub_parameters.yaml +++ /dev/null @@ -1,55 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: ukwest -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/prepub_parameters.yaml deleted file mode 100644 index 09158c14f9..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/bigiq/prepub_parameters.yaml +++ /dev/null @@ -1,54 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: ukwest -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/bigip_version_parameters.yaml deleted file mode 100644 index b32cadd992..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/bigip_version_parameters.yaml +++ /dev/null @@ -1,50 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: null -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/parameters.yaml deleted file mode 100644 index b174b20ccb..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/parameters.yaml +++ /dev/null @@ -1,55 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: null -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/postpub_parameters.yaml deleted file mode 100644 index b174b20ccb..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/postpub_parameters.yaml +++ /dev/null @@ -1,55 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: null -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/prepub_parameters.yaml deleted file mode 100644 index d6cb3142f5..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/byol/prepub_parameters.yaml +++ /dev/null @@ -1,54 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: null -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/bigip_version_parameters.yaml deleted file mode 100644 index cc44c604e6..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/bigip_version_parameters.yaml +++ /dev/null @@ -1,47 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: https://cdn.f5.com/product/cloudsolutions/declarations/sample_02.json -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 2 -PASSWORD TYPE: password -REGION: eastus2 -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/parameters.yaml deleted file mode 100644 index dcb4b50a80..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/parameters.yaml +++ /dev/null @@ -1,52 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: https://cdn.f5.com/product/cloudsolutions/declarations/sample_02.json -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 2 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus2 -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/postpub_parameters.yaml deleted file mode 100644 index dcb4b50a80..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/postpub_parameters.yaml +++ /dev/null @@ -1,52 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: https://cdn.f5.com/product/cloudsolutions/declarations/sample_02.json -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 2 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus2 -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/prepub_parameters.yaml deleted file mode 100644 index 85aaff2d09..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-api/n-nic/new-stack/payg/prepub_parameters.yaml +++ /dev/null @@ -1,51 +0,0 @@ -ADDITIONAL NIC LOCATION: OPTIONAL -ADDTL NIC PARAM: ',"numberOfAdditionalNics":{"value":},"additionalNicLocation":{"value":""}' -BASE VLAN NAME: external;internal -BIGIP MODULES: ltm:nominal,asm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CLIENT ID: d40aad56-b0bd-466d-a6c4-6c9c4d0f9aa7 -CONFIG FILES: .passwd;.azCredentials -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: https://cdn.f5.com/product/cloudsolutions/declarations/sample_02.json -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE TYPE: Standard_DS4_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 2 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'null' -REGION: eastus2 -RESOURCE GROUP: dd-cl-api- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: XjC8Q~kh63kn6SsQuvakzaNRmzCC4Oly5dMyLcm. -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-api/n-nic///azuredeploy.json -TENANT ID: d106871e-7b91-4733-8423-f98586303b68 -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/bigiq/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/bigiq/parameters0.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/bigiq/parameters0.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/byol/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/existing-stack/payg/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml deleted file mode 100644 index 1812c51bfa..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/bigip_version_parameters.yaml +++ /dev/null @@ -1,50 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"numberOfInstances":{"value":2}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/parameters.yaml deleted file mode 100644 index 021f4288f8..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/parameters.yaml +++ /dev/null @@ -1,54 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -REGION: eastus -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"numberOfInstances":{"value":2}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml deleted file mode 100644 index 8c8ce1026d..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/postpub_parameters.yaml +++ /dev/null @@ -1,55 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: null -REGION: eastus -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"numberOfInstances":{"value":2}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml deleted file mode 100644 index 9b37188818..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/bigiq/prepub_parameters.yaml +++ /dev/null @@ -1,54 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: null -REGION: eastus -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"numberOfInstances":{"value":2}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/bigip_version_parameters.yaml deleted file mode 100644 index 0e6225895b..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/bigip_version_parameters.yaml +++ /dev/null @@ -1,50 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -INSTANCE PARAM: '"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value": }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus2 -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: '"numberOfInstances":{"value":2}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/parameters.yaml deleted file mode 100644 index 82cc53f61b..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/parameters.yaml +++ /dev/null @@ -1,54 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: '"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value": }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -REGION: eastus2 -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: '"numberOfInstances":{"value":2}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/postpub_parameters.yaml deleted file mode 100644 index 1b6a9b0321..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/postpub_parameters.yaml +++ /dev/null @@ -1,55 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: '"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value": }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: null -REGION: eastus2 -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: '"numberOfInstances":{"value":2}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/prepub_parameters.yaml deleted file mode 100644 index 483531e572..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/byol/prepub_parameters.yaml +++ /dev/null @@ -1,54 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: '"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value": }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: null -REGION: eastus2 -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: '"numberOfInstances":{"value":2}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml deleted file mode 100644 index a327b4b339..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/bigip_version_parameters.yaml +++ /dev/null @@ -1,47 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: ukwest -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"numberOfInstances":{"value":2}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/parameters.yaml deleted file mode 100644 index 5a1b01803d..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/parameters.yaml +++ /dev/null @@ -1,51 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -REGION: ukwest -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"numberOfInstances":{"value":2}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/postpub_parameters.yaml deleted file mode 100644 index 522532eed4..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/postpub_parameters.yaml +++ /dev/null @@ -1,52 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: null -REGION: ukwest -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"numberOfInstances":{"value":2}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/prepub_parameters.yaml deleted file mode 100644 index e617e725b4..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/new-stack/payg/prepub_parameters.yaml +++ /dev/null @@ -1,51 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: null -REGION: ukwest -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log -SSH PORT: 8022 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"numberOfInstances":{"value":2}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/production-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/production-stack/bigiq/parameters.yaml deleted file mode 100644 index 0e717efdd9..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/production-stack/bigiq/parameters.yaml +++ /dev/null @@ -1 +0,0 @@ -BRANCH: R19-3-2 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/production-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/production-stack/byol/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/production-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/1nic/production-stack/payg/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/existing-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/existing-stack/bigiq/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/existing-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/existing-stack/byol/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/existing-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/existing-stack/payg/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/bigip_version_parameters.yaml deleted file mode 100644 index 4325c00c30..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/bigip_version_parameters.yaml +++ /dev/null @@ -1,54 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpSelfAddressRangeStart":{"value":"10..1.19"},"externalIpAddressRangeStart":{"value":"10..1.20"},"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"10..2.20"},"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/parameters.yaml deleted file mode 100644 index 8f4d5ab111..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/parameters.yaml +++ /dev/null @@ -1,59 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'No' -REGION: eastus -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpSelfAddressRangeStart":{"value":"10..1.19"},"externalIpAddressRangeStart":{"value":"10..1.20"},"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"10..2.20"},"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/postpub_parameters.yaml deleted file mode 100644 index cb98bf2008..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/postpub_parameters.yaml +++ /dev/null @@ -1,59 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'Yes' -REGION: eastus -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpSelfAddressRangeStart":{"value":"10..1.19"},"externalIpAddressRangeStart":{"value":"10..1.20"},"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"10..2.20"},"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/prepub_parameters.yaml deleted file mode 100644 index 138555ff44..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/bigiq/prepub_parameters.yaml +++ /dev/null @@ -1,58 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'Yes' -REGION: eastus -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpSelfAddressRangeStart":{"value":"10..1.19"},"externalIpAddressRangeStart":{"value":"10..1.20"},"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"10..2.20"},"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/bigip_version_parameters.yaml deleted file mode 100644 index b3f8b5e181..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/bigip_version_parameters.yaml +++ /dev/null @@ -1,54 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: null -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -INSTANCE PARAM: '"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value": }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: ukwest -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: '"externalSubnetName":{"value":"external"}"externalIpSelfAddressRangeStart":{"value":"10..1.19"}"externalIpAddressRangeStart":{"value":"10..1.20"}"internalSubnetName":{"value":"internal"}"internalIpAddressRangeStart":{"value":"10..2.20"}"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value":}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/parameters.yaml deleted file mode 100644 index 26c7db7efc..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/parameters.yaml +++ /dev/null @@ -1,59 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: null -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: '"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value": }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'No' -REGION: ukwest -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: '"externalSubnetName":{"value":"external"}"externalIpSelfAddressRangeStart":{"value":"10..1.19"}"externalIpAddressRangeStart":{"value":"10..1.20"}"internalSubnetName":{"value":"internal"}"internalIpAddressRangeStart":{"value":"10..2.20"}"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value":}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/postpub_parameters.yaml deleted file mode 100644 index cfd2612794..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/postpub_parameters.yaml +++ /dev/null @@ -1,59 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: null -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: '"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value": }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'Yes' -REGION: ukwest -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: '"externalSubnetName":{"value":"external"}"externalIpSelfAddressRangeStart":{"value":"10..1.19"}"externalIpAddressRangeStart":{"value":"10..1.20"}"internalSubnetName":{"value":"internal"}"internalIpAddressRangeStart":{"value":"10..2.20"}"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value":}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/prepub_parameters.yaml deleted file mode 100644 index feb06f411f..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/byol/prepub_parameters.yaml +++ /dev/null @@ -1,58 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -AUTOFILL EVAL LICENSE KEY: '' -AUTOFILL EVAL LICENSE KEY 2: null -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -IMAGE URN: OPTIONAL -INSTANCE PARAM: '"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value": }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"licenseKey1":{"value":""},"licenseKey2":{"value":""}' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: byol -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'Yes' -REGION: ukwest -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: '"externalSubnetName":{"value":"external"}"externalIpSelfAddressRangeStart":{"value":"10..1.19"}"externalIpAddressRangeStart":{"value":"10..1.20"}"internalSubnetName":{"value":"internal"}"internalIpAddressRangeStart":{"value":"10..2.20"}"instanceName":{"value":"f5vm"}"numberOfExternalIps":{"value":}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/bigip_version_parameters.yaml deleted file mode 100644 index 7ff56540bf..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/bigip_version_parameters.yaml +++ /dev/null @@ -1,51 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus2 -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpSelfAddressRangeStart":{"value":"10..1.19"},"externalIpAddressRangeStart":{"value":"10..1.20"},"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"10..2.20"},"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/parameters.yaml deleted file mode 100644 index 00a59baf0a..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/parameters.yaml +++ /dev/null @@ -1,56 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'No' -REGION: eastus2 -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpSelfAddressRangeStart":{"value":"10..1.19"},"externalIpAddressRangeStart":{"value":"10..1.20"},"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"10..2.20"},"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/postpub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/postpub_parameters.yaml deleted file mode 100644 index 00a59baf0a..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/postpub_parameters.yaml +++ /dev/null @@ -1,56 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -BRANCH: master -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'No' -REGION: eastus2 -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpSelfAddressRangeStart":{"value":"10..1.19"},"externalIpAddressRangeStart":{"value":"10..1.20"},"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"10..2.20"},"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -TEMPLATE URL: https://raw.githubusercontent.com/F5Networks/f5-azure-arm-templates//supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/prepub_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/prepub_parameters.yaml deleted file mode 100644 index 54fe7b1463..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/failover/same-net/via-lb/3nic/new-stack/payg/prepub_parameters.yaml +++ /dev/null @@ -1,55 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -BASE VLAN NAME: '' -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CREATE PUBLIC IP APP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: Best25Mbps -IMAGE URN: f5-networks:f5-big-ip-best:f5-bigip-virtual-edition-25m-best-hourly-po-f5:15.1.801000 -INSTANCE PARAM: ',"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value": - }' -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: '' -LICENSE POOL: production -LICENSE POOL PARAM: '' -LICENSE TYPE: payg -MGMT PIP1: mgmt-pip0 -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 3 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -PHONEHOME: 'No' -PROVISION INT LB: 'No' -REGION: eastus2 -RESOURCE GROUP: dd-via-lb- -SEQUENCE NUMBER: 0 -SERVICE PRINCIPAL: cd035b5e-2a51-42f6-8ada-f254abba58c0 -SOLUTION LOGS: install.log;onboard.log;cluster.log;network.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpSelfAddressRangeStart":{"value":"10..1.19"},"externalIpAddressRangeStart":{"value":"10..1.20"},"internalSubnetName":{"value":"internal"},"internalIpAddressRangeStart":{"value":"10..2.20"},"instanceName":{"value":"f5vm"},"numberOfExternalIps":{"value":}' -TEMPLATE URL: file://$PWD/supported/failover/same-net/via-lb/nic///azuredeploy.json -TIMEZONE: UTC -USAGE ANALYTICS CHOICE: 'No' -VNET PARAM: ',"vnetAddressPrefix":{"value":"10.4"}' diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/learning-stack/iapps/f5.http.v1.2.0rc7.tmpl b/automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/learning-stack/iapps/f5.http.v1.2.0rc7.tmpl deleted file mode 100644 index 2c59761de3..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/learning-stack/iapps/f5.http.v1.2.0rc7.tmpl +++ /dev/null @@ -1,4278 +0,0 @@ -# Copyright 2016-2021. F5 Networks, Inc. See End User License Agreement (EULA) for -# license terms. Notwithstanding anything to the contrary in the EULA, Licensee -# may copy and modify this software product for its internal business purposes. -# Further, Licensee may upload, publish and distribute the modified version of -# the software product on devcentral.f5.com. - -cli script f5.iapp.1.5.2.cli { - -# Initialization proc for all templates. -# Parameters "start" and "stop" or "end". -proc iapp_template { action } { - switch $action { - start { - catch { tmsh::modify sys scriptd log-level debug } - set ::clock_clicks [clock clicks] - puts "\nStarting iApp $tmsh::app_template_name [clock format \ - [clock seconds] -format {%m/%d/%Y %T}]\n" - tmsh::log info "Starting iApp template $tmsh::app_template_name" - } - stop - - end { - if { [info exists ::substa_debug] } { - puts $::substa_debug - } - puts "\nEnding iApp $tmsh::app_template_name [clock format \ - [clock seconds] -format {%m/%d/%Y %T}]\nRun time [expr \ - { ([clock clicks] - $::clock_clicks) / 1000 }] msec\n" - tmsh::log info "Ending iApp template $tmsh::app_template_name" - } - } - set ::HTTP_CONTENT_TYPES { application/(css\|css-stylesheet\|doc\|excel\|javascript\|json\|lotus123\|mdb\|mpp\|msaccess\|msexcel\|ms-excel\|mspowerpoint\|ms-powerpoint\|msproject\|msword\|ms-word\|photoshop\|postscript\|powerpoint\|ps\|psd\|quarkexpress\|rtf\|txt\|visio\|vnd\\.excel\|vnd\\.msaccess\|vnd\\.ms-access\|vnd\\.msexcel\|vnd\\.ms-excel\|vnd\\.mspowerpoint\|vnd\\.ms-powerpoint\|vnd\\.ms-pps\|vnd\\.ms-project\|vnd\\.msword\|vnd\\.ms-word\|vnd\\.ms-works\|vnd\\.ms-works-db\|vnd\\.powerpoint\|vnd\\.visio\|vnd\\.wap\\.cmlscriptc\|vnd\\.wap\\.wmlc\|vnd\\.wap\\.xhtml\\+xml\|vnd\\.word\|vsd\|winword\|wks\|word\|x-excel\|xhtml\\+xml\|x-java-jnlp-file\|x-javascript\|x-json\|x-lotus123\|xls\|x-mdb\|xml\|x-mscardfile\|x-msclip\|x-msexcel\|x-ms-excel\|x-mspowerpoint\|x-msproject\|x-ms-project\|x-msword\|x-msworks-db\|x-msworks-wps\|x-photoshop\|x-postscript\|x-powerpoint\|x-ps\|x-quark-express\|x-rtf\|x-vermeer-rpc\|x-visio\|x-vsd\|x-wks\|x-word\|x-xls\|x-xml) image/(photoshop\|psd\|x-photoshop\|x-vsd) text/(css\|html\|javascript\|json\|plain\|postscript\|richtext\|rtf\|vnd\\.wap\\.wml\|vnd\\.wap\\.wmlscript\|wap\|wml\|x-component\|xml\|x-vcalendar\|x-vcard) } -} - -proc iapp_is { args } { - set up_var [lindex $args 0] - upvar $up_var var - if { [info exists var] } { - foreach val [lrange $args 1 end] { - if { [subst $var] eq $val } { - return 1 - } - } - } - return 0 -} - -proc iapp_substa { args } { - upvar substa_in argx \ - substa_out rval - set argx $args - - # check the explicit value first. - # multiple layers of variable substitution requires multiple subst. - # error occurs here if any of the substituted variables do not exist - # valid wildcard (*) array entries will fail here first. - uplevel { - append ::substa_debug "\n$substa_in" - if { [info exists [set substa_in]] } { - set substa_out [subst $$substa_in] - set substa_out [subst $substa_out] - } else { - # since explicit value did not exist, try a wildcard value. - # substitute "*" as the array key and repeat. - set substa_tmp [split $substa_in "()"] - set substa_in "[lindex $substa_tmp 0](*)" - append ::substa_debug "*" - if { [info exists [set substa_in]] } { - set substa_out [subst $$substa_in] - set substa_out [subst $substa_out] - } else { - error "substa \"$substa_in\" array value not found" - } - } - } - return $rval -} - -proc iapp_conf { args } { - - # Return value $object_name is set to the first word in $arg that - # contains an underscore, since the position of the object name in - # tmsh syntax is not consistent. - set args [join $args] - set object_name [lindex $args [lsearch -glob $args "*_*"]] - - # Global array ::tmsh_history persists between calls to iapp_conf - # in order to suppress duplicate commands. - if { ![info exists ::tmsh_history($args)] } { - set ::tmsh_history($args) 1 - iapp_debug $args - switch -exact -- [string range $args 0 5] { - create { tmsh::create [string range $args 7 end] } - modify { tmsh::modify [string range $args 7 end] } - delete { tmsh::delete [string range $args 7 end] } - default { error "iapp_conf illegal parameter" } - } - } - return $object_name -} - -proc iapp_make_safe_password { password } { - return [string map { \' \\\' \" \\\" \{ \\\{ \} \\\} \; \\\; \| \\\| \# \\\# \ \\\ \\ \\\\ } $password] -} - -proc iapp_pull { loc items_list } { - upvar $items_list items - if { [set item [lindex $items $loc]] != "" } { - set items [lreplace $items $loc $loc] - } - return $item -} - -proc iapp_process_flags { flags_array args_list } { - upvar $flags_array flags - upvar $args_list args - - if { [set dubdash [lsearch $args "--"]] != -1 } { - set args [lreplace $args $dubdash $dubdash]; - } else { - set dubdash end - } - - foreach flag [array names flags] { - while { [set ptr [lsearch [lrange $args 0 $dubdash] $flag]] != -1 } { - set args [lreplace $args $ptr $ptr]; - - # we want to run the code in the flags_array at the calling - # proc's level so that the variables that it sets up are - # available there. - set access_var [format "$%s(%s)" $flags_array $flag] - set command [subst -nocommands { set ptr $ptr ; subst $access_var }] - - uplevel 1 $command - } - } - return $args -} - -proc iapp_tmos_version { args } { - set cversion [tmsh::version] - if { $cversion eq "" } { - tmsh::log err "unable to determine TMOS version" - error "unable to determine TMOS version" - } - - # if no op+version was specified, just return the version - if { $args eq "" } { return $cversion } - if { [llength $args] > 2 } { - error "Too many arguments" - } - - set op [lindex $args 0]; # operator - set NOTFOUND -1 - # constrain to valid operators - adding more is fine as long as - # they are supported by [expr] (and makes sense) - if { [lsearch -exact { < > <= >= == != } $op] == $NOTFOUND } { - tmsh::log err "illegal operator: $op" - error "illegal operator: $op" - } - - set tversion [lindex $args 1]; # target version - # one or two decimal digits, optionally followed by 0-2 complete groups of - # dots followed by one or two decimal digits with nothing before or after - set regex {^\d{1,2}(\.\d{1,2}){0,2}$} - if { ! [regexp -- $regex $tversion] } { - tmsh::log err "cannot parse version from: $tversion" - error "cannot parse version from: $tversion" - } - - # p=>prefix, c=>current, t=>target - foreach p { c t } { - # extract major/minor/point components - scan [set [set p]version] "%d.%d.%d" [set p]mjr [set p]mnr [set p]pnt - # ensure that these are each set to at least 0 - foreach level { mjr mnr pnt } { - if { ! [info exists [set p]${level}] } { set [set p]${level} 0 } - } - # turn them into one big number that we can compare - # leave room in-between just to be safe - set [set p]num [expr { - [set [set p]mjr]*1000000 + - [set [set p]mnr]*10000 + - [set [set p]pnt]*100 - }] - } - # a simple numeric comparison is all that is needed at this point - return [eval expr $cnum $op $tnum ] -} - -proc iapp_safe_display { args } { - # strings sent to APL must be truncated to 65535 bytes, see BZ435592 - if { [string length [set [set args]]] > 65535 } { - set last_newline [string last "\n" [set [set args]] 65500] - return "[string range [set [set args]] 0 $last_newline]Error: Too many items for display" - } else { - return [set [set args]] - } -} - -proc iapp_get_items { args } { - - # Set default values. - set error_msg "iapp_get_items $args:" - set do_binary 0 - set nocomplain 0 - set items "" - set join_char "\n" - set recursive "recursive" - set com_dir "/Common" - set loc_dir "[tmsh::pwd]" - - # Set up flag-related work. - array set flags { - -exists { [set do_binary 1] } - -nocomplain { [set nocomplain 1] } - -list { [set join_char " "] } - -norecursive { [set recursive ""] } - -local { [set com_dir ""] } - -dir { [set loc_dir [iapp_pull $ptr args]] } - -filter { [set filter_field [iapp_pull $ptr args]] \ - [set filter_op [iapp_pull $ptr args]] \ - [set filter_value [iapp_pull $ptr args]] } - } - iapp_process_flags flags args - - # Get system object names in all requested directories. - set save_dir [tmsh::pwd] - foreach dir [lsort -unique "$com_dir $loc_dir"] { - tmsh::cd $dir - set tmsh_rval [catch { - foreach obj [tmsh::get_config $args $recursive] { - - if { [info exists filter_field] } { - if { $filter_field eq "NAME" } { - set val [tmsh::get_name $obj] - } else { - # If get_field_value throws error, assume "none" value - if { [catch { - set val [tmsh::get_field_value $obj $filter_field] - # strip quotes per BZ442531 - set val [string map {\" ""} $val] - }]} { set val none } - } - # Non-Tcl operators =~ and !~ added for extra flexibility - if { $filter_op eq "=~" } { - set filter "\[regexp \"$filter_value\" \"$val\"\]" - } elseif { $filter_op eq "!~" } { - set filter "!\[regexp \"$filter_value\" \"$val\"\]" - } else { - set filter "\\\"$val\\\" $filter_op \\\"$filter_value\\\"" - } - # If filter fails, skip to next object - if { ![eval expr $filter] } { - continue - } - } - # string map catches /Common added by ltm profile ntlm, - # which is unlike all other ltm profile return values. - lappend items $dir/[string map {/Common/ ""} [tmsh::get_name $obj]] - } - } err ] - } - tmsh::cd $save_dir - - # array keys: $do_binary,$tmsh_rval,$nocomplain. Do not insert whitespace. - array set rval { - 0,0,0 {[join $items $join_char]} - 0,0,1 {[join $items $join_char]} - 0,1,0 {[error "$error_msg $err"]} - 0,1,1 {} - 1,0,0 {[llength $items]} - 1,0,1 {[llength $items]} - 1,1,0 {0} - 1,1,1 {0} - } - - return [subst $rval($do_binary,$tmsh_rval,$nocomplain)] -} - -proc iapp_get_provisioned { args } { - - array set lnum { - none 0 - minimum 1 - nominal 2 - dedicated 3 - } - - # Set defaults. - set required minimum - set do_binary 1 - - # Set up flag-related work. - array set flags { - -is { [set required [iapp_pull $ptr args]] } - -level { [set do_binary 0] } - } - iapp_process_flags flags args - if { [llength $args] > 1 } { - error "Too many arguments" - } - - # If checking for AM provisioning on TMOS < 11.4, - # check for WAM provisioning instead. - if { $args eq "am" && [iapp_tmos_version < 11.4] } { - set args "wam" - } - - # Get the provisioning level. If blank, assume none. - # Proc only checks 1 module at a time, so only 1 object is returned. - if { [catch { - set obj [tmsh::get_config sys provision $args] - set level [tmsh::get_field_value [lindex $obj 0] level] - }]} { set level none } - - if { $do_binary } { - return [expr { $lnum($level) >= $lnum($required) }] - } else { - return $level - } -} - -proc iapp_get_user { args } { - - # Set defaults. - set do_role 0 - set do_binary 0 - - # Set up flag-related work. - array set flags { - -is_admin { [set do_binary 1] } - } - iapp_process_flags flags args - if { [llength $args] > 1 } { - error "Too many arguments" - } - - # Show user auth was introduced in v11.6 - set user "unknown" - catch { - set user [tmsh::show auth user field-fmt] - } err - if { $do_binary } { - return [expr { $user == "unknown" - || [string first "role " $user] == -1 - || [string first "role admin" $user] != -1 - || [string first "role resource-admin" $user] != -1 }] - } else { - return $user - } -} - -proc iapp_destination { args } { - # Set defaults. Flag actions may overwrite defaults later. - set route_domain 0 - set do_mask 0 - set port 0 - - # Set up flag-based actions. - array set flags { - -route_domain { [set route_domain [iapp_pull $ptr args]] } - -mask { [set do_mask 1] } - -length { [set cidr_bits [iapp_pull $ptr args]] } - } - - if { [llength [set non_switches [iapp_process_flags flags args]]] > 2 } { - error "Too many arguments" - } - if { [llength $non_switches] == 2 } { set port [lindex $non_switches 1] } - set addr [lindex $non_switches 0] - - - # Detect a CIDR mask and pull it off the addr string - if { [set loc [string first "/" $addr end-4]] != -1 } { - set cidr_bits [string range $addr [expr {$loc + 1}] end] - set addr [string range $addr 0 [expr {$loc - 1}]] - } - - # Pull the route-domain off the addr string, but only use it as the - # route domain if it wasn't overridden by -route_domain flag. - if { [string first "%" $addr] != -1 } { - if { $route_domain == 0 } { - # route-domain is still default, so use value from addr string - set route_domain [lindex [split $addr "%"] 1] - } - set addr [lindex [split $addr "%"] 0] - } - - if { $do_mask } { - - # Define the delta between ipv4 and ipv6. - # length: ipv4 mask is 32 bits, ipv6 is 128 bits. - # group: ipv4 is grouped in octets, ipv6 as 16 bit words. - # format: ipv4 is decimal notation, ipv6 is hex. - # format1 also has the delimiter, format2 does not. - array set v { - 0,length 32 - 0,group 8 - 0,format1 d. - 0,format2 d - 1,length 128 - 1,group 16 - 1,format1 .4x: - 1,format2 .4x - } - set is_ipv6 [string match "*:*:*" $addr] - - # Soften result of an illegal -length parameter. - if { ![info exists cidr_bits] || $cidr_bits > $v($is_ipv6,length) } { - set cidr_bits $v($is_ipv6,length) - } elseif { $cidr_bits < 0 } { - set cidr_bits 0 - } - - # Loop on the full length of the mask: 32 bits for ipv4, 128 for ipv6 - for { set octet 0; set i 0 } { $i < $v($is_ipv6,length) } { incr i } { - - # Take a break at intervals to save the grouping and add delimiter. - # Interval is 8 bits for ipv4 and 16 bits for ipv6. - if { $i && ![expr {$i % $v($is_ipv6,group)}] } { - - # Add the grouping and delimiter to the mask, then reset. - append mask [format %$v($is_ipv6,format1) $octet] - set octet 0 - } - # Shift the prior bits left by multiplying by 2. - # Then add the current bit, which is 1 if part of the mask, 0 if not. - # Current bit is part of the mask if $i < number of bits in the mask. - set octet [expr { 2 * $octet + ($i < $cidr_bits) }] - } - # Add the final grouping, then return the finished mask. - set ret_val [format $mask%$v($is_ipv6,format2) $octet] - - } else { - - # calculate a destination - # the route domain might be a name and we need a number. - if { ![string is integer $route_domain] } { - set route_domains [tmsh::get_config "/ net route-domain $route_domain"] - if { [llength $route_domains] != 1 } { - error "no such route domain: $route_domain" - } - # since we have already determined that the list is 1 long, - # this explicit reference to element 0 is safe - set route_domain [tmsh::get_field_value [lindex $route_domains 0] "id"] - } - - set route_domain [expr { $route_domain == 0 ? "" : "%$route_domain" }] - - # 0 and * represent wildcard port assignments in the GUI, - # but TMSH requires the string 'any' to specify a wildcard. - if { $port == 0 || $port == "*" } { - set port any - } - - # Build the final destination. Use ":" for node names even if ipv6. - set is_ipv6_literal [string match "*:*:*" $addr] - set addr_delimiter [expr { $is_ipv6_literal ? "." : ":" }] - set ret_val ${addr}${route_domain}${addr_delimiter}${port} - } - return $ret_val -} - -proc iapp_pool_members { args } { - - # Set defaults. - array set fields { - address addr - port port - port-secure port_secure - connection-limit connection_limit - priority-group priority - ratio ratio - } - set route_domain "" - set port_override -1 - set aaa_domain 0 - set aaa_priority -1 - set app_service "" - # Set up flag-related work. - array set flags { - -fields { [array set fields [iapp_pull $ptr args]] } - -route_domain { [set route_domain [iapp_pull $ptr args]] } - -port { [set port_override [iapp_pull $ptr args]] } - -aaa_domain { [set aaa_domain 1] } - -aaa_pool { [set aaa_priority 0] } - -noapp { [set app_service " app-service none"] } - } - iapp_process_flags flags args - - # Identify the non-address/non-port fields. These go inside braces in tmsh. - set nonport_fields [lsearch -all -not -inline -regexp \ - [array names fields] {address|port|port-secure}] - - set members "" - foreach row [join $args] { - - # Skip invalid table rows. - if { [llength [join $row]] %2 == 1 } { - continue - } - - # Import APL table into an array for processing. - array unset columns - array set columns [join $row] - set addr $columns($fields(address)) - - # Identify the port number, either from table columns or by -port flag. - if { $port_override != -1 } { - set port $port_override - } elseif { [info exists columns($fields(port))] } { - set port $columns($fields(port)) - } elseif { [info exists columns($fields(port-secure))] } { - set port $columns($fields(port-secure)) - } else { - set port 80 - } - - # If specified, strip entered route domain and append the flag value. - if { $route_domain != "" } { - set addr [lindex [split $addr "%"] 0] - set addr "$addr%$route_domain" - } - - # If -aaa_domain, use domain controller format, otherwise use pool format - if { $aaa_domain } { - append members " $columns($fields(host)) \{ ip $addr $app_service \}" - } else { - append members " [iapp_destination $addr $port] \{" - - # Transfer non-port fields from the table to the tmsh string. - foreach name $nonport_fields { - if { [info exists columns($fields($name))] } { - append members " $name $columns($fields($name))" - } - } - - # If -aaa_pool, add priority field with incrementing value. - # This is required by APM. - if { $aaa_priority >= 0 } { - append members " priority-group [incr aaa_priority]$app_service" - } - append members " \}" - } - } - - return "[expr { $aaa_domain ? "" : "members " }][expr { $members eq "" \ - ? "none" : "replace-all-with \{ $members \}" }]" -} - -proc iapp_debug { args } { - - # Passwords should be obscured in all logs. Fields shown here are handled - # in this proc, but the global variable may be overwritten if alternate - # fields should be obscured. - if { ![info exists ::SENSITIVES] } { - set ::SENSITIVES { - account-password - admin-encrypted-password - bind-pw - PASSWORD - password - passwd - proxy-ca-passphrase - secret - } - } - - # look for any of the sensitive words, and replace the word that follows it - set regex "(\\m([join $::SENSITIVES |])\\M)\\s+\[^\\s\]*" - regsub -all $regex [join $args] {\1 -OBSCURED-} args - regsub -all "().*()" $args {\1-OBSCURED-\2} args - - set lev [tmsh::get_field_value [lindex [tmsh::get_config sys scriptd \ - log-level] 0] log-level] - if { $lev eq {debug} } { - puts $args - } -} - -# The apm_config proc provides a tmsh pre-processor for APM -# configuration, which in most cases will drastically reduce -# implementation code. To configure APM with this proc, pass -# it an array of object names and associated meta-tag substitutions. -# Each object must be categorized as a profile, a resource, or -# a policy-item. APM agents and customization-groups are derived -# from these 3 categories as needed. -# -# apm_config's return value is a list of the APM profiles defined -# in the argument and instantiated by the proc. This allows the -# procedure call to be embedded directly into a virtual server -# definition. -# -# These universal meta-tags may be placed anywhere in the array: -# The object name, eg. apm_access -# The app name, including folder, eg. /Common/my_app.app/my_app -# -# Profile objects require the following meta-tags: -# The tmsh object type, eg. "apm profile access" -# The body of the object, eg.: -# "access-policy -# defaults-from /Common/access -# eps-group _eps -# errormap-group _errormap -# general-ui-group _general_ui" -# -# apm_config will automatically create default customization-groups -# for the "-group" lines specified in access profile definitions. -# In the above example, there is no need to additionally specify a -# customization-group for errormap and general-ui. -# -# is a catch-all for other APM types, eg: -# apm_sso { -# {apm sso kerberos} -# "account-name -# account-password -# realm " } -# -# In the example above, and are -# apm_config meta-tags, while , , and must -# be substituted before calling apm_config, eg. if these tags are -# defined in $pre_proc_map, they may be substituted with: -# array set apm_map [string map [subst $pre_proc_map] [array get apm_map]] -# -# Resource objects require the following meta-tags: -# The apm resource object type, eg. "webtop" -# The body of the object, eg.: -# "customization-group -# minimize-to-tray false -# webtop-type full" -# -# In the above example, a customization-group is specified. Any -# customization-group is assumed to be blank unless further defined by the -# meta-tag, eg. {type webtop} -# -# Policy-item objects are defined by the following meta-tags: -# default "resource-assign" -# default "customization-group " -# default "agents { _ag { type }}" -# default "" -# default "1" -# default "action" -# defaults to a set of expressions/next-items where specified -# default "fallback" -# default "Successful" -# default "successful" -# -# apm_config generates the APM agent and customization-group definitions -# as required for each policy-item, but specific objects may be defined -# by using the and meta-tags. -# To suppress the formation of an APM agent, specify {}. - -proc iapp_apm_config { args } { - - set app_service "" - array set flags { - -noapp { [set app_service "app-service none\n "] } - } - iapp_process_flags flags args - - upvar [lindex $args 0] map_array - - # Pull $prefix from the array - set prefix $map_array(prefix) - unset map_array(prefix) - - # Stencils for creating apm objects - set access_form \ - " apm policy access-policy {\n \ - $app_service caption general\n \ - start-item \n \ - default-ending \n \ - items replace-all-with {\n }\n}" - - set profile_form " {\n \ - $app_service \n}" - - set resource_form " apm resource {\n \ - $app_service \n}" - - set agent_form " apm policy agent _ag {\n \ - $app_service \n}" - - set group_form " apm policy customization-group {\ - $app_service }" - - set agent_group_form " apm policy customization-group _ag {\ - $app_service }" - - set policy_item_form " apm policy policy-item { - $app_service caption - color - - \n}" - - # 1st round apm string map - set default_map_1 { - {} - "customization-group _ag" - "agents replace-all-with { - _ag { type }}\n " - - {1} - "item-type action" - "rules - {[expr {[string first $map_array($item)] != -1 ? "{ - caption - expression - next-item ${prefix}_ - }":""}][expr {[string first $map_array($item)] != -1 ? "{ - caption - expression - next-item ${prefix}_ - }":""}]{ - caption - next-item ${prefix}_ - }}" - } - - # 2nd round apm string map - set default_map_2 { - [expr { $item eq {default} ? "$prefix" : "${prefix}_$item" }] - $prefix - [string map {/ :} $prefix] - "" - "resource-assign" - "successful" - "Successful" - "fallback" - } - - # Build APM access profile and access-policy from the access_form. - # Tags and are picked up from - # $map_array items. and are picked up from - # $default_map_2. - foreach item [lsort [array names map_array]] { - - # Pick up the tag. There should be just 1. - set access_form [string map $map_array($item) $access_form] - - # Filter out items that do not belong in the access-policy. - # Anything with an ITEM_xxx tag belongs - if { [string first }\n" - set access_items [string map $map_array($item) $access_items] - set access_items [string map [subst $default_map_1] $access_items] - } - - # Build APM resources, policy-items, agents, and customization-groups from - # the policy_item_form and resource_form. - foreach item [lsort [array names map_array]] { - - # Each item starts as a profile, a resource, or a policy-item. - # Profiles are free-form, so other apm objects can use the profile form. - # In most cases, a policy-item spawns an agent. - # Any definition specifying a customization-group will spawn that group. - if { [string first "" $map_array($item)] != -1 } { - - # Collect profile names for attachment to the virtual server - if { [string first "apm profile " $map_array($item)] != -1 } { - lappend profiles [expr { $item eq {default} - ? "$prefix" : "${prefix}_$item" }] - # When an access profile is found, built a policy of the same name - if { [string first "apm profile access" $map_array($item)] != -1 } { - set def [string map " {$access_items}" $access_form] - append cmds "[string map [subst $default_map_2] $def]\n" - } - } - set def $profile_form - } elseif { [string first "" $map_array($item)] != -1 } { - set def $resource_form - } else { - set def $policy_item_form - if { [string first " {}" $map_array($item)] == -1 } { - append def $agent_form - } - } - - # Apply 1st pass of string maps - set def [string map $map_array($item) $def] - set def [string map [subst $default_map_1] $def] - - # If a customization-group is specified, add its definition - if { [string first "customization-group" $def] != -1 } { - if { [string first "apm policy agent" $def] != -1 } { - append def $agent_group_form - } elseif { [string first "apm profile access" $def] == -1 } { - append def $group_form - } - } - - # Apply 2nd pass of string maps - set def [string map $map_array($item) $def] - append cmds [string map [subst $default_map_2] $def] - } - - # Divide and execute tmsh commands - set tag "" - set tag_length [string length $tag] - set last [expr { [string first $tag $cmds] + $tag_length }] - while { [set pos [string first $tag $cmds $last]] != -1 } { - incr pos -1 - iapp_conf create [string range $cmds $last $pos] - set last [expr { $pos + $tag_length + 1 }] - } - iapp_conf create [string range $cmds $last end] - return $profiles -} - -proc iapp_upgrade_template { upgrade_var upgrade_trans } { - upvar $upgrade_var upgrade_var_arr - upvar $upgrade_trans upgrade_trans_arr - - # create the new variables from the old - foreach { var } [array names upgrade_var_arr] { - - # substitute old variable name for abbreviation "##" - regsub -all {##} $upgrade_var_arr($var) \$$var map_cmd - - # run the mapping command from inside the array - if { [catch { subst $map_cmd } err] } { - if { [string first "no such variable" $err] == -1 } { - puts "ERROR $err" - } - } - } - - # move variables over and apply translations - set var_mods "" - set var_adds "" - foreach var [array names vx] { - - # if the APL variable name is in the translation array, - # then use the custom translation built for that variable. - if { [info exists upgrade_trans_arr($var)] } { - array set sub_arr [subst $upgrade_trans_arr($var)] - if { [info exists sub_arr($vx($var))] } { - set vx($var) $sub_arr($vx($var)) - } - array unset sub_arr - # else, if the APL variable value is in the translation array, - # then use the generic translation of that value. - } elseif { [info exists upgrade_trans_arr($vx($var))] } { - set vx($var) [subst $upgrade_trans_arr($vx($var))] - } - - # add to tmsh command string - if { [info exists ::$var] } { - append var_mods "\n $var \{ value \"$vx($var)\" \} " - } else { - append var_adds "\n $var \{ value \"$vx($var)\" \} " - } - } - - # move tables over - set tbl_mods "" - set tbl_adds "" - foreach tbl [array names tx] { - - # convert table from APL format to TMSH format - if { ![llength $tx($tbl)] } { - set tbl_def "column-names none" - } else { - set rows_def "" - foreach apl_row $tx($tbl) { - array set row_arr [join $apl_row] - append rows_def "\n \{ row \{ " - foreach apl_col [array names row_arr] { - append rows_def "$row_arr($apl_col) " - } - append rows_def "\}\}" - } - set tbl_def \ - "\n column-names \{ [array names row_arr] \} rows \{ $rows_def \}" - array unset row_arr - } - - # add to tmsh command string - if { [info exists ::$tbl] } { - append tbl_mods "\n $tbl \{ $tbl_def \} " - } else { - append tbl_adds "\n $tbl \{ $tbl_def \} " - } - } - - # construct the "tmsh modify" command - set cmd "sys application service $tmsh::app_name " - if { [llength $var_mods] } { - append cmd "\nvariables modify { $var_mods }" - } - if { [llength $var_adds] } { - append cmd "\nvariables add { $var_adds }" - } - if { [llength $tbl_mods] } { - append cmd "\ntables modify { $tbl_mods }" - } - if { [llength $tbl_adds] } { - append cmd "\ntables add { $tbl_adds }" - } - - # Execute with debug output. This conversion takes place within the - # existing ASO, so tmsh modify is used instead of tmsh create. - iapp_debug "TEMPLATE UPGRADE" - iapp_conf modify $cmd - return -} - -proc iapp_downgrade_template { pivot_var upgrade_var downgrade_table } { - upvar $downgrade_table downgrade_tbl_arr - - # The ASO variable "offload_history" is used to recover the legacy - # choice a user made about SSL offload. It should be present in all cases. - # This conditional only handles the case where a user has deliberately - # deleted it by manipulating the ASO directly from tmsh. - if { ![info exists ::offload_history] } { - set ::offload_history "No" - } - - # BIG-IP erases table contents when the APL optional hides the table. - # Since the prior data is not available, this downgrade must back-convert - # existing table data. Unlike tables, variables remain intact from the - # legacy ASO. - set tbl_def "" - foreach tbl [array names downgrade_tbl_arr] { - # Check for existence of each table in the current context. - # If not, skip to next. - if { ![info exists [set tbl]] } { - continue - } - # Check for existence of each table in the legacy context. - # If not, add an empty table so "tmsh tables modify" does not fail. - if { ![info exists ::$downgrade_tbl_arr($tbl)] } { - iapp_conf modify sys app ser $tmsh::app_name tables add \{ $downgrade_tbl_arr($tbl) \} - } - append tbl_def "$downgrade_tbl_arr($tbl) \{ " - if { [llength [subst $$tbl]] } { - set rows_def "" - foreach apl_row [subst $$tbl] { - array set row_arr [join $apl_row] - append rows_def "\n \{ row \{ " - foreach apl_col [array names row_arr] { - append rows_def "$row_arr($apl_col) " - } - append rows_def "\}\}" - } - append tbl_def \ - "column-names \{ [array names row_arr] \} rows \{ $rows_def \}" - array unset row_arr - } else { - append tbl_def "rows none" - } - append tbl_def " \} " - } - regsub -all "\n" $tbl_def {} tbl_def - set cmd "sys app ser $tmsh::app_name \ - variables modify \{ \ - $pivot_var \{ value $::offload_history \} \ - $upgrade_var \{ value No \} \ - \} \ - tables modify \{ $tbl_def \}" - iapp_debug "TEMPLATE DOWNGRADE" - iapp_conf modify $cmd - return -} - -proc iapp_get_ca_certs { args } { - # Procedure formats and returns ca-bundle 509 certificates from ca-bundle.bak - # (copy of tmos supplied ca-bundle.crt) - # Returns backup files when using -files flag - # Returns specified restore file certificates when using -restore -return flags - # Returns specified restore file table certificates when using -restore -tablename - # Returns selected certificates - # - # Set defaults. Flag actions may overwrite defaults later. - set rest_files 0 - set do_restore 0 - set restore_return 0 - set restore_table_name 0 - set do_certs 0 - set user_get [iapp_get_user] - set username [string range $user_get [expr {[string last user $user_get] +5 }] end-3 ] - # Set up flag-based actions. - array set flags { - -files { [set rest_files 1] } - -return { [set do_restore 1] [set restore_return 1] } - -tablename { [set do_restore 1] [set restore_table_name 1] } - -certs { [set do_certs 1] } - } - iapp_process_flags flags args - set fn_ca_bundle "[lindex $args 0]" - set cert_choices "[lindex $args 1]" - set duplicate " " - if { $rest_files eq 0 || $do_restore } { - set fh_ca_bundle [open $fn_ca_bundle r] - set ca_bundle_data [read $fh_ca_bundle] - close $fh_ca_bundle - set ca_bundle_split [split [string map "{-----END CERTIFICATE-----} \001" $ca_bundle_data] "\001"] - set final "" - # Grab Subject Name and Serial number from each certificate - foreach subject $ca_bundle_split { - if {$subject eq {}} { - continue - } - set a [string first Subject: $subject] - set b [string first \n $subject $a] - set ab [string range $subject $a $b] - set c [expr {[string first O= $ab] +2}] - if { $c < 2 }{ - set c [expr {[string first CN= $ab] +2}] - } - set d [expr {[string first , $ab $c] -1}] - # Deal with case were comma is not present after subject name - if { $d < 0 }{ - set dc [string range $ab $c end-1] - # Deal with case were text is not able to be located using common name, just grab the first 30 characters - } elseif { $d > 2000 }{ - set dc [string range $ab $c 47] - } else { - set dc [string range $ab $c $d] - } - set f [expr {[string first Number: $subject] +7}] - set g [expr {[string first Signature $subject $f] -1}] - set fg [string range $subject $f $g] - # Remove spaces and new line characters from serial number - set fg_nospace [string map {" " "" "\n" "" ":" ""} $fg] - set first_5 [string map {"(" ""} [string range $fg_nospace 0 4]] - # -cert flag returns list of selected root certificates - if { $do_certs }{ - foreach selection $cert_choices { - if { $first_5 eq $selection }{ - # setup to remove duplicate root certificates - tmos supplied ca-bundle can have duplicates - set i 0 - set duplicate_split [split [string map "{ } \001" $duplicate] "\001"] - foreach dup $duplicate_split { - if { $dup eq $first_5 }{ - incr i - } - } - # add certificate if not a duplicate - if { $i < 1 }{ - append final "${subject}-----END CERTIFICATE-----\n" - puts [tmsh::log notice "User:'${username}' Modified CA-Bundle, adding the following Root CA:(SN) ${fg_nospace} Name:${dc}"] - append duplicate "$first_5 " - } - } - } - } elseif { $dc !="" || $fg_nospace !="" || $restore_table_name eq 1 }{ - if { $restore_return eq 0 && $restore_table_name eq 0 }{ - append final "${dc},SN:${fg_nospace}\t${first_5}\n" - } elseif { $restore_table_name eq 1 }{ - set table_cert [string first ### $subject] - if { $table_cert > -1 && $table_cert < 500 } { - set ending "$subject-----END CERTIFICATE-----" - set table_certificate [string range $ending [string first -----BEGIN $ending] [ expr { [string first -----END $ending] +24 }]] - append final "{ row { \"[string map {"\n" " "} $table_certificate]\" \"[string range $subject 4 [expr { [string first \n $subject 1] -1 }]]\" } }" - } - - } else { - set table_cert [string first ### $subject] - if { $table_cert < 0 || $table_cert > 500 } { - append final "${first_5} " - } - } - } - } - if { $do_restore && $restore_table_name eq 0 }{ - set final [string map {"(" ""} $final] - } - return $final - } - if { $rest_files }{ - # Pull TMOS ca-bundle file into list - catch { set fn_bak_ca_bundle [exec ls -t /config/ssl/ssl.crt/] } err - if { $::errorCode != "" } { - puts "Error during file lookup in ssl certificate directory: ${err}" - error "Error during file lookup in ssl certificate directory: ${err}" - } - foreach bak [join "$fn_bak_ca_bundle"] { - set full_path "/config/ssl/ssl.crt/$bak" - if { [iapp_is full_path $fn_ca_bundle] }{ - set fn_bak_exists 1 - break - } else { - set fn_bak_exists 0 - } - } - if { $fn_bak_exists }{ - puts "Backup of factory TMOS ca-bundle /config/ssl/ssl.crt/ca-bundle.crt, at:${fn_ca_bundle}, already exists. No need to backup" - } elseif { $fn_bak_exists eq 0 }{ - puts "Backing up factory TMOS ca-bundle /config/ssl/ssl.crt/ca-bundle.crt, to ${fn_ca_bundle}." - catch { exec cp /config/ssl/ssl.crt/ca-bundle.crt ${fn_ca_bundle} } err - if { $::errorCode != "" } { - puts "Error creating backup file:${fn_ca_bundle}: ${err}" - error "Error creating backup file:${fn_ca_bundle}: ${err}" - } - } - set restore_list [lsearch -all -inline $fn_bak_ca_bundle *_bak*] - set restore_final "" - foreach res $restore_list { - append restore_final "${res}\t${res}\n" - } - if { $restore_final == "" }{ - return "No restore files found" - } else { - return $restore_final - } - } -} -} - - - -sys application template f5.http.v1.2.0rc7 { - actions { - definition { - html-help { -

web iApp Template

- -

This template creates a complete configuration optimized for managing web traffic.
Before you start:

-
    -
  • All of the help for this iApp template is found inline. Select Yes, show inline help from the inline help question.
  • -
  • For a complete walkthrough of this web iApp, as well as detailed information and help, see http://www.f5.com/pdf/deployment-guides/iapp-http-dg.pdf
  • -
  • Check System :: Resource Provisioning to ensure that LTM (Local Traffic Manager) is provisioned.
  • -
  • Set up VLANs and Self IP addresses on the networks you use for client-side and server-side traffic.
  • -
  • If configuring SSL Offload on the BIG-IP system, before running the iApp, import the proper SSL certificate(s) that corresponds to the DNS names used by the clients.
  • -
  • If you plan to use the iApp to deploy any of the optional modules, the modules must be fully licensed and provisioned before running the iApp.
  • -
- } - implementation { -tmsh::include f5.iapp.1.5.2.cli -iapp_template start - -set DEFAULT_ANSWER /#default# -set DO_NOT_USE_ANSWER /#do_not_use# -set CREATE_NEW_ANSWER /#create_new# - -proc v11_4_main {} { - tmsh::include f5.iapp.1.5.2.cli - - # set defaults for non-UI deployments, e.g. REST, in order of appearance - array set basic_vars { - ::ssl_encryption_questions__version {2010} - ::ifd__deploy_ifd {yes} - ::net__v13_tcp {yes} - ::net__client_mode {wan} - ::net__server_mode {lan} - ::apm__use_apm {no} - ::apm__profile {/#create_new#} - ::apm__auth {ntlm} - ::apm__aaa_profile {/#create_new#} - ::apm__credentials {no} - ::apm__ad_monitor {ad_icmp} - ::apm__policy {/#do_not_use#} - ::ssl__cert {/Common/default.crt} - ::ssl__key {/Common/default.key} - ::asm__use_asm {/#do_not_use#} - ::asm__asm_template {POLICY_TEMPLATE_RAPID_DEPLOYMENT} - ::asm__security_logging {} - ::asm__language {utf-8} - ::afm__policy {/#do_not_use#} - ::afm__restrict_by_addr {/#do_not_use#} - ::afm__restrict_by_reputation {accept} - ::afm__staging_policy {/#do_not_use#} - ::afm__security_logging {/#do_not_use#} - ::pool__port {80} - ::pool__port_secure {443} - ::pool__pool_to_use {/#create_new#} - ::pool__pool_to_use_wom {/#do_not_use#} - ::pool__use_icall {No} - ::pool__encrypted {Yes} - ::pool__fqdn_to_use {Yes} - ::pool__uri_to_use {/SitePages/Home.aspx} - ::pool__sp_port {No} - ::pool__interval_to_use {60} - ::pool__profiles {} - ::client__http_compression {/#create_new#} - ::monitor__monitor {/#create_new#} - ::monitor__uri {/} - ::monitor__response {} - ::stats__analytics {/#do_not_use#} - ::stats__tcp_analytics {/#do_not_use#} - ::stats__request_logging {/#do_not_use#} - } - - array set advanced_vars { - ::net__vlan_mode {all} - ::net__snat_type {automap} - ::net__snatpool {/#create_new#} - ::apm__ad_port_ssl {636} - ::apm__ad_port_not_ssl {389} - ::ssl__mode_apm {client_ssl} - ::ssl__client_ssl_profile {/#create_new#} - ::ssl__use_chain_cert {/#do_not_use#} - ::ssl__server_ssl_profile {/#create_new#} - ::afm__dos_security_profile {/#do_not_use#} - ::afm__protocol_security_profile {/#do_not_use#} - ::pool__mask {255.255.255.255} - ::pool__mirror {disabled} - ::pool__redirect_port {80} - ::pool__http {/#create_new#} - ::pool__persist {/#cookie#} - ::pool__pass_thru_persist {/#source#} - ::pool__discourage_persist {/#do_not_use#} - ::pool__pass_thru_discourage_persist {/#do_not_use#} - ::pool__fallback_persist {/#do_not_use#} - ::pool__lb_method {round-robin} - ::pool__min_active_members {0} - ::client__standard_caching_with_wa {/#create_new#} - ::client__standard_caching_without_wa {/#create_new#} - ::client__x_wa_info_header {none} - ::client__enable_perf_monitor {no} - ::client__data_retention_period {30} - ::client__policy {/Common/Generic Policy - Enhanced} - ::client__tcp_lan_opt {/#create_new#} - ::client__tcp_wan_opt {/#create_new#} - ::client__isession_profile {/Common/isession} - ::server__oneconnect {/#create_new#} - ::server__ntlm {/#create_new#} - ::server__discourage_ntlm {/#do_not_use#} - ::server__tcp_lan_opt {/#create_new#} - ::server__tcp_wan_opt {/#create_new#} - ::server__tcp_queue_length {0} - ::server__tcp_queue_timeout {0} - ::server__slow_ramp_setvalue {300} - ::monitor__frequency {30} - ::monitor__post_body {} - ::monitor__user {} - ::monitor__passwd {} - ::local_traffic__policies {} - } - - # leftover from 11.3, the "ssl_encryption_questions" APL section remains for backwards compatibility - set advanced [expr { [iapp_is ::ssl_encryption_questions__advanced yes] \ - || [iapp_is ::ssl_encryption_questions__legacy_advanced yes]}] - - foreach x [array names advanced_vars] { - # force advanced config mode for any REST deployment that uses an advanced mode variable - if { [info exists [set x]] } { - # undefined ::ssl_encryption_questions__advanced implies a REST deployment - if { ![info exists ::ssl_encryption_questions__advanced] } { - set advanced 1 - } - } else { - set [set x] $advanced_vars($x) - } - } - - foreach x [array names basic_vars] { - if { ![info exists [set x]] } { - set [set x] $basic_vars($x) - } - } - - set app $tmsh::app_name - set is_v11_4 [expr {[iapp_tmos_version >= 11.4]}] - set is_v11_5 [expr {[iapp_tmos_version >= 11.5]}] - set is_v11_6 [expr {[iapp_tmos_version >= 11.6]}] - set is_v12_1 [expr {[iapp_tmos_version >= 12.1]}] - set v13_tcp [expr {[iapp_tmos_version >= 13.0] && [iapp_is ::net__v13_tcp yes]}] - set lb_lcm_licensed [expr {[string first ltm_lb_least_conn [tmsh::show sys license detail]] != -1}] - set cookie_licensed [expr {[string first ltm_persist_cookie [tmsh::show sys license detail]] != -1}] - set is_admin [iapp_get_user -is_admin] - set use_apm [expr {[iapp_get_provisioned apm] && [iapp_is ::apm__use_apm yes]}] - - # API-only variable for Azure WAF. Independently redirects to a port other than the https virtual port - set redirect_to_port [expr { [info exists ::pool__redirect_to_port] ? "$::pool__redirect_to_port" : "$::pool__port_secure" }] - - # CLIENT-SIDE VLAN SELECTION - set select_vlans [iapp_is ::net__vlan_mode enabled disabled] - - # array keys: $advanced,$select_vlans - array set vlan_arr { - 1,1 { vlans-$::net__vlan_mode vlans replace-all-with \{ $::net__client_vlan \} } - * { vlans-disabled vlans none } - } - - # SNATPOOL PARAMETERS - set do_snat [expr { [iapp_is ::net__same_subnet yes] \ - || ![iapp_is ::net__route_to_bigip yes] || !$advanced}] - set do_automap [expr { [iapp_is ::net__snat_type automap] || !$advanced}] - set new_snatpool [iapp_is ::net__snatpool $::CREATE_NEW_ANSWER] - - # array keys: $do_snat,$do_automap,$new_snatpool - array set snatpool_arr { - 1,1,1 { snat automap } - 1,1,0 { snat automap } - 1,0,1 { snatpool [iapp_conf create ltm snatpool ${app}_snatpool \ - members replace-all-with \{ [string map \ - {"addr " "" \{ "" \} ""} $::net__snatpool_members] \} ]} - 1,0,0 { snatpool $::net__snatpool } - * { snat none } - } - - # CLIENT TCP OPTIMIZATION PROFILE - # In order to show the correct recommendation per the chosen topology, - # the presentation of client tcp optimization has a split presentation. - # Only one of tcp_lan_opt or tcp_wan_opt contains the user's selection. - # This statement identifies whether the user has selected the recommended - # option from this split presentation. - - # array keys: $::net__client_mode,$::net__server_mode,$v13_tcp - array set best_tcp_profile { - lan,lan,0 tcp-lan-optimized - lan,wan,0 tcp-lan-optimized - wan,lan,0 tcp-wan-optimized - wan,wan,0 tcp-wan-optimized - lan,lan,1 f5-tcp-lan - lan,wan,1 f5-tcp-lan - wan,lan,1 f5-tcp-wan - wan,wan,1 f5-tcp-wan - lan,tunnel,0 wom-tcp-lan-optimized - lan,tunnel,1 wom-tcp-lan-optimized - * wom-tcp-wan-optimized - } - - set new_client_tcp [expr { !$advanced || ( \ - [iapp_is ::net__client_mode lan] ? \ - [iapp_is ::client__tcp_lan_opt $::CREATE_NEW_ANSWER] : \ - [iapp_is ::client__tcp_wan_opt $::CREATE_NEW_ANSWER] )}] - - # array keys: $new_client_tcp,$::net__client_mode - array set client_tcp_arr { - 0,lan $::client__tcp_lan_opt - 0,wan $::client__tcp_wan_opt - 0,tunnel $::client__tcp_wan_opt - * { [iapp_conf create ltm profile tcp ${app}_[iapp_substa \ - best_tcp_profile($::net__client_mode,$::net__server_mode,$v13_tcp)] \ - defaults-from [iapp_substa \ - best_tcp_profile($::net__client_mode,$::net__server_mode,$v13_tcp)] \ - ]} - } - - - # SERVER TCP OPTIMIZATION PROFILE - # See above comments regarding the client tcp optimization array. - set new_server_tcp [expr { !$advanced || ( \ - [iapp_is ::net__server_mode lan] ? \ - [iapp_is ::server__tcp_lan_opt $::CREATE_NEW_ANSWER] : \ - [iapp_is ::server__tcp_wan_opt $::CREATE_NEW_ANSWER] )}] - - # array keys: $new_server_tcp,$::net__server_mode - array set server_tcp_arr { - 0,lan $::server__tcp_lan_opt - 0,wan $::server__tcp_wan_opt - 0,tunnel $::server__tcp_wan_opt - * { [iapp_conf create ltm profile tcp ${app}_[iapp_substa \ - best_tcp_profile($::net__server_mode,$::net__client_mode,$v13_tcp)] \ - defaults-from [iapp_substa \ - best_tcp_profile($::net__server_mode,$::net__client_mode,$v13_tcp)] \ - ]} - } - - # CLIENT SSL - set do_client_ssl [expr { $use_apm || [iapp_is ::ssl__mode client_ssl client_ssl_server_ssl] }] - set ssl_pass_thru [expr { !$use_apm && [iapp_is ::ssl__mode pass_thru] }] - - set new_client_ssl [expr { !$advanced || [iapp_is \ - ::ssl__client_ssl_profile $::CREATE_NEW_ANSWER] }] - set do_chain_cert [expr { $advanced && \ - ![iapp_is ::ssl__use_chain_cert $::DO_NOT_USE_ANSWER] }] - set cssl_cmd \ - "ltm profile client-ssl ${app}_client-ssl defaults-from clientssl" - - # array keys: $do_client_ssl,$new_client_ssl,$do_chain_cert - array set client_ssl_arr { - 1,1,1 { [iapp_conf create $cssl_cmd key $::ssl__key cert $::ssl__cert \ - chain $::ssl__use_chain_cert] \{ context clientside \} } - 1,1,0 { [iapp_conf create $cssl_cmd key $::ssl__key cert $::ssl__cert \ - chain none] \{ context clientside \} } - 1,0,1 { $::ssl__client_ssl_profile \{ context clientside \} } - 1,0,0 { $::ssl__client_ssl_profile \{ context clientside \} } - * {} - } - - # SERVER SSL PROFILE - set do_server_ssl [expr { (!$use_apm && [iapp_is ::ssl__mode server_ssl client_ssl_server_ssl]) || ($use_apm && [iapp_is ::ssl__mode_apm client_ssl_server_ssl]) }] - - set default_server [expr { !$advanced || \ - [iapp_is ::ssl__server_ssl_profile $::DEFAULT_ANSWER] }] - - # array keys: $do_server_ssl,$default_server - array set server_ssl_arr { - 1,1 { [iapp_conf create ltm profile server-ssl ${app}_server-ssl \ - defaults-from serverssl] \{ context serverside \} } - 1,0 { $::ssl__server_ssl_profile \{ context serverside \} } - * {} - } - - set apm_profiles "" - - # APM - if { $use_apm } { - set apm_profiles "$::apm__apm_profile /Common/websso /Common/rba" - } - - # HTTP PROFILE - set new_http [expr { !$advanced || \ - [iapp_is ::pool__http $::CREATE_NEW_ANSWER] }] - set xff_cmd [expr { (!$advanced || [iapp_is ::pool__xff yes]) \ - ? "insert-xforwarded-for enabled" \ - : "insert-xforwarded-for disabled" }] - - # array keys: $ssl_pass_thru,$new_http,$do_client_ssl - array set http_arr { - 0,0,0 { $::pool__http } - 0,0,1 { $::pool__http } - 0,1,0 { [iapp_conf create ltm profile http ${app}_http \ - defaults-from http \ - redirect-rewrite none $xff_cmd] } - 0,1,1 { [iapp_conf create ltm profile http ${app}_http \ - defaults-from http \ - redirect-rewrite matching $xff_cmd] } - * { } - } - - # COMPRESSION PROFILE - set do_compress [expr { !$ssl_pass_thru && \ - ![iapp_is ::client__http_compression $::DO_NOT_USE_ANSWER] }] - set new_compress [iapp_is ::client__http_compression $::CREATE_NEW_ANSWER] - - # array keys: $do_compress,$new_compress - array set compress_arr { - 1,1 { [iapp_conf create ltm profile http-compression \ - ${app}_wan-optimized-compression \ - defaults-from wan-optimized-compression \ - content-type-include replace-all-with \{ $::HTTP_CONTENT_TYPES \} \ - ] } - 1,0 { $::client__http_compression } - * {} - } - - # AAM APPLICATION - # The purpose of the embedded string map is to remove the table column names - set perf_monitor [iapp_is ::client__enable_perf_monitor yes] - set wam_cmd "wam application ${app}_aam hosts replace-all-with \{ \ - [string map {"name " ""} [join [join [expr { [info exists \ - ::pool__hosts] ? "$::pool__hosts" : ""}]]]] \}" - - # array keys: $advanced,$perf_monitor,$ssl_pass_thru - # "do_configure_wa" need not be keyed here since this is called from - # caching_arr, which is already keyed on "do_configure_wa". - array set wam_arr { - 1,1,0 { [iapp_conf create $wam_cmd policy \"$::client__policy\" \ - info-header $::client__x_wa_info_header \ - perf-monitor enabled \ - perf-monitor-data-retention-period \ - $::client__data_retention_period] } - 1,0,0 { [iapp_conf create $wam_cmd policy \"$::client__policy\" \ - info-header $::client__x_wa_info_header \ - perf-monitor disabled \ - perf-monitor-data-retention-period 0] } - 0,1,0 { [iapp_conf create $wam_cmd \ - policy \"/Common/Generic Policy - Enhanced\" \ - info-header none \ - perf-monitor enabled \ - perf-monitor-data-retention-period \ - $::client__data_retention_period] } - 0,0,0 { [iapp_conf create $wam_cmd \ - policy \"/Common/Generic Policy - Enhanced\" \ - info-header none \ - perf-monitor disabled \ - perf-monitor-data-retention-period 0] } - * {} - } - - # CACHING PROFILE - set do_configure_wa [expr { !$ssl_pass_thru && [iapp_get_provisioned am] && \ - [iapp_is ::client__use_wa yes] }] - set do_caching [expr { !$ssl_pass_thru && ($do_configure_wa || \ - ![iapp_is ::client__standard_caching_without_wa $::DO_NOT_USE_ANSWER])}] - set new_caching [expr { !$advanced || \ - ($do_configure_wa && \ - [iapp_is ::client__standard_caching_with_wa $::CREATE_NEW_ANSWER]) || \ - (!$do_configure_wa && \ - [iapp_is ::client__standard_caching_without_wa $::CREATE_NEW_ANSWER])}] - - # array keys: $do_caching,$new_caching,$do_configure_wa - array set caching_arr { - 1,1,1 { [iapp_conf create ltm profile web-acceleration \ - ${app}_optimized-acceleration \ - defaults-from optimized-acceleration \ - applications replace-all-with \{ [iapp_substa \ - wam_arr($advanced,$perf_monitor,$ssl_pass_thru)] \}] } - 1,1,0 { [iapp_conf create ltm profile web-acceleration \ - ${app}_optimized-caching defaults-from optimized-caching \ - applications none cache-size 10 \ - cache-object-max-size 2000000] } - 1,0,1 $::client__standard_caching_with_wa - 1,0,0 $::client__standard_caching_without_wa - * {} - } - - # ONECONNECT PROFILE - set do_oneconnect [expr { !$ssl_pass_thru && (!$advanced || \ - ![iapp_is ::server__oneconnect $::DO_NOT_USE_ANSWER])}] - set new_oneconnect [expr { !$advanced || \ - [iapp_is ::server__oneconnect $::CREATE_NEW_ANSWER] }] - set one_cmd "ltm profile one-connect ${app}_oneconnect \ - defaults-from oneconnect source-mask" - - # array keys: $do_oneconnect,$new_oneconnect,$do_snat - array set oneconnect_arr { - 1,1,1 { [iapp_conf create $one_cmd 255.255.255.255] } - 1,1,0 { [iapp_conf create $one_cmd 0.0.0.0] } - 1,0,1 $::server__oneconnect - 1,0,0 $::server__oneconnect - * {} - } - - # NTLM PROFILE - # array keys: $do_oneconnect,$discourage_ntlm,$advanced - set discourage_ntlm 1 - array set ntlm_arr { - 1,1,1 $::server__ntlm - * /#do_not_use# - } - - # Note: app-service is forced. See BZ448758. - # array keys: $is_admin,$ntlm_arr($do_oneconnect,$discourage_ntlm,$advanced) - array set ntlm_cmd { - 0,/#create_new# { [error "Non-admin user cannot create an NTLM profile"] } - 1,/#create_new# { [iapp_conf create ltm profile \ - ntlm [tmsh::pwd]/${app}_ntlm \ - defaults-from ntlm \ - app-service $app] } - 0,/#do_not_use# { } - 1,/#do_not_use# { } - * { [iapp_substa ntlm_arr($do_oneconnect,$discourage_ntlm,$advanced)] } -} - # PERSISTENCE - set discourage_persist [iapp_is ::ssl_encryption_questions__version 2013] - - # array keys: $discourage_persist,$advanced,$ssl_pass_thru,$cookie_licensed - array set persist_arr { - 0,0,0,0 /#source# - 0,0,0,1 /#cookie# - 0,0,1,0 /#source# - 0,0,1,1 /#source# - 0,1,0,0 $::pool__persist - 0,1,0,1 $::pool__persist - 0,1,1,0 $::pool__pass_thru_persist - 0,1,1,1 $::pool__pass_thru_persist - 1,1,0,0 $::pool__discourage_persist - 1,1,0,1 $::pool__discourage_persist - 1,1,1,0 $::pool__pass_thru_discourage_persist - 1,1,1,1 $::pool__pass_thru_discourage_persist - * /#do_not_use# - } - - # array key: $persist_result - array set persist_cmd { - /#cookie# { replace-all-with \{ [iapp_conf create $cookie_cmd] \} } - /#source# { replace-all-with \{ [iapp_conf create $source_cmd] \} } - /#do_not_use# { none } - * { replace-all-with \{ $persist_result \} } - } - - # array keys: $advanced,$persist_result - array set fallback_persist_arr { - 0,/#cookie# /#source# - 0,/#source# /#do_not_use# - 0,/#do_not_use# /#do_not_use# - 1,/#do_not_use# /#do_not_use# - 1,/#source# /#do_not_use# - * $::pool__fallback_persist - } - - # array key: $fallback_persist_result - array set fallback_persist_cmd { - /#source# { [iapp_conf create $source_cmd] } - /#do_not_use# { none } - * { $fallback_persist_result } - } - - set cm_sync_status_details [lindex [tmsh::get_status cm sync-status] 0] - set cm_sync_status [tmsh::get_field_value $cm_sync_status_details status] - set mirror_action [expr { $cm_sync_status ne "Standalone" && [iapp_is \ - ::pool__mirror enabled] ? "enabled" : "disabled" }] - set source_cmd "ltm persistence source-addr \ - ${app}_source-addr-persistence mirror $mirror_action" - set cookie_cmd "ltm persistence cookie ${app}_cookie-persistence " - set persist_result [iapp_substa persist_arr($discourage_persist,$advanced,$ssl_pass_thru,$cookie_licensed)] - set fallback_persist_result [iapp_substa fallback_persist_arr($advanced,$persist_result)] - - # ISESSION - set do_isession [expr { [iapp_is ::net__server_mode tunnel] - && [iapp_get_provisioned am] }] - set new_isession [iapp_is ::client__isession_profile $::CREATE_NEW_ANSWER] - - # array keys: $do_isession,$advanced,$new_isession - array set isession_arr { - 1,1,1 { [iapp_conf create wom profile isession ${app}_isession \ - data-encryption $::client__isession__encryption \ - compression $::client__isession__compression \ - deduplication $::client__isession__deduplication] \ - \{ context serverside \} } - 1,1,0 { $::client__isession_profile \{ context serverside \} } - 1,0,1 { /Common/isession \{ context serverside \} } - 1,0,0 { /Common/isession \{ context serverside \} } - * {} - } - - # IRULES - set stats_irule { -when HTTP_REQUEST { - set reqtime [clock clicks] -} -when HTTP_RESPONSE { - ISTATS::set "sys.application.service string app-rtt" [expr {[clock clicks] - $reqtime}] - ISTATS::set "sys.application.service string tcp-rtt" [TCP::rtt] -} - } - - set irule_names [expr { !$ssl_pass_thru && [iapp_is ::rtt_stats enabled] \ - ? [iapp_conf create ltm rule ${app}_stats_irule \ - [string map " [tmsh::pwd]/$app" $stats_irule]] : "" }] - - append irule_names [expr { $advanced && [info exists ::irules__irules] \ - ? " $::irules__irules" : "" }] - - # array key: [llength $irule_names] - array set irule_arr { - 0 { rules none } - * { rules \{ $irule_names \} } - } - - if { $do_client_ssl || $ssl_pass_thru } { - set redirect_rule [string map [list _PORT $redirect_to_port] { -when HTTP_REQUEST { - HTTP::redirect https://[getfield [HTTP::host] : 1]:_PORT[HTTP::uri] -}}] - } - - # array keys: $redirect_to_port - array set redirect_irule { - 443 { _sys_https_redirect } - * { [iapp_conf create ltm rule ${app}_https_redirect $redirect_rule] } - } - - # ASM and LTM POLICIES - set do_asm [expr { [iapp_get_provisioned asm] && \ - !$ssl_pass_thru && ![iapp_is ::asm__use_asm "/#do_not_use#"] }] - # keep check for /#do_not_use# for upgrade compatibility with 13.0 - set asm_security_logging [expr { $do_asm && $is_v11_4 && - ![iapp_is ::asm__security_logging ""] && ![iapp_is ::asm__security_logging "#/do_not_use#"] - ? "\"[join $::asm__security_logging "\" \""]\"" : "" }] - set create_asm_policy [expr { [iapp_is ::asm__use_asm "yes"] || [iapp_is ::asm__use_asm $::CREATE_NEW_ANSWER] }] - set ltm_policies [expr { $advanced ? $::local_traffic__policies : "" }] - - # array key: $is_v11_4, $do_asm, $create_asm_policy - array set local_traffic_policies { - 1,1,1 { policies replace-all-with { \ - [iapp_conf create ltm policy ${app}_policy \ - requires replace-all-with \{ http \} \ - controls replace-all-with \{ asm \} \ - strategy first-match \ - rules replace-all-with \{ \ - default \{ \ - ordinal 1 \ - actions replace-all-with \{ \ - 1 \{ asm enable policy \ - [iapp_conf create asm policy \ - ${app}_policy \ - active \ - encoding $::asm__language \ - policy-template \ - ${::asm__asm_template}_[expr \ - { $do_client_ssl ? "HTTPS" : "HTTP" }]] \ - \} \ - \} \ - \} \ - \} [expr {$is_v12_1 ? "legacy" : "" }]] $ltm_policies } } - 1,1,0 { policies replace-all-with { $::asm__use_asm $ltm_policies } } - 1,0,1 { policies [expr { $ltm_policies ne "" ? "replace-all-with { $ltm_policies }" : "none" }] } - 1,0,0 { policies [expr { $ltm_policies ne "" ? "replace-all-with { $ltm_policies }" : "none" }] } - 0,1,1 { http-class \{ \ - [iapp_conf create asm httpclass-asm ${app}_httpclass \ - language $::asm__language \ - predefined-policy ${::asm__asm_template}_[expr \ - { $do_client_ssl ? "HTTPS" : "HTTP" }] \ - active-policy-name ${app}_asm_policy] - [iapp_conf create ltm profile httpclass ${app}_httpclass \ - defaults-from httpclass \ - asm enabled \ - web-accelerator [expr {$do_configure_wa ? "enabled":"disabled" }]]\}} - * { } - } - - # FIREWALL (AFM) POLICY - # beware: syntactically correct AFM commands fail when AFM is not provisioned - - set afm_allowed [expr { $is_v11_4 && $is_admin && [iapp_get_provisioned afm] }] - - set do_firewall [expr { $afm_allowed && ![iapp_is ::afm__policy $::DO_NOT_USE_ANSWER] }] - set new_firewall [iapp_is ::afm__policy $::DEFAULT_ANSWER] - set do_ip_intel [expr { $do_firewall && [iapp_is ::afm__restrict_by_reputation "warn" "reject" "select"] }] - set new_ip_intel [iapp_is ::afm__restrict_by_reputation "warn" "reject"] - - set staging_policy [expr { $do_firewall && \ - ![iapp_is ::afm__staging_policy $::DO_NOT_USE_ANSWER] \ - ? "$::afm__staging_policy" : "none" }] - - set afm_security_logging [expr { $do_firewall && \ - ![iapp_is ::afm__security_logging $::DO_NOT_USE_ANSWER] \ - ? "\"$::afm__security_logging\"" : "" }] - set security_logging [expr { $is_admin \ - ? "security-log-profiles replace-all-with \{ $asm_security_logging $afm_security_logging \}" : "" }] - - set do_dos_security [expr { $afm_allowed && $advanced && \ - ![iapp_is ::afm__dos_security_profile $::DO_NOT_USE_ANSWER] }] - set do_protocol_security [expr { $afm_allowed && $advanced && !$ssl_pass_thru && \ - ![iapp_is ::afm__protocol_security_profile $::DO_NOT_USE_ANSWER] }] - - # array key: $afm_allowed,$do_firewall,$new_firewall - array set firewall_arr { - 1,1,1 { fw-enforced-policy \ - [iapp_conf create security firewall policy ${app}_firewall \ - rules replace-all-with \{ \ - acceptPackets \{ \ - action accept \ - log no \ - ip-protocol tcp \ - status enabled \ - source \{ [iapp_substa afm_restrict($::afm__restrict_by_addr)] \}\} \ - dropPackets \{ \ - action drop \ - log yes \ - ip-protocol tcp \ - status enabled \ - source \{ addresses replace-all-with \{ any/any \}\} \ - \}\}] \ - fw-staged-policy [subst $staging_policy] } - 1,1,0 { fw-enforced-policy $::afm__policy \ - fw-staged-policy [subst $staging_policy] } - 1,0,1 { fw-enforced-policy none \ - fw-staged-policy none } - 1,0,0 { fw-enforced-policy none \ - fw-staged-policy none } - * { } - } - - # array key: $::afm__restrict_by_addr - array set afm_restrict { - /#create_new# {addresses replace-all-with \{ $::afm__allowed_addr \}} - /#do_not_use# {addresses replace-all-with \{ any/any \}} - * {address-lists replace-all-with \{ $::afm__restrict_by_addr \}} - } - - # ip-intelligence was a profile in 11.4, is a policy in 11.5 - # array keys: - # $afm_allowed,$do_ip_intel,$new_ip_intel,$is_v11_5,policy/profile - array set ip_intelligence_arr { - 1,1,1,0,profile { [iapp_conf create security ip-intelligence \ - profile ${app}_ip_intelligence \ - defaults-from ip-intelligence \ - botnets $::afm__restrict_by_reputation \ - denial-of-service $::afm__restrict_by_reputation \ - infected-sources $::afm__restrict_by_reputation \ - phishing $::afm__restrict_by_reputation \ - proxy $::afm__restrict_by_reputation \ - scanners $::afm__restrict_by_reputation \ - spam-sources $::afm__restrict_by_reputation \ - web-attacks $::afm__restrict_by_reputation \ - windows-exploits $::afm__restrict_by_reputation] } - 1,0,0,1,policy { ip-intelligence-policy none } - 1,0,1,1,policy { ip-intelligence-policy none } - 1,1,0,1,policy { ip-intelligence-policy $::afm__ip_intelligence_policy } - 1,1,1,1,policy { \ - ip-intelligence-policy [iapp_conf create security ip-intelligence \ - policy ${app}_ip_intelligence \ - default-action $action($::afm__restrict_by_reputation) \ - blacklist-categories replace-all-with \{ \ - botnets \{ action use-policy-setting \} \ - cloud_provider_networks \{ action use-policy-setting \} \ - denial_of_service \{ action use-policy-setting \} \ - illegal_websites \{ action use-policy-setting \} \ - infected_sources \{ action use-policy-setting \} \ - phishing \{ action use-policy-setting \} \ - proxy \{ action use-policy-setting \} \ - scanners \{ action use-policy-setting \} \ - spam_sources \{ action use-policy-setting \} \ - web_attacks \{ action use-policy-setting \} \ - windows_exploits \{ action use-policy-setting \}\}] } - * { } - } - - # array key: $::afm__restrict_by_reputation - array set action { - accept { accept default-log-blacklist-hit-only no } - reject { drop default-log-blacklist-hit-only yes } - warn { accept default-log-blacklist-hit-only yes } - } - - # ANALYTICS (AVR) PROFILE - set do_analytics [expr { $advanced && [iapp_get_provisioned avr] \ - && !$ssl_pass_thru && ![iapp_is ::stats__analytics $::DO_NOT_USE_ANSWER] }] - set new_analytics [iapp_is ::stats__analytics $::CREATE_NEW_ANSWER] - - # array keys: $do_analytics,$new_analytics - array set analytics_arr { - 1,1 { [iapp_conf create ltm profile analytics ${app}_analytics \ - defaults-from analytics] } - 1,0 $::stats__analytics - * {} - } - - # TCP-ANALYTICS (AVR) PROFILE - set do_tcp_analytics [expr { $advanced && [iapp_get_provisioned avr] \ - && !$ssl_pass_thru && ![iapp_is ::stats__tcp_analytics $::DO_NOT_USE_ANSWER] }] - set new_tcp_analytics [iapp_is ::stats__tcp_analytics $::CREATE_NEW_ANSWER] - - # array keys: $do_tcp_analytics,$new_tcp_analytics - array set tcp_analytics_arr { - 1,1 { [iapp_conf create ltm profile tcp-analytics ${app}_tcp_analytics \ - defaults-from tcp-analytics] } - 1,0 $::stats__tcp_analytics - * {} - } - - # REQUEST LOGGING - set do_logging [expr { $advanced && !$ssl_pass_thru && \ - ![iapp_is ::stats__request_logging $::DO_NOT_USE_ANSWER] }] - - # array keys: $do_logging - array set logging_arr { - 1 { $::stats__request_logging } - 0 {} - } - - # MONITOR SEND STRING - # only the first FQDN in the hosts table is used for monitoring - set hostname [lindex [join [join [expr { [info exists ::pool__hosts] \ - ? "$::pool__hosts" : "" }]]] 1] - set http10 [expr {$advanced && [iapp_is ::monitor__http_version http10]}] - set http_post [expr {$advanced && [iapp_is ::monitor__http_method POST]}] - set ntlm_creds [iapp_is ::monitor__credentials ntlm] - - # array keys: $http10,$http_post,$ntlm_creds - array set send_string_arr { - 1,1,1 { 'POST $::monitor__uri HTTP/1.0\\r\\nContent-Length: [string length $::monitor__post_body]\\r\\nConnection: Keep-Alive\\r\\n\\r\\n$::monitor__post_body' } - 1,1,0 { 'POST $::monitor__uri HTTP/1.0\\r\\nContent-Length: [string length $::monitor__post_body]\\r\\n\\r\\n$::monitor__post_body' } - 1,0,1 { 'GET $::monitor__uri HTTP/1.0\\r\\nConnection: Keep-Alive\\r\\n\\r\\n' } - 1,0,0 { 'GET $::monitor__uri HTTP/1.0\\r\\n\\r\\n' } - 0,1,1 { 'POST $::monitor__uri HTTP/1.1\\r\\nHost: $hostname\\r\\nContent-Length: [string length $::monitor__post_body]\\r\\n$::monitor__post_body' } - 0,1,0 { 'POST $::monitor__uri HTTP/1.1\\r\\nHost: $hostname\\r\\nContent-Length: [string length $::monitor__post_body]\\r\\nConnection: Close\\r\\n\\r\\n$::monitor__post_body' } - 0,0,1 { 'GET $::monitor__uri HTTP/1.1\\r\\nHost: $hostname\\r\\n' } - * { 'GET $::monitor__uri HTTP/1.1\\r\\nHost: $hostname\\r\\nConnection: Close\\r\\n\\r\\n'} - } - - # MONITOR - set new_pool [expr {( $::net__server_mode ne "tunnel" && \ - [iapp_is ::pool__pool_to_use $::CREATE_NEW_ANSWER] ) || \ - ( $::net__server_mode eq "tunnel" && \ - [iapp_is ::pool__pool_to_use_wom $::CREATE_NEW_ANSWER] )}] - set new_monitor [iapp_is ::monitor__monitor $::CREATE_NEW_ANSWER] - set http_or_https [expr { $do_server_ssl || $ssl_pass_thru ?{https}:{http} }] - # Check for NTLM, then uppercase the username if it is NTLM - if { [iapp_is ::monitor__credentials "ntlm"] } { - set user_index [string first \\ $::monitor__user] - set monitor_username [string toupper $::monitor__user 0 $user_index] - } elseif { [iapp_is ::monitor__credentials "basic"] } { - set monitor_username $::monitor__user - } - # array keys: $new_pool,$new_monitor,$advanced - array set monitor_arr { - 1,1,1 { monitor [iapp_conf create ltm monitor $http_or_https \ - ${app}_${http_or_https}_monitor \ - defaults-from $http_or_https \ - interval $::monitor__frequency \ - timeout [expr { $::monitor__frequency * 3 + 1 } ] \ - [expr { [iapp_is ::monitor__credentials "basic"] || \ - [iapp_is ::monitor__credentials "ntlm"] ? \ - "username $monitor_username \ - password [iapp_make_safe_password $::monitor__passwd]" : "" }] \ - send [iapp_substa send_string_arr($http10,$http_post,$ntlm_creds)]\ - recv '$::monitor__response'] } - 1,1,0 { monitor [iapp_conf create ltm monitor $http_or_https \ - ${app}_${http_or_https}_monitor \ - defaults-from $http_or_https \ - interval 30 \ - timeout 91 \ - send [iapp_substa send_string_arr($http10,$http_post,$ntlm_creds)]\ - recv '$::monitor__response'] } - 1,0,1 { monitor $::monitor__monitor } - 1,0,0 { monitor $::monitor__monitor } - * { monitor none } - } - - # GENERAL POOL PARAMETERS 1 - set do_slow_ramp [iapp_is ::server__use_slow_ramp yes] - set do_pga [iapp_is ::pool__use_pga yes] - - # array keys: $advanced,$do_slow_ramp,$do_pga - array set pool_ramp_pga_arr { - 1,1,1 { slow-ramp-time $::server__slow_ramp_setvalue \ - min-active-members $::pool__min_active_members } - 1,1,0 { slow-ramp-time $::server__slow_ramp_setvalue \ - min-active-members 0 } - 1,0,1 { slow-ramp-time 10 \ - min-active-members $::pool__min_active_members } - 1,0,0 { slow-ramp-time 10 min-active-members 0 } - * { slow-ramp-time 300 min-active-members 0 } - } - - # GENERAL POOL PARAMETERS 2 - set tcp_queuing [iapp_is ::server__tcp_req_queueing yes] - - # array keys: $advanced,$lb_lcm_licensed,$tcp_queuing - array set pool_lb_queue_arr { - 1,1,1 { load-balancing-mode $::pool__lb_method \ - queue-on-connection-limit enabled \ - queue-depth-limit $::server__tcp_queue_length \ - queue-time-limit $::server__tcp_queue_timeout } - 1,0,1 { load-balancing-mode $::pool__lb_method \ - queue-on-connection-limit enabled \ - queue-depth-limit $::server__tcp_queue_length \ - queue-time-limit $::server__tcp_queue_timeout } - 1,1,0 { load-balancing-mode $::pool__lb_method \ - queue-on-connection-limit disabled } - 1,0,0 { load-balancing-mode $::pool__lb_method \ - queue-on-connection-limit disabled } - 0,0,1 { load-balancing-mode round-robin \ - queue-on-connection-limit disabled } - 0,0,0 { load-balancing-mode round-robin \ - queue-on-connection-limit disabled } - * { load-balancing-mode least-connections-member \ - queue-on-connection-limit disabled } - } - - # POOL - set no_pool [expr {( $::net__server_mode ne "tunnel" && \ - [iapp_is ::pool__pool_to_use $::DO_NOT_USE_ANSWER] ) || \ - ( $::net__server_mode eq "tunnel" && \ - [iapp_is ::pool__pool_to_use_wom $::DO_NOT_USE_ANSWER] )}] - - # array keys: $new_pool,$no_pool - array set pool_arr { - 1,0 { [iapp_conf create ltm pool ${app}_pool \ - [iapp_substa pool_ramp_pga_arr($advanced,$do_slow_ramp,$do_pga)] \ - [iapp_substa pool_lb_queue_arr($advanced,$lb_lcm_licensed,$tcp_queuing)] \ - [iapp_substa monitor_arr($new_pool,$new_monitor,$advanced)] \ - [iapp_pool_members $::pool__members]] \ - translate-address enabled } - 0,0 { [expr { $::net__server_mode ne "tunnel" ? \ - $::pool__pool_to_use : $::pool__pool_to_use_wom }] \ - translate-address enabled } - * { none translate-address [expr { $do_isession ? "disabled" : "enabled" }] } - } - - # VIRTUAL SERVERS - set secure_client [expr { $do_client_ssl || $ssl_pass_thru }] - set do_redirect [expr { [iapp_is ::pool__redirect_to_https yes] || \ - !$advanced}] - set mask [expr { $advanced && $::pool__mask ne "" \ - ? $::pool__mask : [iapp_destination -mask $::pool__addr] }] - - # array keys: $secure_client,$do_redirect - array set vs_arr { - 1,1 { [iapp_conf create ltm virtual ${app}_vs \ - destination [iapp_destination $::pool__addr $::pool__port_secure] \ - mask $mask \ - $vs_params \ - ip-protocol tcp \ - mirror $mirror_action \ - profiles replace-all-with \{ $vs_profiles \} [expr { $is_v11_6 ? "per-flow-request-access-policy [expr { $use_apm && $::apm__apm_policy != "/#do_not_use#" ? "$::apm__apm_policy" : "none" }]" : "" }]] \ - \ - [iapp_conf create ltm virtual ${app}_redir_vs \ - destination [iapp_destination $::pool__addr $::pool__redirect_port] \ - mask $mask \ - $redir_vs_params \ - ip-protocol tcp \ - mirror $mirror_action \ - profiles replace-all-with \{ $tcp_profiles http \} \ - rules \{ [iapp_substa redirect_irule($redirect_to_port)] \}]} - 1,0 { [iapp_conf create ltm virtual ${app}_vs \ - destination [iapp_destination $::pool__addr $::pool__port_secure] \ - mask $mask \ - $vs_params \ - ip-protocol tcp \ - mirror $mirror_action \ - profiles replace-all-with \{ $vs_profiles \} [expr { $is_v11_6 ? "per-flow-request-access-policy [expr { $use_apm && $::apm__apm_policy != "/#do_not_use#" ? "$::apm__apm_policy" : "none" }]" : "" }]] } - * { [iapp_conf create ltm virtual ${app}_vs \ - destination [iapp_destination $::pool__addr $::pool__port] \ - mask $mask \ - $vs_params \ - ip-protocol tcp \ - mirror $mirror_action \ - profiles replace-all-with \{ $vs_profiles \} [expr { $is_v11_6 ? "per-flow-request-access-policy [expr { $use_apm && $::apm__apm_policy != "/#do_not_use#" ? "$::apm__apm_policy" : "none" }]" : "" }]] } - } - - # MAIN - # Array contents (including TCL code) are evaluated during the - # assignments below. TMSH parameters and profile names are collected - # for use in subsequent calls including the creation of the virtual - # server(s). Many parameters are shared between the redirect virtual - # server and the main virtual server. This builds the redirect - # parameters first, then re-uses them when constructing the main - # virtual parameter list. - set redir_vs_params \ - "[iapp_substa vlan_arr($advanced,$select_vlans)] \ - [iapp_substa snatpool_arr($do_snat,$do_automap,$new_snatpool)] \ - [iapp_substa firewall_arr($afm_allowed,$do_firewall,$new_firewall)] \ - [iapp_substa \ - ip_intelligence_arr($afm_allowed,$do_ip_intel,$new_ip_intel,$is_v11_5,policy)]" - - set vs_params "$redir_vs_params $security_logging \ - persist [iapp_substa persist_cmd($persist_result)] \ - fallback-persistence [iapp_substa fallback_persist_cmd($fallback_persist_result)] \ - pool [set pool_name [iapp_substa pool_arr($new_pool,$no_pool)]] \ - [iapp_substa irule_arr([llength $irule_names])] \ - [iapp_substa local_traffic_policies($is_v11_4,$do_asm,$create_asm_policy)]" - - # TMSH syntax dictates that a profile may only be mentioned once. - # If the same profile is used in 2 contexts, then specify "context all". - set client_tcp [iapp_substa \ - client_tcp_arr($new_client_tcp,$::net__client_mode)] - set server_tcp [iapp_substa \ - server_tcp_arr($new_server_tcp,$::net__server_mode)] - - if { $client_tcp eq $server_tcp } { - set tcp_profiles "$client_tcp \{ context all \} " - } else { - set tcp_profiles "$client_tcp \{ context clientside \} \ - $server_tcp \{ context serverside \} " - } - - # Order is important to the "context clientside" and "context serverside" - # parameters, so those parameters without context must come after those - # with context. For example, HTTP must come after TCP and SSL. - set http_name [iapp_substa http_arr($ssl_pass_thru,$new_http,$do_client_ssl)] - - set vs_profiles "[iapp_substa \ - client_ssl_arr($do_client_ssl,$new_client_ssl,$do_chain_cert)] \ - [iapp_substa server_ssl_arr($do_server_ssl,$default_server)] \ - [iapp_substa isession_arr($do_isession,$advanced,$new_isession)] \ - $tcp_profiles $http_name \ - [iapp_substa ip_intelligence_arr($afm_allowed,$do_ip_intel,$new_ip_intel,$is_v11_5,profile)] \ - [expr { $do_dos_security ? "$::afm__dos_security_profile" : "" }] \ - [expr { $do_protocol_security ? "$::afm__protocol_security_profile" : "" }] \ - [iapp_substa compress_arr($do_compress,$new_compress)] \ - [iapp_substa \ - caching_arr($do_caching,$new_caching,$do_configure_wa)] \ - [iapp_substa \ - oneconnect_arr($do_oneconnect,$new_oneconnect,$do_snat)] \ - [iapp_substa ntlm_cmd($is_admin,[iapp_substa ntlm_arr($do_oneconnect,$discourage_ntlm,$advanced)])] \ - [iapp_substa analytics_arr($do_analytics,$new_analytics)] \ - [iapp_substa tcp_analytics_arr($do_tcp_analytics,$new_tcp_analytics)] \ - [expr { $do_asm && $is_v11_4 ? "websecurity " : "" }] \ - [iapp_substa logging_arr($do_logging)] \ - $apm_profiles $::pool__profiles" - - set vs_name [iapp_substa vs_arr($secure_client,$do_redirect)] - - if { [iapp_is ::app_stats enabled] } { - # START EMBEDDED ICALL SCRIPT - set icall_script_tmpl { - - set app APP - set folder FOLDER - tmsh::cd $folder - - set aso "sys.application.service ${folder}/$app" - set virtual_path "ltm virtual VS" - set http_path "ltm profile http HTTP" - set pool_path "ltm pool POOL" - - # these lists represent strings taken from "show ... field-fmt" - set http_stats { get-reqs number-reqs post-reqs resp-5xx-cnt } - set virtual_stats { - clientside.bits-in clientside.bits-out clientside.cur-conns - clientside.max-conns clientside.pkts-in clientside.pkts-out - clientside.tot-conns status.availability-state status.enabled-state - status.status-reason - } - set pool_stats { - active-member-cnt serverside.bits-in serverside.bits-out - serverside.cur-conns serverside.max-conns serverside.pkts-in - serverside.pkts-out serverside.tot-conns - } - - if { [catch { - # loop over each type of object we want to look at, building the name - # of the path and the stats for it as needed - foreach type { HTYPE virtual PTYPE } { - # making this its own variable made the Tcl validator stop throwing - # a warning - though it _should_ be fine to move it inline w/its use - set path [set ${type}_path] - set objs [tmsh::get_status $path raw] - if { [llength $objs] == 0 } { - puts "no object found for: $type" - continue - } - set obj [lindex $objs 0] - foreach stat [set ${type}_stats] { - set value [tmsh::get_field_value $obj $stat] - # associate the iStat with the app service - istats::set "$aso string $stat" $value - } - } - - # Set an additional iStat for the size of the pool, updated on - # each iCall iteration in case the size of an external pool changes. - # Check first that the pool is configured with at least one member. - set pool_size 0 - if { "POOL" ne "none" && [string first "members" [tmsh::list $pool_path]] != -1 } { - set pools [tmsh::get_config $pool_path] - if { [llength $pools] == 1 } { - set pool [lindex $pools 0] - set pool_size [llength [tmsh::get_field_value $pool members]] - } - } - istats::set "$aso string total-member-cnt" $pool_size - } err] } { - istats::set "$aso string app_stats.publish" "Failure in iCall script ${folder}/publish_stats while collecting application statistics: $err" - } else { - istats::set "$aso string app_stats.publish" "Published" - } - }; # END EMBEDDED ICALL SCRIPT - - # used to fill in variables within iCall script - set script_map [list APP $tmsh::app_name \ - FOLDER [tmsh::pwd] \ - VS [lindex $vs_name 0] \ - HTTP [lindex $http_name 0] \ - POOL [lindex $pool_name 0] \ - HTYPE [expr { $ssl_pass_thru ? {} : {http} }] \ - PTYPE [expr { $no_pool ? {} : {pool} }]] - - set icall_script_src [string map $script_map $icall_script_tmpl] - iapp_conf create sys icall script publish_stats \ - definition \{ $icall_script_src \} - iapp_conf create sys icall handler periodic publish_stats \ - interval 60 script publish_stats - set aso "sys.application.service ${app}.app/$app" - catch { exec istats set "$aso string app_stats.publish" "Starting" } err - } -} - -# This array customizes the assignment of old variables to the vx and tx arrays, -# which are used to construct the new variables in tmsh. Since the old variable -# name is almost always used during this assignment, "##" may be used as an -# abbreviation. The assignment of ssl_encryption_questions__legacy_advanced -# is long, but it merely sets the new template context to "basic" or "advanced" -# based on the complexity of the user's application. -array set upgrade_var_arr { - ::ssl_encryption_questions__offload_ssl { \ - [set vx(offload_history) ##] \ - [set vx(ssl_encryption_questions__offload_ssl) "legacy"] \ - [set vx(ssl_encryption_questions__legacy_advanced) [expr { \ - ( ![iapp_get_provisioned avr] || \ - [iapp_is ::analytics__add_analytics {No}] ) && \ - [iapp_is ::basic__snat {No}] && \ - [iapp_is ::basic__need_snatpool {No}] && \ - [iapp_is ::basic__using_ntlm {No}] && \ - [iapp_is ::server_pools__tcp_request_queuing_enable_question \ - {No}] && \ - ( [iapp_is ::server_pools__create_new_monitor {Use Monitor...}] || \ - ( [string equal -length 3 $::server_pools__monitor_send {GET}] && \ - [iapp_is ::server_pools__monitor_http_version {Version 1.0}] )) \ - ?no:yes}]]} - ::ssl_encryption_questions__offload_ssl_1 {[set vx(ssl__mode) ##]} - ::ssl_encryption_questions__offload_ssl_2 {[set vx(ssl__mode) ##]} - ::ssl_encryption_questions__cert {[set vx(ssl__cert) ##]} - ::ssl_encryption_questions__key {[set vx(ssl__key) ##]} - ::analytics__add_analytics {[set vx(stats__analytics) \ - [expr { ## eq {No} ? {No} : \ - [expr { $::analytics__create_new_analytics eq {Yes} ? {Yes} : \ - $::analytics__analytics_profile }] }] ]} - ::basic__addr {[set vx(pool__addr) ##]} - ::basic__port {[set vx(pool__port) ##]} - ::basic__secure_port {[set vx(pool__port_secure) ##]} - ::basic__create_redir {[set vx(pool__redirect_to_https) ##]} - ::basic__redir_port {[set vx(pool__redirect_port) ##]} - ::basic__snat {[set vx(net__same_subnet) ##]} - ::basic__need_snatpool {[set vx(net__snat_type) ##]\ - [set vx(net__snatpool) ##]} - ::basic__snatpool_members {[set tx(net__snatpool_members) ##]} - ::basic__using_ntlm {[set vx(server__ntlm) ##]} - ::server_pools__create_new_pool {[set vx(pool__pool_to_use) ##]} - ::server_pools__lb_method_choice {[set vx(pool__lb_method) ##]} - ::server_pools__tcp_request_queuing_enable_question \ - {[set vx(server__tcp_req_queueing) ##]} - ::server_pools__tcp_request_queue_length \ - {[set vx(server__tcp_queue_length) ##]} - ::server_pools__tcp_request_queue_timeout \ - {[set vx(server__tcp_queue_timeout) ##]} - ::server_pools__create_new_monitor {[set vx(monitor__monitor) \ - [expr { ## eq {Use Monitor...} ?$::server_pools__reuse_monitor_name:## }]]} - ::server_pools__servers {[set tx(pool__members) ##]} - ::server_pools__monitor_interval {[set vx(monitor__frequency) ##]} - ::server_pools__monitor_send {[set vx(monitor__http_method) [lindex ## 0]]\ - [set vx(monitor__uri) [lrange ## 1 end]]} - ::server_pools__monitor_http_version {[set vx(monitor__http_version) ##]} - ::server_pools__monitor_dns_name { \ - [set tx(pool__hosts) [subst {{ name ## }}] ]} - ::server_pools__monitor_recv {[set vx(monitor__response) ##]} - ::optimizations__lan_or_wan {[set vx(net__client_mode) ##]\ - [set vx(client__tcp_lan_opt) ##]\ - [set vx(client__tcp_wan_opt) ##]\ - [set vx(client__http_compression) ##]} - ::optimizations__use_wa { \ - [expr { [iapp_get_provisioned am] \ - && ![iapp_get_provisioned asm] \ - ? [set vx(client__use_wa) ##] : { }}]\ - [set vx(client__standard_caching_with_wa) ##]\ - [set vx(client__standard_caching_without_wa) ##]} - ::optimizations__x_wa_info_header {[set vx(client__x_wa_info_header) ##]} - ::optimizations__perf_monitor {[set vx(client__enable_perf_monitor) ##]} - ::optimizations__policy {[set vx(client__policy) ##]} - ::optimizations__use_asm {[expr { [iapp_get_provisioned asm] && \ - ![iapp_get_provisioned am] \ - ? [set vx(asm__use_asm) ##] : { }}]} - ::optimizations__use_wa_or_asm { \ - [set vx(client__use_wa) \ - [expr { [iapp_get_provisioned am] && [iapp_get_provisioned asm]\ - && [iapp_is ::optimizations__use_wa_or_asm "Use WAM"] ?yes:no }]]\ - [set vx(client__standard_caching_with_wa) \ - [expr { [iapp_get_provisioned am] && [iapp_get_provisioned asm]\ - && [iapp_is ::optimizations__use_wa_or_asm "Use WAM"] ?yes:no }]]\ - [set vx(client__standard_caching_without_wa) \ - [expr { [iapp_get_provisioned am] && [iapp_get_provisioned asm]\ - && [iapp_is ::optimizations__use_wa_or_asm "Use WAM"] ?yes:no }]]\ - [set vx(asm__use_asm) \ - [expr { [iapp_get_provisioned am] && [iapp_get_provisioned asm]\ - && [iapp_is ::optimizations__use_wa_or_asm "Use ASM"] ?yes:no }]]} - ::optimizations__language {[set vx(asm__language) ##]} -} - -# Two types of translation are supported in this array. If the key is literal, -# then the translation is applied to all ASO variables. If the key is a variable -# name, then the translation is applied only to that variable. - -array set upgrade_trans_arr [subst { - {Create New Pool} $CREATE_NEW_ANSWER - {Create New Monitor} $CREATE_NEW_ANSWER - {Use Default Profile} $::DEFAULT_ANSWER - Yes yes - No no - enabled yes - disabled no - {Version 1.0} http10 - {Version 1.1} http11 - LAN lan - WAN wan - offload_history { - Yes Yes - No No - } - net__snat_type { - Yes snatpool - No automap - } - net__need_snatpool { - Yes $CREATE_NEW_ANSWER - No no - } - ssl__mode { - Yes client_ssl - No no_ssl - } - server__ntlm { - Yes /Common/ntlm - No $DO_NOT_USE_ANSWER - } - monitor__response { - none { } - } - stats__analytics { - Yes $CREATE_NEW_ANSWER - No $DO_NOT_USE_ANSWER - } -}] - -array set downgrade_tbl_arr { - ::pool__members server_pools__servers - ::pool__hosts optimizations__hosts - ::net__snatpool_members basic__snatpool_members -} - -# ABOUT LEGACY MODE, UPGRADE, AND DOWNGRADE -# -# The variable ::ssl_encryption_questions__offload_ssl is inherited from the -# v11.3 F5.HTTP template and is used to determine whether a template originated -# in a prior release. The purpose is to maintain the user's original selections -# while making the legacy option unavailable for new applications. -# -# Values of ::ssl_encryption_questions__offload_ssl: -# - does not exist => template in v11.4 mode -# - "Yes" or "No" => template in v11.3 mode -# - "legacy" => template created v11.3, now in v11.4 mode -# -# The variable ssl_encryption_questions__advanced allows the user to select -# the complexity of the options presented in the template. If the template -# was originally created pre v11.3, then a different choice variable is used -# which provides the additional option of returning to the legacy mode. -# -# Values of ::ssl_encryption_questions__advanced: -# - "yes" => v11.4 advanced configuration mode -# - "no" => v11.4 basic configuration mode -# -# Values of ::ssl_encryption_questions__legacy_advanced: -# - "yes" => v11.4 advanced configuration mode -# - "no" => v11.4 basic configuration mode -# - "legacy" => v11.4 user chooses to return to v11.3 view. -# This option is not available to virgin v11.4 applications. -# -# When a user upgrades this template from v11.3 to v11.4 mode, the value -# of ::ssl_encryption_questions__offload_ssl is stored in ::offload_history. -# This value is recovered if the user later opts to return to v11.3 mode. - -set do_v11_3 [expr { [iapp_is ssl_encryption_questions__offload_ssl Yes] \ - || [iapp_is ssl_encryption_questions__offload_ssl No] }] -set upgrade [iapp_is ssl_encryption_questions__upgrade Yes] -set downgrade [iapp_is ssl_encryption_questions__legacy_advanced legacy] - -# array keys: $do_v11_3,$upgrade,$downgrade -array set main { - 0,0,0 { [v11_4_main] } - 0,1,0 { [v11_4_main] } - 0,1,1 { [iapp_downgrade_template ssl_encryption_questions__offload_ssl \ - ssl_encryption_questions__upgrade downgrade_tbl_arr] } - 0,0,1 { [iapp_downgrade_template ssl_encryption_questions__offload_ssl \ - ssl_encryption_questions__upgrade downgrade_tbl_arr] } - 1,1,0 { [iapp_upgrade_template upgrade_var_arr upgrade_trans_arr] } - 1,1,1 { [iapp_upgrade_template upgrade_var_arr upgrade_trans_arr] } - * { [package require iapp_legacy 1.0.0] \ - [tmsh::include "f5.app_utils"] \ - [iapp_legacy::http::configure_http_deployment "POLICY_TEMPLATE_RAPID_DEPLOYMENT"] } -} - -iapp_substa main($do_v11_3,$upgrade,$downgrade) -iapp_template stop - - } - presentation { - -include "/Common/f5.apl_common" - -section intro { - message early_release "This template has not yet been fully tested at F5, and therefore has limited support. When testing is complete, it will move from the RELEASE CANDIDATE directory to parent directory of the iApp template package." - - # APL choice values may be set even if the optional - # clause is not true. This trick is useful for setting - # values that APL otherwise would not have access to. - # Here, system provisioning values are recalled, and later - # used to customize messages displayed within the template. - optional ( "HIDE" == "THIS" ) { - choice am_provisioned tcl { - - return [expr {[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_provisioned am] ? "yes" : "no"}] - } - choice apm_provisioned tcl { - - return [expr {[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_provisioned apm] ? "yes" : "no"}] - } - choice asm_provisioned tcl { - - return [expr {[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_provisioned asm] ? "yes" : "no"}] - } - choice asm_policy tcl { - - return [expr {[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain -filter controls =~ asm ltm policy] ne "" ? "yes" : "no"}] - } - choice afm_allowed tcl { - - return [expr { [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_provisioned afm] ? "yes" : "no"}] - } - choice analytics_provisioned tcl { - - return [expr {[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_provisioned avr] ? "yes" : "no"}] - } - choice is_admin tcl { - - return [expr { [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_user -is_admin] ? "yes" : "no"}] - } - choice is_v11_4 tcl { - - return [expr {[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_tmos_version >= 11.4] ? "yes" : "no"}] - } - choice is_v11_6 tcl { - - return [expr {[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_tmos_version >= 11.6] ? "yes" : "no"}] - } - choice is_v13_0 tcl { - - return [expr {[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_tmos_version >= 13.0] ? "yes" : "no"}] - } - } - - message hello "Configure security, high availability, and acceleration for web applications. This template supports basic web services. For detailed information and configuration assistance, see http://www.f5.com/pdf/deployment-guides/iapp-http-dg.pdf." - message check_for_updates "Check for new versions of this template on the AskF5 Knowledge Base website (http://support.f5.com/kb/en-us/solutions/public/13000/400/sol13422.html)." - - optional ( am_provisioned == "no" ) { - message am_not_provisioned "This system is not currently provisioned to run the BIG-IP Application Acceleration Manager (AAM). Provisioning AAM provides acceleration and optimization for your web applications." - } - optional ( analytics_provisioned == "no" ) { - message analytics_not_provisioned "The system is not currently provisioned to run the BIG-IP Application Visibility Reporting Module (AVR). Activating this module provides rich application statistics and reporting for your deployment." - } - optional ( asm_provisioned == "no" ) { - message asm_not_provisioned "This system is not currently provisioned to run the BIG-IP Application Security Module (ASM). Provisioning ASM can help to secure your web applications." - } - } - - section ssl_encryption_questions { - - # If this variable is present, then the user is re-parenting from - # a v11.3 or earlier template. This condition causes the system - # to display the old template along with an offer to upgrade. - optional ( "HIDE" == "THIS" ) { - choice offload_ssl default "no_legacy" { "Yes" , "No" , "legacy" , "no_legacy" } - } - - # For v11.3 applications - optional ( offload_ssl == "Yes" || offload_ssl == "No" ) { - message deprecated "This template has been deprecated. It is highly recommended that you upgrade this deployment to the current template version. To upgrade, choose Yes below. Note that this process will temporarily take your application offline." - - choice upgrade default "No" display "small" { "Yes" => "Yes" , "No" => "No" } - - message gap_1 "" - message gap_2 "" - message section_head "" - } - optional ( offload_ssl == "Yes" ) { - choice offload_ssl_1 default "Yes" { "Yes" => "Yes" , "No" => "No" } - } - optional ( offload_ssl == "No" ) { - choice offload_ssl_2 default "No" { "Yes" => "Yes" , "No" => "No" } - } - optional ((ssl_encryption_questions.offload_ssl == "Yes" - && ssl_encryption_questions.offload_ssl_1 == "Yes" ) - || (ssl_encryption_questions.offload_ssl == "No" - && ssl_encryption_questions.offload_ssl_2 == "Yes" )) { - - choice cert default "/Common/default.crt" display "xxlarge" tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -norecursive -filter NAME !~ ca-bundle.crt|f5-irule.crt sys file ssl-cert] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - - choice key default "/Common/default.key" display "xxlarge" tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -norecursive sys file ssl-key] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - - # For v11.4 applications - optional ( offload_ssl == "legacy" || offload_ssl == "no_legacy" ) { - - choice help display "xxlarge" default "hide" { - - "Yes, show inline help" => "max" , - "No, do not show inline help" => "hide" - } - optional ( help == "max" ) { - message help_max "Inline help is available to provide contextual descriptions to aid in the completion of this configuration. Select to show or hide the inline help in this template. Important notes and warnings are always visible, no matter which selection you make here. " - } - optional ( offload_ssl == "legacy" ) { - choice legacy_advanced display "xxlarge" default "no" { - - "Basic - Use F5's recommended settings" => "no" , - "Advanced - Configure advanced options" => "yes" , - "Legacy - Return to the deprecated template" => "legacy" - - } - optional ( legacy_advanced == "legacy" ) { - message legacy_warning "Downgrading to the legacy template will temporarily take your application offline and return all non-table entries to their pre-upgrade values. Any changes made after the upgrade will be lost. To complete the downgrade, click Finished, then Reconfigure, then Finished." - } - } - optional ( offload_ssl == "no_legacy" ) { - choice advanced display "xxlarge" default "no" { - "Basic - Use F5's recommended settings" => "no" , - "Advanced - Configure advanced options" => "yes" - } - optional ( help == "max" ) { - message conf_mode_max "This template supports basic and advanced configurations modes. Basic mode exposes the most commonly used settings, and automatically configures the rest of the options based on F5's recommended settings. Advanced mode allows you to review and change all settings. If you are unsure, select Basic." - } - - } - } - } - - # For post-v11.4 applications - optional ( ssl_encryption_questions.offload_ssl == "legacy" - || ssl_encryption_questions.offload_ssl == "no_legacy" ) { - - section net { - optional ( intro.is_v13_0 == "yes" ) { - choice v13_tcp display "xxlarge" default "warn" { - "Please select one" => "warn" , - "No, use the older profiles" => "no" , - "Yes, use the new profiles (recommended)" => "yes" - } - optional ( v13_tcp == "warn" ) { - message v13_tcp_warning_1 - message v13_tcp_warning_2 "USING THE NEW TCP PROFILES MAY SIGNIFICANTLY IMPROVE PERFORMANCE" - message v13_tcp_warning_3 - } - optional ( ssl_encryption_questions.help == "max" ) { - message v13_tcp_max "F5 has released new TCP profiles with significantly improved performance. Choose 'Yes' to use these faster profiles. Choose 'No' to use the profiles that were included in previous BIG-IP releases." - } - } - - choice client_mode display "xxlarge" default "wan" tcl { - - - set rval "Local area network (LAN)\tlan\nWide area network (WAN)\twan\n" - if { [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_provisioned am] } { - append rval "WAN through another BIG-IP system\ttunnel\n" - } - - return $rval - } - optional ( ssl_encryption_questions.help == "max" ) { - message client_mode_max "Select the type of network that connects the clients to the BIG-IP system. This is used to determine the client-side TCP optimizations the system uses (in the case of WAN or LAN), or if the system will use an iSession tunnel (in the case of WAN through another BIG-IP system)." - } - optional ( client_mode == "tunnel" ) { - message tunnel_max1 "Selecting 'WAN Network through another BIG-IP system' enables this iApp to create a secure and optimized iSession tunnel between this BIG-IP system and the remote BIG-IP system. Note that iSession tunnels are a shared BIG-IP system resource. And once configured, the settings in the iSession profile may overrule certain iApp encryption settings in order to avoid conflicts with the iSession tunnel encryption settings." - message tunnel_max2 "To use this feature, you must have Local Endpoint and Listener objects created on both BIG-IP systems. See the deployment guide or BIG-IP documentation for information on creating these objects." - } - - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - choice vlan_mode display "xxlarge" default "enabled" { - "Enable traffic on all VLANs and Tunnels" => "all" , - "Yes, enable traffic only on the VLANs I specify" => "enabled" , - "Yes, disable traffic only on the VLANs I specify" => "disabled" - } - optional ( ssl_encryption_questions.help == "max" ) { - message vlan_max "You can optionally configure the BIG-IP system to accept or deny client traffic from specific VLANs you have configured. If you leave the default, the BIG-IP system accepts traffic from all VLANs configured on the system. If you select to enable or disable traffic on specific VLANs, you must specify the VLANs in the next question. The VLAN objects must already be configured on this BIG-IP system before you can select them." - } - optional ( vlan_mode != "all" ) { - multichoice client_vlan default tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items net vlan] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items net vlan] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( vlan_mode == "disabled" ) { - message disabled_vlan_max "By default, all VLANs on the box are in the Selected list. Because you selected to disable client traffic from specific VLANs, if you do not move any of the VLANs to the Options list, traffic will be denied from ALL VLANs, and this configuration will not pass any traffic." - } - optional ( ssl_encryption_questions.help == "max" ) { - message client_vlan_max "Because you selected you want to enable or disable traffic on specific VLANs in the previous question, use this section to specify the VLANs. By default, all VLANs on the BIG-IP system appear in the Selected box. Click any applicable VLANs and then use the Move buttons (<<) and (>>) to adjust list membership. The Selected box lists the VLANs and tunnels that are specifically enabled or disabled." - } - } - } - - choice server_mode display "xxlarge" default "lan" tcl { - - - set rval "Local area network (LAN)\tlan\nWide area network (WAN)\twan\n" - if { [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_provisioned am] } { - append rval "WAN through another BIG-IP system\ttunnel\n" - } - return $rval - } - optional ( ssl_encryption_questions.help == "max" ) { - message server_mode_max "Select the type of network that connects the servers to the BIG-IP system. This is used to determine the server-side TCP optimizations the system uses (in the case of WAN or LAN), or if the system will use an iSession tunnel (in the case of WAN through another BIG-IP system)." - } - optional ( server_mode == "tunnel" ) { - message tunnel_max3 "Selecting 'WAN Network through another BIG-IP system' enables this iApp to create a secure and optimized iSession tunnel between this BIG-IP system and the remote BIG-IP system. Note that iSession tunnels are a shared BIG-IP system resource. And once configured, the settings in the iSession profile may overrule certain iApp encryption settings in order to avoid conflicts with the iSession tunnel encryption settings." - message tunnel_max4 "To use this feature, you must have Local Endpoint and Listener objects created on both BIG-IP systems. See the deployment guide or BIG-IP documentation for information on creating these objects." - } - - optional ( ssl_encryption_questions.legacy_advanced != "no" - || ssl_encryption_questions.advanced == "yes" ) { - choice same_subnet display "xxlarge" default "no" { - "BIG-IP virtual server IP and web servers are on different subnets" => "no" , - "BIG-IP virtual server IP and web servers are on the same subnet" => "yes" - } - - - optional ( ssl_encryption_questions.help == "max" ) { - message subnet_1_max "It is important to ensure that responses to client requests made using the BIG-IP virtual server address are returned through the BIG-IP system. If the client receives a response directly from the web server, the connection is dropped. The way the BIG-IP system handles this depends on your network topology." - message subnet_2_max "For environments in which the virtual server IP address is on a subnet different from the web servers, select BIG-IP virtual server IP and the web servers are on different subnets." - message subnet_3_max "For environments in which the virtual server IP address provided is on the same subnet as the web servers in the associated pool, select BIG-IP virtual server IP and the web servers are on the same subnet. This enables Secure Network Address Translation (SNAT Auto Map). This configuration results in the BIG-IP system replacing the client IP address of an incoming connection with its self IP address (using floating addresses when available), ensuring the server response returns through the BIG-IP system." - } - - optional ( same_subnet == "no" ) { - choice route_to_bigip display "xxlarge" default "no" { - "Servers have a route to clients through the BIG-IP system" => "yes" , - "Servers do not have a route to clients through the BIG-IP system" => "no" - } - - - optional ( ssl_encryption_questions.help == "max" ) { - message def_rt_1_max "For environments in which the virtual server IP is on a subnet different from the web servers, information regarding the IP setting of the web servers is required to ensure the correct BIG-IP system configuration." - message def_rt_2_max "If the web servers use the BIG-IP system as their default gateway, select Web servers have a route for clients through the BIG-IP system. In this scenario, no configuration is needed to support your environment to ensure correct server response handling." - message def_rt_3_max "If the web servers do not have a route through the BIG-IP system, select Web servers do not have a route for clients through the BIG-IP system. This enables Secure Network Address Translation (SNAT Auto Map). This configuration results in the BIG-IP system replacing the client IP address of an incoming connection with its self IP address (using floating addresses when available) ensuring the server response returns through the BIG-IP system. " - } - } - - optional ( same_subnet == "yes" - || ( same_subnet == "no" - && route_to_bigip == "no" )) { - choice snat_type display "xxlarge" default "automap" { - "Fewer than 64,000 concurrent connections" => "automap" , - "More than 64,000 concurrent connections" => "snatpool" - } - optional ( ssl_encryption_questions.help == "max" ) { - message snat_max "For environments with fewer than 64,000 concurrent connections per server, the BIG-IP system enables SNAT Auto Map, which uses a unique IP:port combination for each client request it sends to the web server. For environments with more than 64,000 concurrent connections per web server, the BIG-IP system enables a SNAT pool, and additional IP addresses are reserved to ensure the system has enough unique combinations. If the system exhausts all combinations, new client connections are refused until one is available." - } - optional ( snat_type == "snatpool" ) { - choice snatpool display "xxlarge" default "/#create_new#" tcl { - - set ::choices "Create a new SNAT pool\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm snatpool]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message snatpool_max "Choose whether you want the iApp template to create a new SNAT Pool for this implementation. If you have already created a custom SNAT Pool, you can select it from the list." - } - - - optional ( snatpool == "/#create_new#" ) { - table snatpool_members { - string addr required validator "IpAddress" - display "xlarge" - } - - - optional ( ssl_encryption_questions.help == "max" ) { - message snatpool_members_max "Type the IP addresses you want to use for the SNAT Pool. These addresses should be available IP addresses, not the self IP address(es) of the BIG-IP system." - } - } - - } - - } - } - } - - optional ( intro.apm_provisioned == "yes" ) { - section apm { - choice use_apm display "xxlarge" default "no" { - "Yes, provide secure authentication using APM" => "yes" , - "No, do not provide secure authentication using APM" => "no" - } - optional ( ssl_encryption_questions.help == "max" ) { - message use_apm_help "If you have fully licensed and provisioned the BIG-IP Access Policy Manager, you have the option of using it to provide proxy authentication and secure remote access for web." - } - optional ( use_apm == "yes" ) { - choice apm_profile display "xxlarge" tcl { - - set ::choices "[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain apm profile access]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message apm_profile_help "In order to use BIG-IP APM in this template, you must have manually created an APM Access Profile for your application. Select the Access Profile you created from the list, or exit the template and create an Access Profile manually. See Access Policy > Access Profiles > Access Profiles List to create a profile. For specific instructions, see the Help tab or the product documentation." - } - optional ( intro.is_v11_6 == "yes" ) { - choice apm_policy display "xxlarge" default "/#do_not_use#" tcl { - - set ::choices "[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain -filter type eq per-rq-policy apm policy]\nDo not use a per-request Access Policy\t/#do_not_use#" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message apm_policy_help "" - } - } - } - } - } - - section ssl { - - optional ( apm.use_apm == "no" ) { - choice mode display "xxlarge" default "no_ssl" { - "Terminate SSL from clients, plaintext to servers (SSL offload)" => "client_ssl" , - "Terminate SSL from clients, re-encrypt to servers (SSL bridging)" - => "client_ssl_server_ssl" , - "Encrypted traffic is forwarded without decryption (SSL pass-through)" - => "pass_thru" , - "Plaintext to and from clients, encrypt to servers" => "server_ssl" , - "Plaintext to and from both clients and servers" => "no_ssl" - } - } - optional ( apm.use_apm == "yes" ) { - choice mode_apm display "xxlarge" default "client_ssl" { - "Encrypt to clients, plaintext to servers (SSL Offload)" => "client_ssl" , - "Terminate SSL from clients, re-encrypt to servers (SSL Bridging)" - => "client_ssl_server_ssl" - } - } - - optional ( ssl_encryption_questions.help == "max" ) { - message mode_1_max "SSL is a cryptographic protocol used to secure client to server communications. Select how you want the BIG-IP system to handle encrypted traffic. For encryption between client and BIG-IP system:" - message mode_2_max "If your application requires encryption and session persistence (which ensures requests from a single user are always distributed to the server on which they started) , we recommend you configure the BIG-IP system for terminating SSL for client requests. This allows the system to more accurately persist connections based on granular protocol or application-specific variables." - message mode_3_max "If security requirements do not allow the BIG-IP system to decrypt client connections, select to re-encrypt to the web servers. With this selection the system will use SSL ID or Client/Server IP to enforce session persistence. Because these parameters are less granular, using them may result in inconsistent distribution of client requests." - message mode_7_max "If you do not want the BIG-IP system to do anything with encrypted traffic and simply send it to the web servers, select SSL pass-through. This differs from SSL re-encryption because the system is not decrypting and re-encrypting the traffic, only sending the traffic through without modification. " - message mode_4_max "Encryption between BIG-IP system and web servers:" - message mode_5_max "Encryption and decryption of SSL is computationally intensive and consumes server CPU resources. In environments that do not require encryption between the BIG-IP system and the web servers, select SSL Offload to terminate the SSL session from the client at the BIG-IP system and provide clear text communication from the BIG-IP system to the web servers." - message mode_6_max "For environments that require encryption between the BIG-IP system and the web servers, select SSL re-encryption to terminate the SSL session from the client at the BIG-IP system and re-encrypt it for communication between the BIG-IP system and the web servers." - } - - optional ( mode == "client_ssl" || mode == "client_ssl_server_ssl" || apm.use_apm == "yes" ) { - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - choice client_ssl_profile display "xxlarge" - default "/#create_new#" tcl { - - set ::choices "Create a new Client SSL profile\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile client-ssl]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message client_ssl_profile_max "If you have already created an Client SSL profile that includes the appropriate certificate and key, you can select it from the list. Otherwise, the iApp creates a new Client SSL profile. " - } - } - optional (( ssl_encryption_questions.legacy_advanced == "no" - && ssl_encryption_questions.advanced == "no" ) - || client_ssl_profile == "/#create_new#" ) { - choice cert default "/Common/default.crt" display "xxlarge" tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -norecursive -filter NAME !~ ca-bundle.crt|f5-irule.crt sys file ssl-cert] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message cert_max "To establish encrypted communication, a client and server negotiate security parameters that are used for the session. As part of this handshake, a certificate is provided by the server to the client to identify itself. The client can then validate the certificate with an authority for authenticity before sending data. When the BIG-IP system is decrypting communication between the client and server, an SSL certificate and key pair for each fully-qualified DNS name related to this application instance must be configured on the system." - message cert1_max "Select the SSL certificate you imported for this deployment. Importing certificates and keys is not a part of this template, see System > File Management > SSL Certificate List. To select any new certificates and keys you import, you need to restart or reconfigure this template." - } - choice key default "/Common/default.key" display "xxlarge" tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -norecursive -filter security-type ne "password" sys file ssl-key] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message key_max "Select the associated SSL key you imported." - } - optional ( cert == "/Common/default.crt" - || key == "/Common/default.key" ) { - message ssl_warn_1 "The BIG-IP system's default certificate and key are not secure. For proper security, acquire a certificate and key from a trusted certificate authority, and then import it onto the BIG-IP system." - - } - optional ( ssl_encryption_questions.legacy_advanced == "no" - && ssl_encryption_questions.advanced == "no" ) { - message ssl_warn_2 "If your key is password-protected, you must build a Client SSL profile outside the iApp, and then identify it in Advanced configuration mode." - } - - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - message ssl_warn_3 "If your key is password-protected, you must manually create a Client SSL profile outside the iApp, and then select it from the list above." - choice use_chain_cert display "xxlarge" - default "/#do_not_use#" tcl { - - set ::choices "Do not use an intermediate certificate\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -norecursive sys file ssl-cert]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message use_chain_cert_1_max "Intermediate certificates, also called intermediate certificate chains or chain certificates, are used to help systems which depend on SSL certificates for peer identification. These certificates are intended to create a chain of trust between the CA that signed the certificate and the CA that is already trusted by the recipient of the certificate. This allows the recipient to verify the validity of the certificates presented, even when the signing CA is unknown." - message use_chain_cert_2_max "Intermediate certificates must be created or imported onto this BIG-IP system prior to running this iApp. See http://support.f5.com/kb/en-us/solutions/public/13000/300/sol13302.html for help on creating an intermediate certificate chain." - } - } - } - } - - - optional (( apm.use_apm == "no" && - ( ssl.mode == "server_ssl" || ssl.mode == "client_ssl_server_ssl" )) - || (apm.use_apm == "yes" && ssl.mode_apm == "client_ssl_server_ssl")) { - choice server_ssl_profile display "xxlarge" default "/#default#" tcl { - - set ::choices "Create a new Server SSL profile based on serverssl (recommended)\t/#default#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile server-ssl]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message server_ssl_profile_max "If you have already created an Server SSL profile on this BIG-IP system, you can select it from the list. Otherwise, the iApp creates a new Server SSL profile." - } - } - } - - optional ( intro.asm_provisioned == "yes" && ( ssl.mode != "pass_thru" )) { - section asm { - choice use_asm default "/#do_not_use#" display "xxlarge" tcl { - - - set ::choices "No, do not use Application Security Manager\t/#do_not_use#\nYes, use ASM and create a new ASM policy\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain -filter controls =~ asm ltm policy]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message asm_1_max "Choose whether you want to use BIG-IP ASM to help secure your web deployment. The BIG-IP Application Security Manager (ASM) module is an advanced web application firewall that significantly reduces and mitigates the risk of loss or damage to data, intellectual property, and web applications." - } - optional ( asm.use_asm == "/#create_new#" ) { - choice asm_template default "POLICY_TEMPLATE_RAPID_DEPLOYMENT" display "xxlarge" tcl { - set ::choices "POLICY_TEMPLATE_RAPID_DEPLOYMENT (recommended)\tPOLICY_TEMPLATE_RAPID_DEPLOYMENT\n" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message asm_2_max "Select the template you want the system to use to build the policy. Note that if you choose to use ASM, the iApp template sets the policy enforcement mode to transparent. In this mode, violations are logged but not blocked. Before changing the mode to blocking, review the log results and adjust the policy for your deployment if necessary." - } - } - - optional ( use_asm != "/#do_not_use#" ) { - - optional ( intro.is_admin == "yes" ) { - multichoice security_logging display "xxlarge" tcl { - - # Menu should display all log profiles with "network none". - # tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items will not filter security log profiles, - # so the filter has been written inline here. - set ::choices "" - if { [catch { - set profile_list [tmsh::list security log profile all-properties recursive] - } err] } { - set profile_list " " - } - array set profiles [string map {"security log profile" ""} $profile_list] - foreach name [array names profiles] { - array set subprofile $profiles($name) - if { ([info exists subprofile(application)] && $subprofile(application) != "none") || - ([info exists subprofile(dos-application)] && $subprofile(dos-application) != "none") } { - append ::choices "$name\n" - } - } - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message security_logging_max "The logging profile enables you to log detailed information about BIG-IP ASM events and store those logs on the BIG-IP system or a remote logging server (syslog or Splunk). If you want to use a logging profile, we recommend creating one outside this template. Only logging profiles with Application Security enabled appear in the list." - } - } - - language_choice language - optional ( ssl_encryption_questions.help == "max" ) { - message language_max "If using an language encoding other than utf-8, select it from the list." - } - } - } - } - - optional ( intro.afm_allowed == "yes" && intro.is_admin == "yes" && intro.is_v11_4 == "yes" ) { - section afm { - choice policy default "/#do_not_use#" display "xxlarge" tcl { - - set ::choices "Yes, use network firewall and IP Intelligence\t/#default#\nNo, do not use network firewall or IP Intelligence\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain security firewall policy]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message policy_max "BIG-IP Advanced Firewall Manager (AFM) is a high-performance, stateful, full-proxy network firewall designed to guard data centers against incoming threats that enter the network on the most widely deployed protocols. BIG-IP AFM must be fully licensed and provisioned to use this functionality. If you have already created an AFM Network Firewall Policy on this BIG-IP system for this implementation, you can select it from the list." - } - optional ( policy == "/#default#" ) { - - choice restrict_by_addr default "/#do_not_use#" display "xxlarge" tcl { - - set ::choices "No, do not forbid client addresses (allow all)\t/#do_not_use#\nYes, forbid specific client addresses\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain security firewall address-list]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message restrict_max "You can use the BIG-IP AFM to restrict access to your application by either IP address or network address. If enabled, the system will only allow access to the virtual server from the address(es) you specify." - } - optional ( restrict_by_addr == "/#create_new#" ) { - string allowed_addr display "xxlarge" required - optional ( ssl_encryption_questions.help == "max" ) { - message allowed_addr_max "Specify the IP or network address that should have access to the application. You can use a single IP address, a list of IP addresses separated by spaces, a range of IP addresses separated by a dash (for example 192.0.2.10-192.0.2.100), a single network address, such as 192.0.2.200/24, or any combination of these." - } - } - } - optional ( policy != "/#do_not_use#" ) { - choice restrict_by_reputation default "accept" display "xxlarge" tcl { - - set choices "Accept all connections and log nothing\taccept\nReject connections from IP addresses with poor reputations\treject\nAccept all connections but log those from suspicious networks\twarn" - if { [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_tmos_version >= 11.5] } { - append choices "\nSelect an IP Intelligence policy\tselect" - } - return $choices - } - optional ( ssl_encryption_questions.help == "max" ) { - message restrict_by_reputation_max "The BIG-IP AFM uses an IP intelligence database to categorize IP addresses coming into the system. Select the way you want the system to handle possibly malicious networks with a poor reputation score." - } - optional ( ssl_encryption_questions.help == "max" && restrict_by_reputation != "accept" ) { - message restrict_by_reputation_log "By default, IP Intelligence events are logged to Security > Event Logs > Network > IP Intelligence. For the best performance, F5 recommends creating a remote logging profile to log IP Intelligence events. " - } - optional ( restrict_by_reputation == "select" ) { - choice ip_intelligence_policy display "xxlarge" tcl { - - set ::choices "[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain security ip-intelligence policy]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message ip_intelligence_policy_max "Select the custom IP intelligence policy you created for this implementation." - } - } - message restrict_by_reputation_warn "You must have an active IP Intelligence license for IP reputation-based access control to function correctly. " - - choice staging_policy default "/#do_not_use#" display "xxlarge" tcl { - - set ::choices "Do not apply a staging policy\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain security firewall policy]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - message staging_policy1_max "A policy in Staging mode does not block any traffic, and only logs what would be blocked if the policy were placed into production." - - optional ( ssl_encryption_questions.help == "max" ) { - message staging_policy_max "A staged policy allows you to evaluate the effect a policy has on traffic by analyzing the system logs, without actually modifying traffic based on the firewall rules. You must already have a policy on the system in order to select it from the list. For specific information on creating a staging policy, see the AFM documentation." - } - choice security_logging default "/#do_not_use#" display "xxlarge" tcl { - - # Menu should display all log profiles with "network none". - # tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items will not filter security log profiles, - # so the filter has been written inline here. - set ::choices "Do not use a logging profile\t/#do_not_use#\n" - if { [catch { - set profile_list [tmsh::list security log profile all-properties recursive] - } err] } { - set profile_list " " - } - array set profiles \ - [string map {"security log profile" ""} $profile_list] - foreach name [array names profiles] { - array set subprofile $profiles($name) - if { [info exists subprofile(network)] && \ - $subprofile(network) != "none" } { - append ::choices "$name\n" - } - } - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message security_logging_max "The logging profile enables you to log detailed information about BIG-IP system Network Firewall events and store those logs on the BIG-IP system or a remote logging server (syslog or Splunk). If you want to use a logging profile, we recommend creating one outside this template. Only logging profiles with Network Firewall enabled appear in the list. " - message security_logging1_max "If you are also using BIG-IP ASM, and the logging profile you created has both Application Security and Network Firewall enabled in the same profile, you must also select that profile here. See the BIG-IP AFM documentation for specific information on Logging profiles." - } - } - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - choice dos_security_profile default "/#do_not_use#" display "xxlarge" tcl { - - set ::choices "Do not use a DoS profile\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain security dos profile]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message dos_security_profile_max "The Denial-of-Service (DoS) profile can enable Layer 7 application DoS protection of HTTP traffic and Layer 7 DoS protection for SIP and DNS traffic. The iApp template does not create a DoS profile, if you want to use this functionality, you must create a custom DoS Profile outside the template." - } - optional ( ssl.mode != "pass_thru" ) { - choice protocol_security_profile default "/#do_not_use#" display "xxlarge" tcl { - - set ::choices "Do not use an HTTP protocol security profile\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain security http profile]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - optional ( ssl_encryption_questions.help == "max" ) { - message protocol_security_profile_max "The HTTP protocol security profile consists of many different security checks for the various components of HTTP traffic. The iApp template does not create a HTTP Security profile, if you want to use this functionality, you must create a custom HTTP Security profile outside the template." - } - } - } - } - section pool { - string addr display "xxlarge" required validator "IpAddress" - optional ( ssl_encryption_questions.help == "max" ) { - message addr_max "This IP address, combined with the port you specify below, becomes the BIG-IP virtual server address and port, which clients use to access the application. The system intercepts requests to this IP:Port and distributes them to the web servers." - } - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - string mask display "xxlarge" validator "IpAddress" - optional ( ssl_encryption_questions.help == "max" ) { - message mask_max "If you specified a network address for the virtual server (allowing the virtual server to handle multiple IP addresses), you must enter the full network mask that represents the address range. If you specified a single address for the virtual server, you may leave this field blank." - } - } - - optional ( ssl.mode != "client_ssl" && ssl.mode != "pass_thru" - && ssl.mode != "client_ssl_server_ssl" && apm.use_apm == "no" ) { - string port display "medium" validator "PortNumber" - default "80" required - } - optional ( ssl.mode == "client_ssl" || ssl.mode == "pass_thru" - || ssl.mode == "client_ssl_server_ssl" || apm.use_apm == "yes" ) { - string port_secure display "medium" validator "PortNumber" - default "443" required - } - optional ( ssl_encryption_questions.help == "max" ) { - message port_max "Specify the service port you want to use for the virtual server. The default value displayed here is based your answer to the question asking how the system should handle SSL traffic." - } - - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - optional ( "HIDE" == "THIS" ) { - choice is_ha tcl { - set sync_status [lindex [tmsh::get_status cm sync-status] 0] - set status [tmsh::get_field_value $sync_status status] - return $status - } - } - - optional ( is_ha != "Standalone" ) { - choice mirror display "xxlarge" default "disabled" { - "Do not enable connection/persistence mirroring" => "disabled" , - "Enable connection/persistence mirroring" => "enabled" - } - - optional ( ssl_encryption_questions.help == "max" ) { - message mirror_max "Connection and persistence mirroring allows you to configure the BIG-IP system to duplicate connection and persistence information to the standby unit of a redundant pair. This setting provides higher reliability, but might affect system performance. For more information, see http://support.f5.com/kb/en-us/solutions/public/13000/400/sol13478.html" - } - } - } - - table hosts { - string name required validator "FQDN" display "xlarge" - } - optional ( ssl_encryption_questions.help == "max" ) { - message fqdn_max "Clients can use the FQDN (Fully Qualified Domain Name) you enter here to access the web servers. For each FQDN, your DNS administrator must configure a DNS entry that resolves to the IP address you entered for the BIG-IP virtual server." - } - - optional (( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) - && ( ssl.mode == "client_ssl" - || ssl.mode == "client_ssl_server_ssl" - || ssl.mode == "pass_thru" || apm.use_apm == "yes" )) { - - choice redirect_to_https display "xxlarge" default "yes" { - "Redirect HTTP to HTTPS" => "yes" , - "Do not redirect HTTP to HTTPS" => "no" - } - optional ( ssl_encryption_questions.help == "max" ) { - message redirect_max "It is common for users to mistakenly attempt insecure access (HTTP) to a secure application (HTTPS). The BIG-IP system can automatically redirect these connections to use an encrypted connection." - } - optional ( redirect_to_https == "yes" ) { - string redirect_port display "medium" - validator "PortNumber" default "80" - optional ( ssl_encryption_questions.help == "max" ) { - message redirect_port_max "Specify the port from which you want users redirected. The most common port for HTTP is 80." - } - } - } - - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - - optional ( ssl.mode != "pass_thru" || apm.use_apm == "yes" ) { - choice http display "xxlarge" default "/#create_new#" tcl { - - set ::choices "Create a new HTTP profile (recommended)\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile http]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message http_max "The HTTP profile contains settings that tell the BIG-IP system how to handle the HTTP protocol. If you have created a custom HTTP profile for this application, you can select it from the list." - } - - optional ( http == "/#create_new#" ) { - choice xff display "xxlarge" default "yes" { - "Insert X-Forwarded-For HTTP header" => "yes" , - "Do not insert X-Forwarded-For HTTP header" => "no" - } - optional ( ssl_encryption_questions.help == "max" ) { - message xff_max "If you choose to insert the X-Forwarded-For header, the BIG-IP system inserts the original client IP address in the HTTP header for logging purposes. Additional configuration may be required on the web server to log the value of the X-Forwarded-For header." - } - } - } - - optional ( ssl.mode != "pass_thru" ) { - choice persist display "xxlarge" default "/#cookie#" tcl { - - if { [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -exists -local -norecursive ltm persistence cookie /Common/cookie] } { - set ::choices "Use cookie persistence (recommended)\t/#cookie#\nUse source address persistence\t/#source#\nDo not use persistence\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm persistence cookie]" - } else { - set ::choices "Use source address persistence\t/#source#\nDo not use persistence\t/#do_not_use#" - } - append ::choices "\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm persistence source-addr]\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm persistence ssl]\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm persistence universal]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - optional ( ssl.mode == "pass_thru" ) { - choice pass_thru_persist display "xxlarge" default "/#source#" tcl { - - set ::choices "Use source address persistence\t/#source#\nDo not use persistence\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm persistence source-addr]\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm persistence ssl]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - optional (( ssl.mode != "pass_thru" && persist != "/#do_not_use#" && persist != "/#source#" ) || - ( ssl.mode == "pass_thru" && pass_thru_persist != "/#do_not_use#" && pass_thru_persist != "/#source#" )) { - choice fallback_persist display "xxlarge" default "/#source#" tcl { - - set ::choices "Use source address fallback-persistence\t/#source#\nDo not use fallback-persistence\t/#do_not_use#" - append ::choices "\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm persistence source-addr]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - - optional ( ssl_encryption_questions.help == "max" && ssl.mode != "pass_thru" ) { - message persist_max "With persistence, the BIG-IP system tracks and stores session data, such as the specific pool member that serviced a client request. The F5 recommended method is Cookie persistence, which inserts a cookie in the HTTP header of a client request after an initial load balancing decision is made. The BIG-IP system uses this cookie to direct all subsequent requests from a given client to the same web server in the configured pool. An alternative method is source address persistence, where the source address of the client is used for persistence. You can also choose not to use persistence, or to select a custom persistence profile you have already created. " - } - optional ( ssl_encryption_questions.help == "max" && ssl.mode == "pass_thru" ) { - message pass_thru_persist_max "With persistence, the BIG-IP system tracks and stores session data, such as the specific pool member that serviced a client request. For SSL pass-through, the F5 recommended method is source address persistence, where the source address of the client is used for persistence. You can also choose not to use persistence, or to select a custom persistence profile you have already created." - } - } - - optional ( net.server_mode != "tunnel" ) { - choice pool_to_use display "xxlarge" default "/#create_new#" tcl { - - set ::choices "Create a new pool\t/#create_new#\nDo not use a pool\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm pool]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - optional ( net.server_mode == "tunnel" ) { - choice pool_to_use_wom display "xxlarge" default "/#do_not_use#" tcl { - - set ::choices "Create a new pool\t/#create_new#\nDo not use a pool\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm pool]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - - - optional ( ssl_encryption_questions.help == "max" ) { - message pool_max "A load balancing pool is a logical set of devices, such as web servers, grouped together to receive and process traffic. When clients attempt to access the application via the BIG-IP virtual server, the BIG-IP system distributes requests to any of the servers that are members of that pool." - } - - optional (( net.server_mode != "tunnel" && pool_to_use == "/#create_new#" ) - || ( net.server_mode == "tunnel" && pool_to_use_wom == "/#create_new#" )) { - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - lb_method lb_method - optional ( ssl_encryption_questions.help == "max" ) { - message lb_method_max "A load balancing method is an algorithm that the BIG-IP system uses to select a pool member for processing a request. F5 recommends the Least Connections load balancing method, where new connections are routed to the node that has the least number of current connections. This is ideal for environments in which pool members have similar performance and capacity capabilities." - } - - choice use_pga default "no" display "xxlarge" { - "Do not use Priority Group Activation (recommended)" => "no" , - "Use Priority Group Activation" => "yes" - } - optional ( ssl_encryption_questions.help == "max" ) { - message pga_max "Priority Group Activation allows you to segment your servers into priority groups. With Priority Group Activation, the BIG-IP system load balances traffic according to the priority number you assign to the pool members. A higher number indicates higher priority. Traffic is only sent to the servers with the highest priority, unless the number of available servers in that priority group falls below the value you specify as the minimum. The BIG-IP system then sends traffic to the group of servers with the next highest priority, and so on. See the BIG-IP documentation for more details." - } - optional ( use_pga == "yes" ) { - string min_active_members display "medium" default "0" - required validator "NonNegativeNumber" - optional ( ssl_encryption_questions.help == "max" ) { - message min_active_members_max "Specify the minimum number of servers which must be available before the system sends traffic to servers with a lower priority." - } - } - } - - table members { - editchoice addr display "large" tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm node] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - - optional ( ssl.mode == "client_ssl" - || ssl.mode == "no_ssl" ) { - string port display "small" required default "80" - validator "PortNumber" - } - optional ( ssl.mode == "server_ssl" - || ssl.mode == "client_ssl_server_ssl" - || ssl.mode == "pass_thru" ) { - string port_secure display "small" required - default "443" validator "PortNumber" - } - - - string connection_limit display "small" required - default "0" validator "NonNegativeNumber" - optional ( lb_method == "ratio-member" - || lb_method == "ratio-node" - || lb_method == "ratio-session" - || lb_method == "ratio-least-connections-member" - || lb_method == "ratio-least-connections-node" - || lb_method == "dynamic-ratio-member" - || lb_method == "dynamic-ratio-node" ) { - string ratio default "1" validator "NonNegativeNumber" - display "small" - } - - optional (( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) - && use_pga == "yes" ) { - string priority default "0" required - validator "NonNegativeNumber" display "small" - } - } - optional ( ssl_encryption_questions.help == "max" ) { - message members_max "Specify the IP address(es) of your web servers. If you have existing nodes on this BIG-IP system, you can select them from the list, otherwise type the addresses. Click Add to include additional servers." - } - } - } - - optional (( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) - || ( ssl.mode != "pass_thru" || apm.use_apm == "yes" )) { - section client { - optional ( ssl.mode != "pass_thru" || apm.use_apm == "yes" ) { - optional ( intro.am_provisioned == "yes" ) { - # If the template user decides to use AAM, the Web - # Acceleration question in the Virtual Server ( basic ) - # section are modified to disallow "Do not use" as an option. - choice use_wa default "yes" display "xxlarge" { - "Yes, use BIG-IP AAM (recommended)" => "yes" , - "No, do not use BIG-IP AAM" => "no" - } - - optional ( ssl_encryption_questions.help == "max" && intro.am_provisioned == "yes" ) { - message standard_caching_with_wa_max "You can use the BIG-IP Application Acceleration Manager (AAM, formerly WebAccelerator) to accelerate your application traffic." - } - } - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - # If the template user elects to use AAM in the - # preceding section, the user must *not* be presented with - # an option for "Do not use a Web Acceleration profile" here. - - optional ( intro.am_provisioned == "yes" - && use_wa == "yes" ) { - - choice standard_caching_with_wa display "xxlarge" - default "/#create_new#" tcl { - - set ::choices "Create a profile based on optimized-acceleration (recommended)\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -filter applications ne none ltm profile web-acceleration]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( standard_caching_with_wa != "/#create_new#" && - ssl_encryption_questions.help == "max" ) { - message standard_caching_with_wa_not_default_max "You have selected a BIG-IP AAM enabled Web Acceleration profile with an AAM application already attached, so an AAM application will not be created by this template. If you would rather have this template produce the AAM application, then choose 'Use F5's recommended Web Acceleration profile' above." - } - - optional ( ssl_encryption_questions.help == "max" ) { - message about_custom_caching_max_1 "Caching is the local storage of data for re-use. Once an item is cached on the BIG-IP system, subsequent requests for the same data are served from local storage. This can improve client request response times and improve server scalability by reducing load associated with processing subsequent requests." - } - optional ( ssl_encryption_questions.help == "max" && use_wa == "yes") { - message about_custom_caching_max_2 "If you want to select a custom Web Acceleration profile for caching you have already created, it must have an AAM application enabled, otherwise it does not appear in the list of caching profiles. If you want access to all Web Acceleration profiles on the box, then you must choose No to the use BIG-IP AAM question. Use a custom Web Acceleration profile only if you need to define specific URIs that should or should not be cached. " - } - } - - optional ( intro.am_provisioned == "no" || use_wa != "yes" ) { - choice standard_caching_without_wa display "xxlarge" default "/#create_new#" tcl { - - set prof_list [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -filter applications eq none -list ltm profile web-acceleration] - set purge_item [lsearch $prof_list "/Common/optimized-acceleration"] - if { $purge_item != -1 } { - set prof_list [lreplace $prof_list $purge_item $purge_item] - } - set ::choices "Create a profile based on optimized-caching (recommended)\t/#create_new#\nDo not use caching\t/#do_not_use#\n[join $prof_list \n]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message about_custom_caching_max_1a "Caching is the local storage of data for re-use. Once an item is cached on the BIG-IP system, subsequent requests for the same data are served from local storage. This can improve client request response times and improve server scalability by reducing load associated with processing subsequent requests." - message about_custom_caching_max_3 "Use a custom Web Acceleration profile only if you need to define specific URIs that should or should not be cached." - } - } - } - - optional ( intro.am_provisioned == "yes" && ( ssl.mode != "pass_thru" || apm.use_apm == "yes" )) { - optional ( use_wa == "yes" && ( - ( ssl_encryption_questions.legacy_advanced == "no" - && ssl_encryption_questions.advanced == "no" ) - || ( ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) - && standard_caching_with_wa == "/#create_new#" )) ) { - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - choice x_wa_info_header default "none" display "xxlarge" { - "Do not insert the header (recommended)" => "none" , - "Insert the Standard header" => "standard" , - "Insert the Debug header" => "debug" - } - - - optional ( ssl_encryption_questions.help == "max" ) { - message x_wa_info_max "By default, the AAM X-WA-info header is not included in the response from the BIG-IP system. This header is useful for debugging AAM behavior. If you choose to enable this header, you have two options, Standard and Debug. In Standard mode, the BIG-IP system inserts an HTTP header that includes numeric codes which indicate if and how each object was cached. In Debug mode, the BIG-IP system includes additional information which may help for extended troubleshooting." - } - - choice enable_perf_monitor display "xxlarge" default "no" { - "Do not enable the legacy performance monitor (recommended)" => "no" , - "Enable the legacy performance monitor" => "yes" - } - - optional ( ssl_encryption_questions.help == "max" ) { - message enable_perf_monitor_max "Enabling the legacy AAM performance monitor can adversely affect system performance. This monitor is primarily used for legacy AAM performance monitoring and debugging purposes. The BIG-IP Dashboard provides performance graphs and statistics related to AAM." - } - - optional ( enable_perf_monitor == "yes" ) { - string data_retention_period default "30" required - validator "NonNegativeNumber" display "medium" - } - - optional ( use_wa == "yes" ) { - choice policy display "xxlarge" - default "/Common/Generic Policy - Enhanced" tcl { - - set ::choices "/Common/Generic Policy - Complete\n/Common/Generic Policy - Enhanced\n/Common/Generic Policy - Extension Based\n/Common/Generic Policy - Fundamental\n[string map {"\"" ""} [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain -norecursive -filter predefined == no wam policy predefined]]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - - - optional ( ssl_encryption_questions.help == "max" ) { - optional ( policy == "/Common/Generic Policy - Complete" ) { - message policy_complete_about_max "In this predefined acceleration policy, HTML pages are cached and Intelligent Browser Referencing is enabled." - } - - optional ( policy == "/Common/Generic Policy - Enhanced" ) { - message policy_enhanced_about_max "In this predefined acceleration policy, HTML pages are cached and Intelligent Browser Referencing is enabled for includes." - } - - optional ( policy == "/Common/Generic Policy - Extension Based" ) { - message policy_extension_about_max "This predefined acceleration policy is ideal for High Performance policy for Ecommerce applications that use File Extensions instead of mime-types. This application policy is ideal if response-based matching is not required." - } - - optional ( policy == "/Common/Generic Policy - Fundamental" ) { - message policy_fundamental_about_max "In this predefined acceleration policy, HTML pages are always proxied and Intelligent Browser Referencing is disabled." - } - - } - } - } - } - - choice http_compression display "xxlarge" default "/#create_new#" tcl { - - set ::choices "Create a profile based on wan-optimized-compression (recommended)\t/#create_new#\nDo not compress HTTP responses\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile http-compression]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - - optional ( ssl_encryption_questions.help == "max" ) { - message comp_max "Compression improves performance and end user experience for Web applications that suffer from WAN latency and throughput bottlenecks. Compression reduces the amount of traffic sent to the client to complete a transaction. " - message comp1_max "To select a profile from the list, it must already be present on the BIG-IP system. Creating a custom profile is not a part of this template; see Local Traffic >> Profiles : Services : HTTP Compression to create an HTTP Compression profile. To select any new profiles you create, you need to restart or reconfigure this template." - } - } - - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - optional ( net.client_mode == "lan" ) { - choice tcp_lan_opt display "xxlarge" default "/#create_new#" tcl { - - set ::choices "Create a profile for LAN optimization (recommended)\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile tcp]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( tcp_lan_opt == "/#create_new#" && intro.is_v13_0 == "yes" ) { - optional ( net.v13_tcp == "yes" ) { - message tcp_lan_note "The iApp will build a client-side TCP profile based on f5-tcp-lan." - } - optional ( net.v13_tcp != "yes" ) { - message legacy_tcp_lan_note "The iApp will build a client-side TCP profile based on tcp-lan-optimized." - } - } - } - - optional ( net.client_mode != "lan" ) { - choice tcp_wan_opt display "xxlarge" default "/#create_new#" tcl { - - set ::choices "Create a profile for WAN optimization (recommended)\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile tcp]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( tcp_wan_opt == "/#create_new#" && intro.is_v13_0 == "yes" ) { - optional ( net.v13_tcp == "yes" ) { - message tcp_wan_note "The iApp will build a client-side TCP profile based on f5-tcp-wan." - } - optional ( net.v13_tcp != "yes" ) { - message legacy_tcp_wan_note "The iApp will build a client-side TCP profile based on tcp-wan-optimized." - } - } - } - - optional ( ssl_encryption_questions.help == "max" ) { - message tcp_max "The client-side TCP profile optimizes the communication between the BIG-IP system and the client by controlling the behavior of the traffic which results in higher transfer rates, improved connection reliability and increased bandwidth efficiency." - } - optional ( net.server_mode == "tunnel" - && intro.am_provisioned == "yes" ) { - choice isession_profile display "xxlarge" default "/Common/isession" tcl { - - set ::choices "New iSession profile\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain wom profile isession]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message isession_profile_max "The iSession profile contains the settings for the secure and optimized tunnel between this BIG-IP system and the remote BIG-IP system. Remember that iSession tunnels are a shared BIG-IP system resource. And once configured, the settings in the iSession profile may overrule certain iApp encryption settings in order to avoid conflicts with the iSession tunnel encryption settings. F5 recommends using the default 'isession' profile, unless you have already created one on this system. The iApp can also create a new iSession profile." - } - optional ( isession_profile == "/#create_new#" ) { - row isession { - choice encryption default "disabled" display "small" - { "Yes" => "enabled" , "No" => "disabled" } - choice compression default "enabled" display "small" - { "Yes" => "enabled" , "No" => "disabled" } - choice deduplication default "enabled" display "small" - { "Yes" => "enabled" , "No" => "disabled" } - } - optional ( ssl_encryption_questions.help == "max" ) { - message isession_max "The three major options of the iSession profile are WAN encryption, Adaptive Compression, and Deduplication. WAN encryption specifies whether the traffic on the outbound connection is encrypted. Adaptive Compression selects and adjusts the optimal compression algorithm for the current traffic, based on link speed. Deduplication specifies whether the system optimizes traffic using symmetric data deduplication (locating byte patterns that were previously sent over the WAN, and replacing them with references)." - } - } - } - } - } - } - - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - section server { - optional ( ssl.mode != "pass_thru" || apm.use_apm == "yes" ) { - choice oneconnect display "xxlarge" default "/#create_new#" tcl { - - set ::choices "Create a profile based on the oneconnect parent (recommended)\t/#create_new#\nDo not use OneConnect\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile one-connect]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - - optional ( ssl_encryption_questions.help == "max" ) { - message oc_max "OneConnect (connection pooling or multiplexing) improves server scalability by reducing load associated with concurrent connections and connection rate to web servers. When enabled, the BIG-IP system maintains one connection to each web server which is used to send requests from multiple clients." - } - - optional ( oneconnect != "/#do_not_use#" ) { - choice ntlm display "xxlarge" default "/#do_not_use#" tcl { - - set ::choices "Create an NTLM profile\t/#create_new#\nDo not use NTLM (recommended)\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile ntlm]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message ntlm_max "In environments that use the NTLM security protocol with OneConnect, an NTLM profile is also required. This profile ensures a connection between the BIG-IP system and an application server is established and reused on a per-user basis, eliminating the possibility that user data is incorrectly accessible." - } - } - - } - - optional ( net.server_mode == "lan" ) { - choice tcp_lan_opt display "xxlarge" default "/#create_new#" tcl { - - set ::choices "Create a profile for LAN optimization (recommended)\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile tcp]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( tcp_lan_opt == "/#create_new#" && intro.is_v13_0 == "yes" ) { - optional ( net.v13_tcp == "yes" ) { - message tcp_lan_note "The iApp will build a server-side TCP profile based on f5-tcp-lan." - } - optional ( net.v13_tcp != "yes" ) { - message legacy_tcp_lan_note "The iApp will build a server-side TCP profile based on tcp-lan-optimized." - } - } - } - - optional ( net.server_mode != "lan" ) { - choice tcp_wan_opt display "xxlarge" default "/#create_new#" tcl { - - set ::choices "Create a profile for WAN optimization (recommended)\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile tcp]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( tcp_wan_opt == "/#create_new#" && intro.is_v13_0 == "yes" ) { - optional ( net.v13_tcp == "yes" ) { - message tcp_wan_note "The iApp will build a server-side TCP profile based on f5-tcp-wan." - } - optional ( net.v13_tcp != "yes" ) { - message legacy_tcp_wan_note "The iApp will build a server-side TCP profile based on tcp-wan-optimized." - } - } - } - - optional ( ssl_encryption_questions.help == "max" ) { - message tcp_max "The server-side TCP profile optimizes the communication between the BIG-IP system and the server by controlling the behavior of the traffic which results in higher transfer rates, improved connection reliability and increased bandwidth efficiency." - } - - choice tcp_req_queueing display "xxlarge" default "no" { - "Yes, enable TCP request queuing" => "yes" , - "No, do not enable TCP request queuing (recommended) " => "no" - } - optional ( ssl_encryption_questions.help == "max" ) { - message tcp_request_queue_2_max "TCP request queuing provides the ability to queue connection requests that exceed the capacity of connections for a pool, pool member, or node, as determined by the connection limit. If you enable TCP request queuing, you must specify a queue length and timeout for queued requests based on server capability, load, and need for shared resources." - } - optional ( tcp_req_queueing == "yes" ) { - message tcp_request_queue_1_max "Improper use or misconfiguration of TCP Request Queuing/Connection Limits can result in unwanted application behavior and poor performance of your BIG-IP system. For this reason we recommended you verify these settings impact prior to deployment in a production environment. You MUST add a Connection Limit to your pool members for TCP Request Queuing." - string tcp_queue_length display "medium" - validator "NonNegativeNumber" required - optional ( ssl_encryption_questions.help == "max" ) { - message tcp_queue_length_max "Specify a number for the length of the queue. You should not use a value of '0', which indicates an unlimited queue length, and is only constrained by available memory." - } - string tcp_queue_timeout display "medium" - validator "NonNegativeNumber" required - optional ( ssl_encryption_questions.help == "max" ) { - message tcp_queue_timeout_max "Specify a number of milliseconds that requests should remain in the queue before timing out." - } - } - - optional ( pool.pool_to_use == "/#create_new#" ) { - choice use_slow_ramp default "yes" display "xxlarge" { - "Yes, use Slow Ramp (recommended) " => "yes" , - "No, do not use Slow Ramp" => "no" - } - optional ( use_slow_ramp == "yes" ) { - optional ( ssl_encryption_questions.help == "max" ) { - message slow_ramp_max "With Slow Ramp, the BIG-IP system gradually adds connections to a newly-enabled or newly-added HTTP server over a time period you specify, rather than sending a full proportion of the traffic immediately. Slow Ramp is essential when using load balancing methods like Least Connections, as the BIG-IP system would otherwise send all new connections to a new server immediately, potentially overwhelming that server. The time period you select for Slow Ramp is highly dependent on the speed of your server hardware and the behavior of your web services." - } - - string slow_ramp_setvalue display "medium" - default "300" required validator "NonNegativeNumber" - optional ( ssl_encryption_questions.help == "max" ) { - message slow_ramp_setvalue_max "Specify the duration (in seconds) for Slow Ramp time (the amount of time the system sends less traffic to a newly-enabled pool member). The default setting of 300 seconds (5 minutes) is very conservative in most cases. " - } - } - } - } - } - - optional (( net.server_mode != "tunnel" && pool.pool_to_use == "/#create_new#" ) - || ( net.server_mode == "tunnel" && pool.pool_to_use_wom == "/#create_new#" )) { - section monitor { - - choice monitor display "xxlarge" default "/#create_new#" tcl { - - set ::choices "Create a new health monitor\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm monitor http]\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm monitor https]\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -filter NAME != "external" ltm monitor external]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - - optional ( ssl_encryption_questions.help == "max" ) { - message monitor_max "Monitors are used to determine the health of the application on each web server. If an application instance does not respond or responds incorrectly, the system will cease to send client requests to that web server. The system will continue to monitor the instance and will begin sending requests once the application responds correctly." - } - - optional ( monitor == "/#create_new#" ) { - - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - string frequency display "medium" required default "30" - optional ( ssl_encryption_questions.help == "max" ) { - message freq_max "This is the duration, in seconds, of a single monitor cycle. At this interval, the system checks the health of the application instance on each web server configured in the web server pool." - } - choice http_method display "xxlarge" default "GET" - { "GET" , "POST" } - optional ( ssl_encryption_questions.help == "max" ) { - message method_max "The HTTP request type determines which HTTP method the monitor sends to the web server. GET is the most common request type for web applications." - } - } - - string uri display "xxlarge" required default "/" - optional ( ssl_encryption_questions.help == "max" ) { - message uri_max "The HTTP URI is used to specify the resource on the web server for a given request. This parameter can be customized to request a specific part of an application, which can indicate the health of the application on a granular level." - } - - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - choice http_version display "xxlarge" default "http11" { - "HTTP/1.0" => "http10" , - "HTTP/1.1" => "http11" - } - - optional ( ssl_encryption_questions.help == "max" ) { - message version_max "The HTTP version can be customized so it matches what a typical client would be using, in order to detect failures in the most meaningful way. HTTP/1.0 and HTTP/1.1 are the most common. HTTP/1.0 is more simple, while HTTP/1.1 offers more features." - } - - - optional ( http_method == "POST" ) { - string post_body display "xxlarge" required - - optional ( ssl_encryption_questions.help == "max" ) { - message body_max "POST requests require an HTTP POST body to send to the web server." - } - } - } - string response display "xxlarge" - - optional ( ssl_encryption_questions.help == "max" ) { - message response_max "When the HTTP response arrives for a monitor request, its contents are searched for the value specified here. If it is not found, the monitoring attempt fails." - } - - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - choice credentials display "xxlarge" default "none" { - "No, allow anonymous access" => "none" , - "Yes, require credentials for Basic authentication" => "basic" , - "Yes, require credentials for NTLM authentication" => "ntlm" - } - optional ( ssl_encryption_questions.help == "max" ) { - message credentials_max "You can configure system to attempt to authenticate to the web implementation as a part of the health monitor. If you choose to require credentials, we recommend you create a user account specifically for this health monitor which has no other privileges, and has a password set to never expire." - } - optional ( credentials != "none" ) { - string user required display "xxlarge" - optional ( credentials == "basic" ) { - message basic_cred_note "You must include your domain in front of the user name." - } - optional ( ssl_encryption_questions.help == "max" ) { - message user_max "Specify the user name for the account you want to use as a part of the health monitor." - } - password passwd required display "xxlarge" - optional ( ssl_encryption_questions.help == "max" ) { - message passwd_max "Specify the associated password. The password for this account should be set to never expire, otherwise servers could be improperly marked as unavailable when the password expires." - } - } - } - } - } - } - - optional ( ssl_encryption_questions.legacy_advanced == "yes" - || ssl_encryption_questions.advanced == "yes" ) { - section local_traffic { - message note "You cannot apply multiple policy rules referencing the same controls. Before applying one or more policies, ensure there are no policy rules with conflicting controls assigned. Note that improper use or misconfiguration of LTM policies can cause undesired results. We recommend verifying the impact of an LTM policy prior to deployment in a production environment." - multichoice policies display "xlarge" tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm policy] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - optional ( ssl_encryption_questions.help == "max" ) { - message policies_max "Local Traffic Policies comprise a prioritized list of rules that match defined conditions and run specific actions, which the BIG-IP system uses to direct traffic accordingly. You must have a manually created a local traffic policy to select it here. See the manual: BIG-IP Local Traffic Management: Getting Started with Policies (https://support.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/local-traffic-policies-getting-started-12-1-0.html)." - } - } - - section irules { - message note "Improper use or misconfiguration of an iRule can result in unwanted application behavior and poor performance of your BIG-IP system. For this reason we recommended you verify the impact of an iRule prior to deployment in a production environment." - optional ( ssl_encryption_questions.help == "max" ) { - message irule_2_max "The BIG-IP system supports a scripting language to allow an administrator to instruct the system to intercept, inspect, transform, direct and track inbound or outbound application traffic. An iRule contains the set of instructions the system uses to process data flowing through it, either in the header or payload of a packet." - message irule_3_max "Correct event priority is critical when assigning multiple iRules. For more information about iRule event priority, see https://devcentral.f5.com/wiki/iRules.priority.ashx" - } - - multichoice irules display "xlarge" tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -filter NAME !~ "^_sys" ltm rule] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - - optional ( ssl.mode != "pass_thru" || apm.use_apm == "yes" ) { - section stats { - optional ( intro.analytics_provisioned == "yes" ) { - choice analytics display "xxlarge" default "/#do_not_use#" tcl { - - set ::choices "Do not use an analytics profile\t/#do_not_use#\nCreate a profile based on analytics\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain ltm profile analytics]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - choice tcp_analytics display "xxlarge" default "/#do_not_use#" tcl { - - set ::choices "Do not use a tcp-analytics profile\t/#do_not_use#\nCreate a profile based on tcp-analytics\t/#create_new#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain ltm profile tcp-analytics]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - message avr_1_max "Enabling Analytics may affect overall system performance. If you choose to enable Analytics, we recommend gathering statistics for a set time period, such as one week, and then re-entering this template and disabling Analytics while you process the data." - optional ( ssl_encryption_questions.help == "max" ) { - message avr_2_max "The Application Visibility Reporting (AVR) module allows you to view statistics specific to your web application. " - message avr_3_max "While this template includes a default Analytics profile, for full functionality and flexibility, we recommend you create a custom Analytics profile for this application service. Creating a custom profile is not a part of this template; see Local Traffic >> Profiles : Analytics. Once you have created an Analytics profile, you can select it from the list below. To select any new profiles you create, you need to restart or reconfigure this template." - } - } - - choice request_logging display "xxlarge" default "/#do_not_use#" tcl { - - set ::choices "Do not enable HTTP request logging\t/#do_not_use#\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm profile request-log]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - - optional ( ssl_encryption_questions.help == "max" ) { - message req_log_max "HTTP request logging enables customizable log messages to be sent to a syslog server for each HTTP request processed by this application. Successful usage of this feature requires creation and association of a request logging profile. Creating a request logging profile is not a part of this template. See Local Traffic>>Profiles: Other: Request Logging. To select any new profiles you create, you need to restart or reconfigure this template. The performance impact of using this feature should be thoroughly tested in a staging environment prior to enabling it on a production deployment." - } - } - } - } - - optional ( ssl_encryption_questions.help == "max" ) { - section extra { - message dns "You must configure a DNS entry for each fully qualified host name that the clients use to access the web servers. Each DNS record must resolve to the IP address you configured for the BIG-IP virtual server defined in the High Availability section." - message web_servers "Depending on your web service and application software, you may have to perform additional steps on your web application to enable SSL Offloading. If you are performing SSL offload on the BIG-IP system, you may need to configure your web servers not to expect SSL to avoid redirect loops and needless redirects. Also, the web server software may need to be configured to handle any HTTP/1.1 Host headers you specified during monitor creation." - optional (( ssl.mode == "client_ssl" - || ssl.mode == "client_ssl_server_ssl" || apm.use_apm == "yes" ) - && ( ssl.cert == "/Common/default.crt" - || ssl.cert == "/Common/ca-bundle.crt" - || ssl.cert == "/Common/f5-irule.crt" - || ssl.key == "/Common/default.key" )) { - message critical "You have selected a default BIG-IP certificate and/or key. This application service configuration is incomplete and will not be secure until you import and assign a trusted certificate and key that are valid for all fully qualified domain names used to access the application. See Local Traffic >> SSL Certificate List for importing certificates and keys. To select any new certificates and keys you import, you need to restart or reconfigure this template." - } - } - } -} - -optional ( ssl_encryption_questions.offload_ssl == "Yes" - || ssl_encryption_questions.offload_ssl == "No" ) { - optional ( intro.analytics_provisioned == "yes" ) { - section analytics { - choice add_analytics default "No" display "small" { "Yes" => "Yes" , "No" => "No" } - optional ( add_analytics == "Yes" ) { - message about_analytics_profiles "For full functionality and flexibility, we recommend that you create a custom Analytics profile for each iApp under Local Traffic > Profiles > Analytics. Once you have created an Analytics profile, you will be able to select it from the list below." - choice create_new_analytics default "Select a Custom Profile" display "xlarge" { - "Select a Custom Profile" => "Select a Custom Profile" , - "Use Default Profile" => "Use Default Profile" - } - optional ( create_new_analytics == "Select a Custom Profile" ) { - choice analytics_profile display "xlarge" tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain ltm profile analytics] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - } - } - } - - section basic { - string addr required validator "IpAddress" - optional ((ssl_encryption_questions.offload_ssl == "Yes" - && ssl_encryption_questions.offload_ssl_1 == "No" ) - || (ssl_encryption_questions.offload_ssl == "No" - && ssl_encryption_questions.offload_ssl_2 == "No" )) { - string port default "80" required validator "PortNumber" display "small" - } - optional ((ssl_encryption_questions.offload_ssl == "Yes" - && ssl_encryption_questions.offload_ssl_1 == "Yes" ) - || (ssl_encryption_questions.offload_ssl == "No" - && ssl_encryption_questions.offload_ssl_2 == "Yes" )) { - string secure_port default "443" required validator "PortNumber" display "small" - - choice create_redir default "Yes" display "small" { "Yes" => "Yes" , "No" => "No" } - optional ( create_redir == "Yes" ) { - string redir_port default "80" required validator "PortNumber" display "small" - } - } - - choice snat default "No" display "small" { "Yes" => "Yes" , "No" => "No" } - optional ( snat == "No" ) { - choice need_snatpool default "No" display "small" { "Yes" => "Yes" , "No" => "No" } - optional ( need_snatpool == "Yes" ) { - table snatpool_members { - string addr required validator "IpAddress" - } - } - } -choice using_ntlm default "No" display "small" { "Yes" => "Yes" , "No" => "No" } - } - - section server_pools { - choice create_new_pool default "Create New Pool" display "large" { - "Create New Pool" => "Create New Pool" , - "Use Pool..." => "Use Pool..." - } - optional ( create_new_pool == "Create New Pool" ) { - lb_method lb_method_choice - table servers { - string addr required validator "IpAddress" - string port default "80" required validator "PortNumber" - display "small" - string connection_limit default "0" required - validator "NonNegativeNumber" display "small" - optional ( lb_method_choice == "ratio-member" || - lb_method_choice == "ratio-node" || - lb_method_choice == "ratio-session" || - lb_method_choice == "ratio-least-connections-member" || - lb_method_choice == "ratio-least-connections-node" || - lb_method_choice == "dynamic-ratio-member" || - lb_method_choice == "dynamic-ratio-node" ) { - string ratio default "1" validator "NonNegativeNumber" - display "small" - } - } - - choice tcp_request_queuing_enable_question default "No" display "small" { "Yes" => "Yes" , "No" => "No" } - optional ( tcp_request_queuing_enable_question == "Yes" ) { - message note "TCP request queuing requires you to have a Connection Limit on your pool members." - - string tcp_request_queue_length required - validator "NonNegativeNumber" display "small" - string tcp_request_queue_timeout required - validator "NonNegativeNumber" display "small" - } - - choice create_new_monitor default "Create New Monitor" display "xlarge" { - "Create New Monitor" => "Create New Monitor" , - "Use Monitor..." => "Use Monitor..." - } - optional ( create_new_monitor == "Create New Monitor" ) { - string monitor_interval default "30" required - validator "NonNegativeNumber" display "small" - - string monitor_send default "GET /" required display "xlarge" - - choice monitor_http_version default "Version 1.0" { "Version 1.0" , "Version 1.1" } - optional ( monitor_http_version == "Version 1.1" ) { - string monitor_dns_name required validator "FQDN" - display "large" - } - - string monitor_recv display "xlarge" - } - - optional ( create_new_monitor == "Use Monitor..." ) { - choice reuse_monitor_name display "xlarge" tcl { - - set ::choices "[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm monitor http]\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm monitor https]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - } - - optional ( create_new_pool == "Use Pool..." ) { - choice reuse_pool_name display "xlarge" tcl { - - set ::choices [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items ltm pool] - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - } - - section optimizations { - choice lan_or_wan default "WAN" { - "WAN" => "WAN" , - "LAN" => "LAN" - } - - optional ( intro.am_provisioned == "yes" ) { - choice use_wa default "No" display "small" { "Yes" => "Yes" , "No" => "No" } - optional ( use_wa == "Yes" ) { - table hosts { - string host required validator "FQDN" display "xlarge" - } - - choice x_wa_info_header default "none" { - "None" => "none" , - "Standard" => "standard" , - "Debug" => "debug" - } - choice perf_monitor default "disabled" { - "Enabled" => "enabled" , - "Disabled" => "disabled" - } - optional ( perf_monitor == "enabled" ) { - string data_retention_period default "30" required - validator "NonNegativeNumber" - } - - choice policy display "xlarge" - default "/Common/Generic Policy - Enhanced" tcl { - - set ::choices "/Common/Generic Policy - Complete\n/Common/Generic Policy - Enhanced\n/Common/Generic Policy - Extension Based\n/Common/Generic Policy - Fundamental\n[tmsh::run_proc f5.iapp.1.5.2.cli:iapp_get_items -nocomplain -norecursive -filter predefined == no wam policy predefined]" - return [tmsh::run_proc f5.iapp.1.5.2.cli:iapp_safe_display ::choices] - } - } - } - - } -} - -text { - intro "Welcome to the iApp template for web applications" - intro.early_release "EARLY RELEASE" - intro.hello "Introduction" - - intro.check_for_updates "Check for Updates" - - intro.am_not_provisioned "Additional features available" - - intro.analytics_not_provisioned "Additional features available" - - ssl_encryption_questions "Template Options" - - ssl_encryption_questions.help "Do you want to see inline help?" - - ssl_encryption_questions.help_max "" - - ssl_encryption_questions.legacy_advanced "Which configuration mode do you want to use?" - - ssl_encryption_questions.legacy_warning "NOTE" - - ssl_encryption_questions.advanced "Which configuration mode do you want to use?" - - ssl_encryption_questions.conf_mode_max "" - - net "Network" - net.v13_tcp "Do you want to use the latest TCP profiles?" - net.v13_tcp_warning_1 "" "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - net.v13_tcp_warning_2 "IMPORTANT" - net.v13_tcp_warning_3 "" "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - net.v13_tcp_max "" - net.client_mode "What type of network connects clients to the BIG-IP system?" - net.client_mode_max "" - net.vlan_mode "Do you want to restrict client traffic to specific VLANs?" - - net.vlan_max "" - - net.client_vlan "On which VLANs should traffic be enabled or disabled?" - - net.client_vlan_max "" - - net.disabled_vlan_max "WARNING" - - net.server_mode "What type of network connects servers to the BIG-IP system?" - net.server_mode_max "" - - net.tunnel_max1 "NOTE" - - net.tunnel_max2 "IMPORTANT" - - net.tunnel_max3 "NOTE" - - net.tunnel_max4 "IMPORTANT" - - net.same_subnet "Where will the virtual servers be in relation to the web servers?" - - net.subnet_1_max "" - - net.subnet_2_max "" - - net.subnet_3_max "" - - - net.route_to_bigip "How have you configured routing on your web servers?" - - net.def_rt_1_max "" - - net.def_rt_2_max "" - - net.def_rt_3_max "" - - net.snat_type "How many connections do you expect to each web server?" - - net.snat_max "" - - net.snatpool "Create a new SNAT pool or use an existing one?" - net.snatpool_max "" - - net.snatpool_members "What are the IP addresses you want to use for the SNAT pool?" - - net.snatpool_members.addr "IP" - - net.snatpool_members_max "" - - - ssl "SSL Encryption" - - ssl.mode "How should the BIG-IP system handle SSL traffic?" - - ssl.mode_1_max "" - - ssl.mode_2_max "" - - ssl.mode_3_max "" - - ssl.mode_4_max "" - - ssl.mode_5_max "" - - ssl.mode_6_max "" - - ssl.mode_7_max "" - - ssl.cert "Which SSL certificate do you want to use?" - ssl.cert_max "" - ssl.cert1_max "" - - ssl.key "Which SSL private key do you want to use?" - ssl.key_max "" - - ssl.use_chain_cert "Which intermediate certificate do you want to use?" - ssl.use_chain_cert_1_max "" - - ssl.use_chain_cert_2_max "" - - ssl.ssl_warn_1 "WARNING:" - ssl.ssl_warn_2 "NOTE:" - ssl.ssl_warn_3 "NOTE:" - - ssl.client_ssl_profile "Which Client SSL profile do you want to use?" - ssl.client_ssl_profile_max "" - - ssl.server_ssl_profile "Which Server SSL profile do you want to use?" - ssl.server_ssl_profile_max "" - - intro.asm_not_provisioned "Additional features available" - asm "Application Security Manager (BIG-IP ASM)" - asm.use_asm "Do you want to deploy BIG-IP Application Security Manager?" - asm.asm_template "Which ASM template should be used to build the policy?" - asm.asm_1_max "" - asm.asm_2_max "" - asm.language "Which language encoding is used for ASM?" - asm.language_max "" - asm.security_logging "Which logging profiles would you like to use?" - asm.security_logging_max "" - - apm "Access Policy Manager (BIG-IP APM)" - apm.use_apm "Provide secure authentication with BIG-IP APM?" - apm.use_apm_help "" - - apm.apm_profile "Which Access Profile do you want to use?" - apm.apm_profile_help "" - apm.apm_policy "Which Per-Request Access Policy do you want to use?" - apm.apm_policy_help "" - ssl.mode_apm "How should the BIG-IP system handle SSL traffic?" - - afm "Advanced Firewall Manager (BIG-IP AFM)" - afm.policy "Do you want to use AFM network firewall and IP Intelligence to protect your application?" - afm.policy_max "" - afm.restrict_by_addr "Do you want to forbid access to your application from specific networks or IP addresses?" - afm.restrict_max "" - afm.allowed_addr "What IP or network addresses should be allowed to access your application?" - afm.allowed_addr_max "" - afm.restrict_by_reputation "How should the system control connections from networks suspected of malicious activity?" - afm.restrict_by_reputation_max "" - afm.restrict_by_reputation_log "" - afm.restrict_by_reputation_warn "IMPORTANT" - afm.ip_intelligence_policy "Which IP Intelligence policy do you want to use?" - afm.ip_intelligence_policy_max "" - afm.staging_policy "Would you like to stage a policy for testing purposes?" - afm.staging_policy_max "" - afm.staging_policy1_max "CRITICAL" - afm.security_logging "Which logging profile would you like to use?" - afm.security_logging_max "" - afm.security_logging1_max "" - afm.dos_security_profile "Which Denial-of-Service profile do you want to use?" - afm.dos_security_profile_max "" - afm.protocol_security_profile "Which HTTP protocol security profile do you want to use?" - afm.protocol_security_profile_max "" - - pool "Virtual Server and Pools" - pool.addr "What IP address do you want to use for the virtual server?" - pool.addr_max "" - pool.mask "If using a network virtual address, what is the IP mask?" - pool.mask_max "" - pool.port "What port do you want to use for the virtual server?" - pool.port_max "" - pool.mirror "Do you want to enable connection and persistence mirroring?" - pool.port_secure "What port do you want to use for the virtual server?" - pool.hosts "What FQDNs will clients use to access the servers?" - pool.hosts.name "Host" - - pool.redirect_to_https "Do you want to redirect inbound HTTP traffic to HTTPS?" - - pool.mirror_max "" - - pool.redirect_port "From which port should HTTP traffic be redirected?" - - pool.redirect_max "" - - pool.redirect_port_max "" - - - pool.fqdn_max "" - - pool.http "Which HTTP profile do you want to use?" - pool.http_max "" - - pool.xff "Should the BIG-IP system insert the X-Forwarded-For header?" - - pool.xff_max "" - - pool.persist "Which persistence profile do you want to use?" - pool.pass_thru_persist "Which persistence profile do you want to use?" - - pool.pass_thru_persist_max "" - - pool.persist_max "" - - pool.fallback_persist "Would you like to add a fallback-persistence profile?" - - pool.pool_to_use "Do you want to create a new pool or use an existing one?" - pool.pool_to_use_wom "Do you want to create a new pool or use an existing one?" - pool.pool_max "" - - pool.members "Which web servers should be included in this pool?" - pool.members_max "" - pool.members.addr "Node/IP address" - pool.members.port "Port" - pool.members.port_secure "Port" - pool.members.connection_limit "Connection limit" - pool.members.ratio "Ratio" - pool.members.priority "Priority" - pool.lb_method "Which load balancing method do you want to use?" - pool.lb_method_max "" - - pool.use_pga "Do you want to give priority to specific groups of servers?" - - pool.pga_max "" - - pool.min_active_members "What is the minimum number of active members in a group?" - pool.min_active_members_max "" - - client "Delivery Optimization" - client.use_wa "Use the BIG-IP Application Acceleration Manager?" - client.x_wa_info_header "Do you want to insert the X-WA-Info header?" - client.x_wa_info_max "" - client.enable_perf_monitor "Do you want to use the legacy AAM performance monitor?" - client.enable_perf_monitor_max "" - client.data_retention_period "For how many days should the BIG-IP system retain the data?" - client.policy "Which acceleration policy do you want to use?" - client.policy_complete_about_max "" - client.policy_enhanced_about_max "" - client.policy_extension_about_max "" - client.policy_fundamental_about_max "" - - client.http_compression "Which compression profile do you want to use?" - client.standard_caching_with_wa "Which Web Acceleration profile do you want to use for caching?" - client.standard_caching_with_wa_max "" - client.standard_caching_with_wa_not_default_max "" - client.standard_caching_without_wa "Which Web Acceleration profile do you want to use for caching?" - client.about_custom_caching_max_1 "" - client.about_custom_caching_max_1a "" - - client.about_custom_caching_max_2 "" - client.about_custom_caching_max_3 "" - - client.tcp_lan_opt "How do you want to optimize client-side connections?" - client.tcp_wan_opt "How do you want to optimize client-side connections?" - client.tcp_lan_note "" - client.tcp_wan_note "" - client.legacy_tcp_lan_note "" - client.legacy_tcp_wan_note "" - client.comp_max "" - client.comp1_max "" - - client.tcp_max "" - - client.isession_profile "Create a new iSession tunnel profile or use an existing one?" - client.isession_profile_max "" - - client.isession "Which iSession features do you want to use?" - client.isession_max "" - - client.isession.encryption "WAN encryption" - client.isession.compression "Adaptive Compression" - client.isession.deduplication "Deduplication" - - server "Server Offload" - server.oneconnect "Which OneConnect profile do you want to use?" - server.oc_max "" - - server.ntlm "Which NTLM profile do you want to use?" - server.ntlm_max "" - - server.tcp_lan_opt "How do you want to optimize server-side connections?" - server.tcp_wan_opt "How do you want to optimize server-side connections?" - server.tcp_lan_note "" - server.tcp_wan_note "" - server.legacy_tcp_lan_note "" - server.legacy_tcp_wan_note "" - server.tcp_max "" - - server.tcp_req_queueing "Should the BIG-IP system queue TCP requests?" - - server.tcp_queue_length "What is the maximum number of TCP requests for the queue?" - - server.tcp_queue_length_max "" - - server.tcp_queue_timeout "How many milliseconds should requests stay in the queue?" - - server.tcp_queue_timeout_max "" - - server.tcp_request_queue_1_max "WARNING" - - server.tcp_request_queue_2_max "" - - server.use_slow_ramp "Use a Slow Ramp time for newly added servers?" - - server.slow_ramp_max "" - - server.slow_ramp_setvalue "How many seconds should Slow Ramp time last?" - server.slow_ramp_setvalue_max "" - - monitor "Application Health" - monitor.monitor_max "" - - monitor.monitor "Create a new health monitor or use an existing one?" - monitor.http_method "What type of HTTP request should be sent to the servers?" - monitor.uri "What HTTP URI should be sent to the servers?" - - monitor.http_version "Which HTTP version do your servers expect clients to use?" - monitor.version_max "" - - monitor.frequency "How many seconds should pass between health checks?" - monitor.freq_max "" - - monitor.response "What is the expected response to the HTTP request?" - monitor.method_max "" - - monitor.uri_max "" - - - monitor.post_body "What HTTP POST body do you want to use for this monitor?" - monitor.body_max "" - monitor.response_max "" - monitor.credentials "Should the health monitor require credentials?" - monitor.credentials_max "" - monitor.basic_cred_note "NOTE" - monitor.user "What user name should the monitor use?" - monitor.user_max "" - monitor.passwd "What is the associated password?" - monitor.passwd_max "" - - local_traffic "Local Traffic Policies" - local_traffic.note "WARNING:" - local_traffic.policies "Do you want to add any custom LTM policies to this configuration?" - local_traffic.policies_max "" - - irules "iRules" - irules.irules "Do you want to add any custom iRules to this configuration?" - irules.note "WARNING:" - irules.irule_2_max "" - - irules.irule_3_max "" - - stats "Statistics and Logging" - stats.analytics "Do you want to enable Analytics for application statistics?" - stats.tcp_analytics "Do you want to enable TCP-Analytics for application statistics?" - stats.request_logging "Which HTTP request logging profile do you want to use?" - stats.avr_1_max "IMPORTANT" - stats.avr_2_max "" - stats.avr_3_max "" - - - stats.req_log_max "" - - extra "Additional Steps" - extra.dns "DNS" - extra.web_servers "Web servers" - extra.critical "Default SSL certificate and key" - - - ssl_encryption_questions.deprecated "PLEASE UPGRADE" - ssl_encryption_questions.upgrade "Do you want to upgrade this template?" - - ssl_encryption_questions.gap_1 " " - ssl_encryption_questions.gap_2 " " - ssl_encryption_questions.section_head "SSL Encryption Questions" - ssl_encryption_questions.offload_ssl_1 "Do you want the BIG-IP system to offload SSL processing from the web servers?" - - ssl_encryption_questions.offload_ssl_2 "Do you want the BIG-IP system to offload SSL processing from the web servers?" - - ssl_encryption_questions.cert "Which certificate do you want the BIG-IP system to use to authenticate the server? (You may need to import a certificate before deploying this Template.)" - ssl_encryption_questions.key "Which key do you want the BIG-IP system to use for encryption? (You may need to import a key before deploying this Template.)" - - analytics "Analytics" - analytics.add_analytics "Do you want to enable Analytics so that you can view application statistics? (This may affect system performance.)" - - analytics.about_analytics_profiles "About creating your own Analytics profiles:" - analytics.create_new_analytics "Do you want to use a default Analytics profile or select a custom profile?" - analytics.analytics_profile "Which Analytics profile do you want to use?" - - basic "Virtual Server Questions" - basic.addr "What IP address do you want to use for this virtual server?" - basic.port "What port do you want to use for this virtual server?" - basic.secure_port "What port do you want to use for this virtual server?" - basic.create_redir "Do you want to redirect traffic that comes in as HTTP to HTTPS?" - - basic.redir_port "What port do you want to use for the redirect virtual server?" - basic.snat "Do the web servers have a route back to application clients via this BIG-IP system?" - - basic.need_snatpool "Will you have more than 64,000 connections at one time? If so, you will need to enter at least one IP address for each 64,000 connections. " - - basic.snatpool_members "Enter IP addresses that can be used for a SNAT pool. Enter one IP address for each 64,000 connections " - basic.snatpool_members.addr "Address: " - - basic.using_ntlm "Are the web servers configured to use NTLM authentication?" - - - - server_pools "HTTP Server Pool, Load Balancing, and Service Monitor Questions" - server_pools.create_new_pool "Do you want to create a new pool or use an existing one?" - server_pools.lb_method_choice "Which load balancing method do you want to use?" - server_pools.servers "Which servers do you want this virtual server to reference? (The virtual server will not be available until at least one server is added.)" - server_pools.servers.addr "Address" - server_pools.servers.port "Port" - server_pools.servers.ratio "Ratio" - server_pools.servers.connection_limit "Connection Limit" - server_pools.tcp_request_queuing_enable_question "Do you want the BIG-IP system to queue TCP requests?" - - server_pools.note "NOTE:" - server_pools.tcp_request_queue_length "Specify the TCP request queue length. Choose 0 for unlimited." - server_pools.tcp_request_queue_timeout "Specify a timeout for TCP request queuing in milliseconds. Choose 0 for unlimited." - server_pools.reuse_pool_name "Choose a pool from the list of available pools." - server_pools.create_new_monitor "Do you want to create a new health monitor or use an existing one?" - server_pools.monitor_interval "How often (in seconds) do you want the BIG-IP system to check on the health of each web server? " - server_pools.monitor_send "What HTTP request should be sent to check the health of each web server?" - - server_pools.monitor_http_version "What HTTP version do your web servers expect clients to use?" - - - server_pools.monitor_dns_name "What fully qualified DNS name are HTTP 1.1 clients expected to use to access the web servers?" - server_pools.monitor_recv "What string can the BIG-IP system expect to see within the health check response for the server to be considered healthy?" - server_pools.reuse_monitor_name "Choose a monitor from the list of available monitors." - - - optimizations "Protocol Optimization Questions" - optimizations.lan_or_wan "Will clients be connecting to this virtual server primarily over a LAN or a WAN?" - - optimizations.use_wa "Do you want to use the BIG-IP AAM module to accelerate your traffic?" - - optimizations.hosts "What fully qualified DNS names will your end users use to access the web Virtual Server (e.g., site.f5.com)." - optimizations.hosts.host "Host" - optimizations.policy "Select the AAM policy to use." - optimizations.x_wa_info_header "Do you want to insert the X-WA-Info Header?" - optimizations.perf_monitor "Do you want to enable the AAM performance monitor?" - optimizations.data_retention_period "How many days to you want to keep AAM performance data?" - -} - } - role-acl { admin manager resource-admin } - run-as none - } - } - requires-bigip-version-max none - requires-bigip-version-min 11.5.0 - requires-modules { } -} diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/standalone/3nic+webserver/BYOL/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/standalone/3nic+webserver/BYOL/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/standalone/3nic+webserver/BYOL/parameters0.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/standalone/3nic+webserver/BYOL/parameters0.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/standalone/3nic+webserver/PAYG/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/reference/standalone/3nic+webserver/PAYG/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/existing-stack/bigiq/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/existing-stack/bigiq/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/existing-stack/byol/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/existing-stack/byol/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/existing-stack/payg/parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/existing-stack/payg/parameters.yaml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/bigiq/bigip_version_parameters.yaml b/automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/bigiq/bigip_version_parameters.yaml deleted file mode 100644 index 68604b2701..0000000000 --- a/automated-test-scripts/data/f5-azure-arm-templates/experimental/standalone/1nic/new-stack/bigiq/bigip_version_parameters.yaml +++ /dev/null @@ -1,49 +0,0 @@ -ADDITIONAL NIC LOCATION: '' -ADDTL NIC PARAM: '' -# AUTOFILL BIGIQ LICENSE KEY: '' -# AUTOFILL CLPV2 LICENSE KEY: '' -BASE VLAN NAME: internal -BIGIP MODULES: ltm:nominal -BIGIP VERSION: 16.1.303000 -BIGIQ CONFIG FILE: '' -CONFIG FILES: .passwd -CREATE PUBLIC IP: 'null' -CUSTOM IMAGE: OPTIONAL -CUSTOM IMAGE MAP: '' -CUSTOM IMAGE MAP LIC: OPTIONAL -CUSTOM IMAGE PARAM: OPTIONAL -DECLARATION URL: NOT_SPECIFIED -DNS LABEL: ',"dnsLabel":{"value":""}' -EXT ALB EXISTS: 'No' -EXTERNAL IP COUNT: 1 -IMAGE NAME: AllTwoBootLocations -INSTANCE TYPE: Standard_DS3_v2 -LICENSE PARAM: ',"bigIqUsername":{"value":"admin"},"bigIqPassword":{"value":"B!giq2017"},' -LICENSE POOL: production -LICENSE POOL PARAM: '"bigIqLicensePoolName":{"value":""},"bigIqLicenseSkuKeyword1":{"value":"F5-BIG-MSP-BT-1G"},"bigIqLicenseUnitOfMeasure":{"value":"yearly"}' -LICENSE TYPE: bigiq -MGMT PIP1: mgmt-pip -MGMT PIP2: mgmt-pip1 -NETWORK PARAM: '' -NIC COUNT: 1 -NTP SERVER: 0.pool.ntp.org -NUMBER OF ADDITIONAL NICS: 0 -PASSWORD TYPE: password -REGION: eastus -RESOURCE GROUP: dd-n- -SEQUENCE NUMBER: 0 -SOLUTION LOGS: install.log;onboard.log -SSH PORT: 22 -STACK PARAM: '' -STACK TYPE: new-stack -STACK TYPE SHORT: ns -SUBNET OCTET: '' -SUBNET PARAM: ',"externalSubnetName":{"value":"external"},"externalIpAddressRangeStart":{"value":"10..1.20"}' -TEMPLATE NAME: nic -TEMPLATE URL: file://$PWD/supported/standalone/