# # Copyright (c) 2014 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # import os import sys import argparse import sqlite3 database_name = "/var/run/sm/sm.db" def main(): if not os.path.exists(database_name): print "%s not available." % database_name sys.exit(0) try: parser = argparse.ArgumentParser(description='SM Query') subparsers = parser.add_subparsers(help='types') s_parser = subparsers.add_parser('service', help='Query Service') s_parser.set_defaults(which='service') s_parser.add_argument('service_name', help='service name') s_parser = subparsers.add_parser('service-group', help='Query Service Group') s_parser.set_defaults(which='service-group') s_parser.add_argument('service_group_name', nargs='+', help='service group name') s_parser.add_argument("--desired-state", help="display desired state", action="store_true") args = parser.parse_args() if args.which == 'service': database = sqlite3.connect(database_name) cursor = database.cursor() cursor.execute("SELECT NAME, DESIRED_STATE, STATE, STATUS FROM " "SERVICES WHERE NAME = '%s';" % args.service_name) row = cursor.fetchone() if row is None: print "%s is disabled." % args.service_name else: service_name = row[0] state = row[2] status = row[3] if status == 'none': print "%s is %s" % (service_name, state) else: print "%s is %s-%s" % (service_name, state, status) database.close() elif args.which == 'service-group': database = sqlite3.connect(database_name) cursor = database.cursor() cursor.execute("SELECT NAME, DESIRED_STATE, STATE FROM " "SERVICE_GROUPS WHERE NAME IN (%s) AND PROVISIONED='yes';" % ','.join("'%s'"%i for i in args.service_group_name)) rows = cursor.fetchall() if args.desired_state: fmt = "{0} {2} {1}" else: fmt = "{0} {1}" found_list = [] for row in rows: service_group_name = row[0] found_list.append(service_group_name) desired_state = row[1] state = row[2] print fmt.format(service_group_name, state, desired_state) database.close() not_found_list = [] for g in args.service_group_name: if g not in found_list: not_found_list.append(g) if len(not_found_list) > 1: print "%s are not provisioned"%','.join( (g for g in not_found_list)) elif len(not_found_list) == 1: print "%s is not provisioned" % ','.join((g for g in not_found_list)) except KeyboardInterrupt: sys.exit() except Exception as e: print e sys.exit(-1)