)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d341e3df94f496940bb74884f1ba92bbb0e344f4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sahid Orentino Ferdjaoui \u003csahid.ferdjaoui@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-12 08:55:00 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: make host to return guest info"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduces method in host to return guest info and"},{"line_number":10,"context_line":"update driver livirt to take it into account"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa32b979_4f37d9fe","line":7,"updated":"2015-06-18 16:39:41.000000000","message":"s/to return/return/","commit_id":"a697de90f65aec0e55ceafd71da61743975dc732"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d341e3df94f496940bb74884f1ba92bbb0e344f4","unresolved":false,"context_lines":[{"line_number":4190,"context_line":""},{"line_number":4191,"context_line":"    def get_info(self, instance):"},{"line_number":4192,"context_line":"        guest \u003d self._host.get_guest(instance)"},{"line_number":4193,"context_line":"        return self._host.get_guest_info(guest)"},{"line_number":4194,"context_line":""},{"line_number":4195,"context_line":"    def _create_domain_setup_lxc(self, instance, image_meta,"},{"line_number":4196,"context_line":"                                 block_device_info, disk_info):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_bab2654a","line":4193,"updated":"2015-06-18 16:39:41.000000000","message":"Why not this instead?\n\n return guest.get_info()","commit_id":"a697de90f65aec0e55ceafd71da61743975dc732"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"748c0ca2bbb79f3f867b1ba9182f6f08a7560252","unresolved":false,"context_lines":[{"line_number":4190,"context_line":""},{"line_number":4191,"context_line":"    def get_info(self, instance):"},{"line_number":4192,"context_line":"        guest \u003d self._host.get_guest(instance)"},{"line_number":4193,"context_line":"        return self._host.get_guest_info(guest)"},{"line_number":4194,"context_line":""},{"line_number":4195,"context_line":"    def _create_domain_setup_lxc(self, instance, image_meta,"},{"line_number":4196,"context_line":"                                 block_device_info, disk_info):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_c10cb944","line":4193,"in_reply_to":"fa32b979_bab2654a","updated":"2015-06-22 13:02:55.000000000","message":"Hum... We cannot do that without to pass a Host object. Actually I tried to keep coherence with libvirt. The host will return information about the guest that is why I choice to follow this way, but that can be discussed for sure.","commit_id":"a697de90f65aec0e55ceafd71da61743975dc732"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d341e3df94f496940bb74884f1ba92bbb0e344f4","unresolved":false,"context_lines":[{"line_number":6541,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":6542,"context_line":"        xml_doc \u003d etree.fromstring(xml)"},{"line_number":6543,"context_line":""},{"line_number":6544,"context_line":"        info \u003d self._host.get_guest_info(guest)"},{"line_number":6545,"context_line":"        config_drive \u003d configdrive.required_by(instance)"},{"line_number":6546,"context_line":"        launched_at \u003d timeutils.normalize_time(instance.launched_at)"},{"line_number":6547,"context_line":"        uptime \u003d timeutils.delta_seconds(launched_at,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_fa7a2d76","line":6544,"updated":"2015-06-18 16:39:41.000000000","message":"ditto.","commit_id":"a697de90f65aec0e55ceafd71da61743975dc732"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d341e3df94f496940bb74884f1ba92bbb0e344f4","unresolved":false,"context_lines":[{"line_number":6708,"context_line":"                           disk.FS_FORMAT_EXT4, disk.FS_FORMAT_XFS]"},{"line_number":6709,"context_line":""},{"line_number":6710,"context_line":"    def _get_power_state(self, virt_dom):"},{"line_number":6711,"context_line":"        dom_info \u003d self._host._get_domain_info(virt_dom)"},{"line_number":6712,"context_line":"        return LIBVIRT_POWER_STATE[dom_info[0]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_3aec1529","line":6711,"updated":"2015-06-18 16:39:41.000000000","message":"Don\u0027t pass the virt_dom object to this method. Instead, pass the Guest object and then do:\n\n return LIBVIRT_POWER_STATE[guest.get_info().state]","commit_id":"a697de90f65aec0e55ceafd71da61743975dc732"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"748c0ca2bbb79f3f867b1ba9182f6f08a7560252","unresolved":false,"context_lines":[{"line_number":6708,"context_line":"                           disk.FS_FORMAT_EXT4, disk.FS_FORMAT_XFS]"},{"line_number":6709,"context_line":""},{"line_number":6710,"context_line":"    def _get_power_state(self, virt_dom):"},{"line_number":6711,"context_line":"        dom_info \u003d self._host._get_domain_info(virt_dom)"},{"line_number":6712,"context_line":"        return LIBVIRT_POWER_STATE[dom_info[0]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_e4630bdc","line":6711,"in_reply_to":"fa32b979_3aec1529","updated":"2015-06-22 13:02:55.000000000","message":"Hum again actually we request Host to return information about the Guest. In libvirt language virConnect returns information about a virDomain.\n\nI have a patch to address get_power_state next to this one and actually this method will be removed.","commit_id":"a697de90f65aec0e55ceafd71da61743975dc732"}],"nova/virt/libvirt/guest.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6f916ca7033bef14b81e6f0031febf7f2677bd55","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        except libvirt.libvirtError as ex:"},{"line_number":316,"context_line":"            error_code \u003d ex.get_error_code()"},{"line_number":317,"context_line":"            if error_code \u003d\u003d libvirt.VIR_ERR_NO_DOMAIN:"},{"line_number":318,"context_line":"                raise exception.InstanceNotFound(instance_id\u003dself.name)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"            msg \u003d (_(\u0027Error from libvirt while getting domain info for \u0027"},{"line_number":321,"context_line":"                     \u0027%(instance_name)s: [Error Code %(error_code)s] %(ex)s\u0027) %"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_51cc4969","line":318,"updated":"2015-08-13 15:23:50.000000000","message":"is the instance_id the domain name?","commit_id":"65b97b6e9e6c12b955333d64872e8ce3fea6453a"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"dc6943daa62576271b5d890783907df8f577d918","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        except libvirt.libvirtError as ex:"},{"line_number":316,"context_line":"            error_code \u003d ex.get_error_code()"},{"line_number":317,"context_line":"            if error_code \u003d\u003d libvirt.VIR_ERR_NO_DOMAIN:"},{"line_number":318,"context_line":"                raise exception.InstanceNotFound(instance_id\u003dself.name)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"            msg \u003d (_(\u0027Error from libvirt while getting domain info for \u0027"},{"line_number":321,"context_line":"                     \u0027%(instance_name)s: [Error Code %(error_code)s] %(ex)s\u0027) %"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_b1b6ed86","line":318,"in_reply_to":"1a4dcd0f_51cc4969","updated":"2015-08-13 15:29:33.000000000","message":"I do not think so but uuid yes. let me change that.","commit_id":"65b97b6e9e6c12b955333d64872e8ce3fea6453a"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d341e3df94f496940bb74884f1ba92bbb0e344f4","unresolved":false,"context_lines":[{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        If a libvirt error is encountered during lookup, we might raise a"},{"line_number":896,"context_line":"        NotFound exception or Error exception depending on how severe the"},{"line_number":897,"context_line":"        libvirt error is."},{"line_number":898,"context_line":"        \"\"\""},{"line_number":899,"context_line":"        try:"},{"line_number":900,"context_line":"            dom_info \u003d self._get_domain_info(guest._domain)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_fa56adcc","line":897,"updated":"2015-06-18 16:39:41.000000000","message":"This should be a method of the Guest object, not the Host object...","commit_id":"a697de90f65aec0e55ceafd71da61743975dc732"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7ada8108349256d2232f9dfca551bdc6a1895e3e","unresolved":false,"context_lines":[{"line_number":889,"context_line":"    def _get_domain_info(self, virt_dom):"},{"line_number":890,"context_line":"        return compat.get_domain_info(libvirt, self, virt_dom)"},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"    def get_guest_info(self, guest):"},{"line_number":893,"context_line":"        \"\"\"Retrieve information from libvirt for a specific instance name."},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        If a libvirt error is encountered during lookup, we might raise a"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_94186a77","line":892,"updated":"2015-07-30 09:00:47.000000000","message":"I think this method should be in the guest.py class actually, since it does not rely on any state in the Host class - its works solely with info from the guest object. This would probably mean moving the get_domain_info method too","commit_id":"cc46a7d833eefc84b2bd6d489a05668fca83ae79"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c17ae0d478722a9398273fbf2b9d9d51c356e1df","unresolved":false,"context_lines":[{"line_number":889,"context_line":"    def _get_domain_info(self, virt_dom):"},{"line_number":890,"context_line":"        return compat.get_domain_info(libvirt, self, virt_dom)"},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"    def get_guest_info(self, guest):"},{"line_number":893,"context_line":"        \"\"\"Retrieve information from libvirt for a specific instance name."},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        If a libvirt error is encountered during lookup, we might raise a"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a4dcd0f_a838c9ee","line":892,"in_reply_to":"3a50d1a3_94186a77","updated":"2015-08-13 13:10:14.000000000","message":"unfortunately we still need to pass host to make working a workaround: http://git.openstack.org/cgit/openstack/nova/tree/nova/virt/libvirt/compat.py","commit_id":"cc46a7d833eefc84b2bd6d489a05668fca83ae79"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f7ccffb7e535441c9742460a21b0fa56905b7bff","unresolved":false,"context_lines":[{"line_number":911,"context_line":"            raise exception.NovaException(msg)"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        return hardware.InstanceInfo("},{"line_number":914,"context_line":"            state\u003dlibvirt.LIBVIRT_POWER_STATE[dom_info[0]],"},{"line_number":915,"context_line":"            max_mem_kb\u003ddom_info[1],"},{"line_number":916,"context_line":"            mem_kb\u003ddom_info[2],"},{"line_number":917,"context_line":"            num_cpu\u003ddom_info[3],"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_3a692d26","line":914,"updated":"2015-07-30 15:42:00.000000000","message":"This is apparently conditional on the version of libvirt you\u0027re using:\n\nhttp://logs.openstack.org/46/191046/12/gate/gate-tempest-dsvm-neutron-full/2a7910f/logs/screen-n-cpu.txt.gz?level\u003dTRACE\n\nSo that can be totally broken in the gate.","commit_id":"cc46a7d833eefc84b2bd6d489a05668fca83ae79"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a0f08167f6f4e382f48e729a6e29b004b3762620","unresolved":false,"context_lines":[{"line_number":911,"context_line":"            raise exception.NovaException(msg)"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        return hardware.InstanceInfo("},{"line_number":914,"context_line":"            state\u003dlibvirt.LIBVIRT_POWER_STATE[dom_info[0]],"},{"line_number":915,"context_line":"            max_mem_kb\u003ddom_info[1],"},{"line_number":916,"context_line":"            mem_kb\u003ddom_info[2],"},{"line_number":917,"context_line":"            num_cpu\u003ddom_info[3],"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_9524d2b2","line":914,"in_reply_to":"3a50d1a3_3a504d5e","updated":"2015-07-30 15:48:56.000000000","message":"Good catch but this has nothing to do with libvirt. I should to use libvirt_driver.LIBVIRT_POWER_STATE or move LIBVIRT_POWER_STATE to this module.","commit_id":"cc46a7d833eefc84b2bd6d489a05668fca83ae79"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ae04275d29ae6b19ccef5aebf07a5ea7292554b7","unresolved":false,"context_lines":[{"line_number":911,"context_line":"            raise exception.NovaException(msg)"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        return hardware.InstanceInfo("},{"line_number":914,"context_line":"            state\u003dlibvirt.LIBVIRT_POWER_STATE[dom_info[0]],"},{"line_number":915,"context_line":"            max_mem_kb\u003ddom_info[1],"},{"line_number":916,"context_line":"            mem_kb\u003ddom_info[2],"},{"line_number":917,"context_line":"            num_cpu\u003ddom_info[3],"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_3a504d5e","line":914,"in_reply_to":"3a50d1a3_3a692d26","updated":"2015-07-30 15:43:18.000000000","message":"In that gate run the version of libvirt-python is:\n\nlibvirt-python\u003d\u003d1.2.16\n\nAnd libvirt is 1.2.2:\n\nii  libvirt-bin                          1.2.2-0ubuntu13.1.14                  amd64        programs for the libvirt library","commit_id":"cc46a7d833eefc84b2bd6d489a05668fca83ae79"}]}
