From fc9566bc2452241a32d150644fc3713d353042e2 Mon Sep 17 00:00:00 2001 From: rocoll <43892674+rocoll@users.noreply.github.com> Date: Thu, 13 Feb 2020 06:33:32 -0500 Subject: [PATCH] Create listallcasservercachestatus.py (#39) Returns list of CAS_DISK_CACHE usage on all CAS servers --- listallcasservercachestatus.py | 89 ++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 listallcasservercachestatus.py diff --git a/listallcasservercachestatus.py b/listallcasservercachestatus.py new file mode 100644 index 0000000..6d8d7f9 --- /dev/null +++ b/listallcasservercachestatus.py @@ -0,0 +1,89 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# listallcasservercachestatus.py +# February 2020 +# +# Usage: +# listallcasservercachestatus.py [--noheader] [-d] +# +# Examples: +# +# 1. Return list of CAS_DISK_CACHE usage on all CAS servers +# ./listallcasservercachestatus.py +# +# Copyright © 2020, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the License); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +debug=False + +# Import Python modules +from tabulate import tabulate # pip install tabulate +import argparse +import swat # pip install swat +import sys +from sharedfunctions import callrestapi + +# Define exception handler so that we only output trace info from errors when in debug mode +def exception_handler(exception_type, exception, traceback, debug_hook=sys.excepthook): + if debug: + debug_hook(exception_type, exception, traceback) + else: + print "%s: %s" % (exception_type.__name__, exception) + +sys.excepthook = exception_handler + +parser = argparse.ArgumentParser() +parser.add_argument("--noheader", action='store_true', help="Do not print the header row") +parser.add_argument("-d","--debug", action='store_true', help="Debug") +args = parser.parse_args() +noheader=args.noheader +debug=args.debug + +# Print header row unless noheader argument was specified +if not noheader: + print('server,host-or-ip,port,restPort, [table]') + +endpoint='/casManagement/servers' +method='get' + +#make the rest call +serverlist_result_json=callrestapi(endpoint,method) + +if debug: + print(serverlist_result_json) + print('serverlist_result_json is a '+type(serverlist_result_json).__name__+' object') #serverlist_result_json is a dictionary + +servers = serverlist_result_json['items'] + +for server in servers: + servername=server['name'] + serverhost=server['host'] + serverport=server['port'] + serverrest=server['restPort'] + + print(servername+','+serverhost+','+str(serverport)+','+str(serverrest)) + + # connect to each CAS server + s = swat.CAS(serverhost, serverport) + # TLS relies on env var $CAS_CLIENT_SSL_CA_LIST=/opt/sas/viya/config/etc/SASSecurityCertificateFramework/cacerts/vault-ca.crt (or local location) + # else "ERROR: SSL Error: Missing CA trust list" + + # get CAS_DISK_CACHE usage + s.accessControl.assumeRole(adminRole="superuser") # superuser role reqd + results = s.builtins.getCacheInfo # returns dictionary and table + + # display table with CAS_DISK_CACHE usage stats + print(tabulate(results,headers='firstrow'))