def open_from_local(directory, encryption_key=None): """ Opens a CLI instance from within a parrotfish directory. For example, if the following exists:: FishTank (Master or root directory) |──nursery (Aquarium session) | └──Category1 (Protocol Category) | |──.env_pkl (SessionEnvironment1's AqSession) | |──protocols (protocols folder) this method will attempt to open "FishTank" using the 'env.json' located within FishTank. If it does not exist and an encryption key is provided, a new 'env.json' will be created. :param directory: directory path pointing to the parrotfish folder :type directory: str :param encryption_key: optional encryption_key to use :type encryption_key: str :return: CLI instance :rtype: CLI """ sm_dir = os.path.dirname(directory) sm_name = os.path.basename(directory) sm = SessionManager(sm_dir, sm_name, meta_dir=directory) if encryption_key: sm.update_encryption_key(encryption_key) sm.load() cli = CLI(sm) cli._save() return cli
def open_from_global(): """ Opens a CLI instance from globally stored environment file that points to a particular directory on the local machine. :return: CLI instance :rtype: CLI """ sm = SessionManager(tempfile.mkdtemp()) sm.load() cli = CLI(sm) return cli
def test_session_manager_save_and_load(sm, credentials): sm.register_session(**credentials['nursery']) sm.register_session(**credentials['production']) sm.save() copied_sm = SessionManager(sm.abspath, meta_dir=sm.metadata.abspath, meta_name=sm.metadata.env_settings.name) copied_sm.load() assert len(copied_sm._children) == len(sm._children) assert copied_sm.sessions.keys() == sm.sessions.keys()
def test_load(cli, credentials): assert len(cli.sessions) == 0 cli.register(**credentials['nursery']) cli._save() # load another cli using same files old_sm = cli._session_manager copied_sm = SessionManager(old_sm.abspath, meta_dir=old_sm.metadata.abspath, meta_name=old_sm.metadata.env_settings.name) copied_sm.load() cli2 = CLI(copied_sm) assert len(cli.sessions) == 1 assert len(cli2.sessions) == 1
def load(self): """Loads the environment""" if not self.session_manager.metadata.exists(): self.session_manager = SessionManager('.') else: self.session_manager = SessionManager.load() logger.cli("Environment file loaded ({})".format( self.session_manager.metadata.abspath)) logger.cli("environment loaded") self.print_env() return self.session_manager