Esempio n. 1
0
    def _server_create_software_config(self,
                                       server_name='server_sc',
                                       md=None,
                                       ret_tmpl=False):
        stack_name = '%s_s' % server_name
        (tmpl, stack) = self._setup_test_stack(stack_name, server_sc_tmpl)
        self.stack = stack
        self.server_props = tmpl.t['resources']['server']['properties']
        if md is not None:
            tmpl.t['resources']['server']['metadata'] = md

        stack.stack_user_project_id = '8888'
        resource_defns = tmpl.resource_definitions(stack)
        server = deployed_server.DeployedServer('server',
                                                resource_defns['server'],
                                                stack)
        self.patchobject(server, 'heat')
        scheduler.TaskRunner(server.create)()

        self.assertEqual('4567', server.access_key)
        self.assertEqual('8901', server.secret_key)
        self.assertEqual('1234', server._get_user_id())
        self.assertEqual('POLL_SERVER_CFN',
                         server.properties.get('software_config_transport'))

        self.assertTrue(stack.access_allowed('4567', 'server'))
        self.assertFalse(stack.access_allowed('45678', 'server'))
        self.assertFalse(stack.access_allowed('4567', 'wserver'))
        if ret_tmpl:
            return server, tmpl
        else:
            return server
Esempio n. 2
0
    def test_server_create_deployment_swift_data_bad_container(self):
        server_name = 'server'
        stack_name = '%s_s' % server_name
        (tmpl, stack) = self._setup_test_stack(
            stack_name, ds_deployment_data_bad_container_tmpl)

        props = tmpl.t['resources']['server']['properties']
        props['software_config_transport'] = 'POLL_TEMP_URL'
        self.server_props = props

        resource_defns = tmpl.resource_definitions(stack)
        server = deployed_server.DeployedServer(server_name,
                                                resource_defns[server_name],
                                                stack)

        self.assertRaises(exception.StackValidationFailed, server.validate)
Esempio n. 3
0
    def test_server_create_deployment_swift_data_none_object(self):
        server_name = 'server'
        stack_name = '%s_s' % server_name
        (tmpl,
         stack) = self._setup_test_stack(stack_name,
                                         ds_deployment_data_none_object_tmpl)

        props = tmpl.t['resources']['server']['properties']
        props['software_config_transport'] = 'POLL_TEMP_URL'
        self.server_props = props

        resource_defns = tmpl.resource_definitions(stack)
        server = deployed_server.DeployedServer(server_name,
                                                resource_defns[server_name],
                                                stack)

        sc = mock.Mock()
        sc.head_account.return_value = {
            'x-account-meta-temp-url-key': 'secrit'
        }
        sc.url = 'http://192.0.2.2'

        self.patchobject(swift.SwiftClientPlugin, '_create', return_value=sc)
        scheduler.TaskRunner(server.create)()
        # self._create_test_server(server_name)
        metadata_put_url = server.data().get('metadata_put_url')
        md = server.metadata_get()
        metadata_url = md['os-collect-config']['request']['metadata_url']
        self.assertNotEqual(metadata_url, metadata_put_url)

        container_name = 'my-custom-container'
        object_name = '0'
        test_path = '/v1/AUTH_test_tenant_id/%s/%s' % (container_name,
                                                       object_name)
        self.assertEqual(test_path, urlparse.urlparse(metadata_put_url).path)
        self.assertEqual(test_path, urlparse.urlparse(metadata_url).path)
        sc.put_object.assert_called_once_with(container_name, object_name,
                                              jsonutils.dumps(md))

        sc.head_container.return_value = {'x-container-object-count': '0'}
        server._delete_temp_url()
        sc.delete_object.assert_called_once_with(container_name, object_name)
        sc.head_container.assert_called_once_with(container_name)
        sc.delete_container.assert_called_once_with(container_name)
        return metadata_url, server
Esempio n. 4
0
    def _server_create_software_config_zaqar(self,
                                             server_name='server_zaqar',
                                             md=None):
        stack_name = '%s_s' % server_name
        (tmpl, stack) = self._setup_test_stack(stack_name, server_zaqar_tmpl)
        self.stack = stack
        props = tmpl.t['resources']['server']['properties']
        props['software_config_transport'] = 'ZAQAR_MESSAGE'
        if md is not None:
            tmpl.t['resources']['server']['metadata'] = md
        self.server_props = props

        resource_defns = tmpl.resource_definitions(stack)
        server = deployed_server.DeployedServer('server',
                                                resource_defns['server'],
                                                stack)

        zcc = self.patchobject(zaqar.ZaqarClientPlugin, 'create_for_tenant')
        zc = mock.Mock()
        zcc.return_value = zc
        queue = mock.Mock()
        zc.queue.return_value = queue
        scheduler.TaskRunner(server.create)()

        metadata_queue_id = server.data().get('metadata_queue_id')
        md = server.metadata_get()
        queue_id = md['os-collect-config']['zaqar']['queue_id']
        self.assertEqual(queue_id, metadata_queue_id)

        zc.queue.assert_called_once_with(queue_id)
        queue.post.assert_called_once_with({
            'body': server.metadata_get(),
            'ttl': 3600
        })

        zc.queue.reset_mock()

        server._delete_queue()

        zc.queue.assert_called_once_with(queue_id)
        zc.queue(queue_id).delete.assert_called_once_with()
        return queue_id, server
Esempio n. 5
0
    def _server_create_software_config_poll_heat(self,
                                                 server_name='server_heat',
                                                 md=None):
        stack_name = '%s_s' % server_name
        (tmpl, stack) = self._setup_test_stack(stack_name, server_heat_tmpl)
        self.stack = stack
        props = tmpl.t['resources']['server']['properties']
        props['software_config_transport'] = 'POLL_SERVER_HEAT'
        if md is not None:
            tmpl.t['resources']['server']['metadata'] = md
        self.server_props = props

        resource_defns = tmpl.resource_definitions(stack)
        server = deployed_server.DeployedServer('server',
                                                resource_defns['server'],
                                                stack)

        scheduler.TaskRunner(server.create)()
        self.assertEqual('1234', server._get_user_id())

        self.assertTrue(stack.access_allowed('1234', 'server'))
        self.assertFalse(stack.access_allowed('45678', 'server'))
        self.assertFalse(stack.access_allowed('4567', 'wserver'))
        return stack, server