Add an hourly cron trigger for tripleo-ui logging
After tripleo-common workbooks are loaded, we create a new cron trigger in Mistral. This will run the `publish_ui_logs_to_swift` workflow every hour. Also makes sure that we are deleting the cron-triggers before deleting the workflows Change-Id: Ic60be51e46b56cbae9c4b5071ec8bfd908cccd5d Depends-On: I2affd39e85ccfdbaa18590de182104715cfbbed4 Depends-On: I636873c0db4b3dbf66a0c5a856fee4dcb644ac3c Depends-On: Ifa7d6eb43ea86e97ef5707d378901d3e2c074a7a Implements: blueprint websocket-logging
This commit is contained in:
parent
361c97555d
commit
19c96cd859
|
@ -1008,6 +1008,14 @@ class TestPostConfig(base.BaseTestCase):
|
|||
mock_workbooks[0].name = 'foo'
|
||||
mock_workbooks[1].name = 'tripleo.bar'
|
||||
mock_mistral.workbooks.list.return_value = mock_workbooks
|
||||
|
||||
mock_triggers = [mock.Mock() for m in range(2)]
|
||||
mock_triggers[0].name = 'foobar'
|
||||
mock_triggers[0].workflow_name = 'foo'
|
||||
mock_triggers[1].name = 'delete_me'
|
||||
mock_triggers[1].workflow_name = 'tripleo.bar'
|
||||
mock_mistral.cron_triggers.list.return_value = mock_triggers
|
||||
|
||||
mock_workflows = [mock.Mock() for m in range(2)]
|
||||
mock_workflows[0].name = 'foo'
|
||||
mock_workflows[1].name = 'tripleo.bar'
|
||||
|
@ -1020,6 +1028,8 @@ class TestPostConfig(base.BaseTestCase):
|
|||
mock_mistral.workbooks.delete.mock_calls)
|
||||
self.assertEqual([mock.call('tripleo.bar')],
|
||||
mock_mistral.workflows.delete.mock_calls)
|
||||
self.assertEqual([mock.call('delete_me')],
|
||||
mock_mistral.cron_triggers.delete.mock_calls)
|
||||
self.assertEqual([mock.call(undercloud.PATHS.WORKBOOK_PATH +
|
||||
'/foo.yaml'),
|
||||
mock.call(undercloud.PATHS.WORKBOOK_PATH +
|
||||
|
@ -1048,18 +1058,27 @@ class TestPostConfig(base.BaseTestCase):
|
|||
mock_workbooks[0].name = 'foo'
|
||||
mock_workbooks[1].name = 'tripleo.bar'
|
||||
mock_mistral.workbooks.list.return_value = mock_workbooks
|
||||
mock_triggers = [mock.Mock() for m in range(2)]
|
||||
mock_triggers[0].name = 'dont_delete_me'
|
||||
mock_triggers[0].workflow_name = 'tripleo.foo'
|
||||
mock_triggers[1].name = 'delete_me'
|
||||
mock_triggers[1].workflow_name = 'tripleo.bar'
|
||||
mock_mistral.cron_triggers.list.return_value = mock_triggers
|
||||
mock_workflows = [mock.Mock() for m in range(2)]
|
||||
mock_workflows[0].name = 'tripleo.foo'
|
||||
mock_workflows[1].name = 'tripleo.bar'
|
||||
mock_workflows[0].tags = []
|
||||
mock_workflows[1].tags = ['tripleo-common-managed', ]
|
||||
mock_mistral.workflows.list.return_value = mock_workflows
|
||||
|
||||
mock_listdir.return_value = ['foo.yaml', 'bar.yaml']
|
||||
undercloud._post_config_mistral(instack_env, mock_mistral, mock_swift)
|
||||
self.assertEqual([mock.call('tripleo.bar')],
|
||||
mock_mistral.workbooks.delete.mock_calls)
|
||||
self.assertEqual([mock.call('tripleo.bar')],
|
||||
mock_mistral.workflows.delete.mock_calls)
|
||||
self.assertEqual([mock.call('delete_me')],
|
||||
mock_mistral.cron_triggers.delete.mock_calls)
|
||||
self.assertEqual([mock.call(undercloud.PATHS.WORKBOOK_PATH +
|
||||
'/foo.yaml'),
|
||||
mock.call(undercloud.PATHS.WORKBOOK_PATH +
|
||||
|
@ -1076,7 +1095,7 @@ class TestUpgradeFact(base.BaseTestCase):
|
|||
@mock.patch('os.path.dirname')
|
||||
@mock.patch('os.path.exists')
|
||||
@mock.patch.object(tempfile, 'mkstemp', return_value=(1, '/tmp/file'))
|
||||
def test_upgrade_fact(self, mock_mkstemp, mock_exists, mock_dirname,
|
||||
def test_upgrade_fact(self, mock_mkstemp, mock_exists, mock_dirname,
|
||||
mock_run):
|
||||
fact_path = '/etc/facter/facts.d/undercloud_upgrade.txt'
|
||||
mock_dirname.return_value = '/etc/facter/facts.d'
|
||||
|
|
|
@ -1548,11 +1548,20 @@ def _prepare_ssh_environment(mistral):
|
|||
mistral.executions.create('tripleo.validations.v1.copy_ssh_key')
|
||||
|
||||
|
||||
def _create_logging_cron(mistral):
|
||||
LOG.info('Configuring an hourly cron trigger for tripleo-ui logging')
|
||||
mistral.cron_triggers.create(
|
||||
'publish-ui-logs-hourly',
|
||||
'tripleo.plan_management.v1.publish_ui_logs_to_swift',
|
||||
pattern='0 * * * *'
|
||||
)
|
||||
|
||||
|
||||
def _post_config_mistral(instack_env, mistral, swift):
|
||||
LOG.info('Configuring Mistral workbooks')
|
||||
|
||||
for workbook in [w for w in mistral.workbooks.list()
|
||||
if 'tripleo' in w.name]:
|
||||
if w.name.startswith('tripleo')]:
|
||||
mistral.workbooks.delete(workbook.name)
|
||||
|
||||
managed_tag = 'tripleo-common-managed'
|
||||
|
@ -1568,12 +1577,19 @@ def _post_config_mistral(instack_env, mistral, swift):
|
|||
# TODO(d0ugal): From Q onwards we should only ever delete workflows with
|
||||
# the tripleo-common tag.
|
||||
if 'tripleo-common-managed' in workflow_tags:
|
||||
workflows_delete = [w for w in all_workflows if managed_tag in w.tags]
|
||||
workflows_delete = [w.name for w in all_workflows
|
||||
if managed_tag in w.tags]
|
||||
else:
|
||||
workflows_delete = [w for w in all_workflows if 'tripleo' in w.name]
|
||||
workflows_delete = [w.name for w in all_workflows
|
||||
if w.name.startswith('tripleo')]
|
||||
|
||||
for workflow in workflows_delete:
|
||||
mistral.workflows.delete(workflow.name)
|
||||
# in order to delete workflows they should have no triggers associated
|
||||
for trigger in [t for t in mistral.cron_triggers.list()
|
||||
if t.workflow_name in workflows_delete]:
|
||||
mistral.cron_triggers.delete(trigger.name)
|
||||
|
||||
for workflow_name in workflows_delete:
|
||||
mistral.workflows.delete(workflow_name)
|
||||
|
||||
for workbook in [f for f in os.listdir(PATHS.WORKBOOK_PATH)
|
||||
if os.path.isfile(os.path.join(PATHS.WORKBOOK_PATH, f))]:
|
||||
|
@ -1585,6 +1601,7 @@ def _post_config_mistral(instack_env, mistral, swift):
|
|||
_create_mistral_config_environment(instack_env, mistral)
|
||||
_migrate_plans(mistral, swift, plans)
|
||||
_create_default_plan(mistral, plans)
|
||||
_create_logging_cron(mistral)
|
||||
|
||||
if CONF.enable_validations:
|
||||
_prepare_ssh_environment(mistral)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
features:
|
||||
- |
|
||||
Implements `websocket-logging <https://blueprints.launchpad.net/openstack/?searchtext=websocket-logging>`__
|
||||
Add an hourly cron trigger for tripleo-ui logging
|
Loading…
Reference in New Issue