Source code for tool_shed.galaxy_install.migrate.common
import ConfigParser
import os
import sys
import galaxy.config
from tool_shed.galaxy_install import tool_migration_manager, installed_repository_manager
[docs]class MigrateToolsApplication( object, galaxy.config.ConfiguresGalaxyMixin ):
"""Encapsulates the state of a basic Galaxy Universe application in order to initiate the Install Manager"""
def __init__( self, tools_migration_config ):
install_dependencies = 'install_dependencies' in sys.argv
galaxy_config_file = 'galaxy.ini'
self.name = 'galaxy'
if '-c' in sys.argv:
pos = sys.argv.index( '-c' )
sys.argv.pop( pos )
galaxy_config_file = sys.argv.pop( pos )
if not os.path.exists( galaxy_config_file ):
print "Galaxy config file does not exist (hint: use '-c config.ini' for non-standard locations): %s" % galaxy_config_file
sys.exit( 1 )
config_parser = ConfigParser.ConfigParser( { 'here' : os.getcwd() } )
config_parser.read( galaxy_config_file )
galaxy_config_dict = {}
for key, value in config_parser.items( "app:main" ):
galaxy_config_dict[ key ] = value
self.config = galaxy.config.Configuration( **galaxy_config_dict )
self.config.update_integrated_tool_panel = True
self._configure_object_store()
self._configure_security()
self._configure_models()
self._configure_datatypes_registry( )
self._configure_tool_data_tables( from_shed_config=True )
self._configure_toolbox()
self._configure_tool_shed_registry()
self.installed_repository_manager = installed_repository_manager.InstalledRepositoryManager( self )
# Get the latest tool migration script number to send to the Install manager.
latest_migration_script_number = int( tools_migration_config.split( '_' )[ 0 ] )
# The value of migrated_tools_config is migrated_tools_conf.xml, and is reserved for
# containing only those tools that have been eliminated from the distribution and moved
# to the tool shed. A side-effect of instantiating the ToolMigrationManager is the automatic
# installation of all appropriate tool shed repositories.
self.tool_migration_manager = \
tool_migration_manager.ToolMigrationManager( app=self,
latest_migration_script_number=latest_migration_script_number,
tool_shed_install_config=os.path.join( self.config.root,
'scripts',
'migrate_tools',
tools_migration_config ),
migrated_tools_config=self.config.migrated_tools_config,
install_dependencies=install_dependencies )
@property
def sa_session( self ):
return self.model.context.current