)]}'
{"cinder/volume/drivers/netapp/dataontap/block_base.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ec87c6e08983b8c5c7df21035083de104af3f611","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        qos_policy_group_name \u003d ("},{"line_number":361,"context_line":"            na_utils.get_qos_policy_group_name_from_info("},{"line_number":362,"context_line":"                qos_policy_group_info))"},{"line_number":363,"context_line":"        qos_policy_group_is_adaptive \u003d extra_specs.get("},{"line_number":364,"context_line":"            \u0027netapp:qos_policy_group_is_adaptive\u0027)"},{"line_number":365,"context_line":"        q_adaptive \u003d qos_policy_group_is_adaptive"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        try:"},{"line_number":368,"context_line":"            self._clone_lun(source_name, destination_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_65eed121","line":365,"range":{"start_line":363,"start_character":0,"end_line":365,"end_character":49},"updated":"2020-09-08 23:27:49.000000000","message":"What happens if someone defines qos_policy_group_is_adaptive as \u0027\u003cis\u003e False\u0027 in the extra-specs?  It looks like it will be treated as True -- see https://review.opendev.org/#/c/741327/4/cinder/volume/drivers/netapp/dataontap/client/client_base.py@137\n\nOr have you already taken care of that somewhere else?","commit_id":"0ea41ac36a8fa7a95966ebb3bf256bcdf27b8683"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b921dce4afcaa00ffc5f11a78d44a6985011e884","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        qos_policy_group_name \u003d ("},{"line_number":238,"context_line":"            na_utils.get_qos_policy_group_name_from_info("},{"line_number":239,"context_line":"                qos_policy_group_info))"},{"line_number":240,"context_line":"        qos_policy_group_is_adaptive \u003d extra_specs.get("},{"line_number":241,"context_line":"            \u0027netapp:qos_policy_group_is_adaptive\u0027)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        try:"},{"line_number":244,"context_line":"            self._create_lun(pool_name, lun_name, size, metadata,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_463a6e97","line":241,"range":{"start_line":240,"start_character":0,"end_line":241,"end_character":50},"updated":"2020-09-11 21:15:47.000000000","message":"Here and at line 363, you\u0027re just doing a straight get from the extra specs, and if the operator has set this to \u0027\u003cis\u003e True\u0027, the comparison to \u0027True\u0027 won\u0027t succeed later.","commit_id":"5192f9241a5188ce2e818f5f66bda86b75451857"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3332a40f7bc228ce41e8c8d195a2dfc4b45361b5","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        qos_policy_group_name \u003d ("},{"line_number":238,"context_line":"            na_utils.get_qos_policy_group_name_from_info("},{"line_number":239,"context_line":"                qos_policy_group_info))"},{"line_number":240,"context_line":"        qos_policy_group_is_adaptive \u003d extra_specs.get("},{"line_number":241,"context_line":"            \u0027netapp:qos_policy_group_is_adaptive\u0027)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        try:"},{"line_number":244,"context_line":"            self._create_lun(pool_name, lun_name, size, metadata,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_5131860a","line":241,"range":{"start_line":240,"start_character":0,"end_line":241,"end_character":50},"in_reply_to":"9f560f44_463a6e97","updated":"2020-09-11 23:05:58.000000000","message":"Done","commit_id":"5192f9241a5188ce2e818f5f66bda86b75451857"}],"cinder/volume/drivers/netapp/dataontap/block_cmode.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3332a40f7bc228ce41e8c8d195a2dfc4b45361b5","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _create_lun(self, volume_name, lun_name, size,"},{"line_number":168,"context_line":"                    metadata, qos_policy_group_name\u003dNone,"},{"line_number":169,"context_line":"                    qos_policy_group_is_adaptive\u003dFalse):"},{"line_number":170,"context_line":"        \"\"\"Creates a LUN, handling Data ONTAP differences as needed.\"\"\""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        self.zapi_client.create_lun("}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_713acae5","line":169,"range":{"start_line":169,"start_character":20,"end_line":169,"end_character":54},"updated":"2020-09-11 23:05:58.000000000","message":"Changed the default value to False, as semantically this param is boolean. Here and elsewhere.","commit_id":"7f6c42c0be8854ed0182660b2e12cb7f7468046f"}],"cinder/volume/drivers/netapp/dataontap/client/client_base.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3332a40f7bc228ce41e8c8d195a2dfc4b45361b5","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            \u0027lun-create-by-size\u0027,"},{"line_number":135,"context_line":"            **params)"},{"line_number":136,"context_line":"        if qos_policy_group_name:"},{"line_number":137,"context_line":"            if qos_policy_group_is_adaptive:"},{"line_number":138,"context_line":"                lun_create.add_new_child("},{"line_number":139,"context_line":"                    \u0027qos-adaptive-policy-group\u0027, qos_policy_group_name)"},{"line_number":140,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_b11f426e","line":137,"range":{"start_line":137,"start_character":15,"end_line":137,"end_character":43},"updated":"2020-09-11 23:05:58.000000000","message":"Now this param arrives here and elsewhere as a boolean True or False.","commit_id":"7f6c42c0be8854ed0182660b2e12cb7f7468046f"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3332a40f7bc228ce41e8c8d195a2dfc4b45361b5","unresolved":false,"context_lines":[{"line_number":529,"context_line":"    def file_assign_qos(self, flex_vol, qos_policy_group_name,"},{"line_number":530,"context_line":"                        qos_policy_group_is_adaptive, file_path):"},{"line_number":531,"context_line":"        \"\"\"Assigns the named QoS policy-group to a file.\"\"\""},{"line_number":532,"context_line":"        qos_arg_name \u003d \"qos-%spolicy-group-name\" % ("},{"line_number":533,"context_line":"            \"adaptive-\" if qos_policy_group_is_adaptive else \"\")"},{"line_number":534,"context_line":"        api_args \u003d {"},{"line_number":535,"context_line":"            \u0027volume\u0027: flex_vol,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_91103e5b","line":532,"range":{"start_line":532,"start_character":8,"end_line":532,"end_character":20},"updated":"2020-09-11 23:05:58.000000000","message":"Refactored the dict key name to remove duplicated code.","commit_id":"7f6c42c0be8854ed0182660b2e12cb7f7468046f"}],"cinder/volume/drivers/netapp/dataontap/nfs_cmode.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b921dce4afcaa00ffc5f11a78d44a6985011e884","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                self.ssc_library.get_ssc_flexvol_names())"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _do_qos_for_volume(self, volume, extra_specs, cleanup\u003dTrue):"},{"line_number":164,"context_line":"        qos_policy_group_is_adaptive \u003d extra_specs.get("},{"line_number":165,"context_line":"            \u0027netapp:qos_policy_group_is_adaptive\u0027)"},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            qos_policy_group_info \u003d na_utils.get_valid_qos_policy_group_info("},{"line_number":168,"context_line":"                volume, extra_specs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_4366e02a","line":165,"range":{"start_line":164,"start_character":0,"end_line":165,"end_character":50},"updated":"2020-09-11 21:15:47.000000000","message":"I\u0027m still suspicious about comparing this to the string \"True\".  As far as I can tell, this is a straight get of the extra_specs, they haven\u0027t been processed first.  So I\u0027d expect to see \u0027\u003cis\u003e True\u0027 or \u0027\u003cis\u003e False\u0027 (or some garbage) here.  How did you test this? An extra spec value can be any string, so if you specifically put \u0027True\u0027 (not \u0027\u003cis\u003e True\u0027) as the value for netapp:qos_policy_group_is_adaptive, then when you compare it to \u0027True\u0027 in the code, it will match.  But I think our operators expect to use \u0027\u003cis\u003e True\u0027, and that could lead to problems.\n\n(BTW, I wanted to address your question on PS 4 about worrying about \u0027\u003cis\u003e False\u0027 -- why would someone bother to set it, when they can have the same effect more easily by leaving it out?  The problem is that if operators are using multiple volume-types, and they want an option \"on\" in one and \"off\" in another, they may go ahead and use \u0027\u003cis\u003e False\u0027 to make explicit what\u0027s being set.)","commit_id":"5192f9241a5188ce2e818f5f66bda86b75451857"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3332a40f7bc228ce41e8c8d195a2dfc4b45361b5","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                self.ssc_library.get_ssc_flexvol_names())"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _do_qos_for_volume(self, volume, extra_specs, cleanup\u003dTrue):"},{"line_number":164,"context_line":"        qos_policy_group_is_adaptive \u003d extra_specs.get("},{"line_number":165,"context_line":"            \u0027netapp:qos_policy_group_is_adaptive\u0027)"},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            qos_policy_group_info \u003d na_utils.get_valid_qos_policy_group_info("},{"line_number":168,"context_line":"                volume, extra_specs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_f1feda03","line":165,"range":{"start_line":164,"start_character":0,"end_line":165,"end_character":50},"in_reply_to":"9f560f44_4366e02a","updated":"2020-09-11 23:05:58.000000000","message":"Thanks for pointing this. Indeed we were testing it the wrong way.\n\nNow the code is properly converting the extra spec to a boolean value.","commit_id":"5192f9241a5188ce2e818f5f66bda86b75451857"}],"doc/source/configuration/tables/manual/cinder-netapp_cdot_extraspecs.inc":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b921dce4afcaa00ffc5f11a78d44a6985011e884","unresolved":false,"context_lines":[{"line_number":21,"context_line":"       object within Data ONTAP should be defined before an OpenStack Block"},{"line_number":22,"context_line":"       Storage volume is created, and that the QoS policy group is not"},{"line_number":23,"context_line":"       associated with the destination FlexVol volume."},{"line_number":24,"context_line":"   * - ``netapp:qos_policy_group_is_adaptive``"},{"line_number":25,"context_line":"     - Boolean"},{"line_number":26,"context_line":"     - Set to \"True\" in order to instruct the driver to use an Adaptive QoS"},{"line_number":27,"context_line":"       policy group for the netapp:qos_policy_group setting.  Leave this"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"9f560f44_46a42eb9","line":24,"updated":"2020-09-11 21:15:47.000000000","message":"This is set using the Block Storage API, so I imagine operators will use \u0027\u003cis\u003e True\u0027 or \u0027\u003cis\u003e False\u0027 for a boolean.","commit_id":"5192f9241a5188ce2e818f5f66bda86b75451857"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8823c213676f012d2c220ccc3b0eb92d2e524272","unresolved":false,"context_lines":[{"line_number":21,"context_line":"       object within Data ONTAP should be defined before an OpenStack Block"},{"line_number":22,"context_line":"       Storage volume is created, and that the QoS policy group is not"},{"line_number":23,"context_line":"       associated with the destination FlexVol volume."},{"line_number":24,"context_line":"   * - ``netapp:qos_policy_group_is_adaptive``"},{"line_number":25,"context_line":"     - Boolean"},{"line_number":26,"context_line":"     - Set to \"True\" in order to instruct the driver to use an Adaptive QoS"},{"line_number":27,"context_line":"       policy group for the netapp:qos_policy_group setting.  Leave this"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"9f560f44_911e7e5c","line":24,"in_reply_to":"9f560f44_46a42eb9","updated":"2020-09-11 21:39:47.000000000","message":"Oh, makes total sense now. Michael was setting `\u003dTrue` instead of `\u003d\u003cis\u003e True` (as he wrote in the reno and the commit message). That\u0027s why the condition `\u003d\u003d \"True\"` works.\n\nI agree that we should use `\u003cis\u003e True` instead, because operators are used to use this format.","commit_id":"5192f9241a5188ce2e818f5f66bda86b75451857"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"3332a40f7bc228ce41e8c8d195a2dfc4b45361b5","unresolved":false,"context_lines":[{"line_number":21,"context_line":"       object within Data ONTAP should be defined before an OpenStack Block"},{"line_number":22,"context_line":"       Storage volume is created, and that the QoS policy group is not"},{"line_number":23,"context_line":"       associated with the destination FlexVol volume."},{"line_number":24,"context_line":"   * - ``netapp:qos_policy_group_is_adaptive``"},{"line_number":25,"context_line":"     - Boolean"},{"line_number":26,"context_line":"     - Set to \"True\" in order to instruct the driver to use an Adaptive QoS"},{"line_number":27,"context_line":"       policy group for the netapp:qos_policy_group setting.  Leave this"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"9f560f44_4cff2d00","line":24,"in_reply_to":"9f560f44_911e7e5c","updated":"2020-09-11 23:05:58.000000000","message":"Done","commit_id":"5192f9241a5188ce2e818f5f66bda86b75451857"}],"releasenotes/notes/netapp-add-support-for-adaptive-qos-0b76dadf7c044cd8.yaml":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"6156ecc51ba3be00160b94d00448548ef0b21924","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for Adaptive QoS policies that have been pre-created on "},{"line_number":5,"context_line":"    the storage system, with the NetApp driver and clustered ONTAP version"},{"line_number":6,"context_line":"    9.4 or higher.  To use this feature, configure a Cinder volume type with"},{"line_number":7,"context_line":"    the following extra-specs:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"bf51134e_67cb351d","line":4,"updated":"2020-07-15 21:54:40.000000000","message":"Please prepend \u0027NetApp ONTAP\u0027, so readers will find ONTAP features/bugfixes easily.","commit_id":"1bc6cb53fa2e81ec9b9383cbe428f47656b8b6a9"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"6156ecc51ba3be00160b94d00448548ef0b21924","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for Adaptive QoS policies that have been pre-created on "},{"line_number":5,"context_line":"    the storage system, with the NetApp driver and clustered ONTAP version"},{"line_number":6,"context_line":"    9.4 or higher.  To use this feature, configure a Cinder volume type with"},{"line_number":7,"context_line":"    the following extra-specs:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"bf51134e_a7d1cdce","line":4,"range":{"start_line":4,"start_character":73,"end_line":4,"end_character":74},"updated":"2020-07-15 21:54:40.000000000","message":"please remove this trailing whitespace","commit_id":"1bc6cb53fa2e81ec9b9383cbe428f47656b8b6a9"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"6156ecc51ba3be00160b94d00448548ef0b21924","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    netapp:qos_policy_group\u003d\u003cname_of_precreated_aqos_policy\u003e"},{"line_number":10,"context_line":"    netapp:qos_policy_group_is_adaptive\u003dTrue"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    Note that a cluster scoped account must be used in the driver "},{"line_number":13,"context_line":"    configuration in order to use QoS in clustered ONTAP."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"bf51134e_e7d625c3","line":12,"range":{"start_line":12,"start_character":65,"end_line":12,"end_character":66},"updated":"2020-07-15 21:54:40.000000000","message":"ditto","commit_id":"1bc6cb53fa2e81ec9b9383cbe428f47656b8b6a9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ec87c6e08983b8c5c7df21035083de104af3f611","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    9.4 or higher.  To use this feature, configure a Cinder volume type with"},{"line_number":8,"context_line":"    the following extra-specs:"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    netapp:qos_policy_group\u003d\u003cname_of_precreated_aqos_policy\u003e"},{"line_number":11,"context_line":"    netapp:qos_policy_group_is_adaptive\u003dTrue"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Note that a cluster scoped account must be used in the driver"},{"line_number":14,"context_line":"    configuration in order to use QoS in clustered ONTAP."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9f560f44_420e238c","line":11,"range":{"start_line":10,"start_character":0,"end_line":11,"end_character":44},"updated":"2020-09-08 23:27:49.000000000","message":"these are going to get run together into a single line.  I suggest ending line 8 with :: (instead of a single :) and then indenting these 2 lines 4 spaces.  Then they\u0027ll be rendered in monospace font.  Or you can turn them into a list or make them separate paragraphs, whatever you prefer.","commit_id":"0ea41ac36a8fa7a95966ebb3bf256bcdf27b8683"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ec87c6e08983b8c5c7df21035083de104af3f611","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    netapp:qos_policy_group\u003d\u003cname_of_precreated_aqos_policy\u003e"},{"line_number":11,"context_line":"    netapp:qos_policy_group_is_adaptive\u003dTrue"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Note that a cluster scoped account must be used in the driver"},{"line_number":14,"context_line":"    configuration in order to use QoS in clustered ONTAP."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9f560f44_42b8e373","line":12,"updated":"2020-09-08 23:27:49.000000000","message":"Also, you probably want to add netapp:qos_policy_group_is_adaptive to doc/source/configuration/block-storage/drivers/netapp-volume-driver.rst","commit_id":"0ea41ac36a8fa7a95966ebb3bf256bcdf27b8683"}]}
