Merge "Don't store rsrc_data before zaqar queue created"
This commit is contained in:
commit
dbf32307f5
|
@ -77,6 +77,7 @@ class BaseServer(stack_user.StackUser):
|
||||||
for k in existing:
|
for k in existing:
|
||||||
existing[k] = None
|
existing[k] = None
|
||||||
|
|
||||||
|
queue_id = self.data().get('metadata_queue_id')
|
||||||
if self.transport_poll_server_heat(props):
|
if self.transport_poll_server_heat(props):
|
||||||
occ.update({'heat': {
|
occ.update({'heat': {
|
||||||
'user_id': self._get_user_id(),
|
'user_id': self._get_user_id(),
|
||||||
|
@ -88,8 +89,7 @@ class BaseServer(stack_user.StackUser):
|
||||||
collectors.append('heat')
|
collectors.append('heat')
|
||||||
|
|
||||||
elif self.transport_zaqar_message(props):
|
elif self.transport_zaqar_message(props):
|
||||||
queue_id = self.physical_resource_name()
|
queue_id = queue_id or self.physical_resource_name()
|
||||||
self.data_set('metadata_queue_id', queue_id)
|
|
||||||
occ.update({'zaqar': {
|
occ.update({'zaqar': {
|
||||||
'user_id': self._get_user_id(),
|
'user_id': self._get_user_id(),
|
||||||
'password': self.password,
|
'password': self.password,
|
||||||
|
@ -123,20 +123,19 @@ class BaseServer(stack_user.StackUser):
|
||||||
self.data_set('metadata_object_name', object_name)
|
self.data_set('metadata_object_name', object_name)
|
||||||
|
|
||||||
collectors.append('request')
|
collectors.append('request')
|
||||||
occ.update({'request': {
|
occ.update({'request': {'metadata_url': url}})
|
||||||
'metadata_url': url}})
|
|
||||||
|
|
||||||
collectors.append('local')
|
collectors.append('local')
|
||||||
self.metadata_set(meta)
|
self.metadata_set(meta)
|
||||||
|
|
||||||
# push replacement polling config to any existing push-based sources
|
# push replacement polling config to any existing push-based sources
|
||||||
queue_id = self.data().get('metadata_queue_id')
|
|
||||||
if queue_id:
|
if queue_id:
|
||||||
zaqar_plugin = self.client_plugin('zaqar')
|
zaqar_plugin = self.client_plugin('zaqar')
|
||||||
zaqar = zaqar_plugin.create_for_tenant(
|
zaqar = zaqar_plugin.create_for_tenant(
|
||||||
self.stack.stack_user_project_id, self._user_token())
|
self.stack.stack_user_project_id, self._user_token())
|
||||||
queue = zaqar.queue(queue_id)
|
queue = zaqar.queue(queue_id)
|
||||||
queue.post({'body': meta, 'ttl': zaqar_plugin.DEFAULT_TTL})
|
queue.post({'body': meta, 'ttl': zaqar_plugin.DEFAULT_TTL})
|
||||||
|
self.data_set('metadata_queue_id', queue_id)
|
||||||
|
|
||||||
object_name = self.data().get('metadata_object_name')
|
object_name = self.data().get('metadata_object_name')
|
||||||
if object_name:
|
if object_name:
|
||||||
|
|
|
@ -16,6 +16,7 @@ import contextlib
|
||||||
import copy
|
import copy
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from keystoneauth1 import exceptions as ks_exceptions
|
||||||
from neutronclient.v2_0 import client as neutronclient
|
from neutronclient.v2_0 import client as neutronclient
|
||||||
from novaclient import exceptions as nova_exceptions
|
from novaclient import exceptions as nova_exceptions
|
||||||
from oslo_serialization import jsonutils
|
from oslo_serialization import jsonutils
|
||||||
|
@ -977,7 +978,7 @@ class ServersTest(common.HeatTestCase):
|
||||||
'deployments': []
|
'deployments': []
|
||||||
}, server.metadata_get())
|
}, server.metadata_get())
|
||||||
|
|
||||||
def _server_create_software_config_zaqar(self, md=None):
|
def _prepare_for_server_create(self, md=None):
|
||||||
self.patchobject(nova.NovaClientPlugin, '_create',
|
self.patchobject(nova.NovaClientPlugin, '_create',
|
||||||
return_value=self.fc)
|
return_value=self.fc)
|
||||||
return_server = self.fc.servers.list()[1]
|
return_server = self.fc.servers.list()[1]
|
||||||
|
@ -994,14 +995,20 @@ class ServersTest(common.HeatTestCase):
|
||||||
server = servers.Server('WebServer',
|
server = servers.Server('WebServer',
|
||||||
resource_defns['WebServer'], stack)
|
resource_defns['WebServer'], stack)
|
||||||
self.patchobject(server, 'store_external_ports')
|
self.patchobject(server, 'store_external_ports')
|
||||||
|
self.patchobject(self.fc.servers, 'create',
|
||||||
|
return_value=return_server)
|
||||||
|
|
||||||
|
return server, stack
|
||||||
|
|
||||||
|
def _server_create_software_config_zaqar(self, md=None):
|
||||||
|
server, stack = self._prepare_for_server_create(md)
|
||||||
|
|
||||||
zcc = self.patchobject(zaqar.ZaqarClientPlugin, 'create_for_tenant')
|
zcc = self.patchobject(zaqar.ZaqarClientPlugin, 'create_for_tenant')
|
||||||
zc = mock.Mock()
|
zc = mock.Mock()
|
||||||
zcc.return_value = zc
|
zcc.return_value = zc
|
||||||
queue = mock.Mock()
|
queue = mock.Mock()
|
||||||
zc.queue.return_value = queue
|
zc.queue.return_value = queue
|
||||||
self.patchobject(self.fc.servers, 'create',
|
|
||||||
return_value=return_server)
|
|
||||||
scheduler.TaskRunner(server.create)()
|
scheduler.TaskRunner(server.create)()
|
||||||
|
|
||||||
metadata_queue_id = server.data().get('metadata_queue_id')
|
metadata_queue_id = server.data().get('metadata_queue_id')
|
||||||
|
@ -1037,6 +1044,30 @@ class ServersTest(common.HeatTestCase):
|
||||||
'deployments': []
|
'deployments': []
|
||||||
}, server.metadata_get())
|
}, server.metadata_get())
|
||||||
|
|
||||||
|
def test_create_delete_no_zaqar_service(self):
|
||||||
|
zcc = self.patchobject(zaqar.ZaqarClientPlugin, 'create_for_tenant')
|
||||||
|
zcc.side_effect = ks_exceptions.EndpointNotFound
|
||||||
|
server, stack = self._prepare_for_server_create()
|
||||||
|
creator = scheduler.TaskRunner(server.create)
|
||||||
|
self.assertRaises(exception.ResourceFailure, creator)
|
||||||
|
self.assertEqual((server.CREATE, server.FAILED), server.state)
|
||||||
|
self.assertEqual({
|
||||||
|
'os-collect-config': {
|
||||||
|
'zaqar': {
|
||||||
|
'user_id': '1234',
|
||||||
|
'password': server.password,
|
||||||
|
'auth_url': 'http://server.test:5000/v2.0',
|
||||||
|
'project_id': '8888',
|
||||||
|
'queue_id': mock.ANY
|
||||||
|
},
|
||||||
|
'collectors': ['ec2', 'zaqar', 'local']
|
||||||
|
},
|
||||||
|
'deployments': []
|
||||||
|
}, server.metadata_get())
|
||||||
|
|
||||||
|
scheduler.TaskRunner(server.delete)()
|
||||||
|
self.assertEqual((server.DELETE, server.COMPLETE), server.state)
|
||||||
|
|
||||||
def test_server_create_software_config_zaqar_metadata(self):
|
def test_server_create_software_config_zaqar_metadata(self):
|
||||||
md = {'os-collect-config': {'polling_interval': 10}}
|
md = {'os-collect-config': {'polling_interval': 10}}
|
||||||
queue_id, server = self._server_create_software_config_zaqar(md=md)
|
queue_id, server = self._server_create_software_config_zaqar(md=md)
|
||||||
|
|
Loading…
Reference in New Issue