)]}'
{"rally/plugins/openstack/scenarios/cinder/volume_types.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b37166cbefc9a46fe75fd63df7cc350cc1b6b640","unresolved":false,"context_lines":[{"line_number":63,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"cinder\"]},"},{"line_number":64,"context_line":"                    name\u003d\"CinderVolumeTypes.create_and_show_\""},{"line_number":65,"context_line":"                         \"encryption_type\")"},{"line_number":66,"context_line":"class CreateAndShowEncryptionType(cinder_utils.CinderScenario):"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def run(self, specs, **kwargs):"},{"line_number":69,"context_line":"        \"\"\"Create and show encryption type"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_97472abb","line":66,"updated":"2017-01-17 13:40:34.000000000","message":"I think scenario name should be similar to the name of the function in cinder client  - CreateAndGetEncryptionType","commit_id":"cd44930db83c8445f0d8843602bc29d9bac47a06"},{"author":{"_account_id":18404,"name":"Ma Xinjian","email":"maxj.fnst@cn.fujitsu.com","username":"maxinjian"},"change_message_id":"2e6da351e6c086477bba8091ce495d8e79475f38","unresolved":false,"context_lines":[{"line_number":63,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"cinder\"]},"},{"line_number":64,"context_line":"                    name\u003d\"CinderVolumeTypes.create_and_show_\""},{"line_number":65,"context_line":"                         \"encryption_type\")"},{"line_number":66,"context_line":"class CreateAndShowEncryptionType(cinder_utils.CinderScenario):"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def run(self, specs, **kwargs):"},{"line_number":69,"context_line":"        \"\"\"Create and show encryption type"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_50f2d29b","line":66,"in_reply_to":"7a3c09a3_97472abb","updated":"2017-01-19 01:56:52.000000000","message":"Done","commit_id":"cd44930db83c8445f0d8843602bc29d9bac47a06"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"466217be2a75356504e6e195a97be36def5ac268","unresolved":false,"context_lines":[{"line_number":71,"context_line":"          This scenario first creates a volume type, then creates an encryption"},{"line_number":72,"context_line":"          type for the volume type."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        :param provider: The class that provides encryption support. For"},{"line_number":75,"context_line":"                         example, LuksEncryptor."},{"line_number":76,"context_line":"        :param cipher: The encryption algorithm or mode."},{"line_number":77,"context_line":"        :param key_size: Size of encryption key, in bits."},{"line_number":78,"context_line":"        :param control_location: Notional service where encryption is"},{"line_number":79,"context_line":"                                 performed. Valid values are \"front-end\""},{"line_number":80,"context_line":"                                 or \"back-end.\""},{"line_number":81,"context_line":"        :param kwargs: Optional parameters used during volume"},{"line_number":82,"context_line":"                       type creation."},{"line_number":83,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"bff0334d_b98f6f28","line":80,"range":{"start_line":74,"start_character":8,"end_line":80,"end_character":47},"updated":"2017-04-12 11:00:57.000000000","message":"I really like an explicit way to describe parameters, but we need to support backward compatibility. Cinder Service class is not released in any rally versions yet, so we can modify it as much as we can, but all scenarios should support both cases(new and old one) for at least 2 releases. To do it we need to extend required_paramaters validator[*] to be more complex, like:\n\n    missing \u003d []\n    for arg in required_params:\n         if type(arg, tuple):\n               # it is logical OR\n               for case in arg:\n                     if not isinstance(case, (list, tuple)):\n                           case \u003d [case]\n                     case_missing \u003d set(case) - set(config.get(\"args\", {}))\n                     if not case_missing:\n                          break\n               else:\n                   missing.append(arg)\n         else:\n             if arg not in config.get(\"args\", []):\n                  missing.append(arg)\n\nSuch modification will give us an ability to require old deprecated spec parameter or a bunch of new ones\n\n[*] - https://github.com/openstack/rally/blob/master/rally/task/validation.py#L463","commit_id":"1263a7668a1a184233c8916a4adbe0b55fbf43e8"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"238fe8f53b7ec3ac04063cde97e0e7da53d71533","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                    name\u003d\"CinderVolumeTypes.create_and_delete_volume_type\")"},{"line_number":31,"context_line":"class CreateAndDeleteVolumeType(cinder_utils.CinderBasic):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def run(self, **kwargs):"},{"line_number":34,"context_line":"        \"\"\"Create and delete a volume Type."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        :param kwargs: Optional parameters used during volume"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ffa3b31_a17774a0","line":33,"range":{"start_line":33,"start_character":18,"end_line":33,"end_character":26},"updated":"2017-04-20 13:58:50.000000000","message":"it would be better(more user-friendly) to specify all parameters explicitly. In this case we will have good documentary here - http://rally.readthedocs.io/en/latest/plugins/plugin_reference.html#cindervolumetypes-create-and-delete-volume-type-scenario\n\nSo please replace kwargs by 2 arguments - description and is_public\n\nIn this case L26 become redundant.\n\nPS: it relates to all scenarios which create volume types","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":18404,"name":"Ma Xinjian","email":"maxj.fnst@cn.fujitsu.com","username":"maxinjian"},"change_message_id":"589bc3cac418015d16216a808a3dbfbdf4e45a75","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                    name\u003d\"CinderVolumeTypes.create_and_delete_volume_type\")"},{"line_number":31,"context_line":"class CreateAndDeleteVolumeType(cinder_utils.CinderBasic):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def run(self, **kwargs):"},{"line_number":34,"context_line":"        \"\"\"Create and delete a volume Type."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        :param kwargs: Optional parameters used during volume"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_f4bdcb68","line":33,"range":{"start_line":33,"start_character":18,"end_line":33,"end_character":26},"in_reply_to":"7ffa3b31_a17774a0","updated":"2017-04-24 10:51:29.000000000","message":"I will modify volume types related kwargs in another patch.","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"238fe8f53b7ec3ac04063cde97e0e7da53d71533","unresolved":false,"context_lines":[{"line_number":134,"context_line":"@validation.required_services(consts.Service.CINDER)"},{"line_number":135,"context_line":"@validation.required_contexts(\"volume_types\")"},{"line_number":136,"context_line":"@validation.add(\"required_params\","},{"line_number":137,"context_line":"                params\u003d(\"provider\", \"cipher\", \"key_size\", \"control_location\"),"},{"line_number":138,"context_line":"                subdict\u003d\"create_specs\")"},{"line_number":139,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":140,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"cinder\"]},"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ffa3b31_cc44f749","line":137,"range":{"start_line":137,"start_character":23,"end_line":137,"end_character":77},"updated":"2017-04-20 13:58:50.000000000","message":"based on https://developer.openstack.org/api-ref/block-storage/v3/?expanded\u003dcreate-an-encryption-type-detail#create-an-encryption-type key_size, cipher and control_location are optional.\n\nActually, the same question here - why scenario accepts only one argument which includes another known arguments which should be validated? It would be much easier to validate and user-friendly if all these arguments(provider, cipher, key_size, control_location) is specified explicitly.","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":18404,"name":"Ma Xinjian","email":"maxj.fnst@cn.fujitsu.com","username":"maxinjian"},"change_message_id":"589bc3cac418015d16216a808a3dbfbdf4e45a75","unresolved":false,"context_lines":[{"line_number":134,"context_line":"@validation.required_services(consts.Service.CINDER)"},{"line_number":135,"context_line":"@validation.required_contexts(\"volume_types\")"},{"line_number":136,"context_line":"@validation.add(\"required_params\","},{"line_number":137,"context_line":"                params\u003d(\"provider\", \"cipher\", \"key_size\", \"control_location\"),"},{"line_number":138,"context_line":"                subdict\u003d\"create_specs\")"},{"line_number":139,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":140,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"cinder\"]},"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_f4626b16","line":137,"range":{"start_line":137,"start_character":23,"end_line":137,"end_character":77},"in_reply_to":"7ffa3b31_c9a60d10","updated":"2017-04-24 10:51:29.000000000","message":"Done","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"c50ab19e2e40e4df88e53c5dcb644121b04a18bd","unresolved":false,"context_lines":[{"line_number":134,"context_line":"@validation.required_services(consts.Service.CINDER)"},{"line_number":135,"context_line":"@validation.required_contexts(\"volume_types\")"},{"line_number":136,"context_line":"@validation.add(\"required_params\","},{"line_number":137,"context_line":"                params\u003d(\"provider\", \"cipher\", \"key_size\", \"control_location\"),"},{"line_number":138,"context_line":"                subdict\u003d\"create_specs\")"},{"line_number":139,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":140,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"cinder\"]},"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_4c7d276d","line":137,"range":{"start_line":137,"start_character":23,"end_line":137,"end_character":77},"in_reply_to":"7ffa3b31_c9a60d10","updated":"2017-04-22 04:41:40.000000000","message":"why not use arguments explicitly in new scenario?","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":18404,"name":"Ma Xinjian","email":"maxj.fnst@cn.fujitsu.com","username":"maxinjian"},"change_message_id":"68e670a2d36c9afd149f8c672963ecfbd6f49a10","unresolved":false,"context_lines":[{"line_number":134,"context_line":"@validation.required_services(consts.Service.CINDER)"},{"line_number":135,"context_line":"@validation.required_contexts(\"volume_types\")"},{"line_number":136,"context_line":"@validation.add(\"required_params\","},{"line_number":137,"context_line":"                params\u003d(\"provider\", \"cipher\", \"key_size\", \"control_location\"),"},{"line_number":138,"context_line":"                subdict\u003d\"create_specs\")"},{"line_number":139,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":140,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"cinder\"]},"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ffa3b31_fdfaae40","line":137,"range":{"start_line":137,"start_character":23,"end_line":137,"end_character":77},"in_reply_to":"7ffa3b31_cc44f749","updated":"2017-04-21 02:53:34.000000000","message":"I am really confused....\nIn patch set 5, you suggested me to extend required_paramaters validator to support backward compatibility. \nNow the question is : is\u0027t required_paramaters validator supposed to be used here?\nIf I specify arguments explicitly, the code will be the same with patch set 5. \nOr, if required_paramaters validator should not be used here, where will it should be used?","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e6c11450efbd90288776c37b9a19a21527dd1eb8","unresolved":false,"context_lines":[{"line_number":134,"context_line":"@validation.required_services(consts.Service.CINDER)"},{"line_number":135,"context_line":"@validation.required_contexts(\"volume_types\")"},{"line_number":136,"context_line":"@validation.add(\"required_params\","},{"line_number":137,"context_line":"                params\u003d(\"provider\", \"cipher\", \"key_size\", \"control_location\"),"},{"line_number":138,"context_line":"                subdict\u003d\"create_specs\")"},{"line_number":139,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":140,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"cinder\"]},"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ffa3b31_c9a60d10","line":137,"range":{"start_line":137,"start_character":23,"end_line":137,"end_character":77},"in_reply_to":"7ffa3b31_fdfaae40","updated":"2017-04-21 08:46:09.000000000","message":"Sorry for not posting a good example for previous a patch set. I suppose to see something like:\n\n    @validation.add(\"required_params\", params\u003d[(\"create_spec\", \"provider\")])\n    class CreateAndDelete(CinderBasic):\n         def run(self, create_spec\u003dNone, provider\u003dNone, cipher\u003dNone, key_size\u003dNone, control_location\u003dNone):\n              \"\"\":param create_spec: DEPRECATED, specify arguments explicitly(will be ignored if provider is specified)\n                 :param provider: ...\n                 :param cipher: ... (NOTE: it will be ignored if deprecated create_spec is specified)\n              \"\"\"\n              if create_spec is not None:\n                   LOG.wargnin(\"Please do not do it:)\")\n\nBasically, for most cases we do not need required_params validator at all. \"args-spec\" covers it.\nMy proposal to extend \"required_params\" implied adding ability for OR logic (require one or another parameter) which sounds very demanded in terms of deprecation. While reviewing change of validator I forgot that and we made a small mistake there, so it is not implemented. The change is in one line, so it can be done in this patch.\n\nhttps://github.com/openstack/rally/blob/master/rally/plugins/common/validators.py#L95-L97\n\nit should be:\n\n    for case in arg:\n        if case in args:\n             break\n    else:\n        # this block will be executed if break was not called\n        missing.append(arg)","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"238fe8f53b7ec3ac04063cde97e0e7da53d71533","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    def run(self, create_specs):"},{"line_number":146,"context_line":"        \"\"\"Create get and delete an encryption type"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"          This scenario firstly creates an encryption type for a given"},{"line_number":149,"context_line":"          volume type, then gets detailed information of the created"},{"line_number":150,"context_line":"          encryption type, finally deletes the created encryption type."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        :param create_specs: the encryption type specifications to add"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ffa3b31_817fd8de","line":149,"range":{"start_line":148,"start_character":59,"end_line":149,"end_character":21},"updated":"2017-04-20 13:58:50.000000000","message":"for a volome type created in the context","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":18404,"name":"Ma Xinjian","email":"maxj.fnst@cn.fujitsu.com","username":"maxinjian"},"change_message_id":"589bc3cac418015d16216a808a3dbfbdf4e45a75","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    def run(self, create_specs):"},{"line_number":146,"context_line":"        \"\"\"Create get and delete an encryption type"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"          This scenario firstly creates an encryption type for a given"},{"line_number":149,"context_line":"          volume type, then gets detailed information of the created"},{"line_number":150,"context_line":"          encryption type, finally deletes the created encryption type."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        :param create_specs: the encryption type specifications to add"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_d4676f25","line":149,"range":{"start_line":148,"start_character":59,"end_line":149,"end_character":21},"in_reply_to":"7ffa3b31_817fd8de","updated":"2017-04-24 10:51:29.000000000","message":"Done","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"238fe8f53b7ec3ac04063cde97e0e7da53d71533","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        :param create_specs: the encryption type specifications to add"},{"line_number":153,"context_line":"        \"\"\""},{"line_number":154,"context_line":"        volume_type \u003d random.choice(self.context[\"volume_types\"])"},{"line_number":155,"context_line":"        self.admin_cinder.create_encryption_type(volume_type[\"id\"],"},{"line_number":156,"context_line":"                                                 specs\u003dcreate_specs)"},{"line_number":157,"context_line":"        self.admin_cinder.get_encryption_type(volume_type[\"id\"])"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ffa3b31_c1de00d9","line":154,"range":{"start_line":154,"start_character":8,"end_line":154,"end_character":65},"updated":"2017-04-20 13:58:50.000000000","message":"to balance encryption types among volume types, let\u0027s operate iteration number:\n    \n    vt_idx \u003d self.context[\"iteration\"] % len(self.context[\"volume_types\"])\n    volume_type \u003d self.context[\"volume_types\"])[vt_idx]","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":18404,"name":"Ma Xinjian","email":"maxj.fnst@cn.fujitsu.com","username":"maxinjian"},"change_message_id":"589bc3cac418015d16216a808a3dbfbdf4e45a75","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        :param create_specs: the encryption type specifications to add"},{"line_number":153,"context_line":"        \"\"\""},{"line_number":154,"context_line":"        volume_type \u003d random.choice(self.context[\"volume_types\"])"},{"line_number":155,"context_line":"        self.admin_cinder.create_encryption_type(volume_type[\"id\"],"},{"line_number":156,"context_line":"                                                 specs\u003dcreate_specs)"},{"line_number":157,"context_line":"        self.admin_cinder.get_encryption_type(volume_type[\"id\"])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_b46ce308","line":154,"range":{"start_line":154,"start_character":8,"end_line":154,"end_character":65},"in_reply_to":"7ffa3b31_c1de00d9","updated":"2017-04-24 10:51:29.000000000","message":"Done","commit_id":"b202ceab4a0894c17288b0f59eeb2ec3372f2f39"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"9f979a998e626e6ee304e1e9bee396ca08bdf251","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                \"control_location\": control_location"},{"line_number":96,"context_line":"            }"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            LOG.warning(\"Please don\u0027t use create_spec,\""},{"line_number":99,"context_line":"                        \" specify arguments explicitly\")"},{"line_number":100,"context_line":"            specs \u003d create_specs"},{"line_number":101,"context_line":"        self.admin_cinder.create_encryption_type(volume_type,"},{"line_number":102,"context_line":"                                                 specs\u003dspecs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_611cfc11","line":99,"range":{"start_line":98,"start_character":24,"end_line":99,"end_character":55},"updated":"2017-04-26 15:47:29.000000000","message":"Let\u0027s use more details in the message:\n\n     \"The argument `create_spec` is deprecated since Rally 0.10.0. Specify all arguments from it explicitly.\"","commit_id":"82d12ad271dd78183e806b30802c7f75ce9f1187"},{"author":{"_account_id":18404,"name":"Ma Xinjian","email":"maxj.fnst@cn.fujitsu.com","username":"maxinjian"},"change_message_id":"6c4c7bbd899fdb598582a101faec3f048bfecf58","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                \"control_location\": control_location"},{"line_number":96,"context_line":"            }"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            LOG.warning(\"Please don\u0027t use create_spec,\""},{"line_number":99,"context_line":"                        \" specify arguments explicitly\")"},{"line_number":100,"context_line":"            specs \u003d create_specs"},{"line_number":101,"context_line":"        self.admin_cinder.create_encryption_type(volume_type,"},{"line_number":102,"context_line":"                                                 specs\u003dspecs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_9614dd45","line":99,"range":{"start_line":98,"start_character":24,"end_line":99,"end_character":55},"in_reply_to":"5ff73747_611cfc11","updated":"2017-04-27 02:53:51.000000000","message":"Done","commit_id":"82d12ad271dd78183e806b30802c7f75ce9f1187"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"9f979a998e626e6ee304e1e9bee396ca08bdf251","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                         \"encryption_type\")"},{"line_number":177,"context_line":"class CreateGetAndDeleteEncryptionType(cinder_utils.CinderBasic):"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def run(self, create_specs\u003dNone, provider\u003dNone, cipher\u003dNone,"},{"line_number":180,"context_line":"            key_size\u003dNone, control_location\u003d\"front-end\"):"},{"line_number":181,"context_line":"        \"\"\"Create get and delete an encryption type"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_c15d10ea","line":179,"range":{"start_line":179,"start_character":18,"end_line":179,"end_character":37},"updated":"2017-04-26 15:47:29.000000000","message":"as for new scenario, we should not support old arguments which were used in other scenarios.","commit_id":"82d12ad271dd78183e806b30802c7f75ce9f1187"},{"author":{"_account_id":18404,"name":"Ma Xinjian","email":"maxj.fnst@cn.fujitsu.com","username":"maxinjian"},"change_message_id":"6c4c7bbd899fdb598582a101faec3f048bfecf58","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                         \"encryption_type\")"},{"line_number":177,"context_line":"class CreateGetAndDeleteEncryptionType(cinder_utils.CinderBasic):"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def run(self, create_specs\u003dNone, provider\u003dNone, cipher\u003dNone,"},{"line_number":180,"context_line":"            key_size\u003dNone, control_location\u003d\"front-end\"):"},{"line_number":181,"context_line":"        \"\"\"Create get and delete an encryption type"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_76115152","line":179,"range":{"start_line":179,"start_character":18,"end_line":179,"end_character":37},"in_reply_to":"5ff73747_c15d10ea","updated":"2017-04-27 02:53:51.000000000","message":"Done","commit_id":"82d12ad271dd78183e806b30802c7f75ce9f1187"}]}
