Example #1
0
def mark_for_deployment(git_url, deploy_group, service, commit):
    """Mark a docker image for deployment"""
    tag = get_paasta_tag_from_deploy_group(identifier=deploy_group, desired_state='deploy')
    remote_tag = format_tag(tag)
    ref_mutator = remote_git.make_force_push_mutate_refs_func(
        targets=[remote_tag],
        sha=commit,
    )
    try:
        remote_git.create_remote_refs(git_url=git_url, ref_mutator=ref_mutator, force=True)
    except Exception as e:
        loglines = ["Failed to mark %s for deployment in deploy group %s!" % (commit, deploy_group)]
        for line in str(e).split('\n'):
            loglines.append(line)
        return_code = 1
    else:
        loglines = ["Marked %s for deployment in deploy group %s" % (commit, deploy_group)]
        return_code = 0

    for logline in loglines:
        _log(
            service=service,
            line=logline,
            component='deploy',
            level='event',
        )
    return return_code
def mark_for_deployment(git_url, deploy_group, service, commit):
    """Mark a docker image for deployment"""
    remote_branch = get_paasta_branch_from_deploy_group(identifier=deploy_group)
    ref_mutator = remote_git.make_force_push_mutate_refs_func(
        target_branches=[remote_branch],
        sha=commit,
    )
    try:
        remote_git.create_remote_refs(git_url=git_url, ref_mutator=ref_mutator, force=True)
    except Exception as e:
        loglines = ["Failed to mark %s in for deployment in deploy group %s!" % (commit, deploy_group)]
        for line in str(e).split('\n'):
            loglines.append(line)
        return_code = 1
    else:
        loglines = ["Marked %s in for deployment in deploy group %s" % (commit, deploy_group)]
        return_code = 0

    for logline in loglines:
        _log(
            service=service,
            line=logline,
            component='deploy',
            level='event',
        )
    return return_code
Example #3
0
def mark_for_deployment(git_url, deploy_group, service, commit):
    """Mark a docker image for deployment"""
    tag = get_paasta_tag_from_deploy_group(
        identifier=deploy_group, desired_state="deploy"
    )
    remote_tag = format_tag(tag)
    ref_mutator = remote_git.make_force_push_mutate_refs_func(
        targets=[remote_tag], sha=commit
    )

    max_attempts = 3
    for attempt in range(1, max_attempts + 1):
        try:
            remote_git.create_remote_refs(
                git_url=git_url, ref_mutator=ref_mutator, force=True
            )
        except Exception:
            logline = "Failed to mark {} for deployment in deploy group {}! (attempt {}/{})".format(
                commit, deploy_group, attempt, max_attempts
            )
            _log(service=service, line=logline, component="deploy", level="event")
            time.sleep(5 * attempt)
        else:
            logline = f"Marked {commit} for deployment in deploy group {deploy_group}"
            _log(service=service, line=logline, component="deploy", level="event")

            audit_action_details = {"deploy_group": deploy_group, "commit": commit}
            _log_audit(
                action="mark-for-deployment",
                action_details=audit_action_details,
                service=service,
            )

            return 0
    return 1
def mark_for_deployment(git_url, cluster, instance, service, commit):
    """Mark a docker image for deployment"""
    remote_branch = get_paasta_branch(cluster=cluster, instance=instance)
    ref_mutator = remote_git.make_force_push_mutate_refs_func(
        target_branches=[remote_branch],
        sha=commit,
    )
    try:
        remote_git.create_remote_refs(git_url=git_url, ref_mutator=ref_mutator, force=True)
    except Exception as e:
        loglines = ["Failed to mark %s in for deployment on %s in the %s cluster!" % (commit, instance, cluster)]
        for line in str(e).split('\n'):
            loglines.append(line)
        return_code = 1
    else:
        loglines = ["Marked %s in for deployment on %s in the %s cluster" % (commit, instance, cluster)]
        return_code = 0

    for logline in loglines:
        _log(
            service=service,
            line=logline,
            component='deploy',
            level='event',
            cluster=cluster,
            instance=instance,
        )
    return return_code
Example #5
0
def test_make_force_push_mutate_refs_func_overwrites_shas():
    targets = ["refs/heads/targeta", "refs/tags/targetb"]
    input_refs = {
        b"refs/heads/foo": b"12345",
        b"refs/heads/targeta": b"12345",
        b"refs/tags/targetb": b"12345",
        b"refs/heads/ignored": b"12345",
        b"refs/tags/blah": b"12345",
    }
    expected = {
        b"refs/heads/foo": b"12345",
        b"refs/heads/targeta": b"newsha",
        b"refs/tags/targetb": b"newsha",
        b"refs/heads/ignored": b"12345",
        b"refs/tags/blah": b"12345",
    }

    mutate_refs_func = remote_git.make_force_push_mutate_refs_func(
        targets=targets, sha="newsha")
    actual = mutate_refs_func(input_refs)
    assert actual == expected
    assert all([isinstance(k, bytes) for k in actual])
Example #6
0
def test_make_force_push_mutate_refs_func_overwrites_shas():
    target_branches = ['targeta', 'targetb']
    newsha = 'newsha'
    input_refs = {
        'refs/heads/foo': '12345',
        'refs/heads/targeta': '12345',
        'refs/heads/targetb': '12345',
        'refs/heads/ignored': '12345',
        'refs/tags/blah': '12345',
    }
    expected = {
        'refs/heads/foo': '12345',
        'refs/heads/targeta': newsha,
        'refs/heads/targetb': newsha,
        'refs/heads/ignored': '12345',
        'refs/tags/blah': '12345',
    }

    mutate_refs_func = remote_git.make_force_push_mutate_refs_func(
        target_branches=target_branches,
        sha=newsha,
    )
    actual = mutate_refs_func(input_refs)
    assert actual == expected
Example #7
0
def test_make_force_push_mutate_refs_func_overwrites_shas():
    targets = ['refs/heads/targeta', 'refs/tags/targetb']
    newsha = 'newsha'
    input_refs = {
        'refs/heads/foo': '12345',
        'refs/heads/targeta': '12345',
        'refs/tags/targetb': '12345',
        'refs/heads/ignored': '12345',
        'refs/tags/blah': '12345',
    }
    expected = {
        'refs/heads/foo': '12345',
        'refs/heads/targeta': newsha,
        'refs/tags/targetb': newsha,
        'refs/heads/ignored': '12345',
        'refs/tags/blah': '12345',
    }

    mutate_refs_func = remote_git.make_force_push_mutate_refs_func(
        targets=targets,
        sha=newsha,
    )
    actual = mutate_refs_func(input_refs)
    assert actual == expected
Example #8
0
def mark_for_deployment(git_url, cluster, instance, service, commit):
    """Mark a docker image for deployment"""
    remote_branch = get_paasta_branch(cluster=cluster, instance=instance)
    ref_mutator = remote_git.make_force_push_mutate_refs_func(
        target_branches=[remote_branch],
        sha=commit,
    )
    try:
        remote_git.create_remote_refs(git_url=git_url,
                                      ref_mutator=ref_mutator,
                                      force=True)
    except Exception as e:
        loglines = [
            "Failed to mark %s in for deployment on %s in the %s cluster!" %
            (commit, instance, cluster)
        ]
        for line in str(e).split('\n'):
            loglines.append(line)
        return_code = 1
    else:
        loglines = [
            "Marked %s in for deployment on %s in the %s cluster" %
            (commit, instance, cluster)
        ]
        return_code = 0

    for logline in loglines:
        _log(
            service=service,
            line=logline,
            component='deploy',
            level='event',
            cluster=cluster,
            instance=instance,
        )
    return return_code
Example #9
0
def test_make_force_push_mutate_refs_func_overwrites_shas():
    targets = ['refs/heads/targeta', 'refs/tags/targetb']
    input_refs = {
        b'refs/heads/foo': b'12345',
        b'refs/heads/targeta': b'12345',
        b'refs/tags/targetb': b'12345',
        b'refs/heads/ignored': b'12345',
        b'refs/tags/blah': b'12345',
    }
    expected = {
        b'refs/heads/foo': b'12345',
        b'refs/heads/targeta': b'newsha',
        b'refs/tags/targetb': b'newsha',
        b'refs/heads/ignored': b'12345',
        b'refs/tags/blah': b'12345',
    }

    mutate_refs_func = remote_git.make_force_push_mutate_refs_func(
        targets=targets,
        sha='newsha',
    )
    actual = mutate_refs_func(input_refs)
    assert actual == expected
    assert all([isinstance(k, bytes) for k in actual])