#229 Rewrite standard-inventory-qcow2 with using logging module.
Merged by astepano. Opened by astepano.
inventory_log  into  master

Download 229.patch

Examples:

[root@qeos-21 ~]# export TEST_SUBJECTS=/tmp/atomi.qcow2
[root@qeos-21 ~]# ./standard-inventory-qcow2 --list
[root@qeos-21 ~]# cat artifacts/default_provisioners.log 
2018-06-25 10:24:33,108 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Start provisioner.
2018-06-25 10:24:33,116 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Launching virtual machine for /tmp/atomi.qcow2
2018-06-25 10:24:36,814 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Fatal error in provision script.
Traceback (most recent call last):
  File "./standard-inventory-qcow2", line 402, in <module>
    main(sys.argv)
  File "./standard-inventory-qcow2", line 131, in main
    data = inv_list(opts.subjects)
  File "./standard-inventory-qcow2", line 140, in inv_list
    host_vars = inv_host(subject)
  File "./standard-inventory-qcow2", line 302, in inv_host
    raise RuntimeError("qemu failed to launch qcow2 image: {0}".format(image))
RuntimeError: qemu failed to launch qcow2 image: /tmp/atomi.qcow2
[root@qeos-21 ~]# export TEST_SUBJECTS=/tmp/atomic.qcow
[root@qeos-21 ~]# ./standard-inventory-qcow2 --list
{}[root@qeos-21 ~]cat artifacts/default_provisioners.log 
2018-06-25 10:25:38,620 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Start provisioner.
2018-06-25 10:25:38,620 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Return empty inventory for image: /tmp/atomic.qcow.

Or your script have bug, like echo(a)

[root@qeos-21 ~]# export TEST_SUBJECTS=/tmp/atomic.qcow2
[root@qeos-21 ~]# ./standard-inventory-qcow2 --list
[root@qeos-21 ~]# cat artifacts/default_provisioners.log 
2018-06-25 10:28:01,922 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Start provisioner.
2018-06-25 10:28:01,922 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Fatal error in provision script.
Traceback (most recent call last):
  File "./standard-inventory-qcow2", line 403, in <module>
    main(sys.argv)
  File "./standard-inventory-qcow2", line 128, in main
    echo(a)
NameError: global name 'echo' is not defined

Good run, when:
1. stdout is Ansible inventory.
1. logs have additional info

[root@qeos-21 ~]# ./standard-inventory-qcow2 --list
{
    "subjects": {
        "hosts": [
            "/tmp/atomic.qcow2"
        ],
        "vars": {}
    },
    "_meta": {
        "hostvars": {
            "/tmp/atomic.qcow2": {
                "ansible_ssh_common_args": "-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no",
                "ansible_port": "5350",
                "ansible_ssh_private_key_file": "/tmp/inventory-cloudyfnkha/identity",
                "ansible_python_interpreter": "/usr/bin/python2",
                "ansible_ssh_pass": "foobar",
                "ansible_user": "root",
                "ansible_host": "127.0.0.3"
            }
        }
    },
    "localhost": {
        "hosts": [
            "/tmp/atomic.qcow2"
        ],
        "vars": {}
    }
}[root@qeos-21 ~]# cat artifacts/default_provisioners.log
2018-06-25 10:29:18,640 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Start provisioner.
2018-06-25 10:29:18,649 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Launching virtual machine for /tmp/atomic.qcow2
2018-06-25 10:30:51,333 [standard-inventory-qcow2/MainThread  ] [INFO ]:  ssh -p 5350 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /tmp/inventory-cloudyfnkha/identity root@127.0.0.3
2018-06-25 10:30:51,334 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Password is: foobar
2018-06-25 10:30:51,334 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Cloudinit init location: /tmp/inventory-cloudyfnkha
2018-06-25 10:30:51,334 [standard-inventory-qcow2/MainThread  ] [INFO ]:  export ANSIBLE_INVENTORY=/tmp/inventory-cloudyfnkha/inventory
2018-06-25 10:30:51,334 [standard-inventory-qcow2/MainThread  ] [INFO ]:  Wait until parent for provision-script (ansible-playbook) dies or qemu.

Good run when:
1. TEST_DEBUG=1
2. stderr has all messages as logfile.

TEST_DEBUG=1 ./standard-inventory-qcow2 --list
[INFO ] standard-inventory-qcow2: Start provisioner.
[INFO ] standard-inventory-qcow2: Launching virtual machine for /tmp/atomic.qcow2
[INFO ] standard-inventory-qcow2: qemu-kvm is running with VNC server. PID: 4146
[INFO ] standard-inventory-qcow2: netstat -ltpn4 | grep 4146 # to find VNC server port
[INFO ] standard-inventory-qcow2: ssh -p 2405 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /tmp/inventory-cloudt42WkD/identity root@127.0.0.3
[INFO ] standard-inventory-qcow2: Password is: foobar
[INFO ] standard-inventory-qcow2: Cloudinit init location: /tmp/inventory-cloudt42WkD
[INFO ] standard-inventory-qcow2: export ANSIBLE_INVENTORY=/tmp/inventory-cloudt42WkD/inventory
[INFO ] standard-inventory-qcow2: Wait until parent for provision-script (ansible-playbook) dies or qemu.
{
    "subjects": {
        "hosts": [
            "/tmp/atomic.qcow2"
        ],
        "vars": {}
    },
    "_meta": {
        "hostvars": {
            "/tmp/atomic.qcow2": {
                "ansible_ssh_common_args": "-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no",
                "ansible_port": "2405",
                "ansible_ssh_private_key_file": "/tmp/inventory-cloudt42WkD/identity",
                "ansible_python_interpreter": "/usr/bin/python2",
                "ansible_ssh_pass": "foobar",
                "ansible_user": "root",
                "ansible_host": "127.0.0.3"
            }
        }
    },
    "localhost": {
        "hosts": [
            "/tmp/atomic.qcow2"
        ],
        "vars": {}
    }
}[root@qeos-21 ~]# 

fixes #206

rebased onto d71b197e19ff21e28f9b9a2696dd721a27cf7658

pretty please pagure-ci rebuild

rebased onto e062120f9b4a74acac598b5b9b2178855d1835e4

pretty please pagure-ci rebuild

Commit bb3bb90e fixes this pull-request

Pull-Request has been merged by astepano

Pull-Request has been merged by astepano

Metadata