Build list of enabled os-collect-config collectors
When changing the software_config_transport for an existing server, os-collect-config will continue using the data from the old transport which will become increasingly stale and will sometimes mask values from the new transport. The default list of collectors in os-collect-config is: heat_local, ec2, cfn, heat, request, local, zaqar This change explicitly enables these collectors: ec2, <current transport>, local ``ec2`` is the nova metadata service, so should always be enabled. ``local`` allows local file overrides - this is generally unused but is enabled for users who choose to use it for additional config data, or to override the heat provided data. ``heat_local`` is only used on the first run of an unconfigured os-collect-config for bootstrapping its own config file, so it can and should be disabled for subsequent polling. Change-Id: I9cdb057212c7a4404f6966a55cde9eab5ad86759 Closes-Bug: #1523676
This commit is contained in:
parent
2a167504d0
commit
5d1762fec6
|
@ -580,6 +580,9 @@ class Server(stack_user.StackUser, sh.SchedulerHintsMixin,
|
|||
meta['deployments'] = meta.get('deployments', [])
|
||||
meta['os-collect-config'] = meta.get('os-collect-config', {})
|
||||
occ = meta['os-collect-config']
|
||||
collectors = ['ec2']
|
||||
occ['collectors'] = collectors
|
||||
|
||||
# set existing values to None to override any boot-time config
|
||||
occ_keys = ('heat', 'zaqar', 'cfn', 'request')
|
||||
for occ_key in occ_keys:
|
||||
|
@ -597,21 +600,18 @@ class Server(stack_user.StackUser, sh.SchedulerHintsMixin,
|
|||
'project_id': self.stack.stack_user_project_id,
|
||||
'stack_id': self.stack.identifier().stack_path(),
|
||||
'resource_name': self.name}})
|
||||
collectors.append('heat')
|
||||
|
||||
elif self.transport_zaqar_message(props):
|
||||
queue_id = self.physical_resource_name()
|
||||
self.data_set('metadata_queue_id', queue_id)
|
||||
zaqar_plugin = self.client_plugin('zaqar')
|
||||
zaqar = zaqar_plugin.create_for_tenant(
|
||||
self.stack.stack_user_project_id, self._user_token())
|
||||
queue = zaqar.queue(queue_id)
|
||||
occ.update({'zaqar': {
|
||||
'user_id': self._get_user_id(),
|
||||
'password': self.password,
|
||||
'auth_url': self.context.auth_url,
|
||||
'project_id': self.stack.stack_user_project_id,
|
||||
'queue_id': queue_id}})
|
||||
queue.post({'body': meta, 'ttl': zaqar_plugin.DEFAULT_TTL})
|
||||
collectors.append('zaqar')
|
||||
|
||||
elif self.transport_poll_server_cfn(props):
|
||||
heat_client_plugin = self.stack.clients.client_plugin('heat')
|
||||
|
@ -622,6 +622,7 @@ class Server(stack_user.StackUser, sh.SchedulerHintsMixin,
|
|||
'secret_access_key': self.secret_key,
|
||||
'stack_name': self.stack.name,
|
||||
'path': '%s.Metadata' % self.name}})
|
||||
collectors.append('cfn')
|
||||
|
||||
elif self.transport_poll_temp_url(props):
|
||||
container = self.physical_resource_name()
|
||||
|
@ -638,13 +639,28 @@ class Server(stack_user.StackUser, sh.SchedulerHintsMixin,
|
|||
self.data_set('metadata_put_url', put_url)
|
||||
self.data_set('metadata_object_name', object_name)
|
||||
|
||||
collectors.append('request')
|
||||
occ.update({'request': {
|
||||
'metadata_url': url}})
|
||||
|
||||
collectors.append('local')
|
||||
self.metadata_set(meta)
|
||||
|
||||
# push replacement polling config to any existing push-based sources
|
||||
queue_id = self.data().get('metadata_queue_id')
|
||||
if queue_id:
|
||||
zaqar_plugin = self.client_plugin('zaqar')
|
||||
zaqar = zaqar_plugin.create_for_tenant(
|
||||
self.stack.stack_user_project_id, self._user_token())
|
||||
queue = zaqar.queue(queue_id)
|
||||
queue.post({'body': meta, 'ttl': zaqar_plugin.DEFAULT_TTL})
|
||||
|
||||
object_name = self.data().get('metadata_object_name')
|
||||
if object_name:
|
||||
container = self.physical_resource_name()
|
||||
self.client('swift').put_object(
|
||||
container, object_name, jsonutils.dumps(meta))
|
||||
|
||||
self.metadata_set(meta)
|
||||
|
||||
def _register_access_key(self):
|
||||
"""Access is limited to this resource, which created the keypair."""
|
||||
def access_allowed(resource_name):
|
||||
|
|
|
@ -772,7 +772,8 @@ class ServersTest(common.HeatTestCase):
|
|||
'path': 'WebServer.Metadata',
|
||||
'secret_access_key': '8901',
|
||||
'stack_name': 'software_config_s'
|
||||
}
|
||||
},
|
||||
'collectors': ['ec2', 'cfn', 'local']
|
||||
},
|
||||
'deployments': []
|
||||
}, server.metadata_get())
|
||||
|
@ -792,6 +793,7 @@ class ServersTest(common.HeatTestCase):
|
|||
'secret_access_key': '8901',
|
||||
'stack_name': 'software_config_s'
|
||||
},
|
||||
'collectors': ['ec2', 'cfn', 'local'],
|
||||
'polling_interval': 10
|
||||
},
|
||||
'deployments': []
|
||||
|
@ -853,7 +855,8 @@ class ServersTest(common.HeatTestCase):
|
|||
'resource_name': 'WebServer',
|
||||
'stack_id': 'software_config_s/%s' % stack.id,
|
||||
'user_id': '1234'
|
||||
}
|
||||
},
|
||||
'collectors': ['ec2', 'heat', 'local']
|
||||
},
|
||||
'deployments': []
|
||||
}, server.metadata_get())
|
||||
|
@ -872,6 +875,7 @@ class ServersTest(common.HeatTestCase):
|
|||
'stack_id': 'software_config_s/%s' % stack.id,
|
||||
'user_id': '1234'
|
||||
},
|
||||
'collectors': ['ec2', 'heat', 'local'],
|
||||
'polling_interval': 10
|
||||
},
|
||||
'deployments': []
|
||||
|
@ -933,6 +937,8 @@ class ServersTest(common.HeatTestCase):
|
|||
server.physical_resource_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()
|
||||
|
@ -951,7 +957,8 @@ class ServersTest(common.HeatTestCase):
|
|||
'os-collect-config': {
|
||||
'request': {
|
||||
'metadata_url': metadata_url
|
||||
}
|
||||
},
|
||||
'collectors': ['ec2', 'request', 'local']
|
||||
},
|
||||
'deployments': []
|
||||
}, server.metadata_get())
|
||||
|
@ -966,6 +973,7 @@ class ServersTest(common.HeatTestCase):
|
|||
'request': {
|
||||
'metadata_url': metadata_url
|
||||
},
|
||||
'collectors': ['ec2', 'request', 'local'],
|
||||
'polling_interval': 10
|
||||
},
|
||||
'deployments': []
|
||||
|
@ -1041,7 +1049,8 @@ class ServersTest(common.HeatTestCase):
|
|||
'auth_url': 'http://server.test:5000/v2.0',
|
||||
'project_id': '8888',
|
||||
'queue_id': queue_id
|
||||
}
|
||||
},
|
||||
'collectors': ['ec2', 'zaqar', 'local']
|
||||
},
|
||||
'deployments': []
|
||||
}, server.metadata_get())
|
||||
|
@ -1058,6 +1067,7 @@ class ServersTest(common.HeatTestCase):
|
|||
'project_id': '8888',
|
||||
'queue_id': queue_id
|
||||
},
|
||||
'collectors': ['ec2', 'zaqar', 'local'],
|
||||
'polling_interval': 10
|
||||
},
|
||||
'deployments': []
|
||||
|
@ -1670,7 +1680,8 @@ class ServersTest(common.HeatTestCase):
|
|||
'path': 'WebServer.Metadata',
|
||||
'secret_access_key': '8901',
|
||||
'stack_name': 'update_meta_sc'
|
||||
}
|
||||
},
|
||||
'collectors': ['ec2', 'cfn', 'local']
|
||||
},
|
||||
'deployments': []}
|
||||
self.assertEqual(expected_md, server.metadata_get())
|
||||
|
@ -1706,6 +1717,7 @@ class ServersTest(common.HeatTestCase):
|
|||
'secret_access_key': '8901',
|
||||
'stack_name': 'update_meta_sc'
|
||||
},
|
||||
'collectors': ['ec2', 'cfn', 'local'],
|
||||
'polling_interval': 10
|
||||
},
|
||||
'deployments': []}
|
||||
|
@ -1741,6 +1753,7 @@ class ServersTest(common.HeatTestCase):
|
|||
'secret_access_key': '8901',
|
||||
'stack_name': 'update_meta_sc'
|
||||
},
|
||||
'collectors': ['ec2', 'cfn', 'local'],
|
||||
'polling_interval': 10
|
||||
},
|
||||
'deployments': []}
|
||||
|
@ -1787,6 +1800,7 @@ class ServersTest(common.HeatTestCase):
|
|||
'request': {
|
||||
'metadata_url': 'the_url',
|
||||
},
|
||||
'collectors': ['ec2', 'request', 'local'],
|
||||
'polling_interval': 10
|
||||
},
|
||||
'deployments': []}
|
||||
|
|
Loading…
Reference in New Issue