)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fe21431ee18172fb6b32053cc3a357adec3def1f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Akira Yoshiyama \u003cakirayoshiyama@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-12 12:27:59 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add QEMU built-in iSCSI initiator support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch allows nova-compute to use QEMU iSCSI built-in"},{"line_number":10,"context_line":"initiator for Cinder iSCSI volume drivers. It doesn\u0027t provide"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a961159_7af6225f","line":7,"updated":"2015-01-12 12:59:30.000000000","message":"please prefix with libvirt:","commit_id":"e5f3f233dc644c93236ad5c5d1a6ae58749b7e0d"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"f6e937beed1d00e6eb3ef97fd44d45d80f1a0aa2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Akira Yoshiyama \u003cakirayoshiyama@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-12 12:27:59 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add QEMU built-in iSCSI initiator support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch allows nova-compute to use QEMU iSCSI built-in"},{"line_number":10,"context_line":"initiator for Cinder iSCSI volume drivers. It doesn\u0027t provide"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a961159_adf05667","line":7,"in_reply_to":"3a961159_7af6225f","updated":"2015-01-12 13:27:36.000000000","message":"Done","commit_id":"e5f3f233dc644c93236ad5c5d1a6ae58749b7e0d"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fe21431ee18172fb6b32053cc3a357adec3def1f","unresolved":false,"context_lines":[{"line_number":2191,"context_line":"        self.usage_name \u003d None"},{"line_number":2192,"context_line":"        self.usage_target \u003d None"},{"line_number":2193,"context_line":""},{"line_number":2194,"context_line":"    def get_bool_str(self, value):"},{"line_number":2195,"context_line":"        if value:"},{"line_number":2196,"context_line":"            return \u0027yes\u0027"},{"line_number":2197,"context_line":"        return \u0027no\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_fa46927a","line":2194,"updated":"2015-01-12 12:59:30.000000000","message":"this should be a private function. please use _\n\nbool is usually true or false. so the name is a little confusing","commit_id":"e5f3f233dc644c93236ad5c5d1a6ae58749b7e0d"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"f6e937beed1d00e6eb3ef97fd44d45d80f1a0aa2","unresolved":false,"context_lines":[{"line_number":2191,"context_line":"        self.usage_name \u003d None"},{"line_number":2192,"context_line":"        self.usage_target \u003d None"},{"line_number":2193,"context_line":""},{"line_number":2194,"context_line":"    def get_bool_str(self, value):"},{"line_number":2195,"context_line":"        if value:"},{"line_number":2196,"context_line":"            return \u0027yes\u0027"},{"line_number":2197,"context_line":"        return \u0027no\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_ad62163b","line":2194,"in_reply_to":"3a961159_fa46927a","updated":"2015-01-12 13:27:36.000000000","message":"Done","commit_id":"e5f3f233dc644c93236ad5c5d1a6ae58749b7e0d"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"008aad55797f522072359de98d103df1014c79df","unresolved":false,"context_lines":[{"line_number":2209,"context_line":"            root.append(self._text_node(\"uuid\", str(self.uuid)))"},{"line_number":2210,"context_line":"        usage \u003d self._new_node(\"usage\")"},{"line_number":2211,"context_line":"        if self.usage_type not in [\u0027volume\u0027, \u0027ceph\u0027, \u0027iscsi\u0027]:"},{"line_number":2212,"context_line":"            raise exception.NovaException("},{"line_number":2213,"context_line":"                _(\"Usage type should be \u0027volume\u0027, \u0027ceph\u0027 or \u0027iscsi\u0027\"))"},{"line_number":2214,"context_line":"        usage.set(\"type\", self.usage_type)"},{"line_number":2215,"context_line":"        if self.usage_name is not None:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_a833ddf5","line":2212,"range":{"start_line":2212,"start_character":41,"end_line":2212,"end_character":42},"updated":"2015-01-20 15:08:30.000000000","message":"I think should be just like that -\u003e\n\n    exception.NovaException(_(","commit_id":"44f37c36a5366fa53f2357b83d9e3c19f9247853"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"053cbff0ae6fcd87b29c9b3366231d0a2a518d41","unresolved":false,"context_lines":[{"line_number":2209,"context_line":"            root.append(self._text_node(\"uuid\", str(self.uuid)))"},{"line_number":2210,"context_line":"        usage \u003d self._new_node(\"usage\")"},{"line_number":2211,"context_line":"        if self.usage_type not in [\u0027volume\u0027, \u0027ceph\u0027, \u0027iscsi\u0027]:"},{"line_number":2212,"context_line":"            raise exception.NovaException("},{"line_number":2213,"context_line":"                _(\"Usage type should be \u0027volume\u0027, \u0027ceph\u0027 or \u0027iscsi\u0027\"))"},{"line_number":2214,"context_line":"        usage.set(\"type\", self.usage_type)"},{"line_number":2215,"context_line":"        if self.usage_name is not None:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_28c9ad25","line":2212,"in_reply_to":"3a961159_a833ddf5","updated":"2015-01-20 15:28:20.000000000","message":"Sorry, I pushed a new one before checking here.","commit_id":"44f37c36a5366fa53f2357b83d9e3c19f9247853"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"008aad55797f522072359de98d103df1014c79df","unresolved":false,"context_lines":[{"line_number":2210,"context_line":"        usage \u003d self._new_node(\"usage\")"},{"line_number":2211,"context_line":"        if self.usage_type not in [\u0027volume\u0027, \u0027ceph\u0027, \u0027iscsi\u0027]:"},{"line_number":2212,"context_line":"            raise exception.NovaException("},{"line_number":2213,"context_line":"                _(\"Usage type should be \u0027volume\u0027, \u0027ceph\u0027 or \u0027iscsi\u0027\"))"},{"line_number":2214,"context_line":"        usage.set(\"type\", self.usage_type)"},{"line_number":2215,"context_line":"        if self.usage_name is not None:"},{"line_number":2216,"context_line":"            usage.append(self._text_node(\u0027name\u0027, str(self.usage_name)))"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_28760da4","line":2213,"range":{"start_line":2213,"start_character":16,"end_line":2213,"end_character":17},"updated":"2015-01-20 15:08:30.000000000","message":"It should be imported.","commit_id":"44f37c36a5366fa53f2357b83d9e3c19f9247853"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"053cbff0ae6fcd87b29c9b3366231d0a2a518d41","unresolved":false,"context_lines":[{"line_number":2210,"context_line":"        usage \u003d self._new_node(\"usage\")"},{"line_number":2211,"context_line":"        if self.usage_type not in [\u0027volume\u0027, \u0027ceph\u0027, \u0027iscsi\u0027]:"},{"line_number":2212,"context_line":"            raise exception.NovaException("},{"line_number":2213,"context_line":"                _(\"Usage type should be \u0027volume\u0027, \u0027ceph\u0027 or \u0027iscsi\u0027\"))"},{"line_number":2214,"context_line":"        usage.set(\"type\", self.usage_type)"},{"line_number":2215,"context_line":"        if self.usage_name is not None:"},{"line_number":2216,"context_line":"            usage.append(self._text_node(\u0027name\u0027, str(self.usage_name)))"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_c873c914","line":2213,"in_reply_to":"3a961159_28760da4","updated":"2015-01-20 15:28:20.000000000","message":"Done","commit_id":"44f37c36a5366fa53f2357b83d9e3c19f9247853"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"0d6d2a9d42dac6a3a37b6476321e88cd13d36134","unresolved":false,"context_lines":[{"line_number":2210,"context_line":"            root.append(self._text_node(\"uuid\", str(self.uuid)))"},{"line_number":2211,"context_line":"        usage \u003d self._new_node(\"usage\")"},{"line_number":2212,"context_line":"        if self.usage_type not in [\u0027volume\u0027, \u0027ceph\u0027, \u0027iscsi\u0027]:"},{"line_number":2213,"context_line":"            raise exception.NovaException("},{"line_number":2214,"context_line":"                _(\"Usage type should be \u0027volume\u0027, \u0027ceph\u0027 or \u0027iscsi\u0027\"))"},{"line_number":2215,"context_line":"        usage.set(\"type\", self.usage_type)"},{"line_number":2216,"context_line":"        if self.usage_name is not None:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a930d6b_cb2596ac","line":2213,"updated":"2015-01-21 17:15:53.000000000","message":"It is relatively uncomon to do this in the method of cofig classes and especially format_dom. The reason being that format_dom might be called far away from the place where the value was actually set, thus making it needlessly more difficult to debug.","commit_id":"204312aad48b8b0fb75a4ad5e4a3955ab839c0dc"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"f30a09de6dd699b5279d715e3f574e6c7173a5f1","unresolved":false,"context_lines":[{"line_number":2210,"context_line":"            root.append(self._text_node(\"uuid\", str(self.uuid)))"},{"line_number":2211,"context_line":"        usage \u003d self._new_node(\"usage\")"},{"line_number":2212,"context_line":"        if self.usage_type not in [\u0027volume\u0027, \u0027ceph\u0027, \u0027iscsi\u0027]:"},{"line_number":2213,"context_line":"            raise exception.NovaException("},{"line_number":2214,"context_line":"                _(\"Usage type should be \u0027volume\u0027, \u0027ceph\u0027 or \u0027iscsi\u0027\"))"},{"line_number":2215,"context_line":"        usage.set(\"type\", self.usage_type)"},{"line_number":2216,"context_line":"        if self.usage_name is not None:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a930d6b_d720b44b","line":2213,"in_reply_to":"1a930d6b_cb2596ac","updated":"2015-01-22 15:43:03.000000000","message":"OK, I will delete it.","commit_id":"204312aad48b8b0fb75a4ad5e4a3955ab839c0dc"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7f475897e61b3afb4365f8fa911ec231636feab9","unresolved":false,"context_lines":[{"line_number":6450,"context_line":"        elif usage_type_str \u003d\u003d \u0027ceph\u0027:"},{"line_number":6451,"context_line":"            usage_type \u003d libvirt.VIR_SECRET_USAGE_TYPE_CEPH"},{"line_number":6452,"context_line":"        elif usage_type_str \u003d\u003d \u0027volume\u0027:"},{"line_number":6453,"context_line":"            usage_type \u003d libvirt.VIR_SECRET_USAGE_TYPE_VOLUME"},{"line_number":6454,"context_line":""},{"line_number":6455,"context_line":"        return self._conn.secretLookupByUsage(usage_type, usage_name)"},{"line_number":6456,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_5e7173aa","line":6453,"updated":"2014-12-05 13:17:00.000000000","message":"Should raise an exception in the \u0027else:\u0027 case to future proof this","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"cae3b5e006a283c750468108051ec0a9bbc8aa9d","unresolved":false,"context_lines":[{"line_number":6450,"context_line":"        elif usage_type_str \u003d\u003d \u0027ceph\u0027:"},{"line_number":6451,"context_line":"            usage_type \u003d libvirt.VIR_SECRET_USAGE_TYPE_CEPH"},{"line_number":6452,"context_line":"        elif usage_type_str \u003d\u003d \u0027volume\u0027:"},{"line_number":6453,"context_line":"            usage_type \u003d libvirt.VIR_SECRET_USAGE_TYPE_VOLUME"},{"line_number":6454,"context_line":""},{"line_number":6455,"context_line":"        return self._conn.secretLookupByUsage(usage_type, usage_name)"},{"line_number":6456,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_a7a3fc4d","line":6453,"in_reply_to":"5a890539_5e7173aa","updated":"2014-12-23 15:15:29.000000000","message":"Done","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7f475897e61b3afb4365f8fa911ec231636feab9","unresolved":false,"context_lines":[{"line_number":6457,"context_line":"    def _get_secret(self, secret_conf, password\u003dNone):"},{"line_number":6458,"context_line":"        \"\"\"Create a secret."},{"line_number":6459,"context_line":""},{"line_number":6460,"context_line":"        secret_conf must be passed in."},{"line_number":6461,"context_line":"        \"\"\""},{"line_number":6462,"context_line":"        try:"},{"line_number":6463,"context_line":"            usage_name \u003d secret_conf.usage_name or secret_conf.usage_target"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_9e54bbff","line":6460,"updated":"2014-12-05 13:17:00.000000000","message":"Please properly document the parameters with python API doc syntax. In particular mention the object class required for secret_conf, and the format of password (raw bytes)","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"cae3b5e006a283c750468108051ec0a9bbc8aa9d","unresolved":false,"context_lines":[{"line_number":6457,"context_line":"    def _get_secret(self, secret_conf, password\u003dNone):"},{"line_number":6458,"context_line":"        \"\"\"Create a secret."},{"line_number":6459,"context_line":""},{"line_number":6460,"context_line":"        secret_conf must be passed in."},{"line_number":6461,"context_line":"        \"\"\""},{"line_number":6462,"context_line":"        try:"},{"line_number":6463,"context_line":"            usage_name \u003d secret_conf.usage_name or secret_conf.usage_target"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_00dfc43a","line":6460,"in_reply_to":"5a890539_9e54bbff","updated":"2014-12-23 15:15:29.000000000","message":"Done","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7f475897e61b3afb4365f8fa911ec231636feab9","unresolved":false,"context_lines":[{"line_number":6463,"context_line":"            usage_name \u003d secret_conf.usage_name or secret_conf.usage_target"},{"line_number":6464,"context_line":"            usage_type \u003d secret_conf.usage_type"},{"line_number":6465,"context_line":"            return self._find_secret(usage_type, usage_name)"},{"line_number":6466,"context_line":"        except Exception:"},{"line_number":6467,"context_line":"            pass"},{"line_number":6468,"context_line":""},{"line_number":6469,"context_line":"        xml \u003d secret_conf.to_xml()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_de6483e8","line":6466,"updated":"2014-12-05 13:17:00.000000000","message":"Don\u0027t catch bare Exception type - use a specialized type","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"cae3b5e006a283c750468108051ec0a9bbc8aa9d","unresolved":false,"context_lines":[{"line_number":6463,"context_line":"            usage_name \u003d secret_conf.usage_name or secret_conf.usage_target"},{"line_number":6464,"context_line":"            usage_type \u003d secret_conf.usage_type"},{"line_number":6465,"context_line":"            return self._find_secret(usage_type, usage_name)"},{"line_number":6466,"context_line":"        except Exception:"},{"line_number":6467,"context_line":"            pass"},{"line_number":6468,"context_line":""},{"line_number":6469,"context_line":"        xml \u003d secret_conf.to_xml()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_b0447b47","line":6466,"in_reply_to":"5a890539_de6483e8","updated":"2014-12-23 15:15:29.000000000","message":"Done","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7f475897e61b3afb4365f8fa911ec231636feab9","unresolved":false,"context_lines":[{"line_number":6473,"context_line":"            if password is not None:"},{"line_number":6474,"context_line":"                secret.setValue(password)"},{"line_number":6475,"context_line":"            return secret"},{"line_number":6476,"context_line":"        except Exception:"},{"line_number":6477,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":6478,"context_line":"                LOG.error(_LE(\u0027Error defining a secret with XML: %s\u0027) % xml)"},{"line_number":6479,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_fe613fd5","line":6476,"updated":"2014-12-05 13:17:00.000000000","message":"Again don\u0027t catch Exception type.","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"cae3b5e006a283c750468108051ec0a9bbc8aa9d","unresolved":false,"context_lines":[{"line_number":6473,"context_line":"            if password is not None:"},{"line_number":6474,"context_line":"                secret.setValue(password)"},{"line_number":6475,"context_line":"            return secret"},{"line_number":6476,"context_line":"        except Exception:"},{"line_number":6477,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":6478,"context_line":"                LOG.error(_LE(\u0027Error defining a secret with XML: %s\u0027) % xml)"},{"line_number":6479,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_90493f62","line":6476,"in_reply_to":"5a890539_fe613fd5","updated":"2014-12-23 15:15:29.000000000","message":"Done","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7f475897e61b3afb4365f8fa911ec231636feab9","unresolved":false,"context_lines":[{"line_number":6476,"context_line":"        except Exception:"},{"line_number":6477,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":6478,"context_line":"                LOG.error(_LE(\u0027Error defining a secret with XML: %s\u0027) % xml)"},{"line_number":6479,"context_line":""},{"line_number":6480,"context_line":"    def _delete_secret(self, usage_type, usage_name):"},{"line_number":6481,"context_line":"        \"\"\"Delete a secret."},{"line_number":6482,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_fe8f7f74","line":6479,"updated":"2014-12-05 13:17:00.000000000","message":"I\u0027d prefer to see this as two separate methods\n\n  _get_secret_uuid(usage_type, usage_name)\n\nwhich returns the secret UUID string. and  \n\n  _create_secret(usage_type, usage_name, password)\n\nwhich creates the secret config, defines the secret and returns the uuid string. This frees the caller from needing to care about the configuration of the secret","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"5fb388186fef1710ed09c1b8a2ec0566ed99e488","unresolved":false,"context_lines":[{"line_number":6476,"context_line":"        except Exception:"},{"line_number":6477,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":6478,"context_line":"                LOG.error(_LE(\u0027Error defining a secret with XML: %s\u0027) % xml)"},{"line_number":6479,"context_line":""},{"line_number":6480,"context_line":"    def _delete_secret(self, usage_type, usage_name):"},{"line_number":6481,"context_line":"        \"\"\"Delete a secret."},{"line_number":6482,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_f2708edc","line":6479,"in_reply_to":"3a961159_3c56a45c","updated":"2015-01-10 15:58:38.000000000","message":"Finally, I followed your comment.","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"cae3b5e006a283c750468108051ec0a9bbc8aa9d","unresolved":false,"context_lines":[{"line_number":6476,"context_line":"        except Exception:"},{"line_number":6477,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":6478,"context_line":"                LOG.error(_LE(\u0027Error defining a secret with XML: %s\u0027) % xml)"},{"line_number":6479,"context_line":""},{"line_number":6480,"context_line":"    def _delete_secret(self, usage_type, usage_name):"},{"line_number":6481,"context_line":"        \"\"\"Delete a secret."},{"line_number":6482,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_3c56a45c","line":6479,"in_reply_to":"5a890539_fe8f7f74","updated":"2014-12-23 15:15:29.000000000","message":"I can understand that, but basically this getting secret is (1) trying to find the secret (2) creating one if not found. I think it\u0027s usefull to conbine them like _get_secret().","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7f475897e61b3afb4365f8fa911ec231636feab9","unresolved":false,"context_lines":[{"line_number":6485,"context_line":"        try:"},{"line_number":6486,"context_line":"            secret \u003d self._find_secret(usage_type, usage_name)"},{"line_number":6487,"context_line":"            secret.undefine()"},{"line_number":6488,"context_line":"        except Exception:"},{"line_number":6489,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_1e5feb10","line":6488,"updated":"2014-12-05 13:17:00.000000000","message":"And again","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"cae3b5e006a283c750468108051ec0a9bbc8aa9d","unresolved":false,"context_lines":[{"line_number":6485,"context_line":"        try:"},{"line_number":6486,"context_line":"            secret \u003d self._find_secret(usage_type, usage_name)"},{"line_number":6487,"context_line":"            secret.undefine()"},{"line_number":6488,"context_line":"        except Exception:"},{"line_number":6489,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_1c000865","line":6488,"in_reply_to":"5a890539_1e5feb10","updated":"2014-12-23 15:15:29.000000000","message":"Done","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7f475897e61b3afb4365f8fa911ec231636feab9","unresolved":false,"context_lines":[{"line_number":6486,"context_line":"            secret \u003d self._find_secret(usage_type, usage_name)"},{"line_number":6487,"context_line":"            secret.undefine()"},{"line_number":6488,"context_line":"        except Exception:"},{"line_number":6489,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_de3643e8","line":6489,"updated":"2014-12-05 13:17:00.000000000","message":"Can you put all these methods into the host.py class instead. That class is intended to serve a place for wrappers around libvirt API calls, so we can stop driver.py growing ever larger. Also you\u0027ll need tests in test_host.py","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"af41db564adc43c868e9dc1c1dabc1774d818aa4","unresolved":false,"context_lines":[{"line_number":6486,"context_line":"            secret \u003d self._find_secret(usage_type, usage_name)"},{"line_number":6487,"context_line":"            secret.undefine()"},{"line_number":6488,"context_line":"        except Exception:"},{"line_number":6489,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_12efdab2","line":6489,"in_reply_to":"3a961159_dc304058","updated":"2015-01-10 14:14:15.000000000","message":"I checked host.py and try to migrate methods, but I found host.py is mainly for libvirtd-monitoring thread and general methods like get_connection(). IMO, it is better that 3 methods are in driver _now_.","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"cae3b5e006a283c750468108051ec0a9bbc8aa9d","unresolved":false,"context_lines":[{"line_number":6486,"context_line":"            secret \u003d self._find_secret(usage_type, usage_name)"},{"line_number":6487,"context_line":"            secret.undefine()"},{"line_number":6488,"context_line":"        except Exception:"},{"line_number":6489,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_dc304058","line":6489,"in_reply_to":"5a890539_de3643e8","updated":"2014-12-23 15:15:29.000000000","message":"ok, I\u0027ll check it.","commit_id":"d01814008ee7c99f74e6d87c9ac62a87838550d2"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"fdae873ffcc704bf3d7f43e9badebcd9c1879920","unresolved":false,"context_lines":[{"line_number":6377,"context_line":""},{"line_number":6378,"context_line":"        xml \u003d secret_conf.to_xml()"},{"line_number":6379,"context_line":"        try:"},{"line_number":6380,"context_line":"            LOG.debug(_LE(\u0027Secret XML: %s\u0027) % xml)"},{"line_number":6381,"context_line":"            secret \u003d self._conn.secretDefineXML(xml)"},{"line_number":6382,"context_line":"            if password is not None:"},{"line_number":6383,"context_line":"                secret.setValue(password)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_da6b96b7","line":6380,"range":{"start_line":6380,"start_character":22,"end_line":6380,"end_character":25},"updated":"2015-01-12 12:39:08.000000000","message":"Please don\u0027t use `_LE` with log level - `debug`. Don\u0027t use translation with `debug`.","commit_id":"e5f3f233dc644c93236ad5c5d1a6ae58749b7e0d"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"f6e937beed1d00e6eb3ef97fd44d45d80f1a0aa2","unresolved":false,"context_lines":[{"line_number":6377,"context_line":""},{"line_number":6378,"context_line":"        xml \u003d secret_conf.to_xml()"},{"line_number":6379,"context_line":"        try:"},{"line_number":6380,"context_line":"            LOG.debug(_LE(\u0027Secret XML: %s\u0027) % xml)"},{"line_number":6381,"context_line":"            secret \u003d self._conn.secretDefineXML(xml)"},{"line_number":6382,"context_line":"            if password is not None:"},{"line_number":6383,"context_line":"                secret.setValue(password)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_4de292a1","line":6380,"in_reply_to":"3a961159_da6b96b7","updated":"2015-01-12 13:27:36.000000000","message":"Done","commit_id":"e5f3f233dc644c93236ad5c5d1a6ae58749b7e0d"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c3a11acc93b87c11359985e9ee4e6ca3fec9af07","unresolved":false,"context_lines":[{"line_number":6396,"context_line":"            secret \u003d self._find_secret(usage_type, usage_id)"},{"line_number":6397,"context_line":"            secret.undefine()"},{"line_number":6398,"context_line":"        except libvirt.libvirtError:"},{"line_number":6399,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_3d0386bf","line":6399,"updated":"2015-01-13 14:28:57.000000000","message":"We\u0027ve recently introduced a new \u0027host.py\u0027 module with Host class for holding helper methods for dealing with libvirt. So please add these methods to that class instead of to driver.py, which is already far too large a file.","commit_id":"21aecc75543d883841e59190b6c4185fda20bb49"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c7eee0619aee0cab96c840401f6e21cecd1d46e9","unresolved":false,"context_lines":[{"line_number":6396,"context_line":"            secret \u003d self._find_secret(usage_type, usage_id)"},{"line_number":6397,"context_line":"            secret.undefine()"},{"line_number":6398,"context_line":"        except libvirt.libvirtError:"},{"line_number":6399,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_b3cb2572","line":6399,"in_reply_to":"3a961159_333575a8","updated":"2015-01-13 15:19:16.000000000","message":"Go for (a) right now. I\u0027ve got a bit of refactoring I\u0027m working on that will let us do (b) eventually, but its not ready for that yet.","commit_id":"21aecc75543d883841e59190b6c4185fda20bb49"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"b6660037fc19244dd250e761d16a2c2dbcea6375","unresolved":false,"context_lines":[{"line_number":6396,"context_line":"            secret \u003d self._find_secret(usage_type, usage_id)"},{"line_number":6397,"context_line":"            secret.undefine()"},{"line_number":6398,"context_line":"        except libvirt.libvirtError:"},{"line_number":6399,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_333575a8","line":6399,"in_reply_to":"3a961159_3d0386bf","updated":"2015-01-13 15:16:21.000000000","message":"How to call them in host.py from volume.py?\n\n(a) use self.connection._host.find_secret()\n\n(b) pass self._host from LibvirtDriver to volume drivers\n\n(c) new host.Host() in volume drivers","commit_id":"21aecc75543d883841e59190b6c4185fda20bb49"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"68f6cf80e1684a0f3eb6776cc0339708355c304b","unresolved":false,"context_lines":[{"line_number":6396,"context_line":"            secret \u003d self._find_secret(usage_type, usage_id)"},{"line_number":6397,"context_line":"            secret.undefine()"},{"line_number":6398,"context_line":"        except libvirt.libvirtError:"},{"line_number":6399,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_72660957","line":6399,"in_reply_to":"3a961159_b3cb2572","updated":"2015-01-13 22:37:45.000000000","message":"I see. I\u0027ll try it.","commit_id":"21aecc75543d883841e59190b6c4185fda20bb49"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"419297c96dfc940cc922d9e06b6e798de99b8386","unresolved":false,"context_lines":[{"line_number":684,"context_line":"        secret_conf \u003d vconfig.LibvirtConfigSecret()"},{"line_number":685,"context_line":"        secret_conf.ephemeral \u003d False"},{"line_number":686,"context_line":"        secret_conf.private \u003d False"},{"line_number":687,"context_line":"        if usage_type in (\u0027rbd\u0027, \u0027ceph\u0027):"},{"line_number":688,"context_line":"            secret_conf.usage_type \u003d \u0027ceph\u0027"},{"line_number":689,"context_line":"            secret_conf.usage_name \u003d usage_id"},{"line_number":690,"context_line":"        elif usage_type \u003d\u003d \u0027iscsi\u0027:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a930d6b_d92a7d7d","line":687,"updated":"2015-01-23 12:47:41.000000000","message":"As mentioned on the other file - while put this in if it\u0027s going to be dead code?\nlet\u0027s leave it out for a different patch?","commit_id":"691496c9d616de0e5c29a6cfcf5a601978f2e6fa"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"62b045908c970c337762112ed8a6047e812af757","unresolved":false,"context_lines":[{"line_number":684,"context_line":"        secret_conf \u003d vconfig.LibvirtConfigSecret()"},{"line_number":685,"context_line":"        secret_conf.ephemeral \u003d False"},{"line_number":686,"context_line":"        secret_conf.private \u003d False"},{"line_number":687,"context_line":"        if usage_type in (\u0027rbd\u0027, \u0027ceph\u0027):"},{"line_number":688,"context_line":"            secret_conf.usage_type \u003d \u0027ceph\u0027"},{"line_number":689,"context_line":"            secret_conf.usage_name \u003d usage_id"},{"line_number":690,"context_line":"        elif usage_type \u003d\u003d \u0027iscsi\u0027:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a930d6b_08ed8d8b","line":687,"in_reply_to":"1a930d6b_d92a7d7d","updated":"2015-01-23 15:23:49.000000000","message":"This commit has 2 capability:\n\na) Libvirt Secret framework for RBD, iSCSI and Volume\n\nb) iSCSI built-in support with a)\n\nSo, I want not to delete them. Please check my comment in the next file.","commit_id":"691496c9d616de0e5c29a6cfcf5a601978f2e6fa"}],"nova/virt/libvirt/volume.py":[{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"0b6168bc03afe5a002543f4945416475a77add13","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        if conf.source_protocol \u003d\u003d \u0027iscsi\u0027:"},{"line_number":246,"context_line":"            conf.source_name \u003d (\"%(target_iqn)s/%(target_lun)s\" %"},{"line_number":247,"context_line":"                                netdisk_properties)"},{"line_number":248,"context_line":"            ip, port \u003d netdisk_properties.get(\u0027target_portal\u0027, \"\").split(\u0027:\u0027)"},{"line_number":249,"context_line":"            conf.source_hosts \u003d [ip]"},{"line_number":250,"context_line":"            conf.source_ports \u003d [port]"},{"line_number":251,"context_line":"            if netdisk_properties.get(\u0027auth_method\u0027) \u003d\u003d \u0027CHAP\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_d9e9f280","line":248,"updated":"2015-01-20 02:23:52.000000000","message":"Won\u0027t this break on ipv6 addresses ?","commit_id":"31e3bbdc4912caeb6e4fe0c8fc2d50c0ddfc7d2e"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"4bf43cd420c837e12ba4aca1642c8d7aeff7704f","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        if conf.source_protocol \u003d\u003d \u0027iscsi\u0027:"},{"line_number":246,"context_line":"            conf.source_name \u003d (\"%(target_iqn)s/%(target_lun)s\" %"},{"line_number":247,"context_line":"                                netdisk_properties)"},{"line_number":248,"context_line":"            ip, port \u003d netdisk_properties.get(\u0027target_portal\u0027, \"\").split(\u0027:\u0027)"},{"line_number":249,"context_line":"            conf.source_hosts \u003d [ip]"},{"line_number":250,"context_line":"            conf.source_ports \u003d [port]"},{"line_number":251,"context_line":"            if netdisk_properties.get(\u0027auth_method\u0027) \u003d\u003d \u0027CHAP\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_4b751a32","line":248,"in_reply_to":"3a961159_d9e9f280","updated":"2015-01-20 13:06:56.000000000","message":"Oh! I fixed it just now.","commit_id":"31e3bbdc4912caeb6e4fe0c8fc2d50c0ddfc7d2e"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"008aad55797f522072359de98d103df1014c79df","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        if conf.source_protocol \u003d\u003d \u0027iscsi\u0027:"},{"line_number":246,"context_line":"            conf.source_name \u003d (\"%(target_iqn)s/%(target_lun)s\" %"},{"line_number":247,"context_line":"                                netdisk_properties)"},{"line_number":248,"context_line":"            ip, port \u003d utils.parse_server_string(netdisk_properties[\u0027target_portal\u0027])"},{"line_number":249,"context_line":"            if ip \u003d\u003d \u0027\u0027 or port \u003d\u003d \u0027\u0027:"},{"line_number":250,"context_line":"                raise exception.NovaException(_(\"Invalid target_lun\"))"},{"line_number":251,"context_line":"            conf.source_hosts \u003d [ip]"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_254c769d","line":248,"updated":"2015-01-20 15:08:30.000000000","message":"E501 line too long (85 \u003e 79 characters)","commit_id":"44f37c36a5366fa53f2357b83d9e3c19f9247853"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"053cbff0ae6fcd87b29c9b3366231d0a2a518d41","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        if conf.source_protocol \u003d\u003d \u0027iscsi\u0027:"},{"line_number":246,"context_line":"            conf.source_name \u003d (\"%(target_iqn)s/%(target_lun)s\" %"},{"line_number":247,"context_line":"                                netdisk_properties)"},{"line_number":248,"context_line":"            ip, port \u003d utils.parse_server_string(netdisk_properties[\u0027target_portal\u0027])"},{"line_number":249,"context_line":"            if ip \u003d\u003d \u0027\u0027 or port \u003d\u003d \u0027\u0027:"},{"line_number":250,"context_line":"                raise exception.NovaException(_(\"Invalid target_lun\"))"},{"line_number":251,"context_line":"            conf.source_hosts \u003d [ip]"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_c8e1099d","line":248,"in_reply_to":"3a961159_254c769d","updated":"2015-01-20 15:28:20.000000000","message":"Done","commit_id":"44f37c36a5366fa53f2357b83d9e3c19f9247853"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"0d6d2a9d42dac6a3a37b6476321e88cd13d36134","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                conf.auth_username \u003d CONF.libvirt.rbd_user"},{"line_number":245,"context_line":"        if conf.source_protocol \u003d\u003d \u0027iscsi\u0027:"},{"line_number":246,"context_line":"            conf.source_name \u003d (\"%(target_iqn)s/%(target_lun)s\" %"},{"line_number":247,"context_line":"                                netdisk_properties)"},{"line_number":248,"context_line":"            target_portal \u003d netdisk_properties[\u0027target_portal\u0027]"},{"line_number":249,"context_line":"            ip, port \u003d utils.parse_server_string(target_portal)"},{"line_number":250,"context_line":"            if ip \u003d\u003d \u0027\u0027 or port \u003d\u003d \u0027\u0027:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a930d6b_0384e2d2","line":247,"updated":"2015-01-21 17:15:53.000000000","message":"Error handling here seems like it could be more robus...","commit_id":"204312aad48b8b0fb75a4ad5e4a3955ab839c0dc"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"f30a09de6dd699b5279d715e3f574e6c7173a5f1","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                conf.auth_username \u003d CONF.libvirt.rbd_user"},{"line_number":245,"context_line":"        if conf.source_protocol \u003d\u003d \u0027iscsi\u0027:"},{"line_number":246,"context_line":"            conf.source_name \u003d (\"%(target_iqn)s/%(target_lun)s\" %"},{"line_number":247,"context_line":"                                netdisk_properties)"},{"line_number":248,"context_line":"            target_portal \u003d netdisk_properties[\u0027target_portal\u0027]"},{"line_number":249,"context_line":"            ip, port \u003d utils.parse_server_string(target_portal)"},{"line_number":250,"context_line":"            if ip \u003d\u003d \u0027\u0027 or port \u003d\u003d \u0027\u0027:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a930d6b_57d4c41f","line":247,"in_reply_to":"1a930d6b_0384e2d2","updated":"2015-01-22 15:43:03.000000000","message":"Done","commit_id":"204312aad48b8b0fb75a4ad5e4a3955ab839c0dc"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"419297c96dfc940cc922d9e06b6e798de99b8386","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        if (conf.source_protocol \u003d\u003d \u0027rbd\u0027 and"},{"line_number":240,"context_line":"                CONF.libvirt.rbd_secret_uuid):"},{"line_number":241,"context_line":"            conf.auth_secret_uuid \u003d CONF.libvirt.rbd_secret_uuid"},{"line_number":242,"context_line":"            auth_enabled \u003d True  # Force authentication locally"},{"line_number":243,"context_line":"            if CONF.libvirt.rbd_user:"},{"line_number":244,"context_line":"                conf.auth_username \u003d CONF.libvirt.rbd_user"},{"line_number":245,"context_line":"        if conf.source_protocol \u003d\u003d \u0027iscsi\u0027:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a930d6b_f90ad91f","line":242,"updated":"2015-01-23 12:47:41.000000000","message":"So how come we are not useing the support for creating rbd secrets here too.\n\nOr a better question would be - why add that to this patch if we are not going to use it - let\u0027s leave it for a different patch?","commit_id":"691496c9d616de0e5c29a6cfcf5a601978f2e6fa"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"62b045908c970c337762112ed8a6047e812af757","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        if (conf.source_protocol \u003d\u003d \u0027rbd\u0027 and"},{"line_number":240,"context_line":"                CONF.libvirt.rbd_secret_uuid):"},{"line_number":241,"context_line":"            conf.auth_secret_uuid \u003d CONF.libvirt.rbd_secret_uuid"},{"line_number":242,"context_line":"            auth_enabled \u003d True  # Force authentication locally"},{"line_number":243,"context_line":"            if CONF.libvirt.rbd_user:"},{"line_number":244,"context_line":"                conf.auth_username \u003d CONF.libvirt.rbd_user"},{"line_number":245,"context_line":"        if conf.source_protocol \u003d\u003d \u0027iscsi\u0027:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a930d6b_08810d4a","line":242,"in_reply_to":"1a930d6b_f90ad91f","updated":"2015-01-23 15:23:49.000000000","message":"Good point. Yes, I made secret-related code to be able to support for rbd, iscsi and volume, so there is no reason not to use it here. But I ask that anyone will develop another patch to support ceph because I have no testbed for it.\n\nOf course, it\u0027s useful to support libvirt volume. See below:\n\nhttps://blueprints.launchpad.net/nova/+spec/migrate-libvirt-volumes","commit_id":"691496c9d616de0e5c29a6cfcf5a601978f2e6fa"}]}
