def get_branches(service): paasta_branches = set(get_branches_for_service(SOA_DIR, service)) remote_refs = remote_git.list_remote_refs(utils.get_git_url(service)) for branch in paasta_branches: if 'refs/heads/%s' % branch in remote_refs: yield branch
def get_branches(service): paasta_branches = set(get_branches_for_service(SOA_DIR, service)) remote_refs = remote_git.list_remote_refs(utils.get_git_url(service)) for branch in paasta_branches: if 'refs/heads/%s' % branch in remote_refs: yield branch
def test_get_branches_for_service(): fake_dir = '/mail/var/tea' fake_srv = 'boba' fake_branches = ['red', 'green', 'blue', 'orange', 'white', 'black'] expected = set([ 'red', 'green', 'blue', 'orange', 'white', 'black', 'cluster_a.chronos_job', 'cluster_b.chronos_job', 'cluster_c.chronos_job' ]) with contextlib.nested( mock.patch( 'paasta_tools.generate_deployments_for_service.list_clusters', return_value=['cluster_a', 'cluster_b', 'cluster_c']), mock.patch( 'paasta_tools.generate_deployments_for_service.get_service_instance_list', side_effect=lambda service, cluster, instance_type: [( '', 'main_example'), ('', 'canary_example')] if instance_type == 'marathon' else [('', 'chronos_job')]), mock.patch( 'paasta_tools.generate_deployments_for_service.load_marathon_service_config', side_effect=lambda service, instance, cluster, soa_dir: MarathonServiceConfig( service=service, cluster=cluster, instance=instance, config_dict={'deploy_group': fake_branches.pop()}, branch_dict={}, )), mock.patch( 'paasta_tools.generate_deployments_for_service.load_chronos_job_config', side_effect=lambda service, instance, cluster, soa_dir: ChronosJobConfig( service=service, cluster=cluster, instance=instance, config_dict={}, branch_dict={}, )), ) as ( list_clusters_patch, get_service_instance_list_patch, load_marathon_config_patch, load_chronos_config_patch, ): actual = generate_deployments_for_service.get_branches_for_service( fake_dir, fake_srv) assert expected == actual # three clusters each having a canary and main marathon instance equals six instances total assert load_marathon_config_patch.call_count == 6 # three clusters each having one chronos job equals six instances total assert load_chronos_config_patch.call_count == 3