On Wednesday, February 3, 2016 at 7:41:53 PM UTC+5:30, J Hawkesworth wrote:
>
> Yes the internal ansible APIs have changed in v2
>
> Have a look at the other plugins in your ansible installation.
>
> For example
>
> site-packages/ansible/plugins/callback/timer.py
>
> You will notice that the plugins now subclass CallbackModule.
>
> Another change in Ansible 2.0 is that you can just whitelist the plugins 
> that you want to use in your ansible.cfg, rather than having to copy them 
> to somewhere on your plugin path.
>
> Hope this helps,
>
> Jon
>
> On Wednesday, 3 February 2016 13:48:38 UTC, [email protected] wrote:
>>
>> I believe you should use 'v2_' versions of functions in 2.0
>>
>

Thanks a lot guys . I used the 'v2_' versions of the functions however it 
still couldn't work. I have the following below code . Is something wrong 
in it 

class CallbackModule(CallbackBase):
    """
    logs playbook results, per host, in /var/log/ansible/hosts
    """
    CALLBACK_VERSION = 2.0
    CALLBACK_TYPE = 'notification'
    CALLBACK_NAME = 'log_plays'
    CALLBACK_NEEDS_WHITELIST = True


    TIME_FORMAT="%b %d %Y %H:%M:%S"
    MSG_FORMAT="%(now)s - %(category)s - %(data)s\n\n"


    def __init__(self):


        super(CallbackModule, self).__init__()


        if not os.path.exists("/var/log/ansible/hosts"):
            os.makedirs("/var/log/ansible/hosts")


    def log(self, host, category, data):
        if type(data) == dict:
            if '_ansible_verbose_override' in data:
                # avoid logging extraneous data
                data = 'omitted'
            else:
                data = data.copy()
                invocation = data.pop('invocation', None)
                data = json.dumps(data)
                if invocation is not None:
                    data = json.dumps(invocation) + " => %s " % data

        path = os.path.join("/var/log/ansible/hosts", host)
        now = time.strftime(self.TIME_FORMAT, time.localtime())
        msg = to_bytes(self.MSG_FORMAT % dict(now=now, category=category, 
data=data))
        with open(path, "ab") as fd:
            fd.write(msg)


    def v2_runner_on_failed(self, host, res, ignore_errors=False):
        self.log(host, 'FAILED', res)


    def v2_runner_on_ok(self, host, res):
        self.log(host, 'OKkkkk', res)


    def v2_runner_on_skipped(self, host, item=None):
        self.log(host, 'SKIPPED', '...')


    def v2_runner_on_unreachable(self, host, res):
        self.log(host, 'UNREACHABLE', res)


    def v2_runner_on_async_failed(self, host, res, jid):
        self.log(host, 'ASYNC_FAILED', res)


    def v2_playbook_on_import_for_host(self, host, imported_file):
        self.log(host, 'IMPORTED', imported_file)


    def v2_playbook_on_not_import_for_host(self, host, missing_file):
        self.log(host, 'NOTIMPORTED', missing_file)
 

It still didn't overrided . 

>
>> On Wednesday, February 3, 2016 at 4:23:05 PM UTC+3, Ankit Kulkarni wrote:
>>>
>>> We are using ansible in our production and our log_plays callback plugin 
>>> just broke after upgrading from 1.9.4 to 2.0.0.1 .
>>>   
>>> I need to put my custom logging using log_plays.py ( say store the 
>>> results in a sqllitedb for later analysis ) . The same was working fine 
>>> till ansible 1.9.4 . I am using *ansible 2.0.0 on ubuntu 14.04 64 bit 
>>> . *
>>>
>>> I used this log file 
>>> https://github.com/ansible/ansible/blob/stable-2.0.0.1/lib/ansibale/plugins/callback/log_plays.py
>>>  
>>> . Any function overrided under the `class CallbackModule(CallbackBase):` 
>>> are not reflecting while the code outside class is working .  
>>>
>>> Example - 
>>>
>>> def runner_on_ok(self, host, res):
>>>         self.log(host, 'ok-it-worked', res)
>>>
>>>
>>> I wanted to use the *playbook_on_stats(self, stats) *function . How can 
>>>> I use it  ? I can see the changes from the 1.9.4 log_plays.py file 
>>>> https://github.com/ansible/ansible/blob/stable-1.9/plugins/callbacks/log_plays.py
>>>>  
>>>>  like now  not all functions are included but not getting why the 
>>>> functions 
>>>> are not overriding . 
>>>
>>>
>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/0a38ed09-5347-447d-95db-8699e47dec13%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to