Esempio n. 1
0
    def test_deploy_docker_on_vm_swift(self, heat_clnt, mock_clients,
                                       mock_registry, mock_contrib,
                                       mock_get_templ, mock_ua, m_log):
        handler = heat_handler.Handler()

        mock_log = m_log.TenantLogger.return_value.log
        fake_assembly = fakes.FakeAssembly()
        mock_registry.Assembly.get_by_id.return_value = fake_assembly
        fake_template = self._get_fake_template()
        img = "http://a.b.c/d?temp_url_sig=v&temp_url_expires=v"

        mock_contrib.return_value = "robust_file"
        get_file_dict = {}
        get_file_dict[self._get_key()] = "robust_file"

        cfg.CONF.api.image_format = "vm"
        cfg.CONF.worker.image_storage = "swift"
        cfg.CONF.deployer.flavor = "flavor"
        cfg.CONF.deployer.image = "coreos"
        mock_get_templ.return_value = fake_template
        handler._find_id_if_stack_exists = mock.MagicMock(return_value=(None))

        created_stack = {
            "stack": {
                "id": "fake_id",
                "links": [{
                    "href": "http://fake.ref",
                    "rel": "self"
                }]
            }
        }
        heat_clnt.return_value.stacks.create.return_value = created_stack

        handler._check_stack_status = mock.MagicMock()

        handler.deploy(self.ctx, 77, img, 'tenant-name-ts-commit', [80])

        parameters = {
            'name': fake_assembly.uuid,
            'flavor': "flavor",
            'image': "coreos",
            'key_name': "mykey",
            'location': img,
            'du': 'tenant-name-ts-commit',
            'publish_ports': '-p 80:80'
        }

        heat_clnt.return_value.stacks.create.assert_called_once_with(
            stack_name='faker-test_uuid',
            template=fake_template,
            parameters=parameters,
            files=get_file_dict)
        assign_and_create_mock = mock_registry.Component.assign_and_create
        comp_name = 'Heat_Stack_for_%s' % fake_assembly.name
        assign_and_create_mock.assert_called_once_with(self.ctx, fake_assembly,
                                                       comp_name, 'heat_stack',
                                                       'Heat Stack test',
                                                       'http://fake.ref',
                                                       'fake_id')
        self.assertTrue(mock_log.called)
Esempio n. 2
0
 def test_deploy_docker(self, image_format, mock_clients, mock_registry,
                        mock_get_templ):
     handler = heat_handler.Handler()
     image_format.return_value = "docker"
     fake_assembly = fakes.FakeAssembly()
     mock_registry.Assembly.get_by_id.return_value = fake_assembly
     fake_template = json.dumps({'description': 'test'})
     mock_get_templ.return_value = fake_template
     handler._find_id_if_stack_exists = mock.MagicMock(return_value=(None))
     stacks = mock_clients.return_value.heat.return_value.stacks
     stacks.create.return_value = {
         "stack": {
             "id": "fake_id",
             "links": [{
                 "href": "http://fake.ref",
                 "rel": "self"
             }]
         }
     }
     handler._update_assembly_status = mock.MagicMock()
     handler.deploy(self.ctx, 77, 'created_image_id')
     parameters = {'image': 'created_image_id', 'app_name': 'faker'}
     stacks.create.assert_called_once_with(stack_name='faker-test_uuid',
                                           template=fake_template,
                                           parameters=parameters)
     assign_and_create_mock = mock_registry.Component.assign_and_create
     comp_name = 'Heat_Stack_for_%s' % fake_assembly.name
     assign_and_create_mock.assert_called_once_with(self.ctx, fake_assembly,
                                                    comp_name, 'Heat Stack',
                                                    'Heat Stack test',
                                                    'http://fake.ref',
                                                    'fake_id')
Esempio n. 3
0
    def test_successful_deploy_destroys_twins(self, heat_clnt, mock_client,
                                              mr):
        handler = heat_handler.Handler()
        old_app = fakes.FakeAssembly()
        old_app.name = 'old app'
        old_app.status = 'DEPLOYMENT_COMPLETE'

        new_app = fakes.FakeAssembly()
        new_app.id = 9
        new_app.plan_id = old_app.plan_id
        new_app.name = 'new app'
        new_app.status = 'DEPLOYMENT_COMPLETE'

        cfg.CONF.set_override('wait_interval', 0, group='deployer')
        cfg.CONF.set_override('growth_factor', 0, group='deployer')
        cfg.CONF.set_override('max_attempts', 1, group='deployer')

        self.assertEqual(old_app.plan_id, new_app.plan_id)
        self.assertEqual(old_app.plan_uuid, new_app.plan_uuid)
        mr.AssemblyList.get_earlier.return_value = [old_app]

        mock_st_del = heat_clnt.return_value.stacks.delete
        mock_st_get = heat_clnt.return_value.stacks.get

        handler.destroy_assembly = mock.MagicMock()
        handler._destroy_other_assemblies(self.ctx, new_app.id,
                                          heat_clnt.return_value)
        self.assertTrue(mock_st_del.called)
        self.assertTrue(mock_st_get.called)
Esempio n. 4
0
    def test_get_template_vm_swift_error(self, mock_catalog_get, mock_ua):
        handler = heat_handler.Handler()
        fake_assembly = fakes.FakeAssembly()

        exc_obj = exception.ObjectNotFound()
        mock_catalog_get.side_effect = exc_obj

        template_getter = mock.MagicMock()
        template_getter.return_value = self._get_fake_template()
        handler._get_template_for_swift = template_getter

        image_format = 'vm'
        image_storage = 'swift'
        image_loc = 'abc'
        image_name = 'def'
        ports = [80]
        mock_logger = mock.MagicMock()
        template = handler._get_template(self.ctx, image_format, image_storage,
                                         image_loc, image_name, fake_assembly,
                                         ports, mock_logger)
        self.assertIsNone(template)
        mock_ua.assert_called_once_with(self.ctx, fake_assembly.id,
                                        {'status': STATES.ERROR})

        assert not handler._get_template_for_swift.called
Esempio n. 5
0
    def test_destroy_stack_not_found(self, mock_client, mock_registry, m_log,
                                     mock_log_handler, mock_swift_delete):
        fake_assem = fakes.FakeAssembly()
        mock_registry.Assembly.get_by_id.return_value = fake_assem
        fake_image = fakes.FakeImage()
        mock_registry.Image.get_by_id.return_value = fake_image

        handler = heat_handler.Handler()

        mock_log = m_log.TenantLogger.return_value.log

        mock_heat = mock_client.return_value.heat
        mock_del = mock_heat.return_value.stacks.delete
        mock_del.side_effect = exc.HTTPNotFound

        cfg.CONF.deployer.max_attempts = 1
        cfg.CONF.deployer.wait_interval = 0
        cfg.CONF.deployer.growth_factor = 1.2

        with mock.patch.object(handler,
                               "_find_id_if_stack_exists",
                               return_value=42) as mock_find:

            handler.destroy_assembly(self.ctx, fake_assem.id)

            self.assertTrue(mock_find.called)
            self.assertTrue(mock_del.called)
            mock_registry.Image.get_by_id.assert_called_once_with(
                mock.ANY, fake_assem.image_id)
            docker_image_name = fake_image.docker_image_name
            img_filename = docker_image_name.split('-', 1)[1]
            mock_swift_delete.assert_called_once_with('solum_du', img_filename)
            log_handler = mock_log_handler.return_value
            log_handler.delete.assert_called_once_with(fake_assem.uuid)
            self.assertTrue(mock_log.called)
Esempio n. 6
0
 def test_find_id_if_stack_exists(self):
     handler = heat_handler.Handler()
     assem = mock.MagicMock
     assem.heat_stack_component = mock.MagicMock
     assem.heat_stack_component.heat_stack_id = '123'
     id = handler._find_id_if_stack_exists(assem)
     self.assertEqual(id, '123')
Esempio n. 7
0
    def test_deploy_docker_on_vm_with_dreg(self, mock_clients, mock_registry,
                                           mock_get_templ, mock_ua, m_log):
        handler = heat_handler.Handler()

        fake_assembly = fakes.FakeAssembly()

        m_log.TenantLogger.call.return_value = mock.MagicMock()

        mock_registry.Assembly.get_by_id.return_value = fake_assembly
        fake_template = self._get_fake_template()
        template = self._get_tmpl_for_docker_reg(fake_assembly, fake_template,
                                                 'created_image_id')
        cfg.CONF.api.image_format = "vm"
        cfg.CONF.worker.image_storage = "docker_registry"
        mock_get_templ.return_value = template
        handler._find_id_if_stack_exists = mock.MagicMock(return_value=(None))
        stacks = mock_clients.return_value.heat.return_value.stacks
        stacks.create.return_value = {"stack": {
            "id": "fake_id",
            "links": [{"href": "http://fake.ref",
                       "rel": "self"}]}}
        handler._check_stack_status = mock.MagicMock()
        handler.deploy(self.ctx, 77, 'created_image_id', 'image_name', [80])
        stacks = mock_clients.return_value.heat.return_value.stacks
        self.assertTrue(stacks.create.called)
        assign_and_create_mock = mock_registry.Component.assign_and_create
        comp_name = 'Heat_Stack_for_%s' % fake_assembly.name
        assign_and_create_mock.assert_called_once_with(self.ctx,
                                                       fake_assembly,
                                                       comp_name,
                                                       'heat_stack',
                                                       'Heat Stack test',
                                                       'http://fake.ref',
                                                       'fake_id')
Esempio n. 8
0
    def test_destroy_error(self, mock_client, mock_registry, mua, m_log):
        fake_assem = fakes.FakeAssembly()
        mock_registry.Assembly.get_by_id.return_value = fake_assem

        mock_heat = mock_client.return_value.heat
        mock_del = mock_heat.return_value.stacks.delete

        handler = heat_handler.Handler()
        handler._find_id_if_stack_exists = mock.MagicMock(return_value='42')

        cfg.CONF.deployer.max_attempts = 1
        cfg.CONF.deployer.wait_interval = 0
        cfg.CONF.deployer.growth_factor = 1.2

        with mock.patch.object(handler,
                               "_find_id_if_stack_exists",
                               return_value="42"):

            handler.destroy_assembly(self.ctx, fake_assem.id)

            c1 = mock.call(self.ctx, fake_assem.id,
                           {'status': STATES.DELETING})

            c2 = mock.call(self.ctx, fake_assem.id,
                           {'status': STATES.ERROR_STACK_DELETE_FAILED})

            calls = [c1, c2]

            mua.assert_has_calls(calls, any_order=False)

        self.assertTrue(mock_del.called)
Esempio n. 9
0
    def test_destroy_absent(self, mock_client, mock_registry, mock_tlogger,
                            mock_log_handler, mock_swift_delete):

        fake_assem = fakes.FakeAssembly()
        mock_registry.Assembly.get_by_id.return_value = fake_assem
        fake_image = fakes.FakeImage()
        mock_registry.Image.get_by_id.return_value = fake_image

        mock_log = mock_tlogger.TenantLogger.return_value.log
        mock_upload = mock_tlogger.TenantLogger.return_value.upload
        mock_log_del = mock_log_handler.return_value.delete
        mock_heat = mock_client.return_value.heat
        mock_del = mock_heat.return_value.stacks.delete

        hh = heat_handler.Handler()
        with mock.patch.object(hh,
                               "_find_id_if_stack_exists",
                               return_value=None):

            hh.destroy_assembly(self.ctx, fake_assem.id)

        self.assertFalse(mock_del.called)
        self.assertTrue(fake_assem.destroy.called)
        mock_registry.Image.get_by_id.assert_called_once_with(
            mock.ANY, fake_assem.image_id)
        docker_image_name = fake_image.docker_image_name
        img_filename = docker_image_name.split('-', 1)[1]
        mock_swift_delete.assert_called_once_with('solum_du', img_filename)
        self.assertTrue(mock_log.called)
        self.assertTrue(mock_upload.called)
        self.assertEqual(1, mock_log_del.call_count)
        self.assertEqual(mock.call(fake_assem.uuid), mock_log_del.call_args)
Esempio n. 10
0
    def test_successful_deploy_preserves_others(self, mock_client, mr):
        handler = heat_handler.Handler()
        old_app = fakes.FakeAssembly()
        old_app.name = 'old app'
        old_app.plan_id = 1
        old_app.id = 1
        old_app.status = 'READY'

        new_app = fakes.FakeAssembly()
        new_app.id = 1
        new_app.plan_id = 2
        new_app.plan_uuid = 'new fake plan uuid'
        new_app.name = 'new app'
        new_app.status = 'READY'

        cfg.CONF.set_override('wait_interval', 0, group='deployer')
        cfg.CONF.set_override('growth_factor', 0, group='deployer')
        cfg.CONF.set_override('max_attempts', 1, group='deployer')

        self.assertNotEqual(old_app.plan_id, new_app.plan_id)
        self.assertNotEqual(old_app.plan_uuid, new_app.plan_uuid)
        mr.AssemblyList.get_earlier.return_value = [old_app]

        mr.Assembly.get_by_id.return_value = new_app

        mock_heat = mock_client.return_value.heat
        mock_st_del = mock_heat.return_value.stacks.delete
        mock_st_get = mock_heat.return_value.stacks.get

        handler.destroy_assembly = mock.MagicMock()
        handler._destroy_other_assemblies(self.ctx, new_app.id)
        self.assertFalse(mock_st_del.called)
        self.assertFalse(mock_st_get.called)
Esempio n. 11
0
    def test_update_assembly_status_multiple_ports(self, mock_http,
                                                   mock_clients, mock_ua,
                                                   mock_wf_app):
        handler = heat_handler.Handler()
        fake_assembly = fakes.FakeAssembly()
        stack = mock.MagicMock()
        stack.status = 'COMPLETE'
        mock_clients.heat().stacks.get.return_value = stack

        resp = {'status': '200'}
        conn = mock.MagicMock()
        conn.request.return_value = [resp, '']
        mock_http.return_value = conn

        cfg.CONF.deployer.du_attempts = 1

        mock_logger = mock.MagicMock()
        handler._parse_server_ip = mock.MagicMock(return_value=('xyz'))
        handler._check_stack_status(self.ctx, fake_assembly.id, mock_clients,
                                    'fake_id', [80, 81], mock_logger)

        c1 = mock.call(self.ctx, fake_assembly.id, {
            'status': STATES.STARTING_APP,
            'application_uri': 'xyz:[80,81]'
        })

        c2 = mock.call(self.ctx, fake_assembly.id, {'status': 'READY'})

        calls = [c1, c2]

        mock_ua.assert_has_calls(calls, any_order=False)
Esempio n. 12
0
    def test_comp_name_error(self, mock_clients, mock_registry, mock_get_templ,
                             mock_ua, m_log):
        handler = heat_handler.Handler()

        mock_log = m_log.TenantLogger.return_value.log

        fake_assembly = fakes.FakeAssembly()
        mock_registry.Assembly.get_by_id.return_value = fake_assembly
        fake_template = json.dumps({'description': 'test'})
        mock_get_templ.return_value = fake_template
        handler._find_id_if_stack_exists = mock.MagicMock(return_value=(None))
        stacks = mock_clients.return_value.heat.return_value.stacks
        stacks.create.return_value = {
            "stack": {
                "id": "fake_id",
                "links": [{
                    "href": "http://fake.ref",
                    "rel": "self"
                }]
            }
        }
        handler._check_stack_status = mock.MagicMock()
        handler.deploy(self.ctx, 77, 'created_image_id', 'image_name', [80])
        assign_and_create_mock = mock_registry.Component.assign_and_create
        comp_name = 'Heat Stack for %s' % fake_assembly.name
        self.assertRaises(AssertionError,
                          assign_and_create_mock.assert_called_once_with,
                          comp_name)
        self.assertTrue(mock_log.called)
Esempio n. 13
0
 def test_delete_app_artifacts_from_swift_no_image(self, mock_log_handler,
                                                   m_log, mock_registry,
                                                   mock_swift_delete):
     fake_assembly = fakes.FakeAssembly()
     fake_assembly.image_id = None
     handler = heat_handler.Handler()
     handler._delete_app_artifacts_from_swift(self.ctx, mock_log_handler,
                                              fake_assembly)
     self.assertFalse(mock_registry.Image.get_by_id.called)
     self.assertFalse(mock_swift_delete.called)
Esempio n. 14
0
    def test_delete_heat_stack_absent(self, mock_client, mock_registry):
        fake_assem = fakes.FakeAssembly()
        mock_registry.Assembly.get_by_id.return_value = fake_assem

        handler = heat_handler.Handler()
        handler._find_id_if_stack_exists = mock.MagicMock(return_value=None)
        handler.delete_heat_stack(self.ctx, fake_assem.id)

        assert not mock_client.heat.stacks.delete.called
        fake_assem.destroy.assert_called_once()
Esempio n. 15
0
 def test_update_assembly_status_failed(self, mock_clients):
     handler = heat_handler.Handler()
     fake_assembly = fakes.FakeAssembly()
     stack = mock.MagicMock()
     stack.status = 'FAILED'
     mock_clients.heat().stacks.get.return_value = stack
     handler._update_assembly_status(self.ctx, fake_assembly, mock_clients,
                                     'fake_id')
     self.assertEqual(fake_assembly.status, 'ERROR')
     fake_assembly.save.assert_called_once_with(self.ctx)
Esempio n. 16
0
 def test_update_assembly_status(self, mock_clients):
     handler = heat_handler.Handler()
     fake_assembly = fakes.FakeAssembly()
     stack = mock.MagicMock()
     stack.status = 'COMPLETE'
     mock_clients.heat().stacks.get.return_value = stack
     handler._parse_server_url = mock.MagicMock(return_value=('xyz'))
     handler._update_assembly_status(self.ctx, fake_assembly, mock_clients,
                                     'fake_id')
     self.assertEqual(fake_assembly.status, 'READY')
     fake_assembly.save.assert_called_once_with(self.ctx)
Esempio n. 17
0
 def test_delete_app_artifacts_from_swift_no_image(self, mock_log_handler,
                                                   m_log, mock_registry,
                                                   mock_swift_delete):
     fake_assembly = fakes.FakeAssembly()
     fake_assembly.image_id = None
     log_handler = mock_log_handler.return_value
     handler = heat_handler.Handler()
     handler._delete_app_artifacts_from_swift(self.ctx, mock_log_handler,
                                              'fake_log_id', fake_assembly)
     self.assertFalse(mock_registry.Image.get_by_id.called)
     self.assertFalse(mock_swift_delete.called)
     log_handler.delete.assert_called_once_with('fake_log_id')
Esempio n. 18
0
 def test_update_assembly_status_failed(self, mock_clients, mock_ua):
     handler = heat_handler.Handler()
     fake_assembly = fakes.FakeAssembly()
     stack = mock.MagicMock()
     stack.status = 'FAILED'
     mock_clients.heat().stacks.get.return_value = stack
     mock_logger = mock.MagicMock()
     handler._check_stack_status(self.ctx, fake_assembly.id, mock_clients,
                                 'fake_id', [80], mock_logger)
     mock_ua.assert_called_once_with(
         self.ctx, fake_assembly.id,
         {'status': STATES.ERROR_STACK_CREATE_FAILED})
Esempio n. 19
0
    def test_deploy_docker(self, heat_clnt, mock_clients, mock_registry,
                           mock_get_contrib, mock_get_templ, mock_ua, m_log):
        handler = heat_handler.Handler()
        fake_assembly = fakes.FakeAssembly()
        mock_registry.Assembly.get_by_id.return_value = fake_assembly

        m_log.TenantLogger.call.return_value = mock.MagicMock()

        cfg.CONF.api.image_format = "docker"

        mock_get_contrib.return_value = "robust_file"
        get_file_dict = {}
        get_file_dict[self._get_key()] = "robust_file"

        fake_template = self._get_fake_template()
        template = self._get_tmpl_for_docker_reg(fake_assembly, fake_template,
                                                 'created_image_id')
        mock_get_templ.return_value = template

        handler._find_id_if_stack_exists = mock.MagicMock(return_value=(None))
        created_stack = {
            "stack": {
                "id": "fake_id",
                "links": [{
                    "href": "http://fake.ref",
                    "rel": "self"
                }]
            }
        }
        heat_clnt.return_value.stacks.create.return_value = created_stack
        handler._check_stack_status = mock.MagicMock()

        handler.deploy(self.ctx, 77, 'created_image_id', 'image_name', [80])

        parameters = {
            'image': 'created_image_id',
            'app_name': 'faker',
            'port': 80
        }

        heat_clnt.return_value.stacks.create.assert_called_once_with(
            stack_name='faker-test_uuid',
            template=template,
            parameters=parameters,
            files=get_file_dict)
        assign_and_create_mock = mock_registry.Component.assign_and_create
        comp_name = 'Heat_Stack_for_%s' % fake_assembly.name
        assign_and_create_mock.assert_called_once_with(self.ctx, fake_assembly,
                                                       comp_name, 'heat_stack',
                                                       'Heat Stack test',
                                                       'http://fake.ref',
                                                       'fake_id')
Esempio n. 20
0
 def test_parse_server_ip(self):
     handler = heat_handler.Handler()
     heat_output = mock.MagicMock()
     heat_output._info = {"id": "fake_id",
                          "outputs": [{"output_value": "192.168.78.21",
                                       "description": "IP", "output_key":
                                       "public_ip"},
                                      {"output_value":
                                       "http://192.168.78.21:5000",
                                       "description": "URL", "output_key":
                                       "URL"}]}
     host_url = handler._parse_server_ip(heat_output)
     self.assertEqual(host_url, "192.168.78.21")
Esempio n. 21
0
 def test_delete_app_artifacts_from_swift(self, mock_log_handler, m_log,
                                          mock_registry, mock_swift_delete):
     fake_assembly = fakes.FakeAssembly()
     fake_image = fakes.FakeImage()
     mock_registry.Image.get_by_id.return_value = fake_image
     handler = heat_handler.Handler()
     handler._delete_app_artifacts_from_swift(self.ctx, mock_log_handler,
                                              fake_assembly)
     mock_registry.Image.get_by_id.assert_called_once_with(
         mock.ANY, fake_assembly.image_id)
     docker_image_name = fake_image.docker_image_name
     img_filename = docker_image_name.split('-', 1)[1]
     mock_swift_delete.assert_called_once_with('solum_du', img_filename)
Esempio n. 22
0
    def test_deploy(self, mock_clients, mock_registry, mock_get_templ):
        handler = heat_handler.Handler()

        fake_assembly = fakes.FakeAssembly()
        mock_registry.Assembly.get_by_id.return_value = fake_assembly
        fake_template = json.dumps({'description': 'test'})
        mock_get_templ.return_value = fake_template
        handler._find_id_if_stack_exists = mock.MagicMock(return_value=(None))
        stacks = mock_clients.return_value.heat.return_value.stacks
        stacks.create.return_value = {
            "stack": {
                "id": "fake_id",
                "links": [{
                    "href": "http://fake.ref",
                    "rel": "self"
                }]
            }
        }
        neutron = mock_clients.return_value.neutron
        neutron.return_value.list_networks.return_value = {
            "networks": [{
                "router:external": True,
                "id": "public_net_id"
            }, {
                "router:external": False,
                "id": "private_net_id",
                "subnets": ["private_subnet_id"]
            }]
        }
        handler._update_assembly_status = mock.MagicMock()
        handler.deploy(self.ctx, 77, 'created_image_id')
        parameters = {
            'image': 'created_image_id',
            'app_name': 'faker',
            'private_net': 'private_net_id',
            'public_net': 'public_net_id',
            'private_subnet': 'private_subnet_id'
        }
        stacks = mock_clients.return_value.heat.return_value.stacks
        stacks.create.assert_called_once_with(stack_name='faker-test_uuid',
                                              template=fake_template,
                                              parameters=parameters)
        neutron = mock_clients.return_value.neutron
        neutron.return_value.list_networks.assert_called_once_with()
        assign_and_create_mock = mock_registry.Component.assign_and_create
        comp_name = 'Heat_Stack_for_%s' % fake_assembly.name
        assign_and_create_mock.assert_called_once_with(self.ctx, fake_assembly,
                                                       comp_name, 'Heat Stack',
                                                       'Heat Stack test',
                                                       'http://fake.ref',
                                                       'fake_id')
Esempio n. 23
0
    def test_delete_heat_stack_error(self, mock_client, mock_registry):
        fake_assem = fakes.FakeAssembly()
        mock_registry.Assembly.get_by_id.return_value = fake_assem

        handler = heat_handler.Handler()
        handler._find_id_if_stack_exists = mock.MagicMock(return_value='42')

        cfg.CONF.deployer.max_attempts = 1
        cfg.CONF.deployer.wait_interval = 0
        cfg.CONF.deployer.growth_factor = 1.2

        handler.delete_heat_stack(self.ctx, fake_assem.id)

        mock_client.heat.stacks.delete.assert_called_once()
        fake_assem.save.assert_called_once_with(self.ctx)
        self.assertEqual(STATES.ERROR_STACK_DELETE_FAILED, fake_assem.status)
Esempio n. 24
0
    def test_check_stack_status(self, mock_clients, mock_ua):
        handler = heat_handler.Handler()
        fake_assembly = fakes.FakeAssembly()

        mock_clients.heat().stacks.get.side_effect = Exception()

        cfg.CONF.set_override('wait_interval', 1, group='deployer')
        cfg.CONF.set_override('growth_factor', 1, group='deployer')
        cfg.CONF.set_override('max_attempts', 1, group='deployer')

        mock_logger = mock.MagicMock()
        handler._check_stack_status(self.ctx, fake_assembly.id, mock_clients,
                                    'fake_id', [80], mock_logger)
        mock_ua.assert_called_once_with(
            self.ctx, fake_assembly.id,
            {'status': STATES.ERROR_STACK_CREATE_FAILED})
Esempio n. 25
0
    def test_get_template(self, mua):
        handler = heat_handler.Handler()
        fake_assembly = fakes.FakeAssembly()

        image_format = 'vm'
        image_storage = 'glance'
        image_loc = 'abc'
        image_name = 'def'
        ports = [80]
        mock_logger = mock.MagicMock()
        template = handler._get_template(self.ctx, image_format, image_storage,
                                         image_loc, image_name, fake_assembly,
                                         ports, mock_logger)
        self.assertIsNone(template)
        mua.assert_called_once_with(self.ctx, fake_assembly.id,
                                    {'status': STATES.ERROR})
Esempio n. 26
0
    def test_delete_heat_stack_success(self, mock_client, mock_registry):
        fake_assem = fakes.FakeAssembly()
        mock_registry.Assembly.get_by_id.return_value = fake_assem

        handler = heat_handler.Handler()

        handler._find_id_if_stack_exists = mock.MagicMock(return_value='42')
        handler._get_stack_id_from_heat = mock.MagicMock(return_value=None)

        cfg.CONF.deployer.max_attempts = 1
        cfg.CONF.deployer.wait_interval = 0
        cfg.CONF.deployer.growth_factor = 1.2

        handler.delete_heat_stack(self.ctx, fake_assem.id)

        mock_client.heat.stacks.delete.assert_called_once()
        fake_assem.destroy.assert_called_once()
Esempio n. 27
0
    def test_unsuccessful_deploy_preserves_everyone(self, mr):
        handler = heat_handler.Handler()
        old_app = fakes.FakeAssembly()
        old_app.name = 'old app'
        old_app.status = 'READY'

        new_app = fakes.FakeAssembly()
        new_app.id = 9
        new_app.plan_id = old_app.plan_id
        new_app.name = 'new app'
        new_app.status = 'ERROR'

        self.assertEqual(old_app.plan_id, new_app.plan_id)
        self.assertEqual(old_app.plan_uuid, new_app.plan_uuid)
        mr.AssemblyList.get_earlier.return_value = []

        handler.destroy_assembly = mock.MagicMock()
        handler._destroy_other_assemblies(self.ctx, new_app.id)
        self.assertEqual(0, handler.destroy_assembly.call_count)
Esempio n. 28
0
    def test_update_assembly_status_failed(self, heat_clnt, mock_clients,
                                           mock_ua):

        cfg.CONF.set_override('wait_interval', 1, group='deployer')
        cfg.CONF.set_override('growth_factor', 1, group='deployer')
        cfg.CONF.set_override('max_attempts', 1, group='deployer')

        handler = heat_handler.Handler()
        fake_assembly = fakes.FakeAssembly()
        stack = mock.MagicMock()
        stack.status = 'FAILED'
        heat_clnt.return_value.stacks.get.return_value = stack
        mock_logger = mock.MagicMock()
        handler._check_stack_status(self.ctx, fake_assembly.id,
                                    heat_clnt.return_value, 'fake_id', [80],
                                    mock_logger)
        mock_ua.assert_called_once_with(
            self.ctx, fake_assembly.id,
            {'status': STATES.ERROR_STACK_CREATE_FAILED})
Esempio n. 29
0
    def test_get_parameters_for_docker(self, mock_clients, mock_heat_utils):

        handler = heat_handler.Handler()
        fake_assembly = fakes.FakeAssembly()

        image_format = 'docker'
        image_loc = 'abc'
        image_name = 'abc'
        ports = [80]

        mock_logger = mock.MagicMock()

        params = handler._get_parameters(self.ctx, image_format, image_loc,
                                         image_name, fake_assembly, ports,
                                         mock_clients, mock_logger)

        self.assertEqual(params['app_name'], fake_assembly.name)
        self.assertEqual(params['image'], 'abc')
        self.assertEqual(params['port'], 80)
Esempio n. 30
0
    def test_successful_deploy_preserves_notreadies(self, heat_clnt, mr):
        handler = heat_handler.Handler()
        old_app = fakes.FakeAssembly()
        old_app.name = 'old app'
        old_app.status = 'BUILDING'

        new_app = fakes.FakeAssembly()
        new_app.id = 9
        new_app.plan_id = old_app.plan_id
        new_app.name = 'new app'
        new_app.status = 'DEPLOYMENT_COMPLETE'

        self.assertEqual(old_app.plan_id, new_app.plan_id)
        self.assertEqual(old_app.plan_uuid, new_app.plan_uuid)
        mr.AssemblyList.get_earlier.return_value = []

        handler.destroy_assembly = mock.MagicMock()
        handler._destroy_other_assemblies(self.ctx, new_app.id, heat_clnt)
        self.assertEqual(0, handler.destroy_assembly.call_count)