Add dedicated stdout callback for VF library
Add a specfic stdout callback for the console and keep the validation_json for logging only Change-Id: I2f6ebb95b43921d6ee808b7be210ae0d958a1738
This commit is contained in:
parent
fe2d98ed6e
commit
c5faf55d29
|
@ -26,12 +26,12 @@ from ansible.plugins.callback import CallbackBase
|
|||
|
||||
DOCUMENTATION = '''
|
||||
callback: json
|
||||
short_description: Ansible screen output as JSON file
|
||||
short_description: Log Ansible results on filesystem
|
||||
version_added: "1.0"
|
||||
description:
|
||||
- This callback converts all events into a JSON file
|
||||
stored in /var/log/validations
|
||||
type: stdout
|
||||
type: agregate
|
||||
requirements: None
|
||||
'''
|
||||
|
||||
|
@ -56,7 +56,7 @@ def secondsToStr(t):
|
|||
|
||||
class CallbackModule(CallbackBase):
|
||||
CALLBACK_VERSION = 2.0
|
||||
CALLBACK_TYPE = 'stdout'
|
||||
CALLBACK_TYPE = 'agregate'
|
||||
CALLBACK_NAME = 'validation_json'
|
||||
|
||||
def __init__(self, display=None):
|
||||
|
|
|
@ -0,0 +1,104 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
__metaclass__ = type
|
||||
|
||||
import datetime
|
||||
import json
|
||||
import time
|
||||
import os
|
||||
|
||||
from functools import partial
|
||||
|
||||
from ansible.module_utils.six.moves import reduce
|
||||
from ansible.parsing.ajson import AnsibleJSONEncoder
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
|
||||
DOCUMENTATION = '''
|
||||
callback: stdout
|
||||
short_description: Ansible screen output as JSON file
|
||||
version_added: "1.0"
|
||||
description: This callback prints simplify Ansible information to the
|
||||
console.
|
||||
type: stdout
|
||||
requirements: None
|
||||
'''
|
||||
|
||||
|
||||
def current_time():
|
||||
return '%sZ' % datetime.datetime.utcnow().isoformat()
|
||||
|
||||
|
||||
def secondsToStr(t):
|
||||
def rediv(ll, b):
|
||||
return list(divmod(ll[0], b)) + ll[1:]
|
||||
|
||||
return "%d:%02d:%02d.%03d" % tuple(
|
||||
reduce(rediv, [[
|
||||
t * 1000,
|
||||
], 1000, 60, 60]))
|
||||
|
||||
|
||||
class CallbackModule(CallbackBase):
|
||||
CALLBACK_VERSION = 2.0
|
||||
CALLBACK_TYPE = 'stdout'
|
||||
CALLBACK_NAME = 'validation_stdout'
|
||||
|
||||
def __init__(self, display=None):
|
||||
super(CallbackModule, self).__init__(display)
|
||||
self.env = {}
|
||||
self.t0 = None
|
||||
self.current_time = current_time()
|
||||
|
||||
def _new_play(self, play):
|
||||
return {
|
||||
'play': {
|
||||
'host': play.get_name(),
|
||||
'validation_id': self.env['playbook_name'],
|
||||
'validation_path': self.env['playbook_path'],
|
||||
'id': (os.getenv('ANSIBLE_UUID') if os.getenv('ANSIBLE_UUID')
|
||||
else str(play._uuid)),
|
||||
'duration': {
|
||||
'start': current_time()
|
||||
}
|
||||
},
|
||||
'tasks': []
|
||||
}
|
||||
|
||||
def _new_task(self, task):
|
||||
return {
|
||||
'task': {
|
||||
'name': task.get_name(),
|
||||
'id': str(task._uuid),
|
||||
'duration': {
|
||||
'start': current_time()
|
||||
}
|
||||
},
|
||||
'hosts': {}
|
||||
}
|
||||
|
||||
def _val_task(self, task_name):
|
||||
return {
|
||||
'task': {
|
||||
'name': task_name,
|
||||
'hosts': {}
|
||||
}
|
||||
}
|
||||
|
||||
def _val_task_host(self, task_name):
|
||||
return {
|
||||
'task': {
|
||||
'name': task_name,
|
||||
'hosts': {}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue