Exemplo n.º 1
0
def get_best_version(arg_name,
                     default_arg_name,
                     replicated_channel,
                     app_slug,
                     app_channel,
                     scheduler=None):
    if app_slug and app_channel:
        app_version = get_version_for_app(app_slug,
                                          app_channel,
                                          replicated_channel,
                                          scheduler=scheduler)
        if app_version:
            return app_version

    arg_version = get_arg(arg_name, get_arg(default_arg_name, None))
    if arg_version:
        # versions were different between products
        if semver.lt(arg_version, '2.1.0', loose=False):
            return arg_version
        # this only checks replicated_v2 product version
        if (replicated_channel == 'stable'
                and get_arg('build', '') == 'prestable'):
            # prestable builds use beta channel version
            if is_valid_replicated_version(arg_version,
                                           'beta',
                                           scheduler=scheduler):
                return arg_version
        elif is_valid_replicated_version(arg_version,
                                         replicated_channel,
                                         scheduler=scheduler):
            return arg_version
        raise Exception('version {} does not exist'.format(arg_version))

    return get_current_replicated_version(replicated_channel,
                                          scheduler=scheduler)
Exemplo n.º 2
0
def comparison():
  # [version1, version2]
  # version1 should be greater than version2
  tests = [['0.0.0', '0.0.0-foo'],
    ['0.0.1', '0.0.0'],
    ['1.0.0', '0.9.9'],
    ['0.10.0', '0.9.0'],
    ['0.99.0', '0.10.0'],
    ['2.0.0', '1.2.3'],
    ['v0.0.0', '0.0.0-foo'],
    ['v0.0.1', '0.0.0'],
    ['v1.0.0', '0.9.9'],
    ['v0.10.0', '0.9.0'],
    ['v0.99.0', '0.10.0'],
    ['v2.0.0', '1.2.3'],
    ['0.0.0', 'v0.0.0-foo'],
    ['0.0.1', 'v0.0.0'],
    ['1.0.0', 'v0.9.9'],
    ['0.10.0', 'v0.9.0'],
    ['0.99.0', 'v0.10.0'],
    ['2.0.0', 'v1.2.3'],
    ['1.2.3', '1.2.3-asdf'],
    ['1.2.3', '1.2.3-4'],
    ['1.2.3', '1.2.3-4-foo'],
    ['1.2.3-5-foo', '1.2.3-5'],
    ['1.2.3-5', '1.2.3-4'],
    ['1.2.3-5-foo', '1.2.3-5-Foo'],
    ['3.0.0', '2.7.2+asdf'],
    ['1.2.3-a.10', '1.2.3-a.5'],
    ['1.2.3-a.b', '1.2.3-a.5'],
    ['1.2.3-a.b', '1.2.3-a'],
    ['1.2.3-a.b.c.10.d.5', '1.2.3-a.b.c.5.d.100']
  ]

  for v in tests:
    v0 = v[0]
    v1 = v[1]
    ok(gt(v0, v1), "gt('" + v0 + "', '" + v1 + "')")
    ok(lt(v1, v0), "lt('" + v1 + "', '" + v0 + "')")
    ok(not gt(v1, v0), "!gt('" + v1 + "', '" + v0 + "')")
    ok(not lt(v0, v1), "!lt('" + v0 + "', '" + v1 + "')")
    ok(eq(v0, v0), "eq('" + v0 + "', '" + v0 + "')")
    ok(eq(v1, v1), "eq('" + v1 + "', '" + v1 + "')")
    ok(ne(v0, v1), "ne('" + v0 + "', '" + v1 + "')")
Exemplo n.º 3
0
def get_replicated_compose_v2(replicated_channel=None,
                              app_slug=None,
                              app_channel=None):
    replicated_channel = replicated_channel if replicated_channel else 'stable'
    print('Looking up tags for:',
          replicated_channel,
          app_slug,
          app_channel,
          file=sys.stderr)

    scheduler = constant.SCHEDULER_SWARM
    replicated_version = helpers.get_replicated_version(replicated_channel,
                                                        app_slug,
                                                        app_channel,
                                                        scheduler=scheduler)
    replicated_ui_version = helpers.get_replicated_ui_version(
        replicated_channel, app_slug, app_channel, scheduler=scheduler)
    replicated_operator_version = helpers.get_replicated_operator_version(
        replicated_channel, app_slug, app_channel, scheduler=scheduler)

    replicated_tag = '{}-{}'.format(replicated_channel, replicated_version)
    replicated_ui_tag = '{}-{}'.format(replicated_channel,
                                       replicated_ui_version)
    replicated_operator_tag = '{}-{}'.format(replicated_channel,
                                             replicated_operator_version)

    data_dir_path = helpers.get_arg('data_dir_path', '/tmp')
    log_level = helpers.get_arg('log_level', '')
    operator_tags = helpers.get_arg('operator_tags', 'local')
    public_address = helpers.get_arg('public_address', '')
    ui_bind_port = helpers.get_arg('ui_bind_port', '')

    if semver.lt(replicated_version, '2.10.0', loose=False):
        tmpl_file = 'swarm/docker-compose-v2-legacy.yml'
    else:
        tmpl_file = 'swarm/docker-compose-v2.yml'
    response = render_template(
        tmpl_file,
        **helpers.template_args(
            channel_name=replicated_channel,
            replicated_tag=replicated_tag,
            replicated_ui_tag=replicated_ui_tag,
            replicated_operator_tag=replicated_operator_tag,
            # query params
            data_dir_path=data_dir_path,
            log_level=log_level,
            operator_tags=operator_tags,
            public_address=public_address,
            ui_bind_port=ui_bind_port,
        ))

    if helpers.get_arg('accept', None) == 'text':
        return Response(response, mimetype='text/plain')
    return Response(response, mimetype='application/x-yaml')
Exemplo n.º 4
0
def equality():
  # [version1, version2]
  # version1 should be equivalent to version2
  tests = [['1.2.3', 'v1.2.3'],
    ['1.2.3', '=1.2.3'],
    ['1.2.3', 'v 1.2.3'],
    ['1.2.3', '= 1.2.3'],
    ['1.2.3', ' v1.2.3'],
    ['1.2.3', ' =1.2.3'],
    ['1.2.3', ' v 1.2.3'],
    ['1.2.3', ' = 1.2.3'],
    ['1.2.3-0', 'v1.2.3-0'],
    ['1.2.3-0', '=1.2.3-0'],
    ['1.2.3-0', 'v 1.2.3-0'],
    ['1.2.3-0', '= 1.2.3-0'],
    ['1.2.3-0', ' v1.2.3-0'],
    ['1.2.3-0', ' =1.2.3-0'],
    ['1.2.3-0', ' v 1.2.3-0'],
    ['1.2.3-0', ' = 1.2.3-0'],
    ['1.2.3-1', 'v1.2.3-1'],
    ['1.2.3-1', '=1.2.3-1'],
    ['1.2.3-1', 'v 1.2.3-1'],
    ['1.2.3-1', '= 1.2.3-1'],
    ['1.2.3-1', ' v1.2.3-1'],
    ['1.2.3-1', ' =1.2.3-1'],
    ['1.2.3-1', ' v 1.2.3-1'],
    ['1.2.3-1', ' = 1.2.3-1'],
    ['1.2.3-beta', 'v1.2.3-beta'],
    ['1.2.3-beta', '=1.2.3-beta'],
    ['1.2.3-beta', 'v 1.2.3-beta'],
    ['1.2.3-beta', '= 1.2.3-beta'],
    ['1.2.3-beta', ' v1.2.3-beta'],
    ['1.2.3-beta', ' =1.2.3-beta'],
    ['1.2.3-beta', ' v 1.2.3-beta'],
    ['1.2.3-beta', ' = 1.2.3-beta'],
    ['1.2.3-beta+build', ' = 1.2.3-beta+otherbuild'],
    ['1.2.3+build', ' = 1.2.3+otherbuild'],
    ['1.2.3-beta+build', '1.2.3-beta+otherbuild'],
    ['1.2.3+build', '1.2.3+otherbuild'],
    ['  v1.2.3+build', '1.2.3+otherbuild']
  ]

  for v in tests:
    v0 = v[0]
    v1 = v[1]
    ok(eq(v0, v1), "eq('" + v0 + "', '" + v1 + "')")
    ok(not ne(v0, v1), "!ne('" + v0 + "', '" + v1 + "')")
    ok(not gt(v0, v1), "!gt('" + v0 + "', '" + v1 + "')")
    ok(ge(v0, v1), "ge('" + v0 + "', '" + v1 + "')")
    ok(not lt(v0, v1), "!lt('" + v0 + "', '" + v1 + "')")
    ok(le(v0, v1), "le('" + v0 + "', '" + v1 + "')")
Exemplo n.º 5
0
def get_additional_etc_mounts(version_tag):
    if semver.lt(version_tag, '2.5.0', loose=False):
        return ('-v /etc/replicated.conf:/etc/replicated.conf '
                '-v /etc/replicated.alias:/etc/replicated.alias '
                '-v /etc/docker/certs.d:/host/etc/docker/certs.d')
    return ''
Exemplo n.º 6
0
def get_root_volume_mount(version_tag):
    if semver.lt(version_tag, '2.1.0-alpha', loose=False):
        return '-v /:/replicated/host:ro'
    return ''
Exemplo n.º 7
0
def get_premkit_data_dir(replicated_tag):
    if semver.lt(replicated_tag, '2.13.0', loose=False):
        return '/premkit/data'
    elif semver.lt(replicated_tag, '2.13.1', loose=False):
        return '/tmp/premkit-data'
    return ''
Exemplo n.º 8
0
def get_port_range(replicated_tag):
    if semver.lt(replicated_tag, '2.0.1654', loose=False):
        return '9874-9880:9874-9880/tcp'
    return '9874-9879:9874-9879/tcp'
Exemplo n.º 9
0
def test_lt(v0, v1, loose):
    from semver import lt
    assert not (lt(v0, v1, loose)) is True
Exemplo n.º 10
0
def snapshots_use_overlay(replicated_version):
    if semver.lt(replicated_version, '2.22.0', loose=False):
        return False
    return True
Exemplo n.º 11
0
def test_nlt(v0, v1, loose):
    from semver import lt
    assert (not lt(v0, v1, loose)) is True
Exemplo n.º 12
0
def test_nlt(v0, v1, loose):
    from semver import lt
    assert (not lt(v0, v1, loose)) is True
Exemplo n.º 13
0
def test_lt(v0, v1, loose):
    from semver import lt
    assert lt(v1, v0, loose) is True
Exemplo n.º 14
0
def test_lt(v0, v1, loose):
    from semver import lt
    assert not (lt(v0, v1, loose)) is True
Exemplo n.º 15
0
def get_operator_additional_etc_mounts(version_tag):
    if semver.lt(version_tag, '2.5.0', loose=False):
        return '-v /etc/docker/certs.d:/host/etc/docker/certs.d'
    return ''
Exemplo n.º 16
0
def get_replicated_username(version_tag):
    if semver.lt(version_tag, '2.5.0', loose=False):
        return 'root'
    return 'replicated'
Exemplo n.º 17
0
def test_lt(v0, v1, loose):
    from semver import lt
    assert lt(v1, v0, loose) is True