Exemple #1
0
    def test_we_dont_call_deregister_when_the_instaces_are_empty(self, mock_landlord, mock_lb):
        load_balancer = Mock()
        mock_connection = Mock()
        mock_landlord.Tenant = StubLandlord
        mock_lb.connect_to_region.return_value = mock_connection
        load_balancer.name = "MyLoadBalancer"
        instances = []

        loadbalancer.dettach(load_balancer, instances)

        assert not mock_lb.connect_to_region.called
        assert not mock_connection.deregister_instances.called
Exemple #2
0
    def test_we_dettach_instances_from_the_load_balancer(self, mock_landlord, mock_lb):
        load_balancer = Mock()
        mock_connection = Mock()
        mock_landlord.Tenant = StubLandlord
        mock_lb.connect_to_region.return_value = mock_connection
        load_balancer.name = "MyLoadBalancer"
        instances = ['a', 'b']

        loadbalancer.dettach(load_balancer, instances)

        mock_lb.connect_to_region.assert_called_with("deploy.region", aws_access_key_id="aws.id", aws_secret_access_key="aws.secret")
        mock_connection.deregister_instances.assert_called_with("MyLoadBalancer", instances)
Exemple #3
0
def deploy(job):
    job.set_status(JobStatus.running)
    project_attributes = job.get_project()
    new_instances = ec2.create_and_start_instances(project_attributes)
    if ec2.is_running(new_instances, project_attributes):
        if project_attributes.get('environment_tier') == EnvironmentTier.WORKER.value:
            old_instances = ec2.get_instances(filters={'tag:Project': project_attributes['name']})
            old_instance_ids = list(set([instance.id for instance in old_instances]) - set(new_instances))
        else:
            load_balancer = loadbalancer.get_loadbalancer(project_attributes)
            old_instance_ids = [instance.id for instance in load_balancer.instances]
            loadbalancer.attach(load_balancer, new_instances)
            loadbalancer.dettach(load_balancer, old_instance_ids)
        ec2.terminate(old_instance_ids)
        job.set_status(JobStatus.done)
    else:
        ec2.terminate(new_instances)
        job.set_status(JobStatus.failed)