Beispiel #1
0
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
Beispiel #2
0
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()
Beispiel #4
0
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
Beispiel #5
0
 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