From 8e800668fb25321839c92b495f5ac9bddfe6a952 Mon Sep 17 00:00:00 2001 From: Alex Niu Date: Fri, 7 Apr 2023 16:26:51 -0400 Subject: [PATCH 1/3] add healthcheck --- ...healthcheck-app-existingVnet-Lin-Thurs.yml | 37 ++++++ .../healthcheck-app-existingVnet-Win-Tue.yml | 37 ++++++ .../healthcheck-app-newVnet-Lin-Wed.yml | 37 ++++++ .../healthcheck-app-newVnet-Win-Mon.yml | 38 ++++++ healthcheck/README.md | 1 + healthcheck/requirements.txt | 8 ++ healthcheck/test_refarch_existing.py | 105 +++++++++++++++ healthcheck/test_refarch_new.py | 72 ++++++++++ healthcheck/testtools/AzureAuthentication.py | 19 +++ healthcheck/testtools/__init__.py | 0 healthcheck/testtools/deploy.py | 125 ++++++++++++++++++ healthcheck/testtools/getResourceClient.py | 5 + 12 files changed, 484 insertions(+) create mode 100644 .github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml create mode 100644 .github/workflows/healthcheck-app-existingVnet-Win-Tue.yml create mode 100644 .github/workflows/healthcheck-app-newVnet-Lin-Wed.yml create mode 100644 .github/workflows/healthcheck-app-newVnet-Win-Mon.yml create mode 100644 healthcheck/README.md create mode 100644 healthcheck/requirements.txt create mode 100644 healthcheck/test_refarch_existing.py create mode 100644 healthcheck/test_refarch_new.py create mode 100644 healthcheck/testtools/AzureAuthentication.py create mode 100644 healthcheck/testtools/__init__.py create mode 100644 healthcheck/testtools/deploy.py create mode 100644 healthcheck/testtools/getResourceClient.py diff --git a/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml b/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml new file mode 100644 index 0000000..9fb44cb --- /dev/null +++ b/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml @@ -0,0 +1,37 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information, see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +#The following workflow file triggers the Existing Virtual network deployment test "test_healthcheck_existing_vnet.py" every Thursday with platform as "Linux" in "Japaneast" region. + +name: MATLAB Production Server Ref Arch Azure Existing Virtual Network Health Check Test on linux in Japan East + +on: + schedule: + - cron: '0 16 * * 4' +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/checkout@v4 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 pytest + pip install -r ./healthcheck/requirements.txt + + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: MPS ref Arch Existing Virtual Network Health check test on linux in Japan East + run: | + cd healthcheck + python test_refarch_existing.py ${{ secrets.TenantId }} ${{ secrets.ClientId }} ${{ secrets.ClientSecret }} ${{ secrets.SubscriptionId }} ${{ secrets.username }} ${{ secrets.password }} ${{ secrets.ipaddress }} ${{ secrets.sslcertificate }} ${{ secrets.sslkey }} "japaneast" "Linux" + diff --git a/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml b/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml new file mode 100644 index 0000000..bb1c19e --- /dev/null +++ b/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml @@ -0,0 +1,37 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information, see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +# The following workflow file triggers the Existing Virtual Network deployment test "test_healthcheck_existing_vnet.py" every Tuesday with platform as "Windows" in "westeurope" region. + +name: MATLAB Production Server Ref Arch Azure Existing Virtual Network Health Check Test on Windows in West Eu + +on: + schedule: + - cron: '0 16 * * 2' +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v4 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 pytest + pip install -r ./healthcheck/requirements.txt + + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: MPS ref Arch Existing Virtual Network Health check test on Windows in West Eu + run: | + cd healthcheck + python test_refarch_existing.py ${{ secrets.TenantId }} ${{ secrets.ClientId }} ${{ secrets.ClientSecret }} ${{ secrets.SubscriptionId }} ${{ secrets.username }} ${{ secrets.password }} ${{ secrets.ipaddress }} ${{ secrets.sslcertificate }} ${{ secrets.sslkey }} "westeurope" "Windows" + diff --git a/.github/workflows/healthcheck-app-newVnet-Lin-Wed.yml b/.github/workflows/healthcheck-app-newVnet-Lin-Wed.yml new file mode 100644 index 0000000..056c600 --- /dev/null +++ b/.github/workflows/healthcheck-app-newVnet-Lin-Wed.yml @@ -0,0 +1,37 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information, see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +# The following workflow file triggers the New Virtual Network deployment test "test_healthcheck_new_vnet" every Wednesday with platform as "Linux" in "westus" region. + +name: MATLAB Web App Server Ref Arch Azure Health Check Test on Linux in West US + +on: + schedule: + - cron: '0 16 * * 3' +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v4 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 pytest + pip install -r ./healthcheck/requirements.txt + + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Web App ref Arch New Virtual Network Health check test on Linux in West US + run: | + cd healthcheck + python test_refarch_new.py ${{ secrets.TenantId }} ${{ secrets.ClientId }} ${{ secrets.ClientSecret }} ${{ secrets.SubscriptionId }} ${{ secrets.username }} ${{ secrets.password }} ${{ secrets.ipaddress }} ${{ secrets.sslcertificate }} ${{ secrets.sslkey }} "westus" "Linux" + diff --git a/.github/workflows/healthcheck-app-newVnet-Win-Mon.yml b/.github/workflows/healthcheck-app-newVnet-Win-Mon.yml new file mode 100644 index 0000000..a51b745 --- /dev/null +++ b/.github/workflows/healthcheck-app-newVnet-Win-Mon.yml @@ -0,0 +1,38 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information, see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +# The following workflow file triggers the New Virtual Network deployment test "test_healthcheck_new_vnet" every Monday with platform as "Windows" in "eastus" region. + +name: MATLAB Web App Server Ref Arch Azure Health Check Test on Windows in East US region + +on: + push: + schedule: + - cron: '0 16 * * 1' +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v4 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 pytest + pip install -r ./healthcheck/requirements.txt + + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Web App ref Arch New Virtual Network Health check test on Windows in East US region + run: | + cd healthcheck + python test_refarch_new.py ${{ secrets.TenantId }} ${{ secrets.ClientId }} ${{ secrets.ClientSecret }} ${{ secrets.SubscriptionId }} ${{ secrets.username }} ${{ secrets.password }} ${{ secrets.ipaddress }} ${{ secrets.sslcertificate }} ${{ secrets.sslkey }} "eastus" "Windows" + diff --git a/healthcheck/README.md b/healthcheck/README.md new file mode 100644 index 0000000..6796cfb --- /dev/null +++ b/healthcheck/README.md @@ -0,0 +1 @@ +This section of repository is to contain the tests for health check of published MATLAB Web App Server Ref Arch Azure health check. It will be scheduled to run everyday nightly and confirm the deployment can be done successfully, and links that we published to github are in good health. \ No newline at end of file diff --git a/healthcheck/requirements.txt b/healthcheck/requirements.txt new file mode 100644 index 0000000..bf596d5 --- /dev/null +++ b/healthcheck/requirements.txt @@ -0,0 +1,8 @@ +azure-functions +azure-mgmt-resource==8.0.1 +azure-mgmt-marketplaceordering==0.1.0 +azure-mgmt-compute==4.6.2 +azure-mgmt-network==10.2.0 +azure-common==1.1.24 +adal==1.2.2 +msrestazure==0.6.2 \ No newline at end of file diff --git a/healthcheck/test_refarch_existing.py b/healthcheck/test_refarch_existing.py new file mode 100644 index 0000000..e8931e7 --- /dev/null +++ b/healthcheck/test_refarch_existing.py @@ -0,0 +1,105 @@ +import unittest +import os +import time +import re +import requests +import random +import sys +from datetime import date +import datetime + +import testtools.AzureAuthentication as AzureAuth +import testtools.deploy as DeployOp +from azure.mgmt.network import NetworkManagementClient + +def main(tenant_id_arg, client_id_arg, client_secret_arg, subscription_id_arg, username, password, ipAddress, sslCertificate, sslPrivateKey, location_arg, platform_arg): + + # Deploy template + # Reference architecture in production. + ref_arch_name = 'matlab-web-app-server-on-azure' + + # Common parameters for template deployment. + tenant_id = tenant_id_arg + client_id = client_id_arg + client_secret = client_secret_arg + credentials = AzureAuth.authenticate_client_key(tenant_id, client_id, client_secret) + subscription_id = subscription_id_arg + location = location_arg + + # Subnets & virtual network info + subnets_cidr = ['10.0.0.0/24'] + vnet_cidr = '10.0.0.0/16' + + # Resource group where virtual network is created + resource_name_vnet = 'vnet_resource_group' + + # Deploy a resource group with a virtual network and specified number of subnets + try: + subnet_name, vnet_name = DeployOp.create_vnet(credentials, + subscription_id, + location, + subnets_cidr, + resource_name_vnet, + vnet_cidr) + + except Exception as e: + raise(e) + print(subnet_name[0]) + # Parameters for deployment + parameters = { + "IP Addresses Permitted to Remote into Server VM in CIDR Notation": "0.0.0.0/0", + "IP Addresses Allowed to Access MATLAB Web App Server Apps Home Page in CIDR Notation": ipAddress, + "Base64 Encoded SSL Certificate": sslCertificate, + "Base64 Encoded SSL Private Key": sslPrivateKey, + "Username to Remote into Server VM and Network License Manager Web Interface": username, + "Password to Remote into Server VM and Network License Manager Web Interface": password, + "Deploy to New or Existing Virtual Network": "existing", + "Name of Virtual Network Where MATLAB Web App Server Will Be Deployed": vnet_name, + "Virtual Network CIDR Range": vnet_cidr, + "Name of Subnet for MATLAB Web App Server": subnet_name[0], + "Server Subnet CIDR Range": subnets_cidr[0], + "Resource Group Name Of Virtual Network": resource_name_vnet, + "Operating System": platform_arg + } + + print(parameters) + + # Find latest MATLAB release from Github page and get template json path. + res = requests.get( + f"https://github.com/mathworks-ref-arch/{ref_arch_name}/tree/main/releases/" + ) + latest_releases = [re.findall("releases/(R\d{4}[ab]\\b)", res.text)[-1], re.findall("releases/(R\d{4}[ab]\\b)", res.text)[-2]] + for i in range(2): + matlab_release = latest_releases[i] + print("Testing Health Check Release: " + matlab_release + "\n") + github_base_dir = "https://raw.githubusercontent.com/mathworks-ref-arch" + jsonpath = f"{matlab_release}/templates/mainTemplate.json" + template_name = f"{github_base_dir}/{ref_arch_name}/main/releases/{jsonpath}" + resource_group_name = "webapp-refarch-health-check-" + matlab_release + date.today().strftime('%m-%d-%Y') + str(random.randint(1,101)) + ct = datetime.datetime.now() + print("Date time before deployment of stack:-", ct) + + try: + deployment_result = DeployOp.deploy_webapp_template(credentials, + subscription_id, + resource_group_name, + location, + ref_arch_name, + template_name, + parameters + ) + except Exception as e: + raise(e) + + # Delete the deployment which is deployed using existing virtual network + deployment_deletion = DeployOp.delete_resourcegroup(credentials, subscription_id, resource_group_name) + print("Deleted the deployment which is deployed using existing virtual network") + # Wait for above deployment deletion + time.sleep(900) + # Delete deployment with virtual network + DeployOp.delete_resourcegroup(credentials, subscription_id, resource_name_vnet) + print("Deleted the deployment which contains the virtual network") + +if __name__ == '__main__': + main("99dd3a11-4348-4468-9bdd-e5072b1dc1e6","f0d681d1-15e6-40e6-a8a7-d82f686578a8","6IP70T.0y5~_ldiG.8aNKSK6oKaPOcl5qp","2fe59ed0-c022-4411-b2c3-4a2021c1df9c", "azureadmin", "Password123", "144.212.3.4", "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlEYlRDQ0FsV2dBd0lCQWdJVUYxQW52S3czTXdvei9hUW0vSlJRNnlpTzR2WXdEUVlKS29aSWh2Y05BUUVMDQpCUUF3UlRFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01DbE52YldVdFUzUmhkR1V4SVRBZkJnTlZCQW9NDQpHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpEQWdGdzB5TXpBME1EY3hOVEEyTlRoYUdBOHlNVEl6DQpNRE14TkRFMU1EWTFPRm93UlRFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01DbE52YldVdFUzUmhkR1V4DQpJVEFmQmdOVkJBb01HRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpEQ0NBU0l3RFFZSktvWklodmNODQpBUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTkJwYzF1TVBzVDZONDdRWlVTYjR1a1RYV2swVWcxVDVhYVhzdmZ1DQpZSlVFd2F1TUxiWEk5aEMrdExLcW44UHh5ZE1nTWtLeU9oVWlIRDFKdDNzLzBMRUg5NGg2VGlPa2VsMnNNOTlaDQpQc25ncHhYa0M1ZFhvQ0VkNkUwaGtNUlhpK21aQzM3OXp0dUhkNmlJNU51LzZLdnNsdkJkODJkbmtubm80OS9VDQplcUpKYTdqc0hmSXNLc3ZlZm96YmR4M0ZmS29ZK3hjb2FrMnpKTkZ1eERjTmFabmhYdkJpNDI4UjZ3L3hldjdBDQp1aUV2ekN6alB1bHJ2bTdJVmZ6OUd1dk9xNXJkU3FJVk5MNFFJc1JSNDMyY1V6ejFXREhMMjFsNmwxZmZhSnRKDQppZTV3dzM3UXBhMjE5dFBZY1JXRVVqeDlweUhyOHk1ZGZhNlRYWlVVZjRpNnNCRUNBd0VBQWFOVE1GRXdIUVlEDQpWUjBPQkJZRUZOT0t2SEdOa0xQQXlCWmhwMDdQRk5vZkRXc0ZNQjhHQTFVZEl3UVlNQmFBRk5PS3ZIR05rTFBBDQp5QlpocDA3UEZOb2ZEV3NGTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCDQpBTGRGVGdNdGVJRFVWdm9hcVlPTUh1U3h5MGI4N296Rkp5dzJvS1lMbUZBS3QxOUJxQ2YzZHdkclViRGRGR1gzDQp2TjFlekhvUmFjOUNXbWJGRUZ6MHViUWY5YVRscDU2aGNpWUk4cnB6NU5UNVJ0SmxhY2JQTWZLOXNkZU8zQ09RDQpkenlISUo4U0IybVZ2WFZWR01hOFozZHFadCsveVcrMEljS3YzY2lFNmFENThtTUw3Q25CRzlkanRQWEJnSWYxDQpZTHE5eldhMlplaDlhLy9pUVJLWHRpZnM5anNoTm1wYmtEYmxkdmxXdGJXeTBTU21QTXVuTUsxOCs0RHRKODB5DQptVDFjREVwb0t4WWZPU0ZGUTRHdExXWEsyQ1Jnc3I1MXJYZHNLVE9zK3VObzJONjk2NFRzdnNWRTRDd2t2UmE1DQpCTDFhSjVWZEY3bGNSSmdBM0FnMTZ5VT0NCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NCg==", "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURRYVhOYmpEN0UramVPDQowR1ZFbStMcEUxMXBORklOVStXbWw3TDM3bUNWQk1HcmpDMjF5UFlRdnJTeXFwL0Q4Y25USURKQ3Nqb1ZJaHc5DQpTYmQ3UDlDeEIvZUllazRqcEhwZHJEUGZXVDdKNEtjVjVBdVhWNkFoSGVoTklaREVWNHZwbVF0Ky9jN2JoM2VvDQppT1RiditpcjdKYndYZk5uWjVKNTZPUGYxSHFpU1d1NDdCM3lMQ3JMM242TTIzY2R4WHlxR1BzWEtHcE5zeVRSDQpic1EzRFdtWjRWN3dZdU52RWVzUDhYcit3TG9oTDh3czR6N3BhNzV1eUZYOC9ScnJ6cXVhM1VxaUZUUytFQ0xFDQpVZU45bkZNODlWZ3h5OXRaZXBkWDMyaWJTWW51Y01OKzBLV3R0ZmJUMkhFVmhGSThmYWNoNi9NdVhYMnVrMTJWDQpGSCtJdXJBUkFnTUJBQUVDZ2dFQWFxcHQxaDhUU1RGZkdnTGlzWml2SytjeldkTGpZOXJhb01iblhDbHUyUllVDQpJVDZmYm5pcUo2dlRROVk3NnNkbktsMUNIQXluMllVWnV1eHRzZkRaV0tIaE9NS1FGNEhvOXVSWnNDZzNFSStnDQpOSDRBeUxhYVNCak1laDJCd0Z1bVNpcUFUY0NOREtKcXhhRTZzSldwK2NRZkJHcXhWdTBWZEx1VFZVMmtia1lFDQpRRDVrY0Jod2RDbHdhYUNLS1lhSWVSalFncmROR0U2SWoyREpsNG1IVzQzcmZscWtHb3JRMDJLOE9xOEdXdmJyDQpRNTdKMithN1B3R05naG9BK3U4UDJGSmVXREpCSzlJTnp3ajZhRXJCbWZxZlVib25UOGErdHQ4STkyL1dQdnNFDQo5VmxpSXlDWFFla0hTOHJ3dzk0allvNEFUQmpQT3ErcWRJSFpDWEhQb1FLQmdRRDd5ekhWUHphd2hGSlJuTUk5DQpZNE1nSHdrZU9UMEpMK3FOT1lkc1prVUUxNGk3cThYWXJ0RDBkbnd5UGtQWHd5WFJvNmdSVEU4bUZoVkdISm5xDQp2Y2xHVzFXOTQzRWp1ZGsvTllDaGxNTVAzeG1VQjRMbnJtUVcwRGJUME1EYWN0U2FFZHU2TmlWYmpaekF4ZndsDQpENndDUU1uck9PaVBxa2hCN0FuNG9tTXNiUUtCZ1FEVDVMdGtvUmZCNVVxSXR3Q1ROUTV1anQ1RmhnTlF3WDlnDQpsTHZSRXVaWjBsR0FVMXVkZHJ1eHVZZzNETEdSdGNqWDhWV1RDbXAzTGNqMmF3WGFadFhEdFpGY0Y3UlFDdk95DQptTFBvZnZzYThOYU5Hb2s4M0tMSFVHYzBjRGtzNTVEV0NIdkkreFBvaWdVM1NiTDVSUkUxL2tNZUx0K0d5WVM0DQovVmdtYnhNRHRRS0JnRlFEWVhaQXFGUFBZdFFlVk9VOHplU3ExbFVDVGk1QmthWmJlcWNkbkl2WUNxUnIxUkRPDQppNlAxNE15MjM5WWZKQUJGOWU4SG9pVVlHek1RbWY2c0ludGFRRXFpbC82T3BVRWs3ZTE4QUhYTVAvR1hiQU0zDQp1ZWV1dzR4N1M4M1hvTDVqbFFnVnh2TThWZ0F3VDBoaWFVYzdMT1JTVWE2VjU1UXZXTWhnRG0wbEFvR0FOb0wxDQpvcUcrMXVjQ0VjSGlwL3hTUmljREQ2ZTJXcVFzL00vR3NiYkhBL3lUY3d2KzJiZWQrYzdkT0N4UDBraU43dC9yDQpQL1RDQnY4RVlFQ1FOT3VYdXMyUEk3NEZhVUlvQjU0NVNtckFkdUhXa0Y1dlIvVUsrM08zMlVtMXE5TzI4eGtqDQpuMFRZams1VG9UR1lsWUFyT1ZTOE41dWZiYkdTTDNVZHBHV1c0ckVDZ1lFQTlPRXB1UUN2N2pweG5RRUNIMTJ4DQp1QlR3S1dYTGE1aEJtbEtsODd5T05lOFp1NzA0RXQyVDRpQ3h6TXRTb3JJNTRPZU5EV1RKMzZjTGR6UHJSYVZ3DQpHcEkzcGxrRG1DRm5FTmV2RzhneG4ybDNJV1pDSnNQSi94d3BSd0FTOWJwZmlvSGpBWTNadjRXaDBzenBRN0JFDQp2TURzaXA1VCtQdzRnQWpDN0ZGcmprND0NCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0NCg==", "eastus", "Windows") + #main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6], sys.argv[7], sys.argv[8], sys.argv[9], sys.argv[10], sys.argv[11]) \ No newline at end of file diff --git a/healthcheck/test_refarch_new.py b/healthcheck/test_refarch_new.py new file mode 100644 index 0000000..95dc9ba --- /dev/null +++ b/healthcheck/test_refarch_new.py @@ -0,0 +1,72 @@ +import os +import sys +import time +import re +import requests +import random +import traceback + +import testtools.AzureAuthentication as AzureAuth +import testtools.deploy as DeployOp + +from datetime import date +import datetime + +def main(tenant_id_arg, client_id_arg, client_secret_arg, subscription_id_arg, username, password, ipAddress, sslCertificate, sslPrivateKey, location_arg, platform_arg): + # Reference architectures in production. + ref_arch_name = 'matlab-web-app-server-on-azure' + + # Common parameters for template deployment. + tenant_id = tenant_id_arg + client_id = client_id_arg + client_secret = client_secret_arg + credentials = AzureAuth.authenticate_client_key(tenant_id, client_id, client_secret) + subscription_id = subscription_id_arg + location = location_arg + + parameters = { + "IP Addresses Allowed to Access MATLAB Web App Server Apps Home Page in CIDR Notation": ipAddress, + "IP Addresses Permitted to Remote into Server VM in CIDR Notation": ipAddress, + "Base64 Encoded SSL Certificate": sslCertificate, + "Base64 Encoded SSL Private Key": sslPrivateKey, + "Username to Remote into Server VM and Network License Manager Web Interface": username, + "Password to Remote into Server VM and Network License Manager Web Interface": password, + "Deploy to New or Existing Virtual Network": "new", + "Operating System": platform_arg + } + + # Find latest MATLAB release from Github page and get template json path. + res = requests.get( + f"https://github.com/mathworks-ref-arch/{ref_arch_name}/tree/main/releases/" + ) + latest_releases = [re.findall("releases/(R\d{4}[ab]\\b)", res.text)[-1], re.findall("releases/(R\d{4}[ab]\\b)", res.text)[-2]] + for i in range(2): + matlab_release = latest_releases[i] + print("Testing Health Check Release: " + matlab_release + "\n") + github_base_dir = "https://raw.githubusercontent.com/mathworks-ref-arch" + jsonpath = f"{matlab_release}/templates/mainTemplate.json" + template_name = f"{github_base_dir}/{ref_arch_name}/main/releases/{jsonpath}" + resource_group_name = "webapp-refarch-health-check-" + matlab_release + date.today().strftime('%m-%d-%Y') + str(random.randint(1,101)) + ct = datetime.datetime.now() + print("Date time before deployment of stack:-", ct) + + try: + deployment_result = DeployOp.deploy_webapp_template(credentials, + subscription_id, + resource_group_name, + location, + ref_arch_name, + template_name, + parameters + ) + except Exception as e: + raise (e) + + # delete the deployment + DeployOp.delete_resourcegroup(credentials, subscription_id, resource_group_name) + ct = datetime.datetime.now() + print("Date time after deployment and deletion of stack:-", ct) + +if __name__ == '__main__': + main("99dd3a11-4348-4468-9bdd-e5072b1dc1e6","f0d681d1-15e6-40e6-a8a7-d82f686578a8","6IP70T.0y5~_ldiG.8aNKSK6oKaPOcl5qp","2fe59ed0-c022-4411-b2c3-4a2021c1df9c", "azureadmin", "Password123", "144.212.3.4", "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlEYlRDQ0FsV2dBd0lCQWdJVUYxQW52S3czTXdvei9hUW0vSlJRNnlpTzR2WXdEUVlKS29aSWh2Y05BUUVMDQpCUUF3UlRFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01DbE52YldVdFUzUmhkR1V4SVRBZkJnTlZCQW9NDQpHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpEQWdGdzB5TXpBME1EY3hOVEEyTlRoYUdBOHlNVEl6DQpNRE14TkRFMU1EWTFPRm93UlRFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01DbE52YldVdFUzUmhkR1V4DQpJVEFmQmdOVkJBb01HRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpEQ0NBU0l3RFFZSktvWklodmNODQpBUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTkJwYzF1TVBzVDZONDdRWlVTYjR1a1RYV2swVWcxVDVhYVhzdmZ1DQpZSlVFd2F1TUxiWEk5aEMrdExLcW44UHh5ZE1nTWtLeU9oVWlIRDFKdDNzLzBMRUg5NGg2VGlPa2VsMnNNOTlaDQpQc25ncHhYa0M1ZFhvQ0VkNkUwaGtNUlhpK21aQzM3OXp0dUhkNmlJNU51LzZLdnNsdkJkODJkbmtubm80OS9VDQplcUpKYTdqc0hmSXNLc3ZlZm96YmR4M0ZmS29ZK3hjb2FrMnpKTkZ1eERjTmFabmhYdkJpNDI4UjZ3L3hldjdBDQp1aUV2ekN6alB1bHJ2bTdJVmZ6OUd1dk9xNXJkU3FJVk5MNFFJc1JSNDMyY1V6ejFXREhMMjFsNmwxZmZhSnRKDQppZTV3dzM3UXBhMjE5dFBZY1JXRVVqeDlweUhyOHk1ZGZhNlRYWlVVZjRpNnNCRUNBd0VBQWFOVE1GRXdIUVlEDQpWUjBPQkJZRUZOT0t2SEdOa0xQQXlCWmhwMDdQRk5vZkRXc0ZNQjhHQTFVZEl3UVlNQmFBRk5PS3ZIR05rTFBBDQp5QlpocDA3UEZOb2ZEV3NGTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCDQpBTGRGVGdNdGVJRFVWdm9hcVlPTUh1U3h5MGI4N296Rkp5dzJvS1lMbUZBS3QxOUJxQ2YzZHdkclViRGRGR1gzDQp2TjFlekhvUmFjOUNXbWJGRUZ6MHViUWY5YVRscDU2aGNpWUk4cnB6NU5UNVJ0SmxhY2JQTWZLOXNkZU8zQ09RDQpkenlISUo4U0IybVZ2WFZWR01hOFozZHFadCsveVcrMEljS3YzY2lFNmFENThtTUw3Q25CRzlkanRQWEJnSWYxDQpZTHE5eldhMlplaDlhLy9pUVJLWHRpZnM5anNoTm1wYmtEYmxkdmxXdGJXeTBTU21QTXVuTUsxOCs0RHRKODB5DQptVDFjREVwb0t4WWZPU0ZGUTRHdExXWEsyQ1Jnc3I1MXJYZHNLVE9zK3VObzJONjk2NFRzdnNWRTRDd2t2UmE1DQpCTDFhSjVWZEY3bGNSSmdBM0FnMTZ5VT0NCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NCg==", "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURRYVhOYmpEN0UramVPDQowR1ZFbStMcEUxMXBORklOVStXbWw3TDM3bUNWQk1HcmpDMjF5UFlRdnJTeXFwL0Q4Y25USURKQ3Nqb1ZJaHc5DQpTYmQ3UDlDeEIvZUllazRqcEhwZHJEUGZXVDdKNEtjVjVBdVhWNkFoSGVoTklaREVWNHZwbVF0Ky9jN2JoM2VvDQppT1RiditpcjdKYndYZk5uWjVKNTZPUGYxSHFpU1d1NDdCM3lMQ3JMM242TTIzY2R4WHlxR1BzWEtHcE5zeVRSDQpic1EzRFdtWjRWN3dZdU52RWVzUDhYcit3TG9oTDh3czR6N3BhNzV1eUZYOC9ScnJ6cXVhM1VxaUZUUytFQ0xFDQpVZU45bkZNODlWZ3h5OXRaZXBkWDMyaWJTWW51Y01OKzBLV3R0ZmJUMkhFVmhGSThmYWNoNi9NdVhYMnVrMTJWDQpGSCtJdXJBUkFnTUJBQUVDZ2dFQWFxcHQxaDhUU1RGZkdnTGlzWml2SytjeldkTGpZOXJhb01iblhDbHUyUllVDQpJVDZmYm5pcUo2dlRROVk3NnNkbktsMUNIQXluMllVWnV1eHRzZkRaV0tIaE9NS1FGNEhvOXVSWnNDZzNFSStnDQpOSDRBeUxhYVNCak1laDJCd0Z1bVNpcUFUY0NOREtKcXhhRTZzSldwK2NRZkJHcXhWdTBWZEx1VFZVMmtia1lFDQpRRDVrY0Jod2RDbHdhYUNLS1lhSWVSalFncmROR0U2SWoyREpsNG1IVzQzcmZscWtHb3JRMDJLOE9xOEdXdmJyDQpRNTdKMithN1B3R05naG9BK3U4UDJGSmVXREpCSzlJTnp3ajZhRXJCbWZxZlVib25UOGErdHQ4STkyL1dQdnNFDQo5VmxpSXlDWFFla0hTOHJ3dzk0allvNEFUQmpQT3ErcWRJSFpDWEhQb1FLQmdRRDd5ekhWUHphd2hGSlJuTUk5DQpZNE1nSHdrZU9UMEpMK3FOT1lkc1prVUUxNGk3cThYWXJ0RDBkbnd5UGtQWHd5WFJvNmdSVEU4bUZoVkdISm5xDQp2Y2xHVzFXOTQzRWp1ZGsvTllDaGxNTVAzeG1VQjRMbnJtUVcwRGJUME1EYWN0U2FFZHU2TmlWYmpaekF4ZndsDQpENndDUU1uck9PaVBxa2hCN0FuNG9tTXNiUUtCZ1FEVDVMdGtvUmZCNVVxSXR3Q1ROUTV1anQ1RmhnTlF3WDlnDQpsTHZSRXVaWjBsR0FVMXVkZHJ1eHVZZzNETEdSdGNqWDhWV1RDbXAzTGNqMmF3WGFadFhEdFpGY0Y3UlFDdk95DQptTFBvZnZzYThOYU5Hb2s4M0tMSFVHYzBjRGtzNTVEV0NIdkkreFBvaWdVM1NiTDVSUkUxL2tNZUx0K0d5WVM0DQovVmdtYnhNRHRRS0JnRlFEWVhaQXFGUFBZdFFlVk9VOHplU3ExbFVDVGk1QmthWmJlcWNkbkl2WUNxUnIxUkRPDQppNlAxNE15MjM5WWZKQUJGOWU4SG9pVVlHek1RbWY2c0ludGFRRXFpbC82T3BVRWs3ZTE4QUhYTVAvR1hiQU0zDQp1ZWV1dzR4N1M4M1hvTDVqbFFnVnh2TThWZ0F3VDBoaWFVYzdMT1JTVWE2VjU1UXZXTWhnRG0wbEFvR0FOb0wxDQpvcUcrMXVjQ0VjSGlwL3hTUmljREQ2ZTJXcVFzL00vR3NiYkhBL3lUY3d2KzJiZWQrYzdkT0N4UDBraU43dC9yDQpQL1RDQnY4RVlFQ1FOT3VYdXMyUEk3NEZhVUlvQjU0NVNtckFkdUhXa0Y1dlIvVUsrM08zMlVtMXE5TzI4eGtqDQpuMFRZams1VG9UR1lsWUFyT1ZTOE41dWZiYkdTTDNVZHBHV1c0ckVDZ1lFQTlPRXB1UUN2N2pweG5RRUNIMTJ4DQp1QlR3S1dYTGE1aEJtbEtsODd5T05lOFp1NzA0RXQyVDRpQ3h6TXRTb3JJNTRPZU5EV1RKMzZjTGR6UHJSYVZ3DQpHcEkzcGxrRG1DRm5FTmV2RzhneG4ybDNJV1pDSnNQSi94d3BSd0FTOWJwZmlvSGpBWTNadjRXaDBzenBRN0JFDQp2TURzaXA1VCtQdzRnQWpDN0ZGcmprND0NCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0NCg==", "eastus", "Windows") + #main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6], sys.argv[7], sys.argv[8], sys.argv[9], sys.argv[10], sys.argv[11]) \ No newline at end of file diff --git a/healthcheck/testtools/AzureAuthentication.py b/healthcheck/testtools/AzureAuthentication.py new file mode 100644 index 0000000..831029e --- /dev/null +++ b/healthcheck/testtools/AzureAuthentication.py @@ -0,0 +1,19 @@ +from azure.common import credentials +from azure.common.credentials import ServicePrincipalCredentials +from msrestazure.azure_active_directory import AADTokenCredentials +import adal + +def authenticate_client_key(tenant_id, client_id, client_secret): + + """ + Authenticate using service principal w/ key. + """ + authority_host_uri = 'https://login.microsoftonline.com' + authority_uri = authority_host_uri + '/' + tenant_id + resource_uri = 'https://management.core.windows.net/' + + context = adal.AuthenticationContext(authority_uri, api_version=None) + mgmt_token = context.acquire_token_with_client_credentials(resource_uri, client_id, client_secret) + credentials = AADTokenCredentials(mgmt_token, client_id) + + return credentials \ No newline at end of file diff --git a/healthcheck/testtools/__init__.py b/healthcheck/testtools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/healthcheck/testtools/deploy.py b/healthcheck/testtools/deploy.py new file mode 100644 index 0000000..b6f8b21 --- /dev/null +++ b/healthcheck/testtools/deploy.py @@ -0,0 +1,125 @@ +import urllib.request, json +import azure.functions as func + +from azure.mgmt.resource.resources.models import DeploymentMode +from azure.mgmt.compute import ComputeManagementClient +from azure.common import credentials +from azure.common.credentials import ServicePrincipalCredentials +from msrestazure.azure_active_directory import AADTokenCredentials +from azure.mgmt.resource.resources.models import DeploymentProperties +from azure.mgmt.resource.resources.models import DeploymentMode +from azure.mgmt.resource.resources.models import TemplateLink +import testtools.getResourceClient as getResourceClient +from azure.mgmt.network import NetworkManagementClient + +def deploy_webapp_template(credentials, + subscription_id, + resource_group_name, + location, + ref_arch_name, + template_name, + resource_group_params): + + with urllib.request.urlopen(f'{template_name}') as url: + template = json.loads(url.read().decode()) + + parameters = {k: {'value': v} for k, v in resource_group_params.items()} + + deployment_properties = { + 'mode': DeploymentMode.incremental, + 'template': template, + 'parameters': parameters + } + + resource_client = getResourceClient.get_resource_client(credentials, subscription_id) + + # Create resource group... + resource_client.resource_groups.create_or_update( + resource_group_name, + {'location': location} + ) + + print("Beginning the deployment... \n\n") + # Deploy template. + + deployment = resource_client.deployments.create_or_update( + resource_group_name, + f'{ref_arch_name}-deployment', + deployment_properties + ) + + # Block because of VM quotas. + deployment.wait() + print(deployment) + + #extract output + deployment_result = resource_client.deployments.get(resource_group_name, f'{ref_arch_name}-deployment') + print(deployment_result) + print("Done with the deployment... \n\n") + return deployment_result + +def create_vnet(credentials, + subscription_id, + location, + subnets_cidr, + resource_name_vnet, + vnet_cidr): + + resource_client = getResourceClient.get_resource_client(credentials, subscription_id) + vnet_name = 'my_vnet' + + # Create resource group + print("Creating a resource group with a virtual network... \n") + resource_client.resource_groups.create_or_update( + resource_name_vnet, + {'location': location} + ) + network_client = NetworkManagementClient(credentials, subscription_id) + + print("Resource group created...\n") + + # Create virtual network + async_vnet_creation = network_client.virtual_networks.create_or_update( + resource_name_vnet, + vnet_name, + { + 'address_space': { + 'address_prefixes': [vnet_cidr] + }, + 'location': location + + } + ) + + # Wait for the virtual network creation + async_vnet_creation.wait() + + print("Added a virtual network... \n") + + # Array to store the names of the subnets created + subnet_names = [] + + for i in range(1, len(subnets_cidr) + 1): + + # Create Subnet + subnet_name = "subnet" + str(i) + async_subnet_creation = network_client.subnets.create_or_update( + resource_name_vnet, + vnet_name, + subnet_name, + {'address_prefix': subnets_cidr[i-1]} + ) + subnet_info = async_subnet_creation.result() + # Add created subnet name to subnet_names array + subnet_names.append(subnet_info.name) + + print("Added " + str(len(subnets_cidr)) + " subnets") + # Return the names of subnets created and name of the virtual network + return subnet_names, vnet_name + +def delete_resourcegroup(credentials, subscription_id, resource_group_name) : + resource_client = getResourceClient.get_resource_client(credentials, subscription_id) + print("Deleting the deployment... \n\n") + deployment_deletion = resource_client.resource_groups.delete(resource_group_name) + print(deployment_deletion) + #return deployment_deletion \ No newline at end of file diff --git a/healthcheck/testtools/getResourceClient.py b/healthcheck/testtools/getResourceClient.py new file mode 100644 index 0000000..d5c410b --- /dev/null +++ b/healthcheck/testtools/getResourceClient.py @@ -0,0 +1,5 @@ +from azure.mgmt.resource import ResourceManagementClient + +def get_resource_client(credentials, subscription_id) : + resource_client = ResourceManagementClient(credentials, subscription_id) + return resource_client \ No newline at end of file From 2f3459818876ee7222b5097257f2221802bdbc17 Mon Sep 17 00:00:00 2001 From: Alex Niu Date: Mon, 10 Apr 2023 13:33:27 -0400 Subject: [PATCH 2/3] edit yaml files --- .github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml | 4 ++-- .github/workflows/healthcheck-app-existingVnet-Win-Tue.yml | 4 ++-- .github/workflows/healthcheck-app-newVnet-Lin-Wed.yml | 2 +- .github/workflows/healthcheck-app-newVnet-Win-Mon.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml b/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml index 9fb44cb..ded4fd6 100644 --- a/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml +++ b/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml @@ -1,9 +1,9 @@ # This workflow will install Python dependencies, run tests and lint with a single version of Python # For more information, see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions -#The following workflow file triggers the Existing Virtual network deployment test "test_healthcheck_existing_vnet.py" every Thursday with platform as "Linux" in "Japaneast" region. +#The following workflow file triggers the Existing Virtual network deployment test "test_refarch_existing.py" every Thursday with platform as "Linux" in "Japaneast" region. -name: MATLAB Production Server Ref Arch Azure Existing Virtual Network Health Check Test on linux in Japan East +name: MATLAB Web App Server Ref Arch Azure Existing Virtual Network Health Check Test on linux in Japan East on: schedule: diff --git a/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml b/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml index bb1c19e..a029bb1 100644 --- a/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml +++ b/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml @@ -1,9 +1,9 @@ # This workflow will install Python dependencies, run tests and lint with a single version of Python # For more information, see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions -# The following workflow file triggers the Existing Virtual Network deployment test "test_healthcheck_existing_vnet.py" every Tuesday with platform as "Windows" in "westeurope" region. +# The following workflow file triggers the Existing Virtual Network deployment test "test_refarch_existing.py" every Tuesday with platform as "Windows" in "westeurope" region. -name: MATLAB Production Server Ref Arch Azure Existing Virtual Network Health Check Test on Windows in West Eu +name: MATLAB Web App Server Ref Arch Azure Existing Virtual Network Health Check Test on Windows in West Eu on: schedule: diff --git a/.github/workflows/healthcheck-app-newVnet-Lin-Wed.yml b/.github/workflows/healthcheck-app-newVnet-Lin-Wed.yml index 056c600..817a72e 100644 --- a/.github/workflows/healthcheck-app-newVnet-Lin-Wed.yml +++ b/.github/workflows/healthcheck-app-newVnet-Lin-Wed.yml @@ -1,7 +1,7 @@ # This workflow will install Python dependencies, run tests and lint with a single version of Python # For more information, see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions -# The following workflow file triggers the New Virtual Network deployment test "test_healthcheck_new_vnet" every Wednesday with platform as "Linux" in "westus" region. +# The following workflow file triggers the New Virtual Network deployment test "test_refarch_new" every Wednesday with platform as "Linux" in "westus" region. name: MATLAB Web App Server Ref Arch Azure Health Check Test on Linux in West US diff --git a/.github/workflows/healthcheck-app-newVnet-Win-Mon.yml b/.github/workflows/healthcheck-app-newVnet-Win-Mon.yml index a51b745..28987fa 100644 --- a/.github/workflows/healthcheck-app-newVnet-Win-Mon.yml +++ b/.github/workflows/healthcheck-app-newVnet-Win-Mon.yml @@ -1,7 +1,7 @@ # This workflow will install Python dependencies, run tests and lint with a single version of Python # For more information, see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions -# The following workflow file triggers the New Virtual Network deployment test "test_healthcheck_new_vnet" every Monday with platform as "Windows" in "eastus" region. +# The following workflow file triggers the New Virtual Network deployment test "test_refarch_new" every Monday with platform as "Windows" in "eastus" region. name: MATLAB Web App Server Ref Arch Azure Health Check Test on Windows in East US region From 23b4cf1a3b6eb791351f33c69f8c894cd5335de4 Mon Sep 17 00:00:00 2001 From: Alex Niu Date: Tue, 11 Apr 2023 13:57:29 -0400 Subject: [PATCH 3/3] fix changes after review --- .github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml | 2 +- .github/workflows/healthcheck-app-existingVnet-Win-Tue.yml | 2 +- healthcheck/test_refarch_existing.py | 3 +-- healthcheck/test_refarch_new.py | 3 +-- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml b/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml index ded4fd6..deb020e 100644 --- a/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml +++ b/.github/workflows/healthcheck-app-existingVnet-Lin-Thurs.yml @@ -30,7 +30,7 @@ jobs: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: MPS ref Arch Existing Virtual Network Health check test on linux in Japan East + - name: MWAS ref Arch Existing Virtual Network Health check test on linux in Japan East run: | cd healthcheck python test_refarch_existing.py ${{ secrets.TenantId }} ${{ secrets.ClientId }} ${{ secrets.ClientSecret }} ${{ secrets.SubscriptionId }} ${{ secrets.username }} ${{ secrets.password }} ${{ secrets.ipaddress }} ${{ secrets.sslcertificate }} ${{ secrets.sslkey }} "japaneast" "Linux" diff --git a/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml b/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml index a029bb1..3c25af6 100644 --- a/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml +++ b/.github/workflows/healthcheck-app-existingVnet-Win-Tue.yml @@ -30,7 +30,7 @@ jobs: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: MPS ref Arch Existing Virtual Network Health check test on Windows in West Eu + - name: MWAS ref Arch Existing Virtual Network Health check test on Windows in West Eu run: | cd healthcheck python test_refarch_existing.py ${{ secrets.TenantId }} ${{ secrets.ClientId }} ${{ secrets.ClientSecret }} ${{ secrets.SubscriptionId }} ${{ secrets.username }} ${{ secrets.password }} ${{ secrets.ipaddress }} ${{ secrets.sslcertificate }} ${{ secrets.sslkey }} "westeurope" "Windows" diff --git a/healthcheck/test_refarch_existing.py b/healthcheck/test_refarch_existing.py index e8931e7..9e94783 100644 --- a/healthcheck/test_refarch_existing.py +++ b/healthcheck/test_refarch_existing.py @@ -101,5 +101,4 @@ def main(tenant_id_arg, client_id_arg, client_secret_arg, subscription_id_arg, u print("Deleted the deployment which contains the virtual network") if __name__ == '__main__': - main("99dd3a11-4348-4468-9bdd-e5072b1dc1e6","f0d681d1-15e6-40e6-a8a7-d82f686578a8","6IP70T.0y5~_ldiG.8aNKSK6oKaPOcl5qp","2fe59ed0-c022-4411-b2c3-4a2021c1df9c", "azureadmin", "Password123", "144.212.3.4", "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlEYlRDQ0FsV2dBd0lCQWdJVUYxQW52S3czTXdvei9hUW0vSlJRNnlpTzR2WXdEUVlKS29aSWh2Y05BUUVMDQpCUUF3UlRFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01DbE52YldVdFUzUmhkR1V4SVRBZkJnTlZCQW9NDQpHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpEQWdGdzB5TXpBME1EY3hOVEEyTlRoYUdBOHlNVEl6DQpNRE14TkRFMU1EWTFPRm93UlRFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01DbE52YldVdFUzUmhkR1V4DQpJVEFmQmdOVkJBb01HRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpEQ0NBU0l3RFFZSktvWklodmNODQpBUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTkJwYzF1TVBzVDZONDdRWlVTYjR1a1RYV2swVWcxVDVhYVhzdmZ1DQpZSlVFd2F1TUxiWEk5aEMrdExLcW44UHh5ZE1nTWtLeU9oVWlIRDFKdDNzLzBMRUg5NGg2VGlPa2VsMnNNOTlaDQpQc25ncHhYa0M1ZFhvQ0VkNkUwaGtNUlhpK21aQzM3OXp0dUhkNmlJNU51LzZLdnNsdkJkODJkbmtubm80OS9VDQplcUpKYTdqc0hmSXNLc3ZlZm96YmR4M0ZmS29ZK3hjb2FrMnpKTkZ1eERjTmFabmhYdkJpNDI4UjZ3L3hldjdBDQp1aUV2ekN6alB1bHJ2bTdJVmZ6OUd1dk9xNXJkU3FJVk5MNFFJc1JSNDMyY1V6ejFXREhMMjFsNmwxZmZhSnRKDQppZTV3dzM3UXBhMjE5dFBZY1JXRVVqeDlweUhyOHk1ZGZhNlRYWlVVZjRpNnNCRUNBd0VBQWFOVE1GRXdIUVlEDQpWUjBPQkJZRUZOT0t2SEdOa0xQQXlCWmhwMDdQRk5vZkRXc0ZNQjhHQTFVZEl3UVlNQmFBRk5PS3ZIR05rTFBBDQp5QlpocDA3UEZOb2ZEV3NGTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCDQpBTGRGVGdNdGVJRFVWdm9hcVlPTUh1U3h5MGI4N296Rkp5dzJvS1lMbUZBS3QxOUJxQ2YzZHdkclViRGRGR1gzDQp2TjFlekhvUmFjOUNXbWJGRUZ6MHViUWY5YVRscDU2aGNpWUk4cnB6NU5UNVJ0SmxhY2JQTWZLOXNkZU8zQ09RDQpkenlISUo4U0IybVZ2WFZWR01hOFozZHFadCsveVcrMEljS3YzY2lFNmFENThtTUw3Q25CRzlkanRQWEJnSWYxDQpZTHE5eldhMlplaDlhLy9pUVJLWHRpZnM5anNoTm1wYmtEYmxkdmxXdGJXeTBTU21QTXVuTUsxOCs0RHRKODB5DQptVDFjREVwb0t4WWZPU0ZGUTRHdExXWEsyQ1Jnc3I1MXJYZHNLVE9zK3VObzJONjk2NFRzdnNWRTRDd2t2UmE1DQpCTDFhSjVWZEY3bGNSSmdBM0FnMTZ5VT0NCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NCg==", "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURRYVhOYmpEN0UramVPDQowR1ZFbStMcEUxMXBORklOVStXbWw3TDM3bUNWQk1HcmpDMjF5UFlRdnJTeXFwL0Q4Y25USURKQ3Nqb1ZJaHc5DQpTYmQ3UDlDeEIvZUllazRqcEhwZHJEUGZXVDdKNEtjVjVBdVhWNkFoSGVoTklaREVWNHZwbVF0Ky9jN2JoM2VvDQppT1RiditpcjdKYndYZk5uWjVKNTZPUGYxSHFpU1d1NDdCM3lMQ3JMM242TTIzY2R4WHlxR1BzWEtHcE5zeVRSDQpic1EzRFdtWjRWN3dZdU52RWVzUDhYcit3TG9oTDh3czR6N3BhNzV1eUZYOC9ScnJ6cXVhM1VxaUZUUytFQ0xFDQpVZU45bkZNODlWZ3h5OXRaZXBkWDMyaWJTWW51Y01OKzBLV3R0ZmJUMkhFVmhGSThmYWNoNi9NdVhYMnVrMTJWDQpGSCtJdXJBUkFnTUJBQUVDZ2dFQWFxcHQxaDhUU1RGZkdnTGlzWml2SytjeldkTGpZOXJhb01iblhDbHUyUllVDQpJVDZmYm5pcUo2dlRROVk3NnNkbktsMUNIQXluMllVWnV1eHRzZkRaV0tIaE9NS1FGNEhvOXVSWnNDZzNFSStnDQpOSDRBeUxhYVNCak1laDJCd0Z1bVNpcUFUY0NOREtKcXhhRTZzSldwK2NRZkJHcXhWdTBWZEx1VFZVMmtia1lFDQpRRDVrY0Jod2RDbHdhYUNLS1lhSWVSalFncmROR0U2SWoyREpsNG1IVzQzcmZscWtHb3JRMDJLOE9xOEdXdmJyDQpRNTdKMithN1B3R05naG9BK3U4UDJGSmVXREpCSzlJTnp3ajZhRXJCbWZxZlVib25UOGErdHQ4STkyL1dQdnNFDQo5VmxpSXlDWFFla0hTOHJ3dzk0allvNEFUQmpQT3ErcWRJSFpDWEhQb1FLQmdRRDd5ekhWUHphd2hGSlJuTUk5DQpZNE1nSHdrZU9UMEpMK3FOT1lkc1prVUUxNGk3cThYWXJ0RDBkbnd5UGtQWHd5WFJvNmdSVEU4bUZoVkdISm5xDQp2Y2xHVzFXOTQzRWp1ZGsvTllDaGxNTVAzeG1VQjRMbnJtUVcwRGJUME1EYWN0U2FFZHU2TmlWYmpaekF4ZndsDQpENndDUU1uck9PaVBxa2hCN0FuNG9tTXNiUUtCZ1FEVDVMdGtvUmZCNVVxSXR3Q1ROUTV1anQ1RmhnTlF3WDlnDQpsTHZSRXVaWjBsR0FVMXVkZHJ1eHVZZzNETEdSdGNqWDhWV1RDbXAzTGNqMmF3WGFadFhEdFpGY0Y3UlFDdk95DQptTFBvZnZzYThOYU5Hb2s4M0tMSFVHYzBjRGtzNTVEV0NIdkkreFBvaWdVM1NiTDVSUkUxL2tNZUx0K0d5WVM0DQovVmdtYnhNRHRRS0JnRlFEWVhaQXFGUFBZdFFlVk9VOHplU3ExbFVDVGk1QmthWmJlcWNkbkl2WUNxUnIxUkRPDQppNlAxNE15MjM5WWZKQUJGOWU4SG9pVVlHek1RbWY2c0ludGFRRXFpbC82T3BVRWs3ZTE4QUhYTVAvR1hiQU0zDQp1ZWV1dzR4N1M4M1hvTDVqbFFnVnh2TThWZ0F3VDBoaWFVYzdMT1JTVWE2VjU1UXZXTWhnRG0wbEFvR0FOb0wxDQpvcUcrMXVjQ0VjSGlwL3hTUmljREQ2ZTJXcVFzL00vR3NiYkhBL3lUY3d2KzJiZWQrYzdkT0N4UDBraU43dC9yDQpQL1RDQnY4RVlFQ1FOT3VYdXMyUEk3NEZhVUlvQjU0NVNtckFkdUhXa0Y1dlIvVUsrM08zMlVtMXE5TzI4eGtqDQpuMFRZams1VG9UR1lsWUFyT1ZTOE41dWZiYkdTTDNVZHBHV1c0ckVDZ1lFQTlPRXB1UUN2N2pweG5RRUNIMTJ4DQp1QlR3S1dYTGE1aEJtbEtsODd5T05lOFp1NzA0RXQyVDRpQ3h6TXRTb3JJNTRPZU5EV1RKMzZjTGR6UHJSYVZ3DQpHcEkzcGxrRG1DRm5FTmV2RzhneG4ybDNJV1pDSnNQSi94d3BSd0FTOWJwZmlvSGpBWTNadjRXaDBzenBRN0JFDQp2TURzaXA1VCtQdzRnQWpDN0ZGcmprND0NCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0NCg==", "eastus", "Windows") - #main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6], sys.argv[7], sys.argv[8], sys.argv[9], sys.argv[10], sys.argv[11]) \ No newline at end of file + main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6], sys.argv[7], sys.argv[8], sys.argv[9], sys.argv[10], sys.argv[11]) \ No newline at end of file diff --git a/healthcheck/test_refarch_new.py b/healthcheck/test_refarch_new.py index 95dc9ba..0e70ed1 100644 --- a/healthcheck/test_refarch_new.py +++ b/healthcheck/test_refarch_new.py @@ -68,5 +68,4 @@ def main(tenant_id_arg, client_id_arg, client_secret_arg, subscription_id_arg, u print("Date time after deployment and deletion of stack:-", ct) if __name__ == '__main__': - main("99dd3a11-4348-4468-9bdd-e5072b1dc1e6","f0d681d1-15e6-40e6-a8a7-d82f686578a8","6IP70T.0y5~_ldiG.8aNKSK6oKaPOcl5qp","2fe59ed0-c022-4411-b2c3-4a2021c1df9c", "azureadmin", "Password123", "144.212.3.4", "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlEYlRDQ0FsV2dBd0lCQWdJVUYxQW52S3czTXdvei9hUW0vSlJRNnlpTzR2WXdEUVlKS29aSWh2Y05BUUVMDQpCUUF3UlRFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01DbE52YldVdFUzUmhkR1V4SVRBZkJnTlZCQW9NDQpHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpEQWdGdzB5TXpBME1EY3hOVEEyTlRoYUdBOHlNVEl6DQpNRE14TkRFMU1EWTFPRm93UlRFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01DbE52YldVdFUzUmhkR1V4DQpJVEFmQmdOVkJBb01HRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpEQ0NBU0l3RFFZSktvWklodmNODQpBUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTkJwYzF1TVBzVDZONDdRWlVTYjR1a1RYV2swVWcxVDVhYVhzdmZ1DQpZSlVFd2F1TUxiWEk5aEMrdExLcW44UHh5ZE1nTWtLeU9oVWlIRDFKdDNzLzBMRUg5NGg2VGlPa2VsMnNNOTlaDQpQc25ncHhYa0M1ZFhvQ0VkNkUwaGtNUlhpK21aQzM3OXp0dUhkNmlJNU51LzZLdnNsdkJkODJkbmtubm80OS9VDQplcUpKYTdqc0hmSXNLc3ZlZm96YmR4M0ZmS29ZK3hjb2FrMnpKTkZ1eERjTmFabmhYdkJpNDI4UjZ3L3hldjdBDQp1aUV2ekN6alB1bHJ2bTdJVmZ6OUd1dk9xNXJkU3FJVk5MNFFJc1JSNDMyY1V6ejFXREhMMjFsNmwxZmZhSnRKDQppZTV3dzM3UXBhMjE5dFBZY1JXRVVqeDlweUhyOHk1ZGZhNlRYWlVVZjRpNnNCRUNBd0VBQWFOVE1GRXdIUVlEDQpWUjBPQkJZRUZOT0t2SEdOa0xQQXlCWmhwMDdQRk5vZkRXc0ZNQjhHQTFVZEl3UVlNQmFBRk5PS3ZIR05rTFBBDQp5QlpocDA3UEZOb2ZEV3NGTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCDQpBTGRGVGdNdGVJRFVWdm9hcVlPTUh1U3h5MGI4N296Rkp5dzJvS1lMbUZBS3QxOUJxQ2YzZHdkclViRGRGR1gzDQp2TjFlekhvUmFjOUNXbWJGRUZ6MHViUWY5YVRscDU2aGNpWUk4cnB6NU5UNVJ0SmxhY2JQTWZLOXNkZU8zQ09RDQpkenlISUo4U0IybVZ2WFZWR01hOFozZHFadCsveVcrMEljS3YzY2lFNmFENThtTUw3Q25CRzlkanRQWEJnSWYxDQpZTHE5eldhMlplaDlhLy9pUVJLWHRpZnM5anNoTm1wYmtEYmxkdmxXdGJXeTBTU21QTXVuTUsxOCs0RHRKODB5DQptVDFjREVwb0t4WWZPU0ZGUTRHdExXWEsyQ1Jnc3I1MXJYZHNLVE9zK3VObzJONjk2NFRzdnNWRTRDd2t2UmE1DQpCTDFhSjVWZEY3bGNSSmdBM0FnMTZ5VT0NCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NCg==", "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURRYVhOYmpEN0UramVPDQowR1ZFbStMcEUxMXBORklOVStXbWw3TDM3bUNWQk1HcmpDMjF5UFlRdnJTeXFwL0Q4Y25USURKQ3Nqb1ZJaHc5DQpTYmQ3UDlDeEIvZUllazRqcEhwZHJEUGZXVDdKNEtjVjVBdVhWNkFoSGVoTklaREVWNHZwbVF0Ky9jN2JoM2VvDQppT1RiditpcjdKYndYZk5uWjVKNTZPUGYxSHFpU1d1NDdCM3lMQ3JMM242TTIzY2R4WHlxR1BzWEtHcE5zeVRSDQpic1EzRFdtWjRWN3dZdU52RWVzUDhYcit3TG9oTDh3czR6N3BhNzV1eUZYOC9ScnJ6cXVhM1VxaUZUUytFQ0xFDQpVZU45bkZNODlWZ3h5OXRaZXBkWDMyaWJTWW51Y01OKzBLV3R0ZmJUMkhFVmhGSThmYWNoNi9NdVhYMnVrMTJWDQpGSCtJdXJBUkFnTUJBQUVDZ2dFQWFxcHQxaDhUU1RGZkdnTGlzWml2SytjeldkTGpZOXJhb01iblhDbHUyUllVDQpJVDZmYm5pcUo2dlRROVk3NnNkbktsMUNIQXluMllVWnV1eHRzZkRaV0tIaE9NS1FGNEhvOXVSWnNDZzNFSStnDQpOSDRBeUxhYVNCak1laDJCd0Z1bVNpcUFUY0NOREtKcXhhRTZzSldwK2NRZkJHcXhWdTBWZEx1VFZVMmtia1lFDQpRRDVrY0Jod2RDbHdhYUNLS1lhSWVSalFncmROR0U2SWoyREpsNG1IVzQzcmZscWtHb3JRMDJLOE9xOEdXdmJyDQpRNTdKMithN1B3R05naG9BK3U4UDJGSmVXREpCSzlJTnp3ajZhRXJCbWZxZlVib25UOGErdHQ4STkyL1dQdnNFDQo5VmxpSXlDWFFla0hTOHJ3dzk0allvNEFUQmpQT3ErcWRJSFpDWEhQb1FLQmdRRDd5ekhWUHphd2hGSlJuTUk5DQpZNE1nSHdrZU9UMEpMK3FOT1lkc1prVUUxNGk3cThYWXJ0RDBkbnd5UGtQWHd5WFJvNmdSVEU4bUZoVkdISm5xDQp2Y2xHVzFXOTQzRWp1ZGsvTllDaGxNTVAzeG1VQjRMbnJtUVcwRGJUME1EYWN0U2FFZHU2TmlWYmpaekF4ZndsDQpENndDUU1uck9PaVBxa2hCN0FuNG9tTXNiUUtCZ1FEVDVMdGtvUmZCNVVxSXR3Q1ROUTV1anQ1RmhnTlF3WDlnDQpsTHZSRXVaWjBsR0FVMXVkZHJ1eHVZZzNETEdSdGNqWDhWV1RDbXAzTGNqMmF3WGFadFhEdFpGY0Y3UlFDdk95DQptTFBvZnZzYThOYU5Hb2s4M0tMSFVHYzBjRGtzNTVEV0NIdkkreFBvaWdVM1NiTDVSUkUxL2tNZUx0K0d5WVM0DQovVmdtYnhNRHRRS0JnRlFEWVhaQXFGUFBZdFFlVk9VOHplU3ExbFVDVGk1QmthWmJlcWNkbkl2WUNxUnIxUkRPDQppNlAxNE15MjM5WWZKQUJGOWU4SG9pVVlHek1RbWY2c0ludGFRRXFpbC82T3BVRWs3ZTE4QUhYTVAvR1hiQU0zDQp1ZWV1dzR4N1M4M1hvTDVqbFFnVnh2TThWZ0F3VDBoaWFVYzdMT1JTVWE2VjU1UXZXTWhnRG0wbEFvR0FOb0wxDQpvcUcrMXVjQ0VjSGlwL3hTUmljREQ2ZTJXcVFzL00vR3NiYkhBL3lUY3d2KzJiZWQrYzdkT0N4UDBraU43dC9yDQpQL1RDQnY4RVlFQ1FOT3VYdXMyUEk3NEZhVUlvQjU0NVNtckFkdUhXa0Y1dlIvVUsrM08zMlVtMXE5TzI4eGtqDQpuMFRZams1VG9UR1lsWUFyT1ZTOE41dWZiYkdTTDNVZHBHV1c0ckVDZ1lFQTlPRXB1UUN2N2pweG5RRUNIMTJ4DQp1QlR3S1dYTGE1aEJtbEtsODd5T05lOFp1NzA0RXQyVDRpQ3h6TXRTb3JJNTRPZU5EV1RKMzZjTGR6UHJSYVZ3DQpHcEkzcGxrRG1DRm5FTmV2RzhneG4ybDNJV1pDSnNQSi94d3BSd0FTOWJwZmlvSGpBWTNadjRXaDBzenBRN0JFDQp2TURzaXA1VCtQdzRnQWpDN0ZGcmprND0NCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0NCg==", "eastus", "Windows") - #main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6], sys.argv[7], sys.argv[8], sys.argv[9], sys.argv[10], sys.argv[11]) \ No newline at end of file + main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6], sys.argv[7], sys.argv[8], sys.argv[9], sys.argv[10], sys.argv[11]) \ No newline at end of file