Mercurial > repos > yating-l > gonramp_apollo_tools
diff apollo/ApolloInstance.py @ 0:ce4f91831680 draft default tip
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 5367a00befb467f162d1870edb91f9face72e894
author | yating-l |
---|---|
date | Fri, 16 Feb 2018 10:57:13 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/apollo/ApolloInstance.py Fri Feb 16 10:57:13 2018 -0500 @@ -0,0 +1,80 @@ +#!/usr/bin/env python +import os +import json +import shutil +import tempfile +import logging +import random +import string +from util import subtools +from mako.lookup import TemplateLookup + +from ApolloOrganism import ApolloOrganism +from ApolloUser import ApolloUser + +class ApolloInstance(object): + def __init__(self, apollo_host, apollo_admin, tool_directory): + self.apollo_host = apollo_host + self.tool_directory = tool_directory + self.logger = logging.getLogger(__name__) + self.apollo_admin = apollo_admin + self.apolloTemplate = self._getApolloTemplate() + self._arrow_init() + + + def _arrow_init(self): + subtools.verify_user_login(self.apollo_admin['user_email'], self.apollo_admin['password'], self.apollo_host) + arrow_config = tempfile.NamedTemporaryFile(bufsize=0) + with open(arrow_config.name, 'w') as conf: + htmlMakoRendered = self.apolloTemplate.render( + apollo_host = self.apollo_host, + admin_user = self.apollo_admin['user_email'], + admin_pw = self.apollo_admin['password'] + ) + conf.write(htmlMakoRendered) + + home_dir = os.path.expanduser('~') + arrow_config_dir = os.path.join(home_dir, '.apollo-arrow.yml') + shutil.copyfile(arrow_config.name, arrow_config_dir) + self.logger.debug("Initated arrow: apollo-arrow.yml= %s", arrow_config_dir) + + #TODO: Encode admin password + ''' + def _generatePassword(self, length=8): + chars = string.digits + string.letters + pw = ''.join([random.choice(chars) for _ in range(length)]) + return pw + ''' + + def _getApolloTemplate(self): + mylookup = TemplateLookup(directories=[os.path.join(self.tool_directory, 'templates')], + output_encoding='utf-8', encoding_errors='replace') + apolloTemplate = mylookup.get_template("apollo-arrow.yml") + return apolloTemplate + + + def manageApolloOrganism(self, organism_name, organism_dir, action): + organism = ApolloOrganism(organism_name, organism_dir) + if action == "add": + organism.addOrganism() + self.logger.info("Successfully add a new organism (%s) to Apollo", organism_name) + elif action == "overwrite": + organism.overwriteOrganism() + self.logger.info("Successfully overwrite the organism %s", organism_name) + else: + self.logger.error("Invalid operation %s", action) + exit(-1) + + def manageApolloUser(self, operations_dictionary = dict()): + for operation, users_list in operations_dictionary.items(): + apollo_user = ApolloUser(users_list) + if operation == "create": + apollo_user.createApolloUser() + elif operation == "delete": + apollo_user.deleteApolloUser() + elif operation == "add": + apollo_user.addApolloUserToGroup() + elif operation == "remove": + apollo_user.removeApolloUserFromeGroup() + +