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
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
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])
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
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
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
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])