summaryrefslogtreecommitdiff
path: root/tests/paas-setup-check/paas-setup-check.py
diff options
context:
space:
mode:
authorckonstanski <kostcarl@isu.edu>2026-07-30 18:17:14 -0600
committerckonstanski <kostcarl@isu.edu>2026-07-30 18:17:14 -0600
commit640ff61422bc0ee3966941b93d9889ddbbd38d77 (patch)
treeabf1c08f5d38ee53ec8b29dc4f425722517505e6 /tests/paas-setup-check/paas-setup-check.py
parent22dae02a86c1fce71091bfa5289cf99abba1b217 (diff)
more filesHEADmaster
Diffstat (limited to 'tests/paas-setup-check/paas-setup-check.py')
-rw-r--r--tests/paas-setup-check/paas-setup-check.py189
1 files changed, 189 insertions, 0 deletions
diff --git a/tests/paas-setup-check/paas-setup-check.py b/tests/paas-setup-check/paas-setup-check.py
new file mode 100644
index 0000000..a6a5119
--- /dev/null
+++ b/tests/paas-setup-check/paas-setup-check.py
@@ -0,0 +1,189 @@
+import subprocess
+import os
+import json
+import requests
+import sys
+import csv
+import re
+
+class PaaSSetupCheck():
+
+ def run_test(self, site_name):
+ try:
+ network_ok = False
+ namespace_ok = False
+ network_unreachable = False
+ cc_unreachable = False
+ url = 'https://middleware.vcpfe.vzwops.com/orchestration/remote-regions/' + site_name + '/site-details'
+ network_setup_url = 'https://middleware.vcpfe.vzwops.com/orchestration/remote-regions/' + site_name + '/setup-network'
+ namespace_setup_url = 'https://middleware.vcpfe.vzwops.com/orchestration/setup-cluster/' + site_name
+
+ #url = 'http://middleware.meter.vzwops.com:3080/orchestration/remote-regions/' + site_name + '/site-details'
+ #network_setup_url = 'http://middleware.meter.vzwops.com:3080/orchestration/remote-regions/' + site_name + '/setup-network'
+ #namespace_setup_url = 'http://middleware.meter.vzwops.com:3080/orchestration/setup-cluster/' + site_name
+
+ #namespace_setup_url_1 = 'https://middleware.vcpfe.vzwops.com/orchestration/setup-cluster/' + site_name + '?network_setup=false'
+ #url = 'http://localhost:8000/orchestration/remote-regions/' + site_name + '/site-details'
+ #network_setup_url = 'http://localhost:8000/orchestration/remote-regions/' + site_name + '/setup-network'
+ #namespace_setup_url = 'http://localhost:8000/orchestration/setup-cluster/' + site_name
+
+ auth = ('SVC-Far-Edge','QxbV44IU4P7t7rN44dxK4xyPB');
+
+ resp = requests.get(url, auth=auth, verify=False)
+ if resp.status_code == 500:
+ network_unreachable = True
+ print(site_name + ' ssh network unreachable')
+ else:
+ print(resp.json())
+
+ cc_status = resp.json()['setup_details']['online_status']
+ if not cc_status:
+ cc_unreachable = True
+ else:
+ namespaces = resp.json()['setup_details']['namespaces']
+ for namespace in namespaces:
+ print('namespace: ' + namespace)
+ if 'Unable to connect to the server' in namespace:
+ network_unreachable = True
+ print(site_name + ' k8s network unreachable')
+ break
+ else:
+ x = re.search("^wsbomagj-.*[0-9]$", namespace.split(' ')[0])
+ if x:
+ # check secrets
+ secrets = resp.json()['setup_details']['ns_secrets']
+ total_secrets = 0
+ for secret in secrets:
+ if 'admin-registry-secret' in secret:
+ total_secrets = total_secrets + 1
+ if 'ceph-pool-kube-rbd' in secret:
+ total_secrets = total_secrets + 1
+ if 'default-token' in secret:
+ total_secrets = total_secrets + 1
+ if 'vran-serviceaccount-token' in secret:
+ total_secrets = total_secrets + 1
+
+ if total_secrets == 4:
+ # check service accounts
+ total_sa = 0
+ serviceaccounts = resp.json()['setup_details']['ns_service_accounts']
+ for sa in serviceaccounts:
+ if 'default' in sa:
+ total_sa = total_sa + 1
+ if 'vran-serviceaccount' in sa:
+ total_sa = total_sa + 1
+
+ if total_sa == 2:
+ print(site_name + ': ' + namespace + ' namespace is created')
+ namespace_ok = True
+
+ if not network_unreachable and not cc_unreachable:
+ network_no = len(resp.json()['setup_details']['network_details'])
+ if network_no and network_no >= 15:
+ print(site_name + ' network setup succeeded')
+ network_ok = True;
+
+ if namespace_ok:
+ if network_ok:
+ print(site_name + " both namespace and network setup correct. yay.")
+ else:
+ print(site_name + ' namespace is okay, network setup failed.')
+ print('calling setup-network for: ' + site_name)
+ # call network_setup
+ network_setup_resp = requests.put(network_setup_url, auth=auth, verify=False)
+ else:
+ if network_ok:
+ print(site_name + " namespace setup failed, network okay.")
+ print('calling setup-cluster with network_setup=false query parameter.')
+ payload = {'network_setup': 'false'}
+ namespace_setup_resp = requests.get(namespace_setup_url, auth=auth, params=payload, verify=False)
+ else:
+ print(site_name + 'both namespace and network NOT setup')
+ namespace_setup_resp = requests.get(namespace_setup_url, auth=auth, verify=False)
+ print('called setup-cluster')
+
+ except Exception as e:
+ print(e)
+
+ return network_ok, namespace_ok, network_unreachable, cc_unreachable
+
+if __name__ == '__main__':
+
+ if len(sys.argv) < 1:
+ print("Usage:")
+ print(" python paas-set-check.py <site_list_csv_file>")
+ exit(0)
+
+ site_list_file = sys.argv[1]
+ print("Input WR installed site list file:" + site_list_file)
+ paasSetupCheck = PaaSSetupCheck()
+
+ with open('network_setup_succeed.csv', mode='w') as succeed_file:
+ with open('network_setup_fail.csv', mode='w') as fail_file:
+ with open('namespace_setup_succeed.csv', mode='w') as namespace_succeed_file:
+ with open('namespace_setup_fail.csv', mode='w') as namespace_fail_file:
+ with open('network-namespace_setup_succeed.csv', mode='w') as network_namespace_succeed_file:
+ with open('network-unreachable.csv', mode='w') as network_unreachable_file:
+ with open('cc-unreachable.csv', mode='w') as cc_unreachable_file:
+ writer0 = csv.writer(succeed_file, delimiter=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL)
+ writer1 = csv.writer(fail_file, delimiter=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL)
+ writer2 = csv.writer(namespace_succeed_file, delimiter=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL)
+ writer3 = csv.writer(namespace_fail_file, delimiter=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL)
+ writer4 = csv.writer(network_namespace_succeed_file, delimiter=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL)
+ writer5 = csv.writer(network_unreachable_file, delimiter=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL)
+ writer6 = csv.writer(cc_unreachable_file, delimiter=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL)
+ with open(site_list_file) as csv_file:
+ csv_reader = csv.reader(csv_file, delimiter=',')
+ line_count = 0
+ ok_count = 0
+ bad_count = 0
+ network_ok_count = 0
+ network_not_ok_count = 0
+ namespace_ok_count = 0
+ namespace_not_ok_count= 0
+ cc_unreachable_count = 0
+ for row in csv_reader:
+ print(f'\t{row[0]}')
+ #site_name = 'wsbomagj-d325030-001';
+ site_name = row[0];
+ network_ok, namespace_ok, network_unreachable, cc_unreachable = paasSetupCheck.run_test(site_name)
+ print(network_ok, namespace_ok)
+
+ if network_ok and namespace_ok:
+ writer4.writerow({site_name})
+ ok_count += 1
+
+ if network_unreachable:
+ writer5.writerow({site_name})
+ bad_count += 1
+
+ if cc_unreachable:
+ writer6.writerow({site_name})
+ cc_unreachable_count += 1
+
+ if network_ok:
+ writer0.writerow({site_name})
+ network_ok_count += 1
+ elif not network_unreachable:
+ writer1.writerow({site_name})
+ network_not_ok_count += 1
+ print(site_name + ' network setup failed')
+
+ if namespace_ok:
+ writer2.writerow({site_name})
+ namespace_ok_count += 1
+ elif not network_unreachable:
+ writer3.writerow({site_name})
+ namespace_not_ok_count += 1
+ print(site_name + ' namespace setup failed')
+
+ line_count += 1
+
+ print(f'Processed {line_count} lines.')
+ print(f'{ok_count} of {line_count} ready-to-go sites. file: network-namespace_setup_succeed.csv')
+ print(f'{bad_count} of {line_count} bad sites. file: network-unreachable.csv')
+ print(f'{cc_unreachable_count} of {line_count} central controller unreachable sites. file: cc-unreachable.csv')
+ print(f'{network_ok_count} of {line_count} sites with no network problem. file: network_setup_succeed.csv')
+ print(f'{network_not_ok_count} of {line_count} sites with network problem. file: network_setup_fail.csv')
+ print(f'{namespace_ok_count} of {line_count} sites with no namespace problem. file:namespace_setup_succeed.csv')
+ print(f'{namespace_not_ok_count} of {line_count} sites with namespace problem. file: namespace_setup_fail.csv')