Ejemplo n.º 1
0
def server(ctx, config):
    """
    task server:

    Calamari server setup.  Add role 'calamari.server' to the remote
    that will run the webapp.  'calamari.restapi' role must be present
    to serve as the cluster-api target for calamari-server.  Only one
    of calamari.server and calamari.restapi roles is supported currently.

    For example::

        roles:
        - [calamari.server]
        - [mon.0, calamari.restapi]
        - [osd.0, osd.1]
        tasks:
        - calamari.restapi:
        - calamari.server:
    """
    overrides = ctx.config.get('overrides', {})
    teuthology.deep_merge(config, overrides.get('calamari.server', {}))

    remote = _remotes(ctx, lambda r: r.startswith('calamari.server'))
    if not remote:
        raise RuntimeError('No role configured')

    restapi_remote = _remotes(ctx, lambda r: r.startswith('calamari.restapi'))
    if not restapi_remote:
        raise RuntimeError('Must supply calamari.restapi role')

    remote = remote[0]
    restapi_remote = restapi_remote[0]

    try:
        # sqlite3 command is required; on some platforms it's already
        # there and not removable (required for, say yum)
        sqlite_package = pkg.get_package_name('sqlite', remote)
        if sqlite_package and not pkg.install_package(sqlite_package, remote):
            raise RuntimeError('{} install failed'.format(sqlite_package))

        if not pkg.install_package('calamari-server', remote) or \
           not pkg.install_package('calamari-clients', remote) or \
           not _disable_default_nginx(remote) or \
           not _setup_calamari_cluster(remote, restapi_remote):
            raise RuntimeError('Server installation failure')

        log.info('client/server setup complete')
        yield
    finally:
        pkg.remove_package('calamari-server', remote)
        pkg.remove_package('calamari-clients', remote)
        if sqlite_package:
            pkg.remove_package(sqlite_package, remote)
Ejemplo n.º 2
0
def server(ctx, config):
    """
    task server:

    Calamari server setup.  Add role 'calamari.server' to the remote
    that will run the webapp.  'calamari.restapi' role must be present
    to serve as the cluster-api target for calamari-server.  Only one
    of calamari.server and calamari.restapi roles is supported currently.

    For example::

        roles:
        - [calamari.server]
        - [mon.0, calamari.restapi]
        - [osd.0, osd.1]
        tasks:
        - calamari.restapi:
        - calamari.server:
    """
    overrides = ctx.config.get('overrides', {})
    teuthology.deep_merge(config, overrides.get('calamari.server', {}))

    remote = _remotes(ctx, lambda r: r.startswith('calamari.server'))
    if not remote:
        raise RuntimeError('No role configured')

    restapi_remote = _remotes(ctx, lambda r: r.startswith('calamari.restapi'))
    if not restapi_remote:
        raise RuntimeError('Must supply calamari.restapi role')

    remote = remote[0]
    restapi_remote = restapi_remote[0]

    try:
        # sqlite3 command is required; on some platforms it's already
        # there and not removable (required for, say yum)
        sqlite_package = pkg.get_package_name('sqlite', remote)
        if sqlite_package and not pkg.install_package(sqlite_package, remote):
            raise RuntimeError('{} install failed'.format(sqlite_package))

        if not pkg.install_package('calamari-server', remote) or \
           not pkg.install_package('calamari-clients', remote) or \
           not _disable_default_nginx(remote) or \
           not _setup_calamari_cluster(remote, restapi_remote):
            raise RuntimeError('Server installation failure')

        log.info('client/server setup complete')
        yield
    finally:
        pkg.remove_package('calamari-server', remote)
        pkg.remove_package('calamari-clients', remote)
        if sqlite_package:
            pkg.remove_package(sqlite_package, remote)
Ejemplo n.º 3
0
 def test_get_package_name_not_found(self):
     remote = Mock()
     remote.os.package_type = "rpm"
     assert packaging.get_package_name('notthere', remote) is None
Ejemplo n.º 4
0
 def test_get_package_name_rpm(self):
     remote = Mock()
     remote.os.package_type = "rpm"
     assert packaging.get_package_name('sqlite', remote) is None
Ejemplo n.º 5
0
 def test_get_package_name_deb(self):
     remote = Mock()
     remote.os.package_type = "deb"
     assert packaging.get_package_name('sqlite', remote) == "sqlite3"
Ejemplo n.º 6
0
 def test_get_package_name_not_found(self):
     remote = Mock()
     remote.os.package_type = "rpm"
     assert packaging.get_package_name('notthere', remote) is None
Ejemplo n.º 7
0
 def test_get_package_name_rpm(self):
     remote = Mock()
     remote.os.package_type = "rpm"
     assert packaging.get_package_name('sqlite', remote) is None
Ejemplo n.º 8
0
 def test_get_package_name_deb(self):
     remote = Mock()
     remote.os.package_type = "deb"
     assert packaging.get_package_name('sqlite', remote) == "sqlite3"
Ejemplo n.º 9
0
 def test_get_package_name_not_found(self, m_misc):
     m_misc.get_system_type.return_value = "rpm"
     assert packaging.get_package_name('notthere', Mock()) is None
Ejemplo n.º 10
0
 def test_get_package_name_rpm(self, m_misc):
     m_misc.get_system_type.return_value = "rpm"
     assert packaging.get_package_name('sqlite', Mock()) is None
Ejemplo n.º 11
0
 def test_get_package_name_deb(self, m_misc):
     m_misc.get_system_type.return_value = "deb"
     assert packaging.get_package_name('sqlite', Mock()) == "sqlite3"
Ejemplo n.º 12
0
 def test_get_package_name_not_found(self, m_misc):
     m_misc.get_system_type.return_value = "rpm"
     assert packaging.get_package_name('notthere', Mock()) is None
Ejemplo n.º 13
0
 def test_get_package_name_rpm(self, m_misc):
     m_misc.get_system_type.return_value = "rpm"
     assert packaging.get_package_name('sqlite', Mock()) is None
Ejemplo n.º 14
0
 def test_get_package_name_deb(self, m_misc):
     m_misc.get_system_type.return_value = "deb"
     assert packaging.get_package_name('sqlite', Mock()) == "sqlite3"