Beispiel #1
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)
Beispiel #2
0
    def test_we_return_true_if_terminate_succeed(self, mock_landlord, mock_ec2):
        properties = {'region': 'myRegion', 'environment': 'STAGE', 'domain': 'this.is.awesome'}
        instances = ['i-278219', 'i-82715']
        mock_landlord.Tenant = StubLandlord
        mock_connection = Mock()
        mock_ec2.connect_to_region.return_value = mock_connection
        mock_connection.terminate_instances.return_value = ['i-278219', 'i-82715']

        result = ec2.terminate(instances)
        mock_ec2.connect_to_region.assert_called_with('deploy.region', aws_access_key_id='aws.id',
                                                      aws_secret_access_key='aws.secret')
        mock_connection.terminate_instances.assert_called_with(instances)
        self.assertEquals(True, result)
Beispiel #3
0
 def test_we_return_false_when_we_pass_an_empty_array(self):
     properties = {'region': 'myRegion', 'environment': 'STAGE', 'domain': 'this.is.awesome'}
     self.assertEquals(False, ec2.terminate([]))