Mercurial > repos > yating-l > jbrowsehubtoapollo
diff apollo/ApolloInstance.py @ 3:6f262a92e8dc draft default tip
planemo upload for repository https://github.com/Yating-L/suite_gonramp_apollo.git commit 91b46f7c891c2466bc5b6a063411cdae75964515-dirty
author | yating-l |
---|---|
date | Mon, 27 Nov 2017 12:06:18 -0500 |
parents | 8ff4b84d709f |
children |
line wrap: on
line diff
--- a/apollo/ApolloInstance.py Wed Oct 25 12:41:34 2017 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -#!/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 - - -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 createApolloUser(self, apollo_user, admin=None): - p = subtools.arrow_create_user(apollo_user.user_email, apollo_user.firstname, apollo_user.lastname, apollo_user.password, admin) - user_info = json.loads(p) - user_id = user_info.get('userId') - if not user_id: - self.logger.debug("Cannot create new user: %s; The user may already exist", apollo_user.user_email) - subtools.verify_user_login(apollo_user.user_email, apollo_user.password, self.apollo_host) - user_id = subtools.arrow_get_users(apollo_user.user_email) - self.logger.debug("Got user_id for new or existing user: user_id = %s", str(user_id)) - return user_id - - def grantPermission(self, user_id, organism_id, **user_permissions): - subtools.arrow_update_organism_permissions(user_id, organism_id, **user_permissions) - self.logger.debug("Grant user %s permissions to organism %s, permissions = %s", str(user_id), str(organism_id), ','.join(user_permissions)) - - def addOrganism(self, organism_name, organism_dir): - p = subtools.arrow_add_organism(organism_name, organism_dir) - if not p: - self.logger.error("The user is not authorized to add organism") - exit(-1) - organism = json.loads(p) - organism_id = organism['id'] - self.logger.debug("Added new organism to Apollo instance, %s", p) - return organism_id - - def loadHubToApollo(self, apollo_user, organism_name, organism_dir, admin_user=False, **user_permissions): - #user_id = self.createApolloUser(apollo_user, admin_user) - organism_id = self.addOrganism(organism_name, organism_dir) - #self.grantPermission(user_id, organism_id, **user_permissions) - self.logger.debug("Successfully load the hub to Apollo") \ No newline at end of file