Source code for bowl.cli_opts.services

"""
This module is the services command of bowl.

Created on 17 July 2014
@author: Charlie Lewis
"""
import json
import os

[docs]class services(object): """ This class is responsible for the services command of the cli. """ @classmethod
[docs] def main(self, args): services_dir = os.path.join(args.metadata_path, "services") services_dir = os.path.expanduser(services_dir) default_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "containers/.default")) services_dict = {} services_dict['databases'] = [] services_dict['environment'] = [] services_dict['services'] = [] services_dict['tools'] = [] # if services exist, use that, otherwise try to use .default if os.path.exists(services_dir): # !! TODO if not args.z: print "services" elif os.path.exists(default_dir): try: # read oses with open(os.path.join(default_dir, "oses"), 'r') as f: oses = f.read() os_dict = json.loads(oses) services_dict['oses'] = os_dict for os_key in os_dict: # read versions for each os with open(os.path.join(default_dir, os_key, "versions"), 'r') as f: versions = f.read() version_dict = json.loads(versions) services_dict['versions'] = version_dict for version_key in version_dict: # read databases for each version with open(os.path.join(default_dir, os_key, version_key, "databases/databases"), 'r') as f: databases = f.read() databases = json.loads(databases) if args.quiet: for database in databases: services_dict['databases'].append(database) elif args.json: services_dict['databases'].append(databases) else: for database in databases: services_dict['databases'].append(databases[database]['command']) # read environment for each version with open(os.path.join(default_dir, os_key, version_key, "environment/environment"), 'r') as f: environment = f.read() environment = json.loads(environment) if args.quiet: for env in environment: services_dict['environment'].append(env) elif args.json: services_dict['environment'].append(environment) else: for env in environment: services_dict['environment'].append(environment[env]['command']) # read services for each version with open(os.path.join(default_dir, os_key, version_key, "services/services"), 'r') as f: services = f.read() services = json.loads(services) if args.quiet: for service in services: services_dict['services'].append(service) elif args.json: services_dict['services'].append(services) else: for service in services: services_dict['services'].append(services[service]['command']) # read tools for each version with open(os.path.join(default_dir, os_key, version_key, "tools/tools"), 'r') as f: tools = f.read() tools = json.loads(tools) if args.quiet: for tool in tools: services_dict['tools'].append(tool) elif args.json: services_dict['tools'].append(tools) else: for tool in tools: services_dict['tools'].append(tools[tool]['command']) except: if not args.z: print "failed" else: if not args.z: print "no services found!" if not args.z: if args.quiet: for key in services_dict: if key != 'oses' and key != 'versions': print key for service in services_dict[key]: print "\t",service elif args.json: print services_dict else: for key in services_dict: if key != 'oses' and key != 'versions': for service in services_dict[key]: print service return services_dict