)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8861304e9a86a9ad8a55b853997ed241fc713c41","unresolved":false,"context_lines":[{"line_number":12,"context_line":"A set of subsequent changes will implement spawn, snapshot, destroy"},{"line_number":13,"context_line":"and instance power actions."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ica6117c2c64f7518b78b7fb02487622250638e88"},{"line_number":16,"context_line":"blueprint: add-zvm-driver-queens"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3fa0c359_e96a147f","line":16,"range":{"start_line":15,"start_character":0,"end_line":16,"end_character":32},"updated":"2018-02-12 08:03:07.000000000","message":"all this patch set need to update to \nadd-zvm-driver-rocky","commit_id":"7b809fcaffb862c3bf85889b90aa0fd0ab6b984e"}],"nova/conf/zvm.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"29ff3d2fbd4624f6da9b50845aaf87355a3c85fc","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"zvm_opts \u003d ["},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027cloud_connector_url\u0027,"},{"line_number":27,"context_line":"               help\u003d\"\"\""},{"line_number":28,"context_line":"URL to be used to communicate with z/VM Cloud Connector."},{"line_number":29,"context_line":"Example: https://10.10.10.1:8080."}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_c22d7795","line":26,"range":{"start_line":26,"start_character":8,"end_line":26,"end_character":14},"updated":"2017-12-12 02:58:44.000000000","message":"It should be \u0027URIOpt\u0027.\n\nFor example:\nhttps://github.com/openstack/nova/blob/32c8ac6b7dfe4ca0c211cbce7c5a67d88558126f/nova/conf/ironic.py#L40","commit_id":"75dc24267b36b56c1cfd4ae84ab0426140e7b133"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"60b31cbf5959d164f8314ac5ef7520d9f06316c6","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"zvm_opts \u003d ["},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027cloud_connector_url\u0027,"},{"line_number":27,"context_line":"               help\u003d\"\"\""},{"line_number":28,"context_line":"URL to be used to communicate with z/VM Cloud Connector."},{"line_number":29,"context_line":"Example: https://10.10.10.1:8080."}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_22fb03c1","line":26,"range":{"start_line":26,"start_character":8,"end_line":26,"end_character":14},"in_reply_to":"df87a7cf_c22d7795","updated":"2017-12-12 03:06:28.000000000","message":"yes, you are right","commit_id":"75dc24267b36b56c1cfd4ae84ab0426140e7b133"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"283ee541ec68b0a1985de30fbfcec77da4db3499","unresolved":false,"context_lines":[{"line_number":18,"context_line":"zvm_opt_group \u003d cfg.OptGroup(\u0027zvm\u0027,"},{"line_number":19,"context_line":"                             title\u003d\u0027zVM Options\u0027,"},{"line_number":20,"context_line":"                             help\u003d\"\"\""},{"line_number":21,"context_line":"z/VM configuration options when set compute_driver\u003dzvm.driver.ZVMDriver."},{"line_number":22,"context_line":"\"\"\")"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_e69e4253","line":21,"range":{"start_line":21,"start_character":27,"end_line":21,"end_character":35},"updated":"2018-03-21 00:36:50.000000000","message":"s/when set/are used when/","commit_id":"0d4eb34be9bcb918b34841fb9e4656ad4cbd91e4"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9c304f3c90ee74afdc2a97bcb30a3c5b143fc439","unresolved":false,"context_lines":[{"line_number":18,"context_line":"zvm_opt_group \u003d cfg.OptGroup(\u0027zvm\u0027,"},{"line_number":19,"context_line":"                             title\u003d\u0027zVM Options\u0027,"},{"line_number":20,"context_line":"                             help\u003d\"\"\""},{"line_number":21,"context_line":"z/VM configuration options when set compute_driver\u003dzvm.driver.ZVMDriver."},{"line_number":22,"context_line":"\"\"\")"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_db1bb070","line":21,"range":{"start_line":21,"start_character":27,"end_line":21,"end_character":35},"in_reply_to":"df7087c5_e69e4253","updated":"2018-03-21 09:39:07.000000000","message":"Done","commit_id":"0d4eb34be9bcb918b34841fb9e4656ad4cbd91e4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a8bf4bec7d474938960ec8dc871fa480707d4dee","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_0399b66c","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2018-03-21 14:15:39.000000000","message":"Should this be \u00272017, 2018\u0027 now?\n\nSame for all new files in the patch.","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"066b0dbc190da87c3eeb6681073fe045bec40a98","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 IBM Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_e0a10248","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"df7087c5_0399b66c","updated":"2018-03-22 06:51:53.000000000","message":"ok, will modify","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a8bf4bec7d474938960ec8dc871fa480707d4dee","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"zvm_opts \u003d ["},{"line_number":27,"context_line":"    cfg.URIOpt(\u0027cloud_connector_url\u0027,"},{"line_number":28,"context_line":"               schemes\u003d[\u0027http\u0027, \u0027https\u0027],"},{"line_number":29,"context_line":"               sample_default\u003d\u0027http://zvm.example.org:8080/\u0027,"},{"line_number":30,"context_line":"               help\u003d\"\"\""},{"line_number":31,"context_line":"URL to be used to communicate with z/VM Cloud Connector."}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_e3e122fe","line":28,"range":{"start_line":28,"start_character":15,"end_line":28,"end_character":41},"updated":"2018-03-21 14:15:39.000000000","message":"I think this can (and probably should) be omitted.  See comment in https://review.openstack.org/#/c/523387/15/nova/virt/zvm/utils.py","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4645e16c7a3878f2434626a00d60df6254fb3cc3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"               help\u003d\"\"\""},{"line_number":30,"context_line":"URL to be used to communicate with z/VM Cloud Connector."},{"line_number":31,"context_line":"\"\"\"),"},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027ca_file\u0027,"},{"line_number":33,"context_line":"               default\u003dNone,"},{"line_number":34,"context_line":"               help\u003d\"\"\""},{"line_number":35,"context_line":"CA certificate file to be verified in httpd server with TLS enabled"}],"source_content_type":"text/x-python","patch_set":30,"id":"bf659307_5e9925ce","line":32,"updated":"2018-04-04 16:22:23.000000000","message":"I wonder if you should consider using keystoneauth1 to talk to your service...","commit_id":"e75230c049b3ac5f783a53d4104505c10ce7c85c"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"a592cfb7dd3d7721e9decc9eba39d3e9083c8c8a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"               help\u003d\"\"\""},{"line_number":30,"context_line":"URL to be used to communicate with z/VM Cloud Connector."},{"line_number":31,"context_line":"\"\"\"),"},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027ca_file\u0027,"},{"line_number":33,"context_line":"               default\u003dNone,"},{"line_number":34,"context_line":"               help\u003d\"\"\""},{"line_number":35,"context_line":"CA certificate file to be verified in httpd server with TLS enabled"}],"source_content_type":"text/x-python","patch_set":30,"id":"bf659307_7d7dc86c","line":32,"in_reply_to":"bf659307_5e9925ce","updated":"2018-04-09 06:59:36.000000000","message":"no, this is for talking to underlayer https service, I guess keystoneauth1 won\u0027t help here...","commit_id":"e75230c049b3ac5f783a53d4104505c10ce7c85c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ea6d0066291eca21ef5f5c07c9147e544538f841","unresolved":false,"context_lines":[{"line_number":18,"context_line":"zvm_opt_group \u003d cfg.OptGroup(\u0027zvm\u0027,"},{"line_number":19,"context_line":"                             title\u003d\u0027zVM Options\u0027,"},{"line_number":20,"context_line":"                             help\u003d\"\"\""},{"line_number":21,"context_line":"z/VM configuration options are used when set"},{"line_number":22,"context_line":"compute_driver\u003dzvm.driver.ZVMDriver."},{"line_number":23,"context_line":"\"\"\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_101bc872","line":22,"range":{"start_line":21,"start_character":36,"end_line":22,"end_character":36},"updated":"2018-04-24 17:14:26.000000000","message":"As a reference, xenserver configuration option seems a good explanation. How about the following based on that?\n\n the compute_driver is set to use zVM (compute_driver\u003dzvm.driver.ZVMDriver).","commit_id":"c2502fb88ad308e7306fe0fbe4369c3154ee6ce6"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"acef3fc3e31f0e2c310c536debfa25f69855b070","unresolved":false,"context_lines":[{"line_number":18,"context_line":"zvm_opt_group \u003d cfg.OptGroup(\u0027zvm\u0027,"},{"line_number":19,"context_line":"                             title\u003d\u0027zVM Options\u0027,"},{"line_number":20,"context_line":"                             help\u003d\"\"\""},{"line_number":21,"context_line":"z/VM configuration options are used when set"},{"line_number":22,"context_line":"compute_driver\u003dzvm.driver.ZVMDriver."},{"line_number":23,"context_line":"\"\"\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_64651c45","line":22,"range":{"start_line":21,"start_character":36,"end_line":22,"end_character":36},"in_reply_to":"9f6a8fd7_101bc872","updated":"2018-05-02 07:19:12.000000000","message":"ok, will do","commit_id":"c2502fb88ad308e7306fe0fbe4369c3154ee6ce6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ea0d438150aa90e7a686e398f920e2b67ef25cc3","unresolved":false,"context_lines":[{"line_number":19,"context_line":"                             title\u003d\u0027zVM Options\u0027,"},{"line_number":20,"context_line":"                             help\u003d\"\"\""},{"line_number":21,"context_line":"zVM options are used when the compute_driver is set to use"},{"line_number":22,"context_line":"zVM (compute_driver\u003dzvm.driver.ZVMDriver)."},{"line_number":23,"context_line":"\"\"\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"5f7c97a3_8ec25484","line":22,"range":{"start_line":22,"start_character":23,"end_line":22,"end_character":30},"updated":"2018-05-31 19:40:58.000000000","message":"strike (to match what\u0027s in nova/conf/compute.py, which is the convention and what we enable via the shim in nova/virt/zvm/__init__.py)","commit_id":"5322c185b450f61df970ad58f4dcb19f94134a4f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c61a8c1f2a30be5f2552e2a1c01680f52b5df2dc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"                             title\u003d\u0027zVM Options\u0027,"},{"line_number":20,"context_line":"                             help\u003d\"\"\""},{"line_number":21,"context_line":"zVM options are used when the compute_driver is set to use"},{"line_number":22,"context_line":"zVM (compute_driver\u003dzvm.driver.ZVMDriver)."},{"line_number":23,"context_line":"\"\"\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_3f81ddfb","line":22,"range":{"start_line":22,"start_character":24,"end_line":22,"end_character":30},"updated":"2018-06-01 16:08:48.000000000","message":"see PS44 comment.","commit_id":"424dff67a49a58d6b889933ed52a2744ee70cee9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c20383fde7192785b4e4e61dfe85331999e6d722","unresolved":false,"context_lines":[{"line_number":19,"context_line":"                             title\u003d\u0027zVM Options\u0027,"},{"line_number":20,"context_line":"                             help\u003d\"\"\""},{"line_number":21,"context_line":"zVM options are used when the compute_driver is set to use"},{"line_number":22,"context_line":"zVM (compute_driver\u003dzvm.driver.ZVMDriver)."},{"line_number":23,"context_line":"\"\"\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_1e9c110d","line":22,"range":{"start_line":22,"start_character":24,"end_line":22,"end_character":30},"in_reply_to":"5f7c97a3_3f81ddfb","updated":"2018-06-04 02:01:20.000000000","message":"sorry, missed this ...","commit_id":"424dff67a49a58d6b889933ed52a2744ee70cee9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ed59277a025a901ceed13670244b3e32012da222","unresolved":false,"context_lines":[{"line_number":18,"context_line":"zvm_opt_group \u003d cfg.OptGroup(\u0027zvm\u0027,"},{"line_number":19,"context_line":"                             title\u003d\u0027zVM Options\u0027,"},{"line_number":20,"context_line":"                             help\u003d\"\"\""},{"line_number":21,"context_line":"zvm options allows cloud administrator to configure related"},{"line_number":22,"context_line":"z/VM hypervisor driver to be used within an OpenStack deployment."},{"line_number":23,"context_line":"\"\"\")"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"5f7c97a3_4ce171fc","line":21,"updated":"2018-06-04 16:33:21.000000000","message":"Sorry, I wasn\u0027t clear.  I was just asking you to remove \".driver\" from the existing description, which was otherwise fine.  IOW:\n\n\"zVM options are used when the compute_driver is set to use\nzVM (compute_driver\u003dzvm.ZVMDriver).\"\n\nBecause compute_driver\u003dzvm.ZVMDriver is how we want folks to specify it.","commit_id":"d27787900bac8b5c26f91ff6cd9cc446042a6265"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"04f33cb4ea6ef0b4ed731a6c30a83642783f86fa","unresolved":false,"context_lines":[{"line_number":18,"context_line":"zvm_opt_group \u003d cfg.OptGroup(\u0027zvm\u0027,"},{"line_number":19,"context_line":"                             title\u003d\u0027zVM Options\u0027,"},{"line_number":20,"context_line":"                             help\u003d\"\"\""},{"line_number":21,"context_line":"zvm options allows cloud administrator to configure related"},{"line_number":22,"context_line":"z/VM hypervisor driver to be used within an OpenStack deployment."},{"line_number":23,"context_line":"\"\"\")"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"5f7c97a3_56d577b6","line":21,"in_reply_to":"5f7c97a3_4ce171fc","updated":"2018-06-05 06:47:31.000000000","message":"ok, I thought you want me to follow libivrt help doc \nas it\u0027s more generic.. thanks","commit_id":"d27787900bac8b5c26f91ff6cd9cc446042a6265"}],"nova/exception.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c61a8c1f2a30be5f2552e2a1c01680f52b5df2dc","unresolved":false,"context_lines":[{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":""},{"line_number":2296,"context_line":"class ZVMConnectorError(ZVMDriverException):"},{"line_number":2297,"context_line":"    msg_fmt \u003d _(\"zVM Cloud Connector request failed\")"},{"line_number":2298,"context_line":""},{"line_number":2299,"context_line":"    def __init__(self, results, **kwargs):"},{"line_number":2300,"context_line":"        \"\"\"Exception for zVM ConnectorClient calls."}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_ffd04521","line":2297,"range":{"start_line":2297,"start_character":17,"end_line":2297,"end_character":51},"updated":"2018-06-01 16:08:48.000000000","message":"Since this is what gets printed if the exception isn\u0027t caught and processed, it should include the \"body\" of the error.  Probably the easiest thing is:\n\n msg_fmt \u003d _(\"zVM Cloud Connector request failed: %(results)s\")\n\nThis will just stringify the results dict into the message, but also enables the below...","commit_id":"424dff67a49a58d6b889933ed52a2744ee70cee9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c61a8c1f2a30be5f2552e2a1c01680f52b5df2dc","unresolved":false,"context_lines":[{"line_number":2296,"context_line":"class ZVMConnectorError(ZVMDriverException):"},{"line_number":2297,"context_line":"    msg_fmt \u003d _(\"zVM Cloud Connector request failed\")"},{"line_number":2298,"context_line":""},{"line_number":2299,"context_line":"    def __init__(self, results, **kwargs):"},{"line_number":2300,"context_line":"        \"\"\"Exception for zVM ConnectorClient calls."},{"line_number":2301,"context_line":""},{"line_number":2302,"context_line":"        :param results: The object returned from ZVMConnector.send_request."}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_7f0675d0","line":2299,"range":{"start_line":2299,"start_character":0,"end_line":2299,"end_character":42},"updated":"2018-06-01 16:08:48.000000000","message":"This is nice.  Unfortunately, the tox failure indicates we need to handle the args a little more carefully, making the signature match that of the superclass.  Which means you need `results` to be in kwargs.  Along with the above, you can kill two birds with one stone via something like:\n\n def __init__(self, message\u003dNone, **kwargs):\n     ...\n     results \u003d kwargs.get(\u0027results\u0027, {})\n     self.overallRC \u003d results.get(\u0027overallRC\u0027)\n     ...\n\n(BTW, note that I\u0027m not a fan of the failing test as written; but the path of least resistance is certainly to fix this rather than that :)","commit_id":"424dff67a49a58d6b889933ed52a2744ee70cee9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c20383fde7192785b4e4e61dfe85331999e6d722","unresolved":false,"context_lines":[{"line_number":2301,"context_line":""},{"line_number":2302,"context_line":"        :param results: The object returned from ZVMConnector.send_request."},{"line_number":2303,"context_line":"        \"\"\""},{"line_number":2304,"context_line":"        super(ZVMConnectorError, self).__init__(**kwargs)"},{"line_number":2305,"context_line":"        self.overallRC \u003d results[\u0027overallRC\u0027]"},{"line_number":2306,"context_line":"        self.rc \u003d results[\u0027rc\u0027]"},{"line_number":2307,"context_line":"        self.rs \u003d results[\u0027rs\u0027]"}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_5e17e955","line":2304,"range":{"start_line":2304,"start_character":8,"end_line":2304,"end_character":57},"updated":"2018-06-04 02:01:20.000000000","message":"this is the root cause ,\nI will get this error because **kwargs not parsable by upper layer exception?\n\n\nCaptured pythonlogging:\n~~~~~~~~~~~~~~~~~~~~~~~\n    2018-06-04 09:49:50,823 ERROR [nova.exception] Exception in string format operation\n    Traceback (most recent call last):\n      File \"nova/exception.py\", line 82, in __init__\n        message \u003d self.msg_fmt % kwargs\n    KeyError: u\u0027results\u0027\n    2018-06-04 09:49:50,823 ERROR [nova.exception] code: 500","commit_id":"424dff67a49a58d6b889933ed52a2744ee70cee9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ed59277a025a901ceed13670244b3e32012da222","unresolved":false,"context_lines":[{"line_number":2301,"context_line":""},{"line_number":2302,"context_line":"        :param results: The object returned from ZVMConnector.send_request."},{"line_number":2303,"context_line":"        \"\"\""},{"line_number":2304,"context_line":"        super(ZVMConnectorError, self).__init__(message, **kwargs)"},{"line_number":2305,"context_line":""},{"line_number":2306,"context_line":"        results \u003d kwargs.get(\u0027results\u0027, {})"},{"line_number":2307,"context_line":"        self.overallRC \u003d results.get(\u0027overallRC\u0027)"}],"source_content_type":"text/x-python","patch_set":46,"id":"5f7c97a3_ac9e0567","line":2304,"range":{"start_line":2304,"start_character":48,"end_line":2304,"end_character":55},"updated":"2018-06-04 16:33:21.000000000","message":"say\n\n message\u003dmessage\n\nhere.  Always best to specify names when using kwargs.","commit_id":"d27787900bac8b5c26f91ff6cd9cc446042a6265"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"04f33cb4ea6ef0b4ed731a6c30a83642783f86fa","unresolved":false,"context_lines":[{"line_number":2301,"context_line":""},{"line_number":2302,"context_line":"        :param results: The object returned from ZVMConnector.send_request."},{"line_number":2303,"context_line":"        \"\"\""},{"line_number":2304,"context_line":"        super(ZVMConnectorError, self).__init__(message, **kwargs)"},{"line_number":2305,"context_line":""},{"line_number":2306,"context_line":"        results \u003d kwargs.get(\u0027results\u0027, {})"},{"line_number":2307,"context_line":"        self.overallRC \u003d results.get(\u0027overallRC\u0027)"}],"source_content_type":"text/x-python","patch_set":46,"id":"5f7c97a3_11c4e95e","line":2304,"range":{"start_line":2304,"start_character":48,"end_line":2304,"end_character":55},"in_reply_to":"5f7c97a3_ac9e0567","updated":"2018-06-05 06:47:31.000000000","message":"Done","commit_id":"d27787900bac8b5c26f91ff6cd9cc446042a6265"}],"nova/tests/unit/virt/zvm/test_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.driver \u003d zvmdriver.ZVMDriver(\u0027virtapi\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def test_driver_init(self):"},{"line_number":33,"context_line":"        self.assertEqual(self.driver._hypervisor_hostname, \u0027TESTHOST\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.zVMConnectorRequestHandler.call\u0027)"},{"line_number":36,"context_line":"    def test_list_instance(self, call):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_73975b92","line":33,"updated":"2018-01-12 02:39:41.000000000","message":"nit: assertEqual args are (expected, observed) which only matters in the MismatchError message if it fails.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.driver \u003d zvmdriver.ZVMDriver(\u0027virtapi\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def test_driver_init(self):"},{"line_number":33,"context_line":"        self.assertEqual(self.driver._hypervisor_hostname, \u0027TESTHOST\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.zVMConnectorRequestHandler.call\u0027)"},{"line_number":36,"context_line":"    def test_list_instance(self, call):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_6430ec57","line":33,"in_reply_to":"7f96bb07_73975b92","updated":"2018-01-12 08:07:56.000000000","message":"Done","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"283ee541ec68b0a1985de30fbfcec77da4db3499","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.driver \u003d zvmdriver.ZVMDriver(\u0027virtapi\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def test_driver_init(self):"},{"line_number":33,"context_line":"        self.assertEqual(\u0027TESTHOST\u0027, self.driver._hypervisor_hostname)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.zVMConnectorRequestHandler.call\u0027)"},{"line_number":36,"context_line":"    def test_list_instance(self, call):"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_f27ca021","line":33,"updated":"2018-03-21 00:36:50.000000000","message":"Looks like you should also have a test case (new test such as \"test_driver_init_no_url\" where cloud_connector_url isn\u0027t set and you expect an exception to be raised.","commit_id":"0d4eb34be9bcb918b34841fb9e4656ad4cbd91e4"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9c304f3c90ee74afdc2a97bcb30a3c5b143fc439","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.driver \u003d zvmdriver.ZVMDriver(\u0027virtapi\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def test_driver_init(self):"},{"line_number":33,"context_line":"        self.assertEqual(\u0027TESTHOST\u0027, self.driver._hypervisor_hostname)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.zVMConnectorRequestHandler.call\u0027)"},{"line_number":36,"context_line":"    def test_list_instance(self, call):"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_9b89b827","line":33,"in_reply_to":"df7087c5_f27ca021","updated":"2018-03-21 09:39:07.000000000","message":"ok, a new test case will be added","commit_id":"0d4eb34be9bcb918b34841fb9e4656ad4cbd91e4"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d49b53933eb5166e2bffe22db8d76a548194a415","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.zVMConnectorRequestHandler.call\u0027)"},{"line_number":44,"context_line":"    def test_get_available_resource(self, call):"},{"line_number":45,"context_line":"        host_info \u003d {\u0027disk_available\u0027: 1144,"},{"line_number":46,"context_line":"                     \u0027ipl_time\u0027: u\u0027IPL at 11/14/17 10:47:44 EST\u0027,"},{"line_number":47,"context_line":"                     \u0027vcpus_used\u0027: 4,"},{"line_number":48,"context_line":"                     \u0027hypervisor_type\u0027: u\u0027zvm\u0027,"},{"line_number":49,"context_line":"                     \u0027disk_total\u0027: 2000,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_837664d8","line":46,"updated":"2018-03-26 08:38:58.000000000","message":"nit: do you really need of the \"u\u0027\" prefix?","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3d82d08fbf6455745ccf5953df8fbd9b098cf064","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.zVMConnectorRequestHandler.call\u0027)"},{"line_number":44,"context_line":"    def test_get_available_resource(self, call):"},{"line_number":45,"context_line":"        host_info \u003d {\u0027disk_available\u0027: 1144,"},{"line_number":46,"context_line":"                     \u0027ipl_time\u0027: u\u0027IPL at 11/14/17 10:47:44 EST\u0027,"},{"line_number":47,"context_line":"                     \u0027vcpus_used\u0027: 4,"},{"line_number":48,"context_line":"                     \u0027hypervisor_type\u0027: u\u0027zvm\u0027,"},{"line_number":49,"context_line":"                     \u0027disk_total\u0027: 2000,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_a6059ac4","line":46,"in_reply_to":"bf659307_837664d8","updated":"2018-03-27 03:17:24.000000000","message":"I can remove them :)","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4645e16c7a3878f2434626a00d60df6254fb3cc3","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self.assertRaises(exception.ZVMDriverException,"},{"line_number":35,"context_line":"                          zvmdriver.ZVMDriver, \u0027virtapi\u0027)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.ConnectorRequestHandler.call\u0027)"},{"line_number":38,"context_line":"    def test_get_available_resource(self, call):"},{"line_number":39,"context_line":"        host_info \u003d {\u0027disk_available\u0027: 1144,"},{"line_number":40,"context_line":"                     \u0027ipl_time\u0027: \u0027IPL at 11/14/17 10:47:44 EST\u0027,"},{"line_number":41,"context_line":"                     \u0027vcpus_used\u0027: 4,"},{"line_number":42,"context_line":"                     \u0027hypervisor_type\u0027: \u0027zvm\u0027,"},{"line_number":43,"context_line":"                     \u0027disk_total\u0027: 2000,"},{"line_number":44,"context_line":"                     \u0027zvm_host\u0027: \u0027TESTHOST\u0027,"},{"line_number":45,"context_line":"                     \u0027memory_mb\u0027: 78192.0,"},{"line_number":46,"context_line":"                     \u0027cpu_info\u0027: {\u0027cec_model\u0027: \u00272827\u0027,"},{"line_number":47,"context_line":"                                  \u0027architecture\u0027: \u0027s390x\u0027},"},{"line_number":48,"context_line":"                     \u0027vcpus\u0027: 84,"},{"line_number":49,"context_line":"                     \u0027hypervisor_hostname\u0027: \u0027TESTHOST\u0027,"},{"line_number":50,"context_line":"                     \u0027hypervisor_version\u0027: 640,"},{"line_number":51,"context_line":"                     \u0027disk_used\u0027: 856,"},{"line_number":52,"context_line":"                     \u0027memory_mb_used\u0027: 8192.0}"},{"line_number":53,"context_line":"        call.return_value \u003d host_info"},{"line_number":54,"context_line":"        results \u003d self._driver.get_available_resource()"},{"line_number":55,"context_line":"        self.assertEqual(84, results[\u0027vcpus\u0027])"},{"line_number":56,"context_line":"        self.assertEqual(8192.0, results[\u0027memory_mb_used\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(1144, results[\u0027disk_available_least\u0027])"},{"line_number":58,"context_line":"        self.assertEqual(\u0027TESTHOST\u0027, results[\u0027hypervisor_hostname\u0027])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.ConnectorRequestHandler.call\u0027)"},{"line_number":61,"context_line":"    def test_get_available_resource_err_case(self, call):"},{"line_number":62,"context_line":"        call.side_effect \u003d exception.ZVMDriverException(error\u003d\u0027dummy\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"bf659307_bee1612d","line":59,"range":{"start_line":37,"start_character":0,"end_line":59,"end_character":0},"updated":"2018-04-04 16:22:23.000000000","message":"This is redundant...","commit_id":"e75230c049b3ac5f783a53d4104505c10ce7c85c"}],"nova/tests/unit/virt/zvm/test_hypervisor.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4645e16c7a3878f2434626a00d60df6254fb3cc3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            driver \u003d zvmdriver.ZVMDriver(\u0027virtapi\u0027)"},{"line_number":31,"context_line":"            self._hypervisor \u003d driver._hypervisor"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.ConnectorRequestHandler.call\u0027)"},{"line_number":34,"context_line":"    def test_get_available_resource(self, call):"},{"line_number":35,"context_line":"        host_info \u003d {\u0027disk_available\u0027: 1144,"},{"line_number":36,"context_line":"                     \u0027ipl_time\u0027: \u0027IPL at 11/14/17 10:47:44 EST\u0027,"},{"line_number":37,"context_line":"                     \u0027vcpus_used\u0027: 4,"},{"line_number":38,"context_line":"                     \u0027hypervisor_type\u0027: \u0027zvm\u0027,"},{"line_number":39,"context_line":"                     \u0027disk_total\u0027: 2000,"},{"line_number":40,"context_line":"                     \u0027zvm_host\u0027: \u0027TESTHOST\u0027,"},{"line_number":41,"context_line":"                     \u0027memory_mb\u0027: 78192.0,"},{"line_number":42,"context_line":"                     \u0027cpu_info\u0027: {\u0027cec_model\u0027: \u00272827\u0027,"},{"line_number":43,"context_line":"                                  \u0027architecture\u0027: \u0027s390x\u0027},"},{"line_number":44,"context_line":"                     \u0027vcpus\u0027: 84,"},{"line_number":45,"context_line":"                     \u0027hypervisor_hostname\u0027: \u0027TESTHOST\u0027,"},{"line_number":46,"context_line":"                     \u0027hypervisor_version\u0027: 640,"},{"line_number":47,"context_line":"                     \u0027disk_used\u0027: 856,"},{"line_number":48,"context_line":"                     \u0027memory_mb_used\u0027: 8192.0}"},{"line_number":49,"context_line":"        call.return_value \u003d host_info"},{"line_number":50,"context_line":"        results \u003d self._hypervisor.get_available_resource()"},{"line_number":51,"context_line":"        self.assertEqual(host_info, results)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.ConnectorRequestHandler.call\u0027)"},{"line_number":54,"context_line":"    def test_get_available_resource_err_case(self, call):"}],"source_content_type":"text/x-python","patch_set":30,"id":"bf659307_5ed04554","line":51,"range":{"start_line":33,"start_character":0,"end_line":51,"end_character":44},"updated":"2018-04-04 16:22:23.000000000","message":"...with this.  Remove one of them.","commit_id":"e75230c049b3ac5f783a53d4104505c10ce7c85c"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"a592cfb7dd3d7721e9decc9eba39d3e9083c8c8a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            driver \u003d zvmdriver.ZVMDriver(\u0027virtapi\u0027)"},{"line_number":31,"context_line":"            self._hypervisor \u003d driver._hypervisor"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.ConnectorRequestHandler.call\u0027)"},{"line_number":34,"context_line":"    def test_get_available_resource(self, call):"},{"line_number":35,"context_line":"        host_info \u003d {\u0027disk_available\u0027: 1144,"},{"line_number":36,"context_line":"                     \u0027ipl_time\u0027: \u0027IPL at 11/14/17 10:47:44 EST\u0027,"},{"line_number":37,"context_line":"                     \u0027vcpus_used\u0027: 4,"},{"line_number":38,"context_line":"                     \u0027hypervisor_type\u0027: \u0027zvm\u0027,"},{"line_number":39,"context_line":"                     \u0027disk_total\u0027: 2000,"},{"line_number":40,"context_line":"                     \u0027zvm_host\u0027: \u0027TESTHOST\u0027,"},{"line_number":41,"context_line":"                     \u0027memory_mb\u0027: 78192.0,"},{"line_number":42,"context_line":"                     \u0027cpu_info\u0027: {\u0027cec_model\u0027: \u00272827\u0027,"},{"line_number":43,"context_line":"                                  \u0027architecture\u0027: \u0027s390x\u0027},"},{"line_number":44,"context_line":"                     \u0027vcpus\u0027: 84,"},{"line_number":45,"context_line":"                     \u0027hypervisor_hostname\u0027: \u0027TESTHOST\u0027,"},{"line_number":46,"context_line":"                     \u0027hypervisor_version\u0027: 640,"},{"line_number":47,"context_line":"                     \u0027disk_used\u0027: 856,"},{"line_number":48,"context_line":"                     \u0027memory_mb_used\u0027: 8192.0}"},{"line_number":49,"context_line":"        call.return_value \u003d host_info"},{"line_number":50,"context_line":"        results \u003d self._hypervisor.get_available_resource()"},{"line_number":51,"context_line":"        self.assertEqual(host_info, results)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @mock.patch(\u0027nova.virt.zvm.utils.ConnectorRequestHandler.call\u0027)"},{"line_number":54,"context_line":"    def test_get_available_resource_err_case(self, call):"}],"source_content_type":"text/x-python","patch_set":30,"id":"bf659307_dd865466","line":51,"range":{"start_line":33,"start_character":0,"end_line":51,"end_character":44},"in_reply_to":"bf659307_5ed04554","updated":"2018-04-09 06:59:36.000000000","message":"Done","commit_id":"e75230c049b3ac5f783a53d4104505c10ce7c85c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"57a2459778545d801f7c979fb1a978dd6ac6d740","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                     \u0027hypervisor_type\u0027: \u0027zvm\u0027,"},{"line_number":39,"context_line":"                     \u0027disk_total\u0027: 2000,"},{"line_number":40,"context_line":"                     \u0027zvm_host\u0027: \u0027TESTHOST\u0027,"},{"line_number":41,"context_line":"                     \u0027memory_mb\u0027: 78192.0,"},{"line_number":42,"context_line":"                     \u0027cpu_info\u0027: {\u0027cec_model\u0027: \u00272827\u0027,"},{"line_number":43,"context_line":"                                  \u0027architecture\u0027: \u0027s390x\u0027},"},{"line_number":44,"context_line":"                     \u0027vcpus\u0027: 84,"}],"source_content_type":"text/x-python","patch_set":52,"id":"5f7c97a3_11bb1fc4","line":41,"range":{"start_line":41,"start_character":34,"end_line":41,"end_character":41},"updated":"2018-07-04 07:48:41.000000000","message":"nit, this shouldn\u0027t be float","commit_id":"da208444a356c6de7883ac648d5886e37a53d756"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"dfe8cea4cced446a1fe2a2714a86bd605005b41f","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                     \u0027hypervisor_type\u0027: \u0027zvm\u0027,"},{"line_number":39,"context_line":"                     \u0027disk_total\u0027: 2000,"},{"line_number":40,"context_line":"                     \u0027zvm_host\u0027: \u0027TESTHOST\u0027,"},{"line_number":41,"context_line":"                     \u0027memory_mb\u0027: 78192.0,"},{"line_number":42,"context_line":"                     \u0027cpu_info\u0027: {\u0027cec_model\u0027: \u00272827\u0027,"},{"line_number":43,"context_line":"                                  \u0027architecture\u0027: \u0027s390x\u0027},"},{"line_number":44,"context_line":"                     \u0027vcpus\u0027: 84,"}],"source_content_type":"text/x-python","patch_set":52,"id":"5f7c97a3_90db97e8","line":41,"range":{"start_line":41,"start_character":34,"end_line":41,"end_character":41},"in_reply_to":"5f7c97a3_11bb1fc4","updated":"2018-07-05 06:06:57.000000000","message":"Done","commit_id":"da208444a356c6de7883ac648d5886e37a53d756"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"57a2459778545d801f7c979fb1a978dd6ac6d740","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                     \u0027hypervisor_hostname\u0027: \u0027TESTHOST\u0027,"},{"line_number":46,"context_line":"                     \u0027hypervisor_version\u0027: 640,"},{"line_number":47,"context_line":"                     \u0027disk_used\u0027: 856,"},{"line_number":48,"context_line":"                     \u0027memory_mb_used\u0027: 8192.0}"},{"line_number":49,"context_line":"        call.return_value \u003d host_info"},{"line_number":50,"context_line":"        results \u003d self._hypervisor.get_available_resource()"},{"line_number":51,"context_line":"        self.assertEqual(host_info, results)"}],"source_content_type":"text/x-python","patch_set":52,"id":"5f7c97a3_b1ab4b6f","line":48,"range":{"start_line":48,"start_character":22,"end_line":48,"end_character":45},"updated":"2018-07-04 07:48:41.000000000","message":"ditto","commit_id":"da208444a356c6de7883ac648d5886e37a53d756"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"dfe8cea4cced446a1fe2a2714a86bd605005b41f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                     \u0027hypervisor_hostname\u0027: \u0027TESTHOST\u0027,"},{"line_number":46,"context_line":"                     \u0027hypervisor_version\u0027: 640,"},{"line_number":47,"context_line":"                     \u0027disk_used\u0027: 856,"},{"line_number":48,"context_line":"                     \u0027memory_mb_used\u0027: 8192.0}"},{"line_number":49,"context_line":"        call.return_value \u003d host_info"},{"line_number":50,"context_line":"        results \u003d self._hypervisor.get_available_resource()"},{"line_number":51,"context_line":"        self.assertEqual(host_info, results)"}],"source_content_type":"text/x-python","patch_set":52,"id":"5f7c97a3_30ee438b","line":48,"range":{"start_line":48,"start_character":22,"end_line":48,"end_character":45},"in_reply_to":"5f7c97a3_b1ab4b6f","updated":"2018-07-05 06:06:57.000000000","message":"Done","commit_id":"da208444a356c6de7883ac648d5886e37a53d756"}],"nova/tests/unit/virt/zvm/test_utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class TestZVMUtils(test.NoDBTestCase):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def test_sdk_request_handler(self):"},{"line_number":25,"context_line":"        self.flags(cloud_connector_url\u003d\u0027https://1.1.1.1:1111\u0027, group\u003d\u0027zvm\u0027)"},{"line_number":26,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":27,"context_line":"        self.assertIsInstance(rh, zvmutils.zVMConnectorRequestHandler)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_53bc9f04","line":24,"updated":"2018-01-12 02:39:41.000000000","message":"Some comments in what this is testing would be nice.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class TestZVMUtils(test.NoDBTestCase):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def test_sdk_request_handler(self):"},{"line_number":25,"context_line":"        self.flags(cloud_connector_url\u003d\u0027https://1.1.1.1:1111\u0027, group\u003d\u0027zvm\u0027)"},{"line_number":26,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":27,"context_line":"        self.assertIsInstance(rh, zvmutils.zVMConnectorRequestHandler)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_04356846","line":24,"in_reply_to":"7f96bb07_53bc9f04","updated":"2018-01-12 08:07:56.000000000","message":"Done","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def test_sdk_request_handler(self):"},{"line_number":25,"context_line":"        self.flags(cloud_connector_url\u003d\u0027https://1.1.1.1:1111\u0027, group\u003d\u0027zvm\u0027)"},{"line_number":26,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":27,"context_line":"        self.assertIsInstance(rh, zvmutils.zVMConnectorRequestHandler)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        self.flags(cloud_connector_url\u003d\u0027http://invalid\u0027, group\u003d\u0027zvm\u0027)"},{"line_number":30,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_33e6b346","line":27,"updated":"2018-01-12 02:39:41.000000000","message":"This seems useless.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def test_sdk_request_handler(self):"},{"line_number":25,"context_line":"        self.flags(cloud_connector_url\u003d\u0027https://1.1.1.1:1111\u0027, group\u003d\u0027zvm\u0027)"},{"line_number":26,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":27,"context_line":"        self.assertIsInstance(rh, zvmutils.zVMConnectorRequestHandler)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        self.flags(cloud_connector_url\u003d\u0027http://invalid\u0027, group\u003d\u0027zvm\u0027)"},{"line_number":30,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_243ae435","line":27,"in_reply_to":"7f96bb07_33e6b346","updated":"2018-01-12 08:07:56.000000000","message":"Done","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            \u0027zVMConnectorRequestHandler.call\u0027) as fake_call:"},{"line_number":35,"context_line":"            fake_call.return_value \u003d {\u0027overallRC\u0027: 1, \u0027errormsg\u0027: \u0027error\u0027}"},{"line_number":36,"context_line":"            rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":37,"context_line":"            try:"},{"line_number":38,"context_line":"                rh.call(\u0027guest_list\u0027)"},{"line_number":39,"context_line":"            except exception.NovaException as err:"},{"line_number":40,"context_line":"                self.assertEqual(1, err.kwargs[\u0027results\u0027][\u0027overallRC\u0027])"},{"line_number":41,"context_line":"                self.assertEqual(\u0027error\u0027, err.kwargs[\u0027results\u0027][\u0027errormsg\u0027])"},{"line_number":42,"context_line":"            fake_call.assert_called_once_with(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_93c22785","line":41,"range":{"start_line":37,"start_character":12,"end_line":41,"end_character":76},"updated":"2018-01-12 02:39:41.000000000","message":"You should do like:\n\nerr \u003d self.assertRaises(exception.NovaException, rh.call, \u0027guest_list\u0027)\n\nBecause otherwise if rh.call doesn\u0027t fail, we won\u0027t know and the test will pass.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8589da5a5abf048ace832ee2caf0156f3755633a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            \u0027zVMConnectorRequestHandler.call\u0027) as fake_call:"},{"line_number":35,"context_line":"            fake_call.return_value \u003d {\u0027overallRC\u0027: 1, \u0027errormsg\u0027: \u0027error\u0027}"},{"line_number":36,"context_line":"            rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":37,"context_line":"            try:"},{"line_number":38,"context_line":"                rh.call(\u0027guest_list\u0027)"},{"line_number":39,"context_line":"            except exception.NovaException as err:"},{"line_number":40,"context_line":"                self.assertEqual(1, err.kwargs[\u0027results\u0027][\u0027overallRC\u0027])"},{"line_number":41,"context_line":"                self.assertEqual(\u0027error\u0027, err.kwargs[\u0027results\u0027][\u0027errormsg\u0027])"},{"line_number":42,"context_line":"            fake_call.assert_called_once_with(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_90176452","line":41,"range":{"start_line":37,"start_character":12,"end_line":41,"end_character":76},"in_reply_to":"7f96bb07_2488a4e5","updated":"2018-01-12 19:17:58.000000000","message":"Sure, but you can still do that with the way I showed, you get the exception back from the assertRaises method, and it also makes the test assert that the rh.call actually raises that exception.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"5b78857792e1cb82a9d8986d0771eb52c3074a4c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            \u0027zVMConnectorRequestHandler.call\u0027) as fake_call:"},{"line_number":35,"context_line":"            fake_call.return_value \u003d {\u0027overallRC\u0027: 1, \u0027errormsg\u0027: \u0027error\u0027}"},{"line_number":36,"context_line":"            rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":37,"context_line":"            try:"},{"line_number":38,"context_line":"                rh.call(\u0027guest_list\u0027)"},{"line_number":39,"context_line":"            except exception.NovaException as err:"},{"line_number":40,"context_line":"                self.assertEqual(1, err.kwargs[\u0027results\u0027][\u0027overallRC\u0027])"},{"line_number":41,"context_line":"                self.assertEqual(\u0027error\u0027, err.kwargs[\u0027results\u0027][\u0027errormsg\u0027])"},{"line_number":42,"context_line":"            fake_call.assert_called_once_with(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_43bd78d6","line":41,"range":{"start_line":37,"start_character":12,"end_line":41,"end_character":76},"in_reply_to":"7f96bb07_90176452","updated":"2018-01-15 09:06:35.000000000","message":"Done","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            \u0027zVMConnectorRequestHandler.call\u0027) as fake_call:"},{"line_number":35,"context_line":"            fake_call.return_value \u003d {\u0027overallRC\u0027: 1, \u0027errormsg\u0027: \u0027error\u0027}"},{"line_number":36,"context_line":"            rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":37,"context_line":"            try:"},{"line_number":38,"context_line":"                rh.call(\u0027guest_list\u0027)"},{"line_number":39,"context_line":"            except exception.NovaException as err:"},{"line_number":40,"context_line":"                self.assertEqual(1, err.kwargs[\u0027results\u0027][\u0027overallRC\u0027])"},{"line_number":41,"context_line":"                self.assertEqual(\u0027error\u0027, err.kwargs[\u0027results\u0027][\u0027errormsg\u0027])"},{"line_number":42,"context_line":"            fake_call.assert_called_once_with(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_2488a4e5","line":41,"range":{"start_line":37,"start_character":12,"end_line":41,"end_character":76},"in_reply_to":"7f96bb07_93c22785","updated":"2018-01-12 08:07:56.000000000","message":"The request failed exception has an attribute - results, which carries return code, reason code and zvm cloud connector specific error messages, so catch such kind of exception to assert result context manually.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"283ee541ec68b0a1985de30fbfcec77da4db3499","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        # Invalid url specified in CONF.zvm.cloud_connector_url"},{"line_number":28,"context_line":"        self.flags(cloud_connector_url\u003d\u0027http://invalid\u0027, group\u003d\u0027zvm\u0027)"},{"line_number":29,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":30,"context_line":"        self.assertRaises(exception.NovaException, rh.call, \u0027guest_list\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        with mock.patch(\u0027nova.virt.zvm.utils.\u0027"},{"line_number":33,"context_line":"            \u0027zVMConnectorRequestHandler.call\u0027) as fake_call:"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_e6516264","line":30,"updated":"2018-03-21 00:36:50.000000000","message":"I think this first code block should be its own test like \"test_connector_request_handler_invalid_url\"","commit_id":"0d4eb34be9bcb918b34841fb9e4656ad4cbd91e4"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9c304f3c90ee74afdc2a97bcb30a3c5b143fc439","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        # Invalid url specified in CONF.zvm.cloud_connector_url"},{"line_number":28,"context_line":"        self.flags(cloud_connector_url\u003d\u0027http://invalid\u0027, group\u003d\u0027zvm\u0027)"},{"line_number":29,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":30,"context_line":"        self.assertRaises(exception.NovaException, rh.call, \u0027guest_list\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        with mock.patch(\u0027nova.virt.zvm.utils.\u0027"},{"line_number":33,"context_line":"            \u0027zVMConnectorRequestHandler.call\u0027) as fake_call:"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_9b2a18e5","line":30,"in_reply_to":"df7087c5_e6516264","updated":"2018-03-21 09:39:07.000000000","message":"ok, moved to another one","commit_id":"0d4eb34be9bcb918b34841fb9e4656ad4cbd91e4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"283ee541ec68b0a1985de30fbfcec77da4db3499","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.assertRaises(exception.NovaException, rh.call, \u0027guest_list\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        with mock.patch(\u0027nova.virt.zvm.utils.\u0027"},{"line_number":33,"context_line":"            \u0027zVMConnectorRequestHandler.call\u0027) as fake_call:"},{"line_number":34,"context_line":"            fake_call.return_value \u003d {\u0027overallRC\u0027: 1, \u0027errormsg\u0027: \u0027error\u0027}"},{"line_number":35,"context_line":"            rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":36,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_26d51aba","line":33,"updated":"2018-03-21 00:36:50.000000000","message":"I think instead of mocking zVMConnectorRequestHandler.call here, you want to mock connector.ZVMConnector.send_request. Because we need to cover and verify two cases: 1) where the guest_list returns without error, verify that zVMConnectorRequestHandler.call returns what we expect (the [\u0027output\u0027]) and 2) where the results[\u0027overallRC\u0027] !\u003d 0 and then assert that the NovaException was raised in that case.\n\nThe two should be two separate tests, like \"test_connector_request_handler\" and \"test_connector_request_handler_error\"","commit_id":"0d4eb34be9bcb918b34841fb9e4656ad4cbd91e4"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9c304f3c90ee74afdc2a97bcb30a3c5b143fc439","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.assertRaises(exception.NovaException, rh.call, \u0027guest_list\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        with mock.patch(\u0027nova.virt.zvm.utils.\u0027"},{"line_number":33,"context_line":"            \u0027zVMConnectorRequestHandler.call\u0027) as fake_call:"},{"line_number":34,"context_line":"            fake_call.return_value \u003d {\u0027overallRC\u0027: 1, \u0027errormsg\u0027: \u0027error\u0027}"},{"line_number":35,"context_line":"            rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":36,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_715c05ed","line":33,"in_reply_to":"df7087c5_26d51aba","updated":"2018-03-21 09:39:07.000000000","message":"make sense, I splited them into 2 test cases.","commit_id":"0d4eb34be9bcb918b34841fb9e4656ad4cbd91e4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a8bf4bec7d474938960ec8dc871fa480707d4dee","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":48,"context_line":"        exc \u003d self.assertRaises(exception.NovaException, rh.call, \u0027guest_list\u0027)"},{"line_number":49,"context_line":"        self.assertEqual(\u0027zVM Cloud Connector request failed\u0027,"},{"line_number":50,"context_line":"                         exc.format_message())"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_03b216e7","line":50,"updated":"2018-03-21 14:15:39.000000000","message":"Could also assert exc.result is mock_send.return_value.","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f28ec54b66100239ac3eecb980858f036b09aec0","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":48,"context_line":"        exc \u003d self.assertRaises(exception.NovaException, rh.call, \u0027guest_list\u0027)"},{"line_number":49,"context_line":"        self.assertEqual(\u0027zVM Cloud Connector request failed\u0027,"},{"line_number":50,"context_line":"                         exc.format_message())"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_14d55b43","line":50,"in_reply_to":"df7087c5_03b216e7","updated":"2018-03-22 07:13:19.000000000","message":"ok, will add","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1646af2c29b22859661480ca86236a00e3bac1c2","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        rh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":48,"context_line":"        exc \u003d self.assertRaises(exception.NovaException, rh.call, \u0027guest_list\u0027)"},{"line_number":49,"context_line":"        self.assertEqual(\u0027zVM Cloud Connector request failed\u0027,"},{"line_number":50,"context_line":"                         exc.format_message())"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_7dacafec","line":50,"in_reply_to":"df7087c5_14d55b43","updated":"2018-03-22 14:13:55.000000000","message":"Missed this one","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ded0de4954621f102f5bcb2fffb9ba4b71cf7940","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        exc \u003d self.assertRaises(exception.NovaException, rh.call, \u0027guest_list\u0027)"},{"line_number":49,"context_line":"        self.assertEqual(\u0027zVM Cloud Connector request failed\u0027,"},{"line_number":50,"context_line":"                         exc.format_message())"},{"line_number":51,"context_line":"        expected \u003d {\u0027overallRC\u0027: 1, \u0027errmsg\u0027: \u0027err\u0027}"},{"line_number":52,"context_line":"        self.assertEqual(expected, exc.kwargs[\u0027results\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"df7087c5_f1d9a782","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":52},"updated":"2018-03-23 16:19:18.000000000","message":"You could factor this out, if you respin.  No big deal.","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b550a62fb6eabe6b4d5baea5d240f79d6f0e0dce","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        exc \u003d self.assertRaises(exception.NovaException, rh.call, \u0027guest_list\u0027)"},{"line_number":49,"context_line":"        self.assertEqual(\u0027zVM Cloud Connector request failed\u0027,"},{"line_number":50,"context_line":"                         exc.format_message())"},{"line_number":51,"context_line":"        expected \u003d {\u0027overallRC\u0027: 1, \u0027errmsg\u0027: \u0027err\u0027}"},{"line_number":52,"context_line":"        self.assertEqual(expected, exc.kwargs[\u0027results\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_37ab161e","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":52},"in_reply_to":"df7087c5_f1d9a782","updated":"2018-03-26 05:14:50.000000000","message":"Done","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"}],"nova/virt/zvm/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"class ZVMDriver(driver.ComputeDriver):"},{"line_number":34,"context_line":"    \"\"\"z/VM implementation of ComputeDriver.\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    capabilities \u003d {"},{"line_number":37,"context_line":"        \"has_imagecache\": True,"},{"line_number":38,"context_line":"        \"supports_recreate\": False,"},{"line_number":39,"context_line":"        \"supports_migrate_to_same_host\": True,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_335473ca","line":36,"updated":"2018-01-12 02:39:41.000000000","message":"If you\u0027re going to override this, you should set a value for all of the entries in the parent class:\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/driver.py#L124\n\nBecause I\u0027m not sure that all of the client side code that\u0027s checking them is doing a .get() with a default value.\n\nFor now you probably shouldn\u0027t override the base capabilities at all since this driver can\u0027t do anything yet.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"class ZVMDriver(driver.ComputeDriver):"},{"line_number":34,"context_line":"    \"\"\"z/VM implementation of ComputeDriver.\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    capabilities \u003d {"},{"line_number":37,"context_line":"        \"has_imagecache\": True,"},{"line_number":38,"context_line":"        \"supports_recreate\": False,"},{"line_number":39,"context_line":"        \"supports_migrate_to_same_host\": True,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_3f3751b3","line":36,"in_reply_to":"7f96bb07_335473ca","updated":"2018-01-12 08:07:56.000000000","message":"removed this from the first patch, will overwrite this in following patch along with accordingly features.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \"\"\"z/VM implementation of ComputeDriver.\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    capabilities \u003d {"},{"line_number":37,"context_line":"        \"has_imagecache\": True,"},{"line_number":38,"context_line":"        \"supports_recreate\": False,"},{"line_number":39,"context_line":"        \"supports_migrate_to_same_host\": True,"},{"line_number":40,"context_line":"        \"supports_attach_interface\": False"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_f304cbc8","line":37,"range":{"start_line":37,"start_character":26,"end_line":37,"end_character":30},"updated":"2018-01-12 02:39:41.000000000","message":"This should be False because this driver has no \"manage_image_cache\" method.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \"\"\"z/VM implementation of ComputeDriver.\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    capabilities \u003d {"},{"line_number":37,"context_line":"        \"has_imagecache\": True,"},{"line_number":38,"context_line":"        \"supports_recreate\": False,"},{"line_number":39,"context_line":"        \"supports_migrate_to_same_host\": True,"},{"line_number":40,"context_line":"        \"supports_attach_interface\": False"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_5f3c9d92","line":37,"range":{"start_line":37,"start_character":26,"end_line":37,"end_character":30},"in_reply_to":"7f96bb07_f304cbc8","updated":"2018-01-12 08:07:56.000000000","message":"Done","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def get_available_resource(self, nodename\u003dNone):"},{"line_number":68,"context_line":"        LOG.debug(\"Getting available resource for %s\", CONF.host)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_73cf5b7f","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":30},"updated":"2018-01-12 02:39:41.000000000","message":"It could be done in a later patch, but you should consider implementing the get_inventory() method as well.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def get_available_resource(self, nodename\u003dNone):"},{"line_number":68,"context_line":"        LOG.debug(\"Getting available resource for %s\", CONF.host)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_3f7991fb","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":30},"in_reply_to":"7f96bb07_73cf5b7f","updated":"2018-01-12 08:07:56.000000000","message":"In the first patch, we need this method to set hypervisor_hostname. Will add get_inventory() in later patch.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def get_available_resource(self, nodename\u003dNone):"},{"line_number":68,"context_line":"        LOG.debug(\"Getting available resource for %s\", CONF.host)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        try:"},{"line_number":71,"context_line":"            host_stats \u003d self._reqh.call(\u0027host_get_info\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_f3d28b34","line":68,"updated":"2018-01-12 02:39:41.000000000","message":"Log the nodename as well?\n\nFor that matter, I\u0027m assuming zvm is 1:1 with host:node like most of the other drivers? Not 1:M like ironic.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def get_available_resource(self, nodename\u003dNone):"},{"line_number":68,"context_line":"        LOG.debug(\"Getting available resource for %s\", CONF.host)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        try:"},{"line_number":71,"context_line":"            host_stats \u003d self._reqh.call(\u0027host_get_info\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_1f461525","line":68,"in_reply_to":"7f96bb07_f3d28b34","updated":"2018-01-12 08:07:56.000000000","message":"Done","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        try:"},{"line_number":71,"context_line":"            host_stats \u003d self._reqh.call(\u0027host_get_info\u0027)"},{"line_number":72,"context_line":"        except exception.NovaException:"},{"line_number":73,"context_line":"            host_stats \u003d {}"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        res \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_d3e18f00","line":72,"updated":"2018-01-12 02:39:41.000000000","message":"Shouldn\u0027t you log something here if you couldn\u0027t get host info?","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        try:"},{"line_number":71,"context_line":"            host_stats \u003d self._reqh.call(\u0027host_get_info\u0027)"},{"line_number":72,"context_line":"        except exception.NovaException:"},{"line_number":73,"context_line":"            host_stats \u003d {}"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        res \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_bf736180","line":72,"in_reply_to":"7f96bb07_d3e18f00","updated":"2018-01-12 08:07:56.000000000","message":"Done","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8589da5a5abf048ace832ee2caf0156f3755633a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            host_stats \u003d self._reqh.call(\u0027host_get_info\u0027)"},{"line_number":66,"context_line":"        except exception.NovaException:"},{"line_number":67,"context_line":"            LOG.warning(\"Failed to get host stats for %(host)s:%(nodename)s\","},{"line_number":68,"context_line":"                        {\u0027host\u0027: CONF.host, \u0027nodename\u0027: nodename})"},{"line_number":69,"context_line":"            host_stats \u003d {}"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        res \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_5009dc2e","line":68,"range":{"start_line":67,"start_character":12,"end_line":68,"end_character":66},"updated":"2018-01-12 19:17:58.000000000","message":"Include the actual error message in here as well?","commit_id":"6400a4f9a8b579f82e9afed59de69faa435cff1b"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"5b78857792e1cb82a9d8986d0771eb52c3074a4c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            host_stats \u003d self._reqh.call(\u0027host_get_info\u0027)"},{"line_number":66,"context_line":"        except exception.NovaException:"},{"line_number":67,"context_line":"            LOG.warning(\"Failed to get host stats for %(host)s:%(nodename)s\","},{"line_number":68,"context_line":"                        {\u0027host\u0027: CONF.host, \u0027nodename\u0027: nodename})"},{"line_number":69,"context_line":"            host_stats \u003d {}"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        res \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_432fb83e","line":68,"range":{"start_line":67,"start_character":12,"end_line":68,"end_character":66},"in_reply_to":"7f96bb07_5009dc2e","updated":"2018-01-15 09:06:35.000000000","message":"Done","commit_id":"6400a4f9a8b579f82e9afed59de69faa435cff1b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a8bf4bec7d474938960ec8dc871fa480707d4dee","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            \u0027vcpus\u0027: host_stats.get(\u0027vcpus\u0027, 0),"},{"line_number":73,"context_line":"            \u0027memory_mb\u0027: host_stats.get(\u0027memory_mb\u0027, 0),"},{"line_number":74,"context_line":"            \u0027local_gb\u0027: host_stats.get(\u0027disk_total\u0027, 0),"},{"line_number":75,"context_line":"            \u0027vcpus_used\u0027: 0,"},{"line_number":76,"context_line":"            \u0027memory_mb_used\u0027: host_stats.get(\u0027memory_mb_used\u0027, 0),"},{"line_number":77,"context_line":"            \u0027local_gb_used\u0027: host_stats.get(\u0027disk_used\u0027, 0),"},{"line_number":78,"context_line":"            \u0027hypervisor_type\u0027: host_stats.get(\u0027hypervisor_type\u0027, \u0027zvm\u0027),"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_432b2eea","line":75,"range":{"start_line":75,"start_character":26,"end_line":75,"end_character":28},"updated":"2018-03-21 14:15:39.000000000","message":"Is this true?  I assume \u0027guest_list\u0027 will return VMs that were created outside of the auspices of Nova.  If any exist, won\u0027t they be using VCPUs?\n\nI think what I\u0027m getting at is that either list_instances should return [] for now (since you don\u0027t have spawn yet) or this line should make an effort to return a real number.","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f28ec54b66100239ac3eecb980858f036b09aec0","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            \u0027vcpus\u0027: host_stats.get(\u0027vcpus\u0027, 0),"},{"line_number":73,"context_line":"            \u0027memory_mb\u0027: host_stats.get(\u0027memory_mb\u0027, 0),"},{"line_number":74,"context_line":"            \u0027local_gb\u0027: host_stats.get(\u0027disk_total\u0027, 0),"},{"line_number":75,"context_line":"            \u0027vcpus_used\u0027: 0,"},{"line_number":76,"context_line":"            \u0027memory_mb_used\u0027: host_stats.get(\u0027memory_mb_used\u0027, 0),"},{"line_number":77,"context_line":"            \u0027local_gb_used\u0027: host_stats.get(\u0027disk_used\u0027, 0),"},{"line_number":78,"context_line":"            \u0027hypervisor_type\u0027: host_stats.get(\u0027hypervisor_type\u0027, \u0027zvm\u0027),"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_5468b385","line":75,"range":{"start_line":75,"start_character":26,"end_line":75,"end_character":28},"in_reply_to":"df7087c5_432b2eea","updated":"2018-03-22 07:13:19.000000000","message":"we do have a vcpu_used here, it should be consistent to other param here","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3b8088d032ded10669d5f95f162f800ac84928ff","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            \u0027vcpus_used\u0027: 0,"},{"line_number":76,"context_line":"            \u0027memory_mb_used\u0027: host_stats.get(\u0027memory_mb_used\u0027, 0),"},{"line_number":77,"context_line":"            \u0027local_gb_used\u0027: host_stats.get(\u0027disk_used\u0027, 0),"},{"line_number":78,"context_line":"            \u0027hypervisor_type\u0027: host_stats.get(\u0027hypervisor_type\u0027, \u0027zvm\u0027),"},{"line_number":79,"context_line":"            \u0027hypervisor_version\u0027: host_stats.get(\u0027hypervisor_version\u0027, \u0027\u0027),"},{"line_number":80,"context_line":"            \u0027hypervisor_hostname\u0027: host_stats.get(\u0027hypervisor_hostname\u0027, \u0027\u0027),"},{"line_number":81,"context_line":"            \u0027cpu_info\u0027: jsonutils.dumps(host_stats.get(\u0027cpu_info\u0027, {})),"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_66ec4029","line":78,"range":{"start_line":78,"start_character":65,"end_line":78,"end_character":70},"updated":"2018-03-21 14:31:25.000000000","message":"What about using the HYPERVISOR_TYPE const here?","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"066b0dbc190da87c3eeb6681073fe045bec40a98","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            \u0027vcpus_used\u0027: 0,"},{"line_number":76,"context_line":"            \u0027memory_mb_used\u0027: host_stats.get(\u0027memory_mb_used\u0027, 0),"},{"line_number":77,"context_line":"            \u0027local_gb_used\u0027: host_stats.get(\u0027disk_used\u0027, 0),"},{"line_number":78,"context_line":"            \u0027hypervisor_type\u0027: host_stats.get(\u0027hypervisor_type\u0027, \u0027zvm\u0027),"},{"line_number":79,"context_line":"            \u0027hypervisor_version\u0027: host_stats.get(\u0027hypervisor_version\u0027, \u0027\u0027),"},{"line_number":80,"context_line":"            \u0027hypervisor_hostname\u0027: host_stats.get(\u0027hypervisor_hostname\u0027, \u0027\u0027),"},{"line_number":81,"context_line":"            \u0027cpu_info\u0027: jsonutils.dumps(host_stats.get(\u0027cpu_info\u0027, {})),"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_c0b71e86","line":78,"range":{"start_line":78,"start_character":65,"end_line":78,"end_character":70},"in_reply_to":"df7087c5_66ec4029","updated":"2018-03-22 06:51:53.000000000","message":"yes, will do","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a8bf4bec7d474938960ec8dc871fa480707d4dee","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            \u0027local_gb_used\u0027: host_stats.get(\u0027disk_used\u0027, 0),"},{"line_number":78,"context_line":"            \u0027hypervisor_type\u0027: host_stats.get(\u0027hypervisor_type\u0027, \u0027zvm\u0027),"},{"line_number":79,"context_line":"            \u0027hypervisor_version\u0027: host_stats.get(\u0027hypervisor_version\u0027, \u0027\u0027),"},{"line_number":80,"context_line":"            \u0027hypervisor_hostname\u0027: host_stats.get(\u0027hypervisor_hostname\u0027, \u0027\u0027),"},{"line_number":81,"context_line":"            \u0027cpu_info\u0027: jsonutils.dumps(host_stats.get(\u0027cpu_info\u0027, {})),"},{"line_number":82,"context_line":"            \u0027disk_available_least\u0027: host_stats.get(\u0027disk_available\u0027, 0),"},{"line_number":83,"context_line":"            \u0027supported_instances\u0027: [(ARCHITECTURE,"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_a3680a87","line":80,"range":{"start_line":80,"start_character":73,"end_line":80,"end_character":75},"updated":"2018-03-21 14:15:39.000000000","message":"Perhaps this should default (or just be set) to self._hypervisor_hostname, which is guaranteed to be set (else __init__ would have blown up on L47).","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"066b0dbc190da87c3eeb6681073fe045bec40a98","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            \u0027local_gb_used\u0027: host_stats.get(\u0027disk_used\u0027, 0),"},{"line_number":78,"context_line":"            \u0027hypervisor_type\u0027: host_stats.get(\u0027hypervisor_type\u0027, \u0027zvm\u0027),"},{"line_number":79,"context_line":"            \u0027hypervisor_version\u0027: host_stats.get(\u0027hypervisor_version\u0027, \u0027\u0027),"},{"line_number":80,"context_line":"            \u0027hypervisor_hostname\u0027: host_stats.get(\u0027hypervisor_hostname\u0027, \u0027\u0027),"},{"line_number":81,"context_line":"            \u0027cpu_info\u0027: jsonutils.dumps(host_stats.get(\u0027cpu_info\u0027, {})),"},{"line_number":82,"context_line":"            \u0027disk_available_least\u0027: host_stats.get(\u0027disk_available\u0027, 0),"},{"line_number":83,"context_line":"            \u0027supported_instances\u0027: [(ARCHITECTURE,"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_74ae17e8","line":80,"range":{"start_line":80,"start_character":73,"end_line":80,"end_character":75},"in_reply_to":"df7087c5_a3680a87","updated":"2018-03-22 06:51:53.000000000","message":"correct, will do","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2e0ceb11bbfb6a86df8e0e29f6095fbc9785f4aa","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":"CONF \u003d conf.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"HYPERVISOR_TYPE \u003d \u0027zvm\u0027"},{"line_number":30,"context_line":"ARCHITECTURE \u003d \u0027s390x\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class ZVMDriver(driver.ComputeDriver):"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_8fde0ed8","line":30,"range":{"start_line":29,"start_character":1,"end_line":30,"end_character":22},"updated":"2018-03-23 09:30:10.000000000","message":"We don\u0027t really need this. we have \u0027fields.Architecture\u0027 and \u0027fields.HVType\u0027 which provide normalized values","commit_id":"b6a92df8409f5b4e03943d506448b80829b56f7c"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8c48ddf9120504755e46e5e6b5c9bc3d6eaf3845","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":"CONF \u003d conf.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"HYPERVISOR_TYPE \u003d \u0027zvm\u0027"},{"line_number":30,"context_line":"ARCHITECTURE \u003d \u0027s390x\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class ZVMDriver(driver.ComputeDriver):"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_cae4f40f","line":30,"range":{"start_line":29,"start_character":1,"end_line":30,"end_character":22},"in_reply_to":"df7087c5_8fde0ed8","updated":"2018-03-23 10:19:01.000000000","message":"right, good point, thanks","commit_id":"b6a92df8409f5b4e03943d506448b80829b56f7c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2e0ceb11bbfb6a86df8e0e29f6095fbc9785f4aa","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def __init__(self, virtapi):"},{"line_number":37,"context_line":"        super(ZVMDriver, self).__init__(virtapi)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        if CONF.zvm.cloud_connector_url is None:"},{"line_number":40,"context_line":"            message \u003d _(\u0027Must specify cloud_connector_url in zvm config \u0027"},{"line_number":41,"context_line":"                        \u0027group to use compute_driver\u003dzvm.driver.ZVMDriver\u0027)"},{"line_number":42,"context_line":"            raise exception.NovaException(message)"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_2f96e2f1","line":39,"updated":"2018-03-23 09:30:10.000000000","message":"is empty string acceptable?","commit_id":"b6a92df8409f5b4e03943d506448b80829b56f7c"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8c48ddf9120504755e46e5e6b5c9bc3d6eaf3845","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def __init__(self, virtapi):"},{"line_number":37,"context_line":"        super(ZVMDriver, self).__init__(virtapi)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        if CONF.zvm.cloud_connector_url is None:"},{"line_number":40,"context_line":"            message \u003d _(\u0027Must specify cloud_connector_url in zvm config \u0027"},{"line_number":41,"context_line":"                        \u0027group to use compute_driver\u003dzvm.driver.ZVMDriver\u0027)"},{"line_number":42,"context_line":"            raise exception.NovaException(message)"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_ea953833","line":39,"in_reply_to":"df7087c5_2f96e2f1","updated":"2018-03-23 10:19:01.000000000","message":"I will add more check here","commit_id":"b6a92df8409f5b4e03943d506448b80829b56f7c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2e0ceb11bbfb6a86df8e0e29f6095fbc9785f4aa","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        if CONF.zvm.cloud_connector_url is None:"},{"line_number":40,"context_line":"            message \u003d _(\u0027Must specify cloud_connector_url in zvm config \u0027"},{"line_number":41,"context_line":"                        \u0027group to use compute_driver\u003dzvm.driver.ZVMDriver\u0027)"},{"line_number":42,"context_line":"            raise exception.NovaException(message)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self._reqh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_af60b202","line":42,"updated":"2018-03-23 09:30:10.000000000","message":"I think we should never have a so generic exception raised by a driver. Basically we should have a generic specific exception for each driver.\n\nWhat I would recommend is that: You start with an \u0027exception.ZVMDriverException()\u0027 which simply extends \u0027exception.NovaException()\u0027","commit_id":"b6a92df8409f5b4e03943d506448b80829b56f7c"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8c48ddf9120504755e46e5e6b5c9bc3d6eaf3845","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        if CONF.zvm.cloud_connector_url is None:"},{"line_number":40,"context_line":"            message \u003d _(\u0027Must specify cloud_connector_url in zvm config \u0027"},{"line_number":41,"context_line":"                        \u0027group to use compute_driver\u003dzvm.driver.ZVMDriver\u0027)"},{"line_number":42,"context_line":"            raise exception.NovaException(message)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self._reqh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_aaa3c09d","line":42,"in_reply_to":"df7087c5_af60b202","updated":"2018-03-23 10:19:01.000000000","message":"good suggestion, will do , thanks","commit_id":"b6a92df8409f5b4e03943d506448b80829b56f7c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2e0ceb11bbfb6a86df8e0e29f6095fbc9785f4aa","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        return res"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def get_available_nodes(self, refresh\u003dFalse):"},{"line_number":94,"context_line":"        return [self._hypervisor_hostname]"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_6a47e84d","line":93,"updated":"2018-03-23 09:30:10.000000000","message":"what about removing the _hypervisor_hostname attribute and just returning:\n\n  self._reqh.call(\u0027host_get_info\u0027)[\u0027hypervisor_hostname\u0027]\n\nIt\u0027s basically what all drivers are doing. Or your need to take care of that \"refresh\" arguement","commit_id":"b6a92df8409f5b4e03943d506448b80829b56f7c"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8c48ddf9120504755e46e5e6b5c9bc3d6eaf3845","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        return res"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def get_available_nodes(self, refresh\u003dFalse):"},{"line_number":94,"context_line":"        return [self._hypervisor_hostname]"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_0a10aca7","line":93,"in_reply_to":"df7087c5_6a47e84d","updated":"2018-03-23 10:19:01.000000000","message":"we won\u0027t change the name internally\nbut this is a good suggestion , will do","commit_id":"b6a92df8409f5b4e03943d506448b80829b56f7c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"08ef3099d7c592f4a3ef6ac107e877079dfe361c","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        LOG.debug(\"Getting available resource for %(host)s:%(nodename)s\","},{"line_number":56,"context_line":"                  {\u0027host\u0027: CONF.host, \u0027nodename\u0027: nodename})"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        try:"},{"line_number":59,"context_line":"            host_stats \u003d self._reqh.call(\u0027host_get_info\u0027)"},{"line_number":60,"context_line":"        except exception.NovaException:"},{"line_number":61,"context_line":"            LOG.warning(\"Failed to get host stats for %(host)s:%(nodename)s\","}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_3aa3d9a0","line":58,"updated":"2018-03-27 07:06:22.000000000","message":"This is internal complexity related to the hypervisor, that should be in an isolated module.\n\nThe driver is an interface responsible to create relationships between network, hypervisor, compute manager... it does not have to handle any specific hypervisor related complexity. Pleasse see my comment in \"utils\".","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ded0de4954621f102f5bcb2fffb9ba4b71cf7940","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            \u0027hypervisor_type\u0027: host_stats.get(\u0027hypervisor_type\u0027,"},{"line_number":73,"context_line":"                                              obj_fields.HVType.ZVM),"},{"line_number":74,"context_line":"            \u0027hypervisor_version\u0027: host_stats.get(\u0027hypervisor_version\u0027, \u0027\u0027),"},{"line_number":75,"context_line":"            \u0027hypervisor_hostname\u0027: host_stats.get(\u0027hypervisor_hostname\u0027, \u0027\u0027),"},{"line_number":76,"context_line":"            \u0027cpu_info\u0027: jsonutils.dumps(host_stats.get(\u0027cpu_info\u0027, {})),"},{"line_number":77,"context_line":"            \u0027disk_available_least\u0027: host_stats.get(\u0027disk_available\u0027, 0),"},{"line_number":78,"context_line":"            \u0027supported_instances\u0027: [(obj_fields.Architecture.S390X,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_5805bd79","line":75,"range":{"start_line":75,"start_character":71,"end_line":75,"end_character":75},"updated":"2018-03-23 16:19:18.000000000","message":"See my original comment in PS15 on this.  With what you had here in PS16, you guaranteed this wouldn\u0027t be empty.  Now that\u0027s not the case.  And for an attribute that\u0027s used as pervasively by Nova as hypervisor_hostname, that doesn\u0027t seem like a good idea.","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b550a62fb6eabe6b4d5baea5d240f79d6f0e0dce","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            \u0027hypervisor_type\u0027: host_stats.get(\u0027hypervisor_type\u0027,"},{"line_number":73,"context_line":"                                              obj_fields.HVType.ZVM),"},{"line_number":74,"context_line":"            \u0027hypervisor_version\u0027: host_stats.get(\u0027hypervisor_version\u0027, \u0027\u0027),"},{"line_number":75,"context_line":"            \u0027hypervisor_hostname\u0027: host_stats.get(\u0027hypervisor_hostname\u0027, \u0027\u0027),"},{"line_number":76,"context_line":"            \u0027cpu_info\u0027: jsonutils.dumps(host_stats.get(\u0027cpu_info\u0027, {})),"},{"line_number":77,"context_line":"            \u0027disk_available_least\u0027: host_stats.get(\u0027disk_available\u0027, 0),"},{"line_number":78,"context_line":"            \u0027supported_instances\u0027: [(obj_fields.Architecture.S390X,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_3780f68b","line":75,"range":{"start_line":75,"start_character":71,"end_line":75,"end_character":75},"in_reply_to":"bf659307_5805bd79","updated":"2018-03-26 05:14:50.000000000","message":"Done","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ded0de4954621f102f5bcb2fffb9ba4b71cf7940","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        return res"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def get_available_nodes(self, refresh\u003dFalse):"},{"line_number":87,"context_line":"        return [self._reqh.call(\u0027host_get_info\u0027)[\u0027hypervisor_hostname\u0027]]"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_b84419b9","line":87,"range":{"start_line":87,"start_character":16,"end_line":87,"end_character":71},"updated":"2018-03-23 16:19:18.000000000","message":"I\u0027m not a fan of this change, because _reqh.call is relatively expensive, so caching this value (which is accessed frequently, but never changes) is better IMO.","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3d82d08fbf6455745ccf5953df8fbd9b098cf064","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        return res"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def get_available_nodes(self, refresh\u003dFalse):"},{"line_number":87,"context_line":"        return [self._reqh.call(\u0027host_get_info\u0027)[\u0027hypervisor_hostname\u0027]]"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_862bb62e","line":87,"range":{"start_line":87,"start_character":16,"end_line":87,"end_character":71},"in_reply_to":"bf659307_039574e4","updated":"2018-03-27 03:17:24.000000000","message":"we won\u0027t change this ,so @sahid , thanks for the comments and I prefer to keep it as cached value","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d49b53933eb5166e2bffe22db8d76a548194a415","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        return res"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def get_available_nodes(self, refresh\u003dFalse):"},{"line_number":87,"context_line":"        return [self._reqh.call(\u0027host_get_info\u0027)[\u0027hypervisor_hostname\u0027]]"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_039574e4","line":87,"range":{"start_line":87,"start_character":16,"end_line":87,"end_character":71},"in_reply_to":"bf659307_977302e8","updated":"2018-03-26 08:38:58.000000000","message":"We don\u0027t call this so often I would prefer to have a well updated value than a cached one which would create issue. I guess I won\u0027t block over it.","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b550a62fb6eabe6b4d5baea5d240f79d6f0e0dce","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        return res"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def get_available_nodes(self, refresh\u003dFalse):"},{"line_number":87,"context_line":"        return [self._reqh.call(\u0027host_get_info\u0027)[\u0027hypervisor_hostname\u0027]]"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_977302e8","line":87,"range":{"start_line":87,"start_character":16,"end_line":87,"end_character":71},"in_reply_to":"bf659307_b84419b9","updated":"2018-03-26 05:14:50.000000000","message":":), I tend to agree on your suggestion, let me argue With sahid","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"bebe1b880107392f0a22a74db171a722f4927537","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self._reqh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        # get hypervisor host name"},{"line_number":44,"context_line":"        res \u003d self._reqh.call(\u0027host_get_info\u0027)"},{"line_number":45,"context_line":"        self._hypervisor_hostname \u003d res[\u0027hypervisor_hostname\u0027]"},{"line_number":46,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_bac7e912","line":43,"updated":"2018-03-27 07:13:23.000000000","message":"An other example, this specific code to cache the hypervisor hostname should be inside the new module that i\u0027m requesting.","commit_id":"ff6c7294df80b6e4f16e9c9306126e20b5bf8b44"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c3c38fbcfb90f779f8ee522671e7f6250d9c7598","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                      \u0027group to use compute_driver\u003dzvm.driver.ZVMDriver\u0027)"},{"line_number":38,"context_line":"            raise exception.ZVMDriverException(error\u003derror)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self._reqh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self._hypervisor \u003d hypervisor.ZVMHypervisor(self._reqh)"},{"line_number":43,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_07e55da8","line":40,"updated":"2018-03-27 08:31:25.000000000","message":"Here we should have something like: self._hypervisor \u003d Hypervisor(CONF.zmv.cloud_connector_url)","commit_id":"33f56e759e3aa23286c9f1781cc529ae1f6a02c5"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"979bfb77ad4251cb7adcecb78a5345be39075968","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                      \u0027group to use compute_driver\u003dzvm.driver.ZVMDriver\u0027)"},{"line_number":38,"context_line":"            raise exception.ZVMDriverException(error\u003derror)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self._reqh \u003d zvmutils.zVMConnectorRequestHandler()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self._hypervisor \u003d hypervisor.ZVMHypervisor(self._reqh)"},{"line_number":43,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_6a6500e1","line":40,"in_reply_to":"bf659307_07e55da8","updated":"2018-03-27 08:42:07.000000000","message":"um... that will create a set of connections \nwhich is unnessary?","commit_id":"33f56e759e3aa23286c9f1781cc529ae1f6a02c5"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c7eb5d8352d773a6b19b4dd3143675cad43c3a56","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                      \u0027group to use compute_driver\u003dzvm.driver.ZVMDriver\u0027)"},{"line_number":38,"context_line":"            raise exception.ZVMDriverException(error\u003derror)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self._reqh \u003d zvmutils.get_conn()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self._hypervisorop \u003d hypervisorop.ZVMHypervisorOp(self._reqh)"},{"line_number":43,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_68e5e4a7","line":40,"updated":"2018-03-28 09:42:10.000000000","message":"No need of this","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3881ec06d025522b5d27ac3c2304ce20567e6a17","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                      \u0027group to use compute_driver\u003dzvm.driver.ZVMDriver\u0027)"},{"line_number":38,"context_line":"            raise exception.ZVMDriverException(error\u003derror)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self._reqh \u003d zvmutils.get_conn()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self._hypervisorop \u003d hypervisorop.ZVMHypervisorOp(self._reqh)"},{"line_number":43,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_25d8591c","line":40,"in_reply_to":"bf659307_68e5e4a7","updated":"2018-03-29 06:39:22.000000000","message":"Done","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c7eb5d8352d773a6b19b4dd3143675cad43c3a56","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self._reqh \u003d zvmutils.get_conn()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self._hypervisorop \u003d hypervisorop.ZVMHypervisorOp(self._reqh)"},{"line_number":43,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def init_host(self, host):"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_e8ea5473","line":42,"updated":"2018-03-28 09:42:10.000000000","message":"You should just pass \u0027cloud_connector_url\u0027","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3881ec06d025522b5d27ac3c2304ce20567e6a17","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self._reqh \u003d zvmutils.get_conn()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self._hypervisorop \u003d hypervisorop.ZVMHypervisorOp(self._reqh)"},{"line_number":43,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def init_host(self, host):"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_45d54de4","line":42,"in_reply_to":"bf659307_e8ea5473","updated":"2018-03-29 06:39:22.000000000","message":"Done","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c7eb5d8352d773a6b19b4dd3143675cad43c3a56","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        pass"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def list_instances(self):"},{"line_number":49,"context_line":"        \"\"\"Return the names of all the instances known to the virtualization"},{"line_number":50,"context_line":"        layer, as a list."},{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        return self._hypervisorop.list_instances()"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_a80e9c38","line":49,"updated":"2018-03-28 09:42:10.000000000","message":"No need of docstring, we are extending the public API","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3881ec06d025522b5d27ac3c2304ce20567e6a17","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        pass"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def list_instances(self):"},{"line_number":49,"context_line":"        \"\"\"Return the names of all the instances known to the virtualization"},{"line_number":50,"context_line":"        layer, as a list."},{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        return self._hypervisorop.list_instances()"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_e507c181","line":49,"in_reply_to":"bf659307_a80e9c38","updated":"2018-03-29 06:39:22.000000000","message":"Done","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e276e59c559ea221e9bfaff65badece40994e79e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                      \u0027group to use compute_driver\u003dzvm.driver.ZVMDriver\u0027)"},{"line_number":39,"context_line":"            raise exception.ZVMDriverException(error\u003derror)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self._hypervisorop \u003d hypervisor.Hypervisor("},{"line_number":42,"context_line":"            CONF.zvm.cloud_connector_url)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_f42c4d03","line":41,"updated":"2018-03-29 07:53:15.000000000","message":"s/_hypervisorop/_hypervisor","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"dd991aa860f7dfc31a91fe4461f3078385481a15","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                      \u0027group to use compute_driver\u003dzvm.driver.ZVMDriver\u0027)"},{"line_number":39,"context_line":"            raise exception.ZVMDriverException(error\u003derror)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self._hypervisorop \u003d hypervisor.Hypervisor("},{"line_number":42,"context_line":"            CONF.zvm.cloud_connector_url)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_fab8b7e5","line":41,"in_reply_to":"bf659307_f42c4d03","updated":"2018-03-29 08:32:22.000000000","message":"Done","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6b6684ae9acf474424b16b7d2ddb8fe4d7f5b329","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self._hypervisorop \u003d hypervisor.Hypervisor("},{"line_number":42,"context_line":"            CONF.zvm.cloud_connector_url)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def init_host(self, host):"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_7d682186","line":43,"updated":"2018-03-29 09:26:50.000000000","message":"Ok, so basically you were right we need that instance of ConnectorRequestHandler. This see what I think:\n\n\n  self._hypervisor \u003d Hypervisor(ConnectorRequestHandler(\n                                   CONF.connector_url, CONF.file_ca))","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b8c1b76bdeb88bc027f5b1e4e8557c4622742fce","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self._hypervisorop \u003d hypervisor.Hypervisor("},{"line_number":42,"context_line":"            CONF.zvm.cloud_connector_url)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def init_host(self, host):"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_b81eb5b8","line":43,"in_reply_to":"bf659307_7d682186","updated":"2018-03-30 04:42:48.000000000","message":"right, thanks","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6b6684ae9acf474424b16b7d2ddb8fe4d7f5b329","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        pass"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def list_instances(self):"},{"line_number":50,"context_line":"        return self._hypervisorop.list_instances()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def get_available_resource(self, nodename\u003dNone):"},{"line_number":53,"context_line":"        host_stats \u003d self._hypervisorop.get_available_resource("}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_1d30059f","line":50,"updated":"2018-03-29 09:26:50.000000000","message":"I saw in your next patch you have introduced a Guest class whihc I think is the right thing todo.\n\nHypervisor does not have any idea of what is an instance so it should return list of Guest.\n\n\n   def list_instances(self):\n      guests \u003d self._hypervisor.list_guests()\n      # Convert guest to a list of instance thing\n      return instances","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b8c1b76bdeb88bc027f5b1e4e8557c4622742fce","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        pass"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def list_instances(self):"},{"line_number":50,"context_line":"        return self._hypervisorop.list_instances()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def get_available_resource(self, nodename\u003dNone):"},{"line_number":53,"context_line":"        host_stats \u003d self._hypervisorop.get_available_resource("}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_d3b26a49","line":50,"in_reply_to":"bf659307_1d30059f","updated":"2018-03-30 04:42:48.000000000","message":"ok, will move to list_guests\nbut no convert actually needed as list_instances itself will return an array","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"da1425218a71d67e98a0c0dc4842099087ff7460","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            raise exception.ZVMDriverException(error\u003derror)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self._hypervisor \u003d hypervisor.Hypervisor("},{"line_number":42,"context_line":"            CONF.zvm.cloud_connector_url, ca_file\u003dCONF.zvm.ca_file)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"bf659307_adc38737","line":42,"updated":"2018-04-04 07:11:06.000000000","message":"Perhaps it would have been better to just pass an instance of ConnectorRequestHandler, but it\u0027s not a big deal I guess.\n\n  self._hypervisor \u003d hypervisor.Hypervisor(\n      ConnectorRequestHandler(CONF.zvm.connector_url, CONF.zvm.c_file))","commit_id":"5d0d15efb23716195a38f2db45c22576f1e6d631"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d54e999d0d5a9abd4eb1717dc414d2d0e9b70add","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            raise exception.ZVMDriverException(error\u003derror)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self._hypervisor \u003d hypervisor.Hypervisor("},{"line_number":42,"context_line":"            CONF.zvm.cloud_connector_url, ca_file\u003dCONF.zvm.ca_file)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        LOG.info(\"The zVM compute driver has been initialized.\")"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"bf659307_8d1fa36a","line":42,"in_reply_to":"bf659307_adc38737","updated":"2018-04-04 07:31:57.000000000","message":"yes, I think current one should work :)","commit_id":"5d0d15efb23716195a38f2db45c22576f1e6d631"}],"nova/virt/zvm/hypervisor.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c3c38fbcfb90f779f8ee522671e7f6250d9c7598","unresolved":false,"context_lines":[{"line_number":27,"context_line":"class ZVMHypervisor(object):"},{"line_number":28,"context_line":"    \"\"\"z/VM implementation of Hypervisor.\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, reqh):"},{"line_number":31,"context_line":"        super(ZVMHypervisor, self).__init__()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self._reqh \u003d reqh"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_278e61d0","line":30,"updated":"2018-03-27 08:31:25.000000000","message":"This class should take an URL and create the reqh instance.","commit_id":"33f56e759e3aa23286c9f1781cc529ae1f6a02c5"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"979bfb77ad4251cb7adcecb78a5345be39075968","unresolved":false,"context_lines":[{"line_number":27,"context_line":"class ZVMHypervisor(object):"},{"line_number":28,"context_line":"    \"\"\"z/VM implementation of Hypervisor.\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, reqh):"},{"line_number":31,"context_line":"        super(ZVMHypervisor, self).__init__()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self._reqh \u003d reqh"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_4aafdce2","line":30,"in_reply_to":"bf659307_278e61d0","updated":"2018-03-27 08:42:07.000000000","message":"again, this will create a set of reqh if we have more connections, I think from driver point of view, we only need one reqh?","commit_id":"33f56e759e3aa23286c9f1781cc529ae1f6a02c5"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6b6684ae9acf474424b16b7d2ddb8fe4d7f5b329","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \"\"\"Return the names of all the instances known to the virtualization"},{"line_number":55,"context_line":"        layer, as a list."},{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_bdceb97f","line":57,"updated":"2018-03-29 09:26:50.000000000","message":"This should be something like:\n\n  guests \u003d []\n  for opaque in self._reqh.call(\u0027guest_list\u0027):\n    guest.append(Guest(self, opaque)\n  return guests","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b8c1b76bdeb88bc027f5b1e4e8557c4622742fce","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \"\"\"Return the names of all the instances known to the virtualization"},{"line_number":55,"context_line":"        layer, as a list."},{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_f8dbcde9","line":57,"in_reply_to":"bf659307_bdceb97f","updated":"2018-03-30 04:42:48.000000000","message":"according to \nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L825\n\nactually libvirt returned a set of libvirt guest and list_instances will append the guest.name into a []\n\nwhile zvm itself use something called cloud connector (like libvirt) to get the instance name directly through guest_list function \n\nit will return [\u0027t1\u0027, \u0027t2\u0027, \u0027t3\u0027] which is the name of the guest ,so no need to do this translation here as it\u0027s any way is an array","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"fe86accd942d868552ff135b07c6931e09a8dd73","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from nova.virt.zvm import utils as zvmutils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class Hypervisor(object):"},{"line_number":22,"context_line":"    \"\"\"z/VM implementation of Hypervisor.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def __init__(self, zcc_url, ca_file\u003dNone):"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_c1fa9173","line":21,"updated":"2018-03-30 07:55:22.000000000","message":"So I upsted the code, I hope that will be OK for you. We have to stay simple on the first implementation.\n\nHypervisor is not Host it\u0027s different concept so any call even if related to the guest should pass by here. Please see the next patch I made an example with get_power_state()","commit_id":"fcc6e4e41f42270050d03a726ab6670b08a45446"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c80a71e9d582c8bc58e2cc60a7c5956f94c1d7f4","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from nova.virt.zvm import utils as zvmutils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class Hypervisor(object):"},{"line_number":22,"context_line":"    \"\"\"z/VM implementation of Hypervisor.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def __init__(self, zcc_url, ca_file\u003dNone):"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_c44b7f28","line":21,"in_reply_to":"bf659307_c1fa9173","updated":"2018-03-30 08:39:16.000000000","message":"ok, make sense to me , I will follow up on next patch","commit_id":"fcc6e4e41f42270050d03a726ab6670b08a45446"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c80a71e9d582c8bc58e2cc60a7c5956f94c1d7f4","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def __init__(self, zcc_url, ca_file\u003dNone):"},{"line_number":25,"context_line":"        super(Hypervisor, self).__init__()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        self._reqh \u003d zvmutils.get_conn(zcc_url, ca_file\u003dca_file)"},{"line_number":28,"context_line":"        self._hypervisor_hostname \u003d self._get_host_info().get("},{"line_number":29,"context_line":"            \u0027hypervisor_hostname\u0027)"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_845107dc","line":27,"range":{"start_line":27,"start_character":21,"end_line":27,"end_character":38},"updated":"2018-03-30 08:39:16.000000000","message":"used here","commit_id":"fcc6e4e41f42270050d03a726ab6670b08a45446"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a93fc8c2cb105efd04279a7ef340b33841785a53","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class Hypervisor(object):"},{"line_number":25,"context_line":"    \"\"\"z/VM implementation of Hypervisor.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, zcc_url, ca_file\u003dNone):"},{"line_number":28,"context_line":"        super(Hypervisor, self).__init__()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._reqh \u003d zvmutils.ConnectorClient(zcc_url,"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_96fd063c","line":27,"updated":"2018-05-23 07:57:42.000000000","message":"Instead of passing zcc_url and ca_file I would have passed a simple instance of ConnectorClient","commit_id":"4ff8fa928b7687e10a1fe7d3817a211531ebfaf2"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5d374f4036959853a10ae02acb516df8088c6a69","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class Hypervisor(object):"},{"line_number":25,"context_line":"    \"\"\"z/VM implementation of Hypervisor.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, zcc_url, ca_file\u003dNone):"},{"line_number":28,"context_line":"        super(Hypervisor, self).__init__()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._reqh \u003d zvmutils.ConnectorClient(zcc_url,"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_db37144d","line":27,"in_reply_to":"5f7c97a3_0314489f","updated":"2018-05-24 11:32:15.000000000","message":"Hum... I wouldn\u0027t have created such dependency between objects, we may have a different Connector class that wants to use this. But I\u0027m not going to have strong opposition, so OK :)","commit_id":"4ff8fa928b7687e10a1fe7d3817a211531ebfaf2"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"7f11f683479a115367b3b574274679ac7f3d93f9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class Hypervisor(object):"},{"line_number":25,"context_line":"    \"\"\"z/VM implementation of Hypervisor.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, zcc_url, ca_file\u003dNone):"},{"line_number":28,"context_line":"        super(Hypervisor, self).__init__()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._reqh \u003d zvmutils.ConnectorClient(zcc_url,"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_0314489f","line":27,"in_reply_to":"5f7c97a3_96fd063c","updated":"2018-05-24 03:23:01.000000000","message":"yes, but the hypervisor is the class who supposed to connect to Connector, so create ConnectorClient seems reasonable here as well..","commit_id":"4ff8fa928b7687e10a1fe7d3817a211531ebfaf2"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9afed674403fa07a5b77172662898fe029b582f7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class Hypervisor(object):"},{"line_number":25,"context_line":"    \"\"\"z/VM implementation of Hypervisor.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, zcc_url, ca_file\u003dNone):"},{"line_number":28,"context_line":"        super(Hypervisor, self).__init__()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._reqh \u003d zvmutils.ConnectorClient(zcc_url,"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_f9652fb6","line":27,"in_reply_to":"5f7c97a3_db37144d","updated":"2018-05-25 01:51:12.000000000","message":"ok, thank you :)","commit_id":"4ff8fa928b7687e10a1fe7d3817a211531ebfaf2"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a93fc8c2cb105efd04279a7ef340b33841785a53","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._reqh \u003d zvmutils.ConnectorClient(zcc_url,"},{"line_number":31,"context_line":"                                              ca_file\u003dca_file)"},{"line_number":32,"context_line":"        self._hypervisor_hostname \u003d self._get_host_info().get("},{"line_number":33,"context_line":"            \u0027hypervisor_hostname\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _get_host_info(self):"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_f6d55ab8","line":32,"updated":"2018-05-23 07:57:42.000000000","message":"What about to move this code inside \u0027get_available_nodes\u0027 so we don\u0027t call get_host_info() during initialization of this class which will be faster.\n\n\n  def __init__(..):\n    ...\n    self_hostname \u003d None\n    ...\n\n  def get_available_nodes(..):\n    if self._hostname is None:\n      ...\n    else:\n      ...\n    return self._hostname","commit_id":"4ff8fa928b7687e10a1fe7d3817a211531ebfaf2"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5d374f4036959853a10ae02acb516df8088c6a69","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._reqh \u003d zvmutils.ConnectorClient(zcc_url,"},{"line_number":31,"context_line":"                                              ca_file\u003dca_file)"},{"line_number":32,"context_line":"        self._hypervisor_hostname \u003d self._get_host_info().get("},{"line_number":33,"context_line":"            \u0027hypervisor_hostname\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _get_host_info(self):"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_bb8258c7","line":32,"in_reply_to":"5f7c97a3_231704a6","updated":"2018-05-24 11:32:15.000000000","message":"What about to use get_available_nodes() instead of directly use _hostname attribute when you need to get hostname value? My thinking was that _hostname attribute is just a cache-thing.\n\nAt this end we will have a clean constructor and faster initialization.\n\nWhat do you think Is that huge work to update that part?","commit_id":"4ff8fa928b7687e10a1fe7d3817a211531ebfaf2"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9afed674403fa07a5b77172662898fe029b582f7","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._reqh \u003d zvmutils.ConnectorClient(zcc_url,"},{"line_number":31,"context_line":"                                              ca_file\u003dca_file)"},{"line_number":32,"context_line":"        self._hypervisor_hostname \u003d self._get_host_info().get("},{"line_number":33,"context_line":"            \u0027hypervisor_hostname\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _get_host_info(self):"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_396727ba","line":32,"in_reply_to":"5f7c97a3_bb8258c7","updated":"2018-05-25 01:51:12.000000000","message":"my thought here is as long as we don\u0027t change the hostname (in reality we won\u0027t because you can think hostname is a pesduo uuid and it\u0027s widely spread in the system, change it may lead to a lot of configuration changes ,so very very unlikely we would change it) , so based on that , each time use get hostname when we need it is time consuming and lead to performance degradation\n\nI will add this info into a comment here, thanks","commit_id":"4ff8fa928b7687e10a1fe7d3817a211531ebfaf2"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"7f11f683479a115367b3b574274679ac7f3d93f9","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        self._reqh \u003d zvmutils.ConnectorClient(zcc_url,"},{"line_number":31,"context_line":"                                              ca_file\u003dca_file)"},{"line_number":32,"context_line":"        self._hypervisor_hostname \u003d self._get_host_info().get("},{"line_number":33,"context_line":"            \u0027hypervisor_hostname\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _get_host_info(self):"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_231704a6","line":32,"in_reply_to":"5f7c97a3_f6d55ab8","updated":"2018-05-24 03:23:01.000000000","message":"yes, it will be faster but it will failed to store _hostname and lead to we need check whether _hostname is set in all functions (no guarantee get_available_nodes will be called\n\nand if get host name failed, we will fail here and avoid further issue occurs..","commit_id":"4ff8fa928b7687e10a1fe7d3817a211531ebfaf2"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a93fc8c2cb105efd04279a7ef340b33841785a53","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # \u0027refresh\u0027 into account."},{"line_number":49,"context_line":"        return [self._hypervisor_hostname]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def list_names(self):"},{"line_number":52,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_76f38a74","line":51,"updated":"2018-05-23 07:57:42.000000000","message":"This is a public method and its returning something opaque for me. Can you add docstring with example so we all understand what this is returning.","commit_id":"4ff8fa928b7687e10a1fe7d3817a211531ebfaf2"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"7f11f683479a115367b3b574274679ac7f3d93f9","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # \u0027refresh\u0027 into account."},{"line_number":49,"context_line":"        return [self._hypervisor_hostname]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def list_names(self):"},{"line_number":52,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":42,"id":"5f7c97a3_c30df090","line":51,"in_reply_to":"5f7c97a3_76f38a74","updated":"2018-05-24 03:23:01.000000000","message":"Done","commit_id":"4ff8fa928b7687e10a1fe7d3817a211531ebfaf2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ea0d438150aa90e7a686e398f920e2b67ef25cc3","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def list_names(self):"},{"line_number":56,"context_line":"        \"\"\"list names of the servers in the hypervisor"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        :returns: A list which contains name of each servers in the hypervisor"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":44,"id":"5f7c97a3_ce412c0c","line":58,"range":{"start_line":58,"start_character":9,"end_line":58,"end_character":16},"updated":"2018-05-31 19:40:58.000000000","message":"but really, this isn\u0027t necessary since it effectively duplicates the header line.","commit_id":"5322c185b450f61df970ad58f4dcb19f94134a4f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ea0d438150aa90e7a686e398f920e2b67ef25cc3","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def list_names(self):"},{"line_number":56,"context_line":"        \"\"\"list names of the servers in the hypervisor"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        :returns: A list which contains name of each servers in the hypervisor"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":44,"id":"5f7c97a3_0e3c0491","line":58,"range":{"start_line":58,"start_character":59,"end_line":58,"end_character":60},"updated":"2018-05-31 19:40:58.000000000","message":"strike","commit_id":"5322c185b450f61df970ad58f4dcb19f94134a4f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ea0d438150aa90e7a686e398f920e2b67ef25cc3","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def list_names(self):"},{"line_number":56,"context_line":"        \"\"\"list names of the servers in the hypervisor"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        :returns: A list which contains name of each servers in the hypervisor"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":44,"id":"5f7c97a3_ae3e3088","line":58,"range":{"start_line":58,"start_character":40,"end_line":58,"end_character":44},"updated":"2018-05-31 19:40:58.000000000","message":"the name","commit_id":"5322c185b450f61df970ad58f4dcb19f94134a4f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c61a8c1f2a30be5f2552e2a1c01680f52b5df2dc","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def list_names(self):"},{"line_number":56,"context_line":"        \"\"\"list names of the servers in the hypervisor"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        :returns: A list which contains name of each servers in the hypervisor"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_1f918152","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":78},"updated":"2018-06-01 16:08:48.000000000","message":"See PS44 comments","commit_id":"424dff67a49a58d6b889933ed52a2744ee70cee9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c20383fde7192785b4e4e61dfe85331999e6d722","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def list_names(self):"},{"line_number":56,"context_line":"        \"\"\"list names of the servers in the hypervisor"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        :returns: A list which contains name of each servers in the hypervisor"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        return self._reqh.call(\u0027guest_list\u0027)"}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_de73f9e7","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":78},"in_reply_to":"5f7c97a3_1f918152","updated":"2018-06-04 02:01:20.000000000","message":"sorry, missed this as well..","commit_id":"424dff67a49a58d6b889933ed52a2744ee70cee9"}],"nova/virt/zvm/hypervisorop.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c7eb5d8352d773a6b19b4dd3143675cad43c3a56","unresolved":false,"context_lines":[{"line_number":24,"context_line":"CONF \u003d conf.CONF"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class ZVMHypervisorOp(object):"},{"line_number":28,"context_line":"    \"\"\"z/VM implementation of Hypervisor.\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, reqh):"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_68fe4438","line":27,"updated":"2018-03-28 09:42:10.000000000","message":"Hypervisor looks enough, \u0027ZVM\u0027 part looks redundant and not need of the \u0027Op\u0027","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3881ec06d025522b5d27ac3c2304ce20567e6a17","unresolved":false,"context_lines":[{"line_number":24,"context_line":"CONF \u003d conf.CONF"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class ZVMHypervisorOp(object):"},{"line_number":28,"context_line":"    \"\"\"z/VM implementation of Hypervisor.\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self, reqh):"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_25f13996","line":27,"in_reply_to":"bf659307_68fe4438","updated":"2018-03-29 06:39:22.000000000","message":"ok, make sense to me","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c7eb5d8352d773a6b19b4dd3143675cad43c3a56","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def __init__(self, reqh):"},{"line_number":31,"context_line":"        super(ZVMHypervisorOp, self).__init__()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self._reqh \u003d reqh"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        res \u003d self._reqh.call(\u0027host_get_info\u0027)"},{"line_number":36,"context_line":"        self._hypervisor_hostname \u003d res[\u0027hypervisor_hostname\u0027]"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_88a71850","line":33,"updated":"2018-03-28 09:42:10.000000000","message":"You should instantiate reqh from here, based on the connector URL passed to the constructor.","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3881ec06d025522b5d27ac3c2304ce20567e6a17","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def __init__(self, reqh):"},{"line_number":31,"context_line":"        super(ZVMHypervisorOp, self).__init__()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self._reqh \u003d reqh"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        res \u003d self._reqh.call(\u0027host_get_info\u0027)"},{"line_number":36,"context_line":"        self._hypervisor_hostname \u003d res[\u0027hypervisor_hostname\u0027]"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_e52ca103","line":33,"in_reply_to":"bf659307_88a71850","updated":"2018-03-29 06:39:22.000000000","message":"right, good suggestion","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c7eb5d8352d773a6b19b4dd3143675cad43c3a56","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                        {\u0027host\u0027: CONF.host, \u0027nodename\u0027: nodename})"},{"line_number":47,"context_line":"            host_stats \u003d {}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        res \u003d {"},{"line_number":50,"context_line":"            \u0027vcpus\u0027: host_stats.get(\u0027vcpus\u0027, 0),"},{"line_number":51,"context_line":"            \u0027memory_mb\u0027: host_stats.get(\u0027memory_mb\u0027, 0),"},{"line_number":52,"context_line":"            \u0027local_gb\u0027: host_stats.get(\u0027disk_total\u0027, 0),"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_48502033","line":49,"updated":"2018-03-28 09:42:10.000000000","message":"This part could stay in driver, since it\u0027s about to format the dictionary for the manager.\n\nSo this method returns an empty dict or the result of call(\u0027host_get_info\u0027)","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3881ec06d025522b5d27ac3c2304ce20567e6a17","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                        {\u0027host\u0027: CONF.host, \u0027nodename\u0027: nodename})"},{"line_number":47,"context_line":"            host_stats \u003d {}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        res \u003d {"},{"line_number":50,"context_line":"            \u0027vcpus\u0027: host_stats.get(\u0027vcpus\u0027, 0),"},{"line_number":51,"context_line":"            \u0027memory_mb\u0027: host_stats.get(\u0027memory_mb\u0027, 0),"},{"line_number":52,"context_line":"            \u0027local_gb\u0027: host_stats.get(\u0027disk_total\u0027, 0),"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_652971e4","line":49,"in_reply_to":"bf659307_48502033","updated":"2018-03-29 06:39:22.000000000","message":"ok","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"}],"nova/virt/zvm/utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        if results[\u0027overallRC\u0027] !\u003d 0:"},{"line_number":38,"context_line":"            msg \u003d (\"zVM Cloud Connector request %(api)s failed with \""},{"line_number":39,"context_line":"                   \"parameters: %(args)s %(kwargs)s .  Results: %(results)s\" %"},{"line_number":40,"context_line":"                   {\u0027api\u0027: func_name, \u0027args\u0027: six.text_type(args),"},{"line_number":41,"context_line":"                    \u0027kwargs\u0027: six.text_type(kwargs),"},{"line_number":42,"context_line":"                    \u0027results\u0027: six.text_type(results)})"},{"line_number":43,"context_line":"            LOG.debug(msg)"},{"line_number":44,"context_line":"            raise exception.NovaException(msg, results\u003dresults)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_539b3f71","line":42,"range":{"start_line":40,"start_character":19,"end_line":42,"end_character":55},"updated":"2018-01-12 02:39:41.000000000","message":"These should be arguments to the LOG.debug message, otherwise we\u0027re wasting time building this message if debug isn\u0027t enabled.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        if results[\u0027overallRC\u0027] !\u003d 0:"},{"line_number":38,"context_line":"            msg \u003d (\"zVM Cloud Connector request %(api)s failed with \""},{"line_number":39,"context_line":"                   \"parameters: %(args)s %(kwargs)s .  Results: %(results)s\" %"},{"line_number":40,"context_line":"                   {\u0027api\u0027: func_name, \u0027args\u0027: six.text_type(args),"},{"line_number":41,"context_line":"                    \u0027kwargs\u0027: six.text_type(kwargs),"},{"line_number":42,"context_line":"                    \u0027results\u0027: six.text_type(results)})"},{"line_number":43,"context_line":"            LOG.debug(msg)"},{"line_number":44,"context_line":"            raise exception.NovaException(msg, results\u003dresults)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_3f62f13f","line":42,"range":{"start_line":40,"start_character":19,"end_line":42,"end_character":55},"in_reply_to":"7f96bb07_539b3f71","updated":"2018-01-12 08:07:56.000000000","message":"Done","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb89c2b12f879b02f14397a8fbcb9594070915e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                    \u0027kwargs\u0027: six.text_type(kwargs),"},{"line_number":42,"context_line":"                    \u0027results\u0027: six.text_type(results)})"},{"line_number":43,"context_line":"            LOG.debug(msg)"},{"line_number":44,"context_line":"            raise exception.NovaException(msg, results\u003dresults)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        return results[\u0027output\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_d388af20","line":44,"range":{"start_line":44,"start_character":47,"end_line":44,"end_character":62},"updated":"2018-01-12 02:39:41.000000000","message":"You already put the results in the msg...","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"90b4678c7ac9ff46b8f4e855024c474f9d5bd5e1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                    \u0027kwargs\u0027: six.text_type(kwargs),"},{"line_number":42,"context_line":"                    \u0027results\u0027: six.text_type(results)})"},{"line_number":43,"context_line":"            LOG.debug(msg)"},{"line_number":44,"context_line":"            raise exception.NovaException(msg, results\u003dresults)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        return results[\u0027output\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_9ffa2540","line":44,"range":{"start_line":44,"start_character":47,"end_line":44,"end_character":62},"in_reply_to":"7f96bb07_d388af20","updated":"2018-01-12 08:07:56.000000000","message":"The reason we set results in the exception: results is a dict that contains return code, reason code and zvm specific error messages, which will be consumed when dong exception handling.","commit_id":"43a1b7a72dd7e791a168a3e11c4cc3ec6a1f8547"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8589da5a5abf048ace832ee2caf0156f3755633a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                \u0027kwargs\u0027: six.text_type(kwargs),"},{"line_number":42,"context_line":"                \u0027results\u0027: six.text_type(results)})"},{"line_number":43,"context_line":"            raise exception.NovaException(\"zVM Cloud Connector request failed\","},{"line_number":44,"context_line":"                                          results\u003dresults)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        return results[\u0027output\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_cb021d0a","line":44,"range":{"start_line":44,"start_character":42,"end_line":44,"end_character":57},"updated":"2018-01-12 19:17:58.000000000","message":"This is a kwarg for the message you\u0027re passing to NovaException, and since there is no %(results)s variable in that message, it won\u0027t be used.","commit_id":"6400a4f9a8b579f82e9afed59de69faa435cff1b"},{"author":{"_account_id":5930,"name":"Huang Rui","email":"bjhuangr@cn.ibm.com","username":"bjhuangr"},"change_message_id":"5b78857792e1cb82a9d8986d0771eb52c3074a4c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                \u0027kwargs\u0027: six.text_type(kwargs),"},{"line_number":42,"context_line":"                \u0027results\u0027: six.text_type(results)})"},{"line_number":43,"context_line":"            raise exception.NovaException(\"zVM Cloud Connector request failed\","},{"line_number":44,"context_line":"                                          results\u003dresults)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        return results[\u0027output\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_e3e28401","line":44,"range":{"start_line":44,"start_character":42,"end_line":44,"end_character":57},"in_reply_to":"7f96bb07_cb021d0a","updated":"2018-01-15 09:06:35.000000000","message":"It will be used inner zvm driver. In some error case, zvm driver will catch NovaException raised here, then try to get the return code and reason code vi err.kwagrs[\u0027results\u0027][\u0027rc\u0027] .","commit_id":"6400a4f9a8b579f82e9afed59de69faa435cff1b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a8bf4bec7d474938960ec8dc871fa480707d4dee","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self):"},{"line_number":31,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"},{"line_number":32,"context_line":"        self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def call(self, func_name, *args, **kwargs):"},{"line_number":35,"context_line":"        results \u003d self._conn.send_request(func_name, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_a3c48a60","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":69},"updated":"2018-03-21 14:15:39.000000000","message":"Interesting - so you\u0027re not using the protocol at all.  Snooping around, it looks like it may be legal to define the conf option without listing legal schemes, which would perhaps be more appropriate.  (E.g. you wouldn\u0027t want the user to think they\u0027re being secure by specifying https.)","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"066b0dbc190da87c3eeb6681073fe045bec40a98","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self):"},{"line_number":31,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"},{"line_number":32,"context_line":"        self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def call(self, func_name, *args, **kwargs):"},{"line_number":35,"context_line":"        results \u003d self._conn.send_request(func_name, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"df7087c5_b47d8f6f","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":69},"in_reply_to":"df7087c5_a3c48a60","updated":"2018-03-22 06:51:53.000000000","message":"yes, will adjust the conf option there","commit_id":"e7f40c11956cbff2facda3fc85bfd5d2ac741b7a"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d49b53933eb5166e2bffe22db8d76a548194a415","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d conf.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class zVMConnectorRequestHandler(object):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self):"},{"line_number":31,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_23519837","line":28,"updated":"2018-03-26 08:38:58.000000000","message":"I would have added adocstring","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3d82d08fbf6455745ccf5953df8fbd9b098cf064","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d conf.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class zVMConnectorRequestHandler(object):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self):"},{"line_number":31,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_0617a6ef","line":28,"in_reply_to":"bf659307_23519837","updated":"2018-03-27 03:17:24.000000000","message":"good point","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d49b53933eb5166e2bffe22db8d76a548194a415","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"},{"line_number":32,"context_line":"        self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def call(self, func_name, *args, **kwargs):"},{"line_number":35,"context_line":"        results \u003d self._conn.send_request(func_name, *args, **kwargs)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if results[\u0027overallRC\u0027] !\u003d 0:"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_0effdb01","line":34,"updated":"2018-03-26 08:38:58.000000000","message":"I think I would have preferred to have this method private and have some public methods to return what is needed like:\n\nclass Connector(object):\n  ...\n\n  def get_info(self):\n    return self._call(....)\n\n  def get_host_name(self):\n    # At least, here I\u0027m OK to have the cased value of hostname\n\nAnd what about to change name of file to use something like: \u0027connector.py\u0027 or whatever you prefer?","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"dc276987d492a9193c57bc5f036dc3f1959238bd","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"},{"line_number":32,"context_line":"        self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def call(self, func_name, *args, **kwargs):"},{"line_number":35,"context_line":"        results \u003d self._conn.send_request(func_name, *args, **kwargs)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if results[\u0027overallRC\u0027] !\u003d 0:"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_fcf7a8f4","line":34,"in_reply_to":"bf659307_0effdb01","updated":"2018-03-26 22:23:59.000000000","message":"I\u0027m on the fence about this.  It seems like extra LOC that don\u0027t convey much value.","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3d82d08fbf6455745ccf5953df8fbd9b098cf064","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"},{"line_number":32,"context_line":"        self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def call(self, func_name, *args, **kwargs):"},{"line_number":35,"context_line":"        results \u003d self._conn.send_request(func_name, *args, **kwargs)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if results[\u0027overallRC\u0027] !\u003d 0:"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_26e74a15","line":34,"in_reply_to":"bf659307_0effdb01","updated":"2018-03-27 03:17:24.000000000","message":"utils.py because we will have more stuffs to be put into file..","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"08ef3099d7c592f4a3ef6ac107e877079dfe361c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"},{"line_number":32,"context_line":"        self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def call(self, func_name, *args, **kwargs):"},{"line_number":35,"context_line":"        results \u003d self._conn.send_request(func_name, *args, **kwargs)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if results[\u0027overallRC\u0027] !\u003d 0:"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_9ab9c5ea","line":34,"in_reply_to":"bf659307_46e27e03","updated":"2018-03-27 07:06:22.000000000","message":"Please consider what I\u0027m saying, we should separate internal complexity related to the hypervisor itself and high level relationships inside the driver.\n\nBy having that \u0027call\u0027 method in public you mixing both.\n\nIn \u0027driver.get_available_resource()\u0027 the \u0027try..except\u0027 added to handle any error is an internal complexity related to the hypervisor, the driver don\u0027t have to handle that.\n\nI would recommend to update this as suggested. thinking again, you should call that module \"hypervisor\"\n\nAlso having \u0027utils.py\u0027 to put here everything does not look right, if you need specific module to handle configdriver things so create a configdrive.py module etc...","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c2c9e499d8e2c857932d54210bfe6fa5bd3fd22c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"},{"line_number":32,"context_line":"        self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def call(self, func_name, *args, **kwargs):"},{"line_number":35,"context_line":"        results \u003d self._conn.send_request(func_name, *args, **kwargs)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if results[\u0027overallRC\u0027] !\u003d 0:"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_b584da5f","line":34,"in_reply_to":"bf659307_9ab9c5ea","updated":"2018-03-27 07:29:55.000000000","message":"ok, I can do that as it can make it more clear just like libvirt, it\u0027s a refactory thing so should not be that complicated, thanks for pointing this out","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3d82d08fbf6455745ccf5953df8fbd9b098cf064","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"},{"line_number":32,"context_line":"        self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def call(self, func_name, *args, **kwargs):"},{"line_number":35,"context_line":"        results \u003d self._conn.send_request(func_name, *args, **kwargs)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if results[\u0027overallRC\u0027] !\u003d 0:"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_46e27e03","line":34,"in_reply_to":"bf659307_fcf7a8f4","updated":"2018-03-27 03:17:24.000000000","message":"yeah, I think \u0027call\u0027 is enough","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d49b53933eb5166e2bffe22db8d76a548194a415","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               {\u0027api\u0027: func_name, \u0027args\u0027: six.text_type(args),"},{"line_number":41,"context_line":"                \u0027kwargs\u0027: six.text_type(kwargs),"},{"line_number":42,"context_line":"                \u0027results\u0027: six.text_type(results)})"},{"line_number":43,"context_line":"            raise exception.NovaException(\"zVM Cloud Connector request failed\","},{"line_number":44,"context_line":"                                          results\u003dresults)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        return results[\u0027output\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_23e2f8d6","line":43,"updated":"2018-03-26 08:38:58.000000000","message":"You forgot to update this exception to use ZVMDrvierException()","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3d82d08fbf6455745ccf5953df8fbd9b098cf064","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               {\u0027api\u0027: func_name, \u0027args\u0027: six.text_type(args),"},{"line_number":41,"context_line":"                \u0027kwargs\u0027: six.text_type(kwargs),"},{"line_number":42,"context_line":"                \u0027results\u0027: six.text_type(results)})"},{"line_number":43,"context_line":"            raise exception.NovaException(\"zVM Cloud Connector request failed\","},{"line_number":44,"context_line":"                                          results\u003dresults)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        return results[\u0027output\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf659307_e6f072cc","line":43,"in_reply_to":"bf659307_23e2f8d6","updated":"2018-03-27 03:17:24.000000000","message":"right, will do","commit_id":"d441fb86ee1841be212be435124a9d8629775bc3"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"05a8c4c9d5def95c6b3a3f3676d12ffd52a6e651","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d conf.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class zVMConnectorRequestHandler(object):"},{"line_number":29,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_fe721c7c","line":28,"range":{"start_line":28,"start_character":6,"end_line":28,"end_character":32},"updated":"2018-04-09 20:16:00.000000000","message":"typically, we call this kind of code a \"client\".","commit_id":"ff6c7294df80b6e4f16e9c9306126e20b5bf8b44"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c40563cb1c4b8fac618eea2653a18a6b5bba93b9","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d conf.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class zVMConnectorRequestHandler(object):"},{"line_number":29,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_67f53983","line":28,"updated":"2018-03-27 08:27:04.000000000","message":"All this code is really related to Hypervisor","commit_id":"33f56e759e3aa23286c9f1781cc529ae1f6a02c5"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"979bfb77ad4251cb7adcecb78a5345be39075968","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d conf.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class zVMConnectorRequestHandler(object):"},{"line_number":29,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_2ab4e834","line":28,"in_reply_to":"bf659307_27f9814c","updated":"2018-03-27 08:42:07.000000000","message":"if you take a look at further patch\nimages, guests will all rely on this conn","commit_id":"33f56e759e3aa23286c9f1781cc529ae1f6a02c5"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5f7e83b2c0c8bacae462da08bc19a38e8b1c02ed","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d conf.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class zVMConnectorRequestHandler(object):"},{"line_number":29,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_dc0f16df","line":28,"in_reply_to":"bf659307_2ab4e834","updated":"2018-03-28 07:00:10.000000000","message":"Ok thanks. I understand your point.\n\nSo in such case you have to make this class as a singleton to avoid any mistake using it.","commit_id":"33f56e759e3aa23286c9f1781cc529ae1f6a02c5"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c3c38fbcfb90f779f8ee522671e7f6250d9c7598","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d conf.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class zVMConnectorRequestHandler(object):"},{"line_number":29,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_27f9814c","line":28,"in_reply_to":"bf659307_67f53983","updated":"2018-03-27 08:31:25.000000000","message":"You should move that class in hypervisor.py","commit_id":"33f56e759e3aa23286c9f1781cc529ae1f6a02c5"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c7eb5d8352d773a6b19b4dd3143675cad43c3a56","unresolved":false,"context_lines":[{"line_number":28,"context_line":"_CONN \u003d None"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class zVMConnectorRequestHandler(object):"},{"line_number":32,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_8e3c01c9","line":31,"updated":"2018-03-28 09:42:10.000000000","message":"I would have removed the \u0027zVM\u0027 prefix, looks redundant.","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3881ec06d025522b5d27ac3c2304ce20567e6a17","unresolved":false,"context_lines":[{"line_number":28,"context_line":"_CONN \u003d None"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class zVMConnectorRequestHandler(object):"},{"line_number":32,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_a559c98e","line":31,"in_reply_to":"bf659307_8e3c01c9","updated":"2018-03-29 06:39:22.000000000","message":"Done","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c7eb5d8352d773a6b19b4dd3143675cad43c3a56","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self):"},{"line_number":35,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        _ssl_enabled \u003d False"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_ce575902","line":35,"updated":"2018-03-28 09:42:10.000000000","message":"The URL should be passed by parameter as any other CONF variables.","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3881ec06d025522b5d27ac3c2304ce20567e6a17","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self):"},{"line_number":35,"context_line":"        _url \u003d urlparse.urlparse(CONF.zvm.cloud_connector_url)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        _ssl_enabled \u003d False"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_0569951f","line":35,"in_reply_to":"bf659307_ce575902","updated":"2018-03-29 06:39:22.000000000","message":"Done","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c7eb5d8352d773a6b19b4dd3143675cad43c3a56","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        return results[\u0027output\u0027]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"def get_conn():"},{"line_number":67,"context_line":"    global _CONN"},{"line_number":68,"context_line":"    if not _CONN:"},{"line_number":69,"context_line":"        _CONN \u003d zVMConnectorRequestHandler()"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_0e00f100","line":66,"updated":"2018-03-28 09:42:10.000000000","message":"get_conn should take an \u0027url\u0027 parameter which will be passed to the RequestHandler classs.","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3881ec06d025522b5d27ac3c2304ce20567e6a17","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        return results[\u0027output\u0027]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"def get_conn():"},{"line_number":67,"context_line":"    global _CONN"},{"line_number":68,"context_line":"    if not _CONN:"},{"line_number":69,"context_line":"        _CONN \u003d zVMConnectorRequestHandler()"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf659307_c55e3d75","line":66,"in_reply_to":"bf659307_0e00f100","updated":"2018-03-29 06:39:22.000000000","message":"Done","commit_id":"0dfdb3f35353706ac8b7534c7754e2e7abe3012f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e276e59c559ea221e9bfaff65badece40994e79e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        if _url.scheme \u003d\u003d \u0027https\u0027:"},{"line_number":37,"context_line":"            _ssl_enabled \u003d True"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        if _ssl_enabled and CONF.zvm.ca_file:"},{"line_number":40,"context_line":"            self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port,"},{"line_number":41,"context_line":"                                                ssl_enabled\u003d_ssl_enabled,"},{"line_number":42,"context_line":"                                                verify\u003dCONF.zvm.ca_file)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_74291de4","line":39,"updated":"2018-03-29 07:53:15.000000000","message":"We should avoid to pass direct conf option.\n\nMy thinking was to have ca_file passed by the constructor like the zcc_url.\n\n  def __init__(self, zcc_url, ca_file\u003dNone):\n    ...","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"dd991aa860f7dfc31a91fe4461f3078385481a15","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        if _url.scheme \u003d\u003d \u0027https\u0027:"},{"line_number":37,"context_line":"            _ssl_enabled \u003d True"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        if _ssl_enabled and CONF.zvm.ca_file:"},{"line_number":40,"context_line":"            self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port,"},{"line_number":41,"context_line":"                                                ssl_enabled\u003d_ssl_enabled,"},{"line_number":42,"context_line":"                                                verify\u003dCONF.zvm.ca_file)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_3aa86f8b","line":39,"in_reply_to":"bf659307_74291de4","updated":"2018-03-29 08:32:22.000000000","message":"ok, will do","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e276e59c559ea221e9bfaff65badece40994e79e","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def get_conn(zcc_url):"},{"line_number":64,"context_line":"    return ConnectorRequestHandler(zcc_url)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_541c19c0","line":64,"updated":"2018-03-29 07:53:15.000000000","message":"So you have removed the singleton?","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"dd991aa860f7dfc31a91fe4461f3078385481a15","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def get_conn(zcc_url):"},{"line_number":64,"context_line":"    return ConnectorRequestHandler(zcc_url)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_5a9c4369","line":64,"in_reply_to":"bf659307_541c19c0","updated":"2018-03-29 08:32:22.000000000","message":"want to avoid use a url as a key to the connection ..\nI can add it back","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6b6684ae9acf474424b16b7d2ddb8fe4d7f5b329","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def get_conn(zcc_url):"},{"line_number":64,"context_line":"    return ConnectorRequestHandler(zcc_url)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_dd3e0d8a","line":64,"in_reply_to":"bf659307_5a9c4369","updated":"2018-03-29 09:26:50.000000000","message":"I see what you mean. So we can remove all of that.","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b8c1b76bdeb88bc027f5b1e4e8557c4622742fce","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def get_conn(zcc_url):"},{"line_number":64,"context_line":"    return ConnectorRequestHandler(zcc_url)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_b8e1d59d","line":64,"in_reply_to":"bf659307_dd3e0d8a","updated":"2018-03-30 04:42:48.000000000","message":"yes, thanks","commit_id":"8722058db2691d93c33d8004aef1719244e74e81"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"fe86accd942d868552ff135b07c6931e09a8dd73","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        return results[\u0027output\u0027]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def get_conn(zcc_url, ca_file\u003dNone):"},{"line_number":64,"context_line":"    return ConnectorRequestHandler(zcc_url, ca_file\u003dca_file)"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_21b4add0","line":63,"updated":"2018-03-30 07:55:22.000000000","message":"You forgot to remove this.","commit_id":"fcc6e4e41f42270050d03a726ab6670b08a45446"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"da1425218a71d67e98a0c0dc4842099087ff7460","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import six.moves.urllib.parse as urlparse"},{"line_number":18,"context_line":"from zvmconnector import connector"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova import conf"},{"line_number":21,"context_line":"from nova import exception"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"bf659307_ad75c733","line":20,"updated":"2018-04-04 07:11:06.000000000","message":"Can you remove this and all reference to it?","commit_id":"5d0d15efb23716195a38f2db45c22576f1e6d631"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d54e999d0d5a9abd4eb1717dc414d2d0e9b70add","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import six.moves.urllib.parse as urlparse"},{"line_number":18,"context_line":"from zvmconnector import connector"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova import conf"},{"line_number":21,"context_line":"from nova import exception"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"bf659307_d82eb78a","line":20,"in_reply_to":"bf659307_ad75c733","updated":"2018-04-04 07:31:57.000000000","message":"right, I should remove it","commit_id":"5d0d15efb23716195a38f2db45c22576f1e6d631"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"05a8c4c9d5def95c6b3a3f3676d12ffd52a6e651","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class ConnectorRequestHandler(object):"},{"line_number":27,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, zcc_url, ca_file\u003dNone):"}],"source_content_type":"text/x-python","patch_set":31,"id":"bf659307_3e2174a0","line":26,"range":{"start_line":26,"start_character":6,"end_line":26,"end_character":29},"updated":"2018-04-09 20:16:00.000000000","message":"typically, we call this a \"client\".","commit_id":"664621b3f753bd94d4978db9b53ad25736ee81f1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"394b08d0eb1cc2a4245394332f274efd10e483a5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class ConnectorRequestHandler(object):"},{"line_number":27,"context_line":"    \"\"\"Request handler to zVM cloud connector\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, zcc_url, ca_file\u003dNone):"}],"source_content_type":"text/x-python","patch_set":31,"id":"bf659307_a321e54f","line":26,"range":{"start_line":26,"start_character":6,"end_line":26,"end_character":29},"in_reply_to":"bf659307_3e2174a0","updated":"2018-04-10 06:05:20.000000000","message":"Ok, will update it","commit_id":"664621b3f753bd94d4978db9b53ad25736ee81f1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ea6d0066291eca21ef5f5c07c9147e544538f841","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        _ssl_enabled \u003d False"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        if _url.scheme \u003d\u003d \u0027https\u0027:"},{"line_number":35,"context_line":"            _ssl_enabled \u003d True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if _ssl_enabled and ca_file:"},{"line_number":38,"context_line":"            self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_30b28c4a","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":31},"updated":"2018-04-24 17:14:26.000000000","message":"nit: If not specifying \u0027https\u0027 as the url, ca_file is not used. So it would be better to fail during this initialization as a misconfiguration.","commit_id":"c2502fb88ad308e7306fe0fbe4369c3154ee6ce6"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"acef3fc3e31f0e2c310c536debfa25f69855b070","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        _ssl_enabled \u003d False"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        if _url.scheme \u003d\u003d \u0027https\u0027:"},{"line_number":35,"context_line":"            _ssl_enabled \u003d True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if _ssl_enabled and ca_file:"},{"line_number":38,"context_line":"            self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_84fdd03b","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":31},"in_reply_to":"9f6a8fd7_30b28c4a","updated":"2018-05-02 07:19:12.000000000","message":"it won\u0027t be a problem to functions\nand you are right, I can add a log here, thanks","commit_id":"c2502fb88ad308e7306fe0fbe4369c3154ee6ce6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ea6d0066291eca21ef5f5c07c9147e544538f841","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        if _url.scheme \u003d\u003d \u0027https\u0027:"},{"line_number":35,"context_line":"            _ssl_enabled \u003d True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if _ssl_enabled and ca_file:"},{"line_number":38,"context_line":"            self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port,"},{"line_number":39,"context_line":"                                                ssl_enabled\u003d_ssl_enabled,"},{"line_number":40,"context_line":"                                                verify\u003dca_file)"},{"line_number":41,"context_line":"        else:"},{"line_number":42,"context_line":"            self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port,"},{"line_number":43,"context_line":"                                                ssl_enabled\u003d_ssl_enabled,"},{"line_number":44,"context_line":"                                                verify\u003dFalse)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def call(self, func_name, *args, **kwargs):"},{"line_number":47,"context_line":"        results \u003d self._conn.send_request(func_name, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_d0eb1010","line":44,"range":{"start_line":37,"start_character":0,"end_line":44,"end_character":61},"updated":"2018-04-24 17:14:26.000000000","message":"The other drivers(Xen, VMware, etc) have retry mechanism at this kind of step. Such thing is covered in ZVMConnector() internal?","commit_id":"c2502fb88ad308e7306fe0fbe4369c3154ee6ce6"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"acef3fc3e31f0e2c310c536debfa25f69855b070","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        if _url.scheme \u003d\u003d \u0027https\u0027:"},{"line_number":35,"context_line":"            _ssl_enabled \u003d True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if _ssl_enabled and ca_file:"},{"line_number":38,"context_line":"            self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port,"},{"line_number":39,"context_line":"                                                ssl_enabled\u003d_ssl_enabled,"},{"line_number":40,"context_line":"                                                verify\u003dca_file)"},{"line_number":41,"context_line":"        else:"},{"line_number":42,"context_line":"            self._conn \u003d connector.ZVMConnector(_url.hostname, _url.port,"},{"line_number":43,"context_line":"                                                ssl_enabled\u003d_ssl_enabled,"},{"line_number":44,"context_line":"                                                verify\u003dFalse)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def call(self, func_name, *args, **kwargs):"},{"line_number":47,"context_line":"        results \u003d self._conn.send_request(func_name, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_04ea2074","line":44,"range":{"start_line":37,"start_character":0,"end_line":44,"end_character":61},"in_reply_to":"9f6a8fd7_d0eb1010","updated":"2018-05-02 07:19:12.000000000","message":"this is just to create a connection and real action is in the call function below, so no need to retry here\n\nand we don\u0027t have a retry mechanism here ,we can take this as enhancement later","commit_id":"c2502fb88ad308e7306fe0fbe4369c3154ee6ce6"}],"requirements.txt":[{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"cf52b60959b66f757876fb8df1dfbf338cab3baa","unresolved":false,"context_lines":[{"line_number":65,"context_line":"os-service-types\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":66,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":67,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":68,"context_line":"zVMCloudConnector\u003e\u003d0.3.2  # Apache 2.0 License"}],"source_content_type":"text/plain","patch_set":16,"id":"df7087c5_a9b9ad79","line":68,"updated":"2018-03-22 12:12:19.000000000","message":"The \"Cloudbase Nova Hyper-V CI\" has failed since this package cannot be installed on Windows: http://paste.openstack.org/raw/708930/\n\nI suggest adding a platform check, ensuring that this package won\u0027t be installed on Windows:\n \nzVMCloudConnector\u003e\u003d0.3.2;sys_platform!\u003d\u0027win32\u0027 # Apache 2.0 License","commit_id":"5a079c0c482858acbd121d67f135f68f6255d723"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"24200fbbc74b1ec86f987bc852eaf3f225da723e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"os-service-types\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":66,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":67,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":68,"context_line":"zVMCloudConnector\u003e\u003d0.3.2  # Apache 2.0 License"}],"source_content_type":"text/plain","patch_set":16,"id":"df7087c5_c3af07e1","line":68,"in_reply_to":"df7087c5_a9b9ad79","updated":"2018-03-23 06:00:21.000000000","message":"this need global requirements update\nwe will submit a patch to indicate that","commit_id":"5a079c0c482858acbd121d67f135f68f6255d723"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ded0de4954621f102f5bcb2fffb9ba4b71cf7940","unresolved":false,"context_lines":[{"line_number":65,"context_line":"os-service-types\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":66,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":67,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":68,"context_line":"zVMCloudConnector\u003e\u003d1.0.0;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"}],"source_content_type":"text/plain","patch_set":17,"id":"df7087c5_3142bf10","line":68,"updated":"2018-03-23 16:19:18.000000000","message":"I noticed that [1] doesn\u0027t bump to 1.0.0.  Is that going to be done via a separate requirements patch?  Or is it a mistake here?\n\n[1] https://review.openstack.org/#/c/555647/","commit_id":"b6a92df8409f5b4e03943d506448b80829b56f7c"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3a4a433184074612a2d07d75e9d1c3cde421bd04","unresolved":false,"context_lines":[{"line_number":55,"context_line":"os-brick\u003e\u003d2.2.0 # Apache-2.0"},{"line_number":56,"context_line":"os-traits\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":57,"context_line":"os-vif!\u003d1.8.0,\u003e\u003d1.7.0 # Apache-2.0"},{"line_number":58,"context_line":"os-win\u003e\u003d3.0.0 # Apache-2.0"},{"line_number":59,"context_line":"castellan\u003e\u003d0.16.0 # Apache-2.0"},{"line_number":60,"context_line":"microversion-parse\u003e\u003d0.2.1 # Apache-2.0"},{"line_number":61,"context_line":"os-xenapi\u003e\u003d0.3.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":31,"id":"bf659307_57418638","line":58,"range":{"start_line":58,"start_character":0,"end_line":58,"end_character":6},"updated":"2018-04-11 02:12:48.000000000","message":"for hyperv","commit_id":"664621b3f753bd94d4978db9b53ad25736ee81f1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3a4a433184074612a2d07d75e9d1c3cde421bd04","unresolved":false,"context_lines":[{"line_number":61,"context_line":"os-xenapi\u003e\u003d0.3.1 # Apache-2.0"},{"line_number":62,"context_line":"tooz\u003e\u003d1.58.0 # Apache-2.0"},{"line_number":63,"context_line":"cursive\u003e\u003d0.2.1 # Apache-2.0"},{"line_number":64,"context_line":"pypowervm\u003e\u003d1.1.12 # Apache-2.0"},{"line_number":65,"context_line":"os-service-types\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":66,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":67,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"}],"source_content_type":"text/plain","patch_set":31,"id":"bf659307_773e0ab9","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":9},"updated":"2018-04-11 02:12:48.000000000","message":"for power","commit_id":"664621b3f753bd94d4978db9b53ad25736ee81f1"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"beccc847d1326f2ded92c609d2c1434ec0e8312d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"os-service-types\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":66,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":67,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":68,"context_line":"zVMCloudConnector\u003e\u003d0.3.2;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"}],"source_content_type":"text/plain","patch_set":31,"id":"bf659307_483faf24","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":17},"updated":"2018-04-10 22:19:07.000000000","message":"Optional dependancies should not appear in requirements.txt. You should take a look at how other drivers, for example ironic, load their dependancies.","commit_id":"664621b3f753bd94d4978db9b53ad25736ee81f1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3a4a433184074612a2d07d75e9d1c3cde421bd04","unresolved":false,"context_lines":[{"line_number":65,"context_line":"os-service-types\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":66,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":67,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":68,"context_line":"zVMCloudConnector\u003e\u003d0.3.2;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"}],"source_content_type":"text/plain","patch_set":31,"id":"bf659307_f77bfa88","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":17},"in_reply_to":"bf659307_483faf24","updated":"2018-04-11 02:12:48.000000000","message":"I don\u0027t fully understand this question, the proposed driver is similar to power and hyperv, both of them have requirements listed above, what\u0027s the optional comes from? thanks","commit_id":"664621b3f753bd94d4978db9b53ad25736ee81f1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"541309e5f66a3392b0da898fae905dbc02707c18","unresolved":false,"context_lines":[{"line_number":65,"context_line":"os-service-types\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":66,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":67,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":68,"context_line":"zVMCloudConnector\u003e\u003d0.3.2;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"}],"source_content_type":"text/plain","patch_set":31,"id":"bf659307_802fcc86","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":17},"in_reply_to":"bf659307_7d702109","updated":"2018-04-11 12:06:19.000000000","message":"ok, thanks , that make a lot of sense , so I think it\u0027s reasonable to put requirements there as it\u0027s similar to powervm..","commit_id":"664621b3f753bd94d4978db9b53ad25736ee81f1"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"59785c3ded1b76f0631bfa8a7548ee5654ae9b82","unresolved":false,"context_lines":[{"line_number":65,"context_line":"os-service-types\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":66,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":67,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":68,"context_line":"zVMCloudConnector\u003e\u003d0.3.2;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"}],"source_content_type":"text/plain","patch_set":31,"id":"bf659307_aad65ff1","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":17},"in_reply_to":"bf659307_802fcc86","updated":"2018-04-11 22:05:27.000000000","message":"The problem here is that these entries in requirements.txt force deployers to install dependancies for platforms they\u0027re not supporting. I\u0027ll create an openstack-dev thread about this.","commit_id":"664621b3f753bd94d4978db9b53ad25736ee81f1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"81f4bb056b29a0cc8f011ba8822a77b16120ad3c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"os-service-types\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":66,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":67,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":68,"context_line":"zVMCloudConnector\u003e\u003d0.3.2;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"}],"source_content_type":"text/plain","patch_set":31,"id":"9f6a8fd7_4353a56b","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":17},"in_reply_to":"bf659307_aad65ff1","updated":"2018-04-25 15:56:54.000000000","message":"FWIW, today I noticed the zVMCloudConnector is in global-requirements already:\n\nhttps://github.com/openstack/requirements/blob/master/global-requirements.txt#L220\n\nand was added in this change https://review.openstack.org/525509","commit_id":"664621b3f753bd94d4978db9b53ad25736ee81f1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9f03a890012c196e66c07dc0d8869a6384d6259a","unresolved":false,"context_lines":[{"line_number":65,"context_line":"os-service-types\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":66,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":67,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":68,"context_line":"zVMCloudConnector\u003e\u003d0.3.2;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"}],"source_content_type":"text/plain","patch_set":31,"id":"bf659307_7d702109","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":17},"in_reply_to":"bf659307_f77bfa88","updated":"2018-04-11 11:50:14.000000000","message":"I remember having this discussion when we introduced pypowervm too [1].\n\n[1] https://review.openstack.org/#/c/438119/5/requirements.txt","commit_id":"664621b3f753bd94d4978db9b53ad25736ee81f1"}]}
