)]}'
{"doc/source/command-objects/image.rst":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"b8e70f76150ef9753fc029a31bf9994970f418f6","unresolved":false,"context_lines":[{"line_number":500,"context_line":""},{"line_number":501,"context_line":".. option:: --tag \u003ctag\u003e"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    tag needed to remove"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. option:: --property \u003cproperty\u003e"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bab6814e_1acbc8a6","line":503,"range":{"start_line":503,"start_character":4,"end_line":503,"end_character":24},"updated":"2016-05-19 12:29:04.000000000","message":"I think \"tag to be removed from this image\" sounds better.","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"8a3a410d00cbdab66fcff398d8460c42ebd1a322","unresolved":false,"context_lines":[{"line_number":500,"context_line":""},{"line_number":501,"context_line":".. option:: --tag \u003ctag\u003e"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    tag needed to remove"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. option:: --property \u003cproperty\u003e"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bab6814e_bd5d2849","line":503,"range":{"start_line":503,"start_character":4,"end_line":503,"end_character":24},"in_reply_to":"bab6814e_1acbc8a6","updated":"2016-05-20 05:29:09.000000000","message":"Done","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"b8e70f76150ef9753fc029a31bf9994970f418f6","unresolved":false,"context_lines":[{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. option:: --property \u003cproperty\u003e"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"    property needed to remove"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":".. describe:: \u003cimage\u003e"},{"line_number":510,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bab6814e_3ac04c7c","line":507,"range":{"start_line":507,"start_character":4,"end_line":507,"end_character":29},"updated":"2016-05-19 12:29:04.000000000","message":"ditto","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"8a3a410d00cbdab66fcff398d8460c42ebd1a322","unresolved":false,"context_lines":[{"line_number":504,"context_line":""},{"line_number":505,"context_line":".. option:: --property \u003cproperty\u003e"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"    property needed to remove"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":".. describe:: \u003cimage\u003e"},{"line_number":510,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bab6814e_1d571427","line":507,"range":{"start_line":507,"start_character":4,"end_line":507,"end_character":29},"in_reply_to":"bab6814e_3ac04c7c","updated":"2016-05-20 05:29:09.000000000","message":"Done","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d53b7e3bef027be3d29f494dac7546a8279a2ec6","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    Image to modify (name or ID)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"image unset"},{"line_number":489,"context_line":"-----------"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"*Only supported for Image v2*"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bab6814e_27444cb5","line":488,"range":{"start_line":488,"start_character":0,"end_line":488,"end_character":11},"updated":"2016-05-21 22:41:48.000000000","message":"this should be below \"image show\"","commit_id":"fa60a95929918bc4aa478d7f81d0938ad2c43520"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"565b7fdafadfb4fd92d0c337dd9c5b6cb5aebca4","unresolved":false,"context_lines":[{"line_number":510,"context_line":".. program:: image unset"},{"line_number":511,"context_line":".. code:: bash"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    os image unset"},{"line_number":514,"context_line":"        \u003cimage\u003e"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":".. option:: --tag \u003ctag\u003e"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_0a2025f6","line":513,"range":{"start_line":513,"start_character":4,"end_line":513,"end_character":18},"updated":"2016-05-23 04:26:19.000000000","message":"Also add --tag and --property options here. Please refer to other doc.","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"c75b7a988d9d5ed70d7e13043edae13fd068d272","unresolved":false,"context_lines":[{"line_number":510,"context_line":".. program:: image unset"},{"line_number":511,"context_line":".. code:: bash"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    os image unset"},{"line_number":514,"context_line":"        \u003cimage\u003e"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":".. option:: --tag \u003ctag\u003e"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_0dfcbf3c","line":513,"range":{"start_line":513,"start_character":4,"end_line":513,"end_character":18},"in_reply_to":"bab6814e_0a2025f6","updated":"2016-05-23 05:51:09.000000000","message":"Done","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"565b7fdafadfb4fd92d0c337dd9c5b6cb5aebca4","unresolved":false,"context_lines":[{"line_number":515,"context_line":""},{"line_number":516,"context_line":".. option:: --tag \u003ctag\u003e"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    unset a tag on this image (repeat option to unset multiple tags)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":".. option:: --property \u003cproperty\u003e"},{"line_number":521,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_4a7cedeb","line":518,"range":{"start_line":518,"start_character":4,"end_line":518,"end_character":9},"updated":"2016-05-23 04:26:19.000000000","message":"unset -\u003e Unset","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"c75b7a988d9d5ed70d7e13043edae13fd068d272","unresolved":false,"context_lines":[{"line_number":515,"context_line":""},{"line_number":516,"context_line":".. option:: --tag \u003ctag\u003e"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    unset a tag on this image (repeat option to unset multiple tags)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":".. option:: --property \u003cproperty\u003e"},{"line_number":521,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_edf69b5b","line":518,"range":{"start_line":518,"start_character":4,"end_line":518,"end_character":9},"in_reply_to":"bab6814e_4a7cedeb","updated":"2016-05-23 05:51:09.000000000","message":"Done","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"be3c191ef18fdafa8e8a02a96f67f006f44024ac","unresolved":false,"context_lines":[{"line_number":525,"context_line":""},{"line_number":526,"context_line":".. describe:: \u003cimage\u003e"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    Image to modify (name or ID)"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9abb7d3a_fd6549e1","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":32},"updated":"2016-05-28 03:58:29.000000000","message":"this doesn\u0027t match the code","commit_id":"a3d34eb65587117b351062148ed4258545cee585"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"cab3620587406232e354f6da5e0a395aeb159919","unresolved":false,"context_lines":[{"line_number":525,"context_line":""},{"line_number":526,"context_line":".. describe:: \u003cimage\u003e"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    Image to unset (name or ID)"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9abb7d3a_5dae1586","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":18},"updated":"2016-05-28 04:43:15.000000000","message":"sorry i wasn\u0027t clear, this should be \"Image to modify (name or ID)\"","commit_id":"6ab8f804e9502616cdef3836cc0578f3e53d419f"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"ffeff564bd09561dcb58cae728fd2118d959e010","unresolved":false,"context_lines":[{"line_number":525,"context_line":""},{"line_number":526,"context_line":".. describe:: \u003cimage\u003e"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    Image to unset (name or ID)"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9abb7d3a_5de615b5","line":528,"range":{"start_line":528,"start_character":4,"end_line":528,"end_character":18},"in_reply_to":"9abb7d3a_5dae1586","updated":"2016-05-28 05:11:50.000000000","message":"Done","commit_id":"6ab8f804e9502616cdef3836cc0578f3e53d419f"}],"functional/tests/image/v2/test_image.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"565b7fdafadfb4fd92d0c337dd9c5b6cb5aebca4","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        opts \u003d self.get_show_opts([\"name\", \"tags\", \"properties\"])"},{"line_number":71,"context_line":"        self.openstack(\u0027image set --tag 01 \u0027 + self.NAME)"},{"line_number":72,"context_line":"        self.openstack(\u0027image unset --tag 01 \u0027 + self.NAME)"},{"line_number":73,"context_line":"        # test_image_metadata has set image properties"},{"line_number":74,"context_line":"        self.openstack(\u0027image unset --property a --property c \u0027 + self.NAME)"},{"line_number":75,"context_line":"        raw_output \u003d self.openstack(\u0027image show \u0027 + self.NAME + opts)"},{"line_number":76,"context_line":"        self.assertEqual(self.NAME + \"\\n\\n\", raw_output)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_edbe9bac","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":54},"updated":"2016-05-23 04:26:19.000000000","message":"Please make the comment more specific.\n\n\"test_image_metadata() has set properties \"a\" and \"c\".\"","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"c75b7a988d9d5ed70d7e13043edae13fd068d272","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        opts \u003d self.get_show_opts([\"name\", \"tags\", \"properties\"])"},{"line_number":71,"context_line":"        self.openstack(\u0027image set --tag 01 \u0027 + self.NAME)"},{"line_number":72,"context_line":"        self.openstack(\u0027image unset --tag 01 \u0027 + self.NAME)"},{"line_number":73,"context_line":"        # test_image_metadata has set image properties"},{"line_number":74,"context_line":"        self.openstack(\u0027image unset --property a --property c \u0027 + self.NAME)"},{"line_number":75,"context_line":"        raw_output \u003d self.openstack(\u0027image show \u0027 + self.NAME + opts)"},{"line_number":76,"context_line":"        self.assertEqual(self.NAME + \"\\n\\n\", raw_output)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_2d69c3f9","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":54},"in_reply_to":"bab6814e_edbe9bac","updated":"2016-05-23 05:51:09.000000000","message":"Done","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"}],"openstackclient/image/v2/image.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"b8e70f76150ef9753fc029a31bf9994970f418f6","unresolved":false,"context_lines":[{"line_number":842,"context_line":"        parser.add_argument("},{"line_number":843,"context_line":"            \"image\","},{"line_number":844,"context_line":"            metavar\u003d\"\u003cimage\u003e\","},{"line_number":845,"context_line":"            help\u003d\"Image to unset ( name or ID )\","},{"line_number":846,"context_line":"        )"},{"line_number":847,"context_line":"        parser.add_argument("},{"line_number":848,"context_line":"            \"--tag\","}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_da2ca04c","line":845,"range":{"start_line":845,"start_character":34,"end_line":845,"end_character":35},"updated":"2016-05-19 12:29:04.000000000","message":"remove the prefix and tailed blank","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"8a3a410d00cbdab66fcff398d8460c42ebd1a322","unresolved":false,"context_lines":[{"line_number":842,"context_line":"        parser.add_argument("},{"line_number":843,"context_line":"            \"image\","},{"line_number":844,"context_line":"            metavar\u003d\"\u003cimage\u003e\","},{"line_number":845,"context_line":"            help\u003d\"Image to unset ( name or ID )\","},{"line_number":846,"context_line":"        )"},{"line_number":847,"context_line":"        parser.add_argument("},{"line_number":848,"context_line":"            \"--tag\","}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_7da2a04c","line":845,"range":{"start_line":845,"start_character":34,"end_line":845,"end_character":35},"in_reply_to":"bab6814e_da2ca04c","updated":"2016-05-20 05:29:09.000000000","message":"Done","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"b8e70f76150ef9753fc029a31bf9994970f418f6","unresolved":false,"context_lines":[{"line_number":851,"context_line":"            default\u003d[],"},{"line_number":852,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":853,"context_line":"            help\u003d\"Unset a tag on this image \""},{"line_number":854,"context_line":"                 \"(repeat option to set multiple tags)\","},{"line_number":855,"context_line":"        )"},{"line_number":856,"context_line":"        parser.add_argument("},{"line_number":857,"context_line":"            \"--property\","}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_5a96f04c","line":854,"updated":"2016-05-19 12:29:04.000000000","message":"please keep the help msg consist with rst document.","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"8a3a410d00cbdab66fcff398d8460c42ebd1a322","unresolved":false,"context_lines":[{"line_number":851,"context_line":"            default\u003d[],"},{"line_number":852,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":853,"context_line":"            help\u003d\"Unset a tag on this image \""},{"line_number":854,"context_line":"                 \"(repeat option to set multiple tags)\","},{"line_number":855,"context_line":"        )"},{"line_number":856,"context_line":"        parser.add_argument("},{"line_number":857,"context_line":"            \"--property\","}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_dd8bccc1","line":854,"in_reply_to":"bab6814e_5a96f04c","updated":"2016-05-20 05:29:09.000000000","message":"Done","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"b8e70f76150ef9753fc029a31bf9994970f418f6","unresolved":false,"context_lines":[{"line_number":856,"context_line":"        parser.add_argument("},{"line_number":857,"context_line":"            \"--property\","},{"line_number":858,"context_line":"            dest\u003d\"properties\","},{"line_number":859,"context_line":"            metavar\u003d\"\u003cproperty_name\u003e\","},{"line_number":860,"context_line":"            default\u003d[],"},{"line_number":861,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":862,"context_line":"            help\u003d\"Unset a property on this image \""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_d5ee318a","line":859,"range":{"start_line":859,"start_character":31,"end_line":859,"end_character":35},"updated":"2016-05-19 12:29:04.000000000","message":"should be \"property_key\"","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"8a3a410d00cbdab66fcff398d8460c42ebd1a322","unresolved":false,"context_lines":[{"line_number":856,"context_line":"        parser.add_argument("},{"line_number":857,"context_line":"            \"--property\","},{"line_number":858,"context_line":"            dest\u003d\"properties\","},{"line_number":859,"context_line":"            metavar\u003d\"\u003cproperty_name\u003e\","},{"line_number":860,"context_line":"            default\u003d[],"},{"line_number":861,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":862,"context_line":"            help\u003d\"Unset a property on this image \""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_1d9274f6","line":859,"range":{"start_line":859,"start_character":31,"end_line":859,"end_character":35},"in_reply_to":"bab6814e_d5ee318a","updated":"2016-05-20 05:29:09.000000000","message":"Done","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"b8e70f76150ef9753fc029a31bf9994970f418f6","unresolved":false,"context_lines":[{"line_number":860,"context_line":"            default\u003d[],"},{"line_number":861,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":862,"context_line":"            help\u003d\"Unset a property on this image \""},{"line_number":863,"context_line":"                 \"(repeat option to set multiple properties)\","},{"line_number":864,"context_line":"        )"},{"line_number":865,"context_line":"        return parser"},{"line_number":866,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_9aa058a1","line":863,"updated":"2016-05-19 12:29:04.000000000","message":"ditto","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"8a3a410d00cbdab66fcff398d8460c42ebd1a322","unresolved":false,"context_lines":[{"line_number":860,"context_line":"            default\u003d[],"},{"line_number":861,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":862,"context_line":"            help\u003d\"Unset a property on this image \""},{"line_number":863,"context_line":"                 \"(repeat option to set multiple properties)\","},{"line_number":864,"context_line":"        )"},{"line_number":865,"context_line":"        return parser"},{"line_number":866,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_5dbebc65","line":863,"in_reply_to":"bab6814e_9aa058a1","updated":"2016-05-20 05:29:09.000000000","message":"Done","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"b8e70f76150ef9753fc029a31bf9994970f418f6","unresolved":false,"context_lines":[{"line_number":882,"context_line":"                    image \u003d image_client.image_tags.delete("},{"line_number":883,"context_line":"                        image.id, k)"},{"line_number":884,"context_line":"                else:"},{"line_number":885,"context_line":"                    raise exceptions.CommandError("},{"line_number":886,"context_line":"                        \" ERROR : \u0027%s\u0027 is not an existed tag\" % k)"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"        if parsed_args.properties:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_709b1373","line":885,"updated":"2016-05-19 12:29:04.000000000","message":"any nonexistent tag will cause all the following delete actions don\u0027t execute, the behavior don\u0027t match devref about \"multiple-rest-api-calls\", please refer the document.\n\nhttp://docs.openstack.org/developer/python-openstackclient/command-errors.html#multiple-rest-api-calls","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"8a3a410d00cbdab66fcff398d8460c42ebd1a322","unresolved":false,"context_lines":[{"line_number":882,"context_line":"                    image \u003d image_client.image_tags.delete("},{"line_number":883,"context_line":"                        image.id, k)"},{"line_number":884,"context_line":"                else:"},{"line_number":885,"context_line":"                    raise exceptions.CommandError("},{"line_number":886,"context_line":"                        \" ERROR : \u0027%s\u0027 is not an existed tag\" % k)"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"        if parsed_args.properties:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_3dc3f8ee","line":885,"in_reply_to":"bab6814e_709b1373","updated":"2016-05-20 05:29:09.000000000","message":"Done\ni use \u0027try/except\u0027 instead of \u0027if/else\u0027 and \u0027raise exceptions\u0027","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"b8e70f76150ef9753fc029a31bf9994970f418f6","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                if k in image.keys():"},{"line_number":891,"context_line":"                    pass"},{"line_number":892,"context_line":"                else:"},{"line_number":893,"context_line":"                    raise exceptions.CommandError("},{"line_number":894,"context_line":"                        \" \u0027%s\u0027 is not an existed property\" % k)"},{"line_number":895,"context_line":"            image \u003d image_client.images.update("},{"line_number":896,"context_line":"                image.id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_701673f2","line":893,"updated":"2016-05-19 12:29:04.000000000","message":"ditto","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"8a3a410d00cbdab66fcff398d8460c42ebd1a322","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                if k in image.keys():"},{"line_number":891,"context_line":"                    pass"},{"line_number":892,"context_line":"                else:"},{"line_number":893,"context_line":"                    raise exceptions.CommandError("},{"line_number":894,"context_line":"                        \" \u0027%s\u0027 is not an existed property\" % k)"},{"line_number":895,"context_line":"            image \u003d image_client.images.update("},{"line_number":896,"context_line":"                image.id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_9db4a482","line":893,"in_reply_to":"bab6814e_701673f2","updated":"2016-05-20 05:29:09.000000000","message":"Done","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"b8e70f76150ef9753fc029a31bf9994970f418f6","unresolved":false,"context_lines":[{"line_number":892,"context_line":"                else:"},{"line_number":893,"context_line":"                    raise exceptions.CommandError("},{"line_number":894,"context_line":"                        \" \u0027%s\u0027 is not an existed property\" % k)"},{"line_number":895,"context_line":"            image \u003d image_client.images.update("},{"line_number":896,"context_line":"                image.id,"},{"line_number":897,"context_line":"                parsed_args.properties,"},{"line_number":898,"context_line":"                **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_d5bc716e","line":895,"range":{"start_line":895,"start_character":12,"end_line":895,"end_character":17},"updated":"2016-05-19 12:29:04.000000000","message":"useless variable","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"8a3a410d00cbdab66fcff398d8460c42ebd1a322","unresolved":false,"context_lines":[{"line_number":892,"context_line":"                else:"},{"line_number":893,"context_line":"                    raise exceptions.CommandError("},{"line_number":894,"context_line":"                        \" \u0027%s\u0027 is not an existed property\" % k)"},{"line_number":895,"context_line":"            image \u003d image_client.images.update("},{"line_number":896,"context_line":"                image.id,"},{"line_number":897,"context_line":"                parsed_args.properties,"},{"line_number":898,"context_line":"                **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_7db90079","line":895,"range":{"start_line":895,"start_character":12,"end_line":895,"end_character":17},"in_reply_to":"bab6814e_d5bc716e","updated":"2016-05-20 05:29:09.000000000","message":"Done","commit_id":"6b7a586d22201f0a8ace4290ad25ce098964c42e"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"565b7fdafadfb4fd92d0c337dd9c5b6cb5aebca4","unresolved":false,"context_lines":[{"line_number":842,"context_line":"        parser.add_argument("},{"line_number":843,"context_line":"            \"image\","},{"line_number":844,"context_line":"            metavar\u003d\"\u003cimage\u003e\","},{"line_number":845,"context_line":"            help\u003d\"Image to unset (name or ID)\","},{"line_number":846,"context_line":"        )"},{"line_number":847,"context_line":"        parser.add_argument("},{"line_number":848,"context_line":"            \"--tag\","}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_6db62bfa","line":845,"range":{"start_line":845,"start_character":12,"end_line":845,"end_character":47},"updated":"2016-05-23 04:26:19.000000000","message":"Please wrap the messages with _(), including help, warning, error, or regular messages. This is for the localization. Please refer to i18n.","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"c75b7a988d9d5ed70d7e13043edae13fd068d272","unresolved":false,"context_lines":[{"line_number":842,"context_line":"        parser.add_argument("},{"line_number":843,"context_line":"            \"image\","},{"line_number":844,"context_line":"            metavar\u003d\"\u003cimage\u003e\","},{"line_number":845,"context_line":"            help\u003d\"Image to unset (name or ID)\","},{"line_number":846,"context_line":"        )"},{"line_number":847,"context_line":"        parser.add_argument("},{"line_number":848,"context_line":"            \"--tag\","}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_d3b2544b","line":845,"range":{"start_line":845,"start_character":12,"end_line":845,"end_character":47},"in_reply_to":"bab6814e_6db62bfa","updated":"2016-05-23 05:51:09.000000000","message":"Done","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"565b7fdafadfb4fd92d0c337dd9c5b6cb5aebca4","unresolved":false,"context_lines":[{"line_number":892,"context_line":"                    self.log.error(\"property unset failed,\""},{"line_number":893,"context_line":"                                   \" \u0027%s\u0027 is a nonexistent property \" % k)"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"            image_client.images.update("},{"line_number":896,"context_line":"                image.id,"},{"line_number":897,"context_line":"                parsed_args.properties,"},{"line_number":898,"context_line":"                **kwargs)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":""},{"line_number":901,"context_line":"class ShowImage(command.ShowOne):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_8daf0f7c","line":898,"range":{"start_line":895,"start_character":0,"end_line":898,"end_character":25},"updated":"2016-05-23 04:26:19.000000000","message":"Please raise a CommandError at last if some of the API calls failed. Please follow the rules in doc/source/command-errors.rst \n\nSince in the for loops above, there are multiple API calls, we need to record the num of failed calls, and raise a CommandError at last.\n\nPlease refer to https://review.openstack.org/#/c/293997/","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"c75b7a988d9d5ed70d7e13043edae13fd068d272","unresolved":false,"context_lines":[{"line_number":892,"context_line":"                    self.log.error(\"property unset failed,\""},{"line_number":893,"context_line":"                                   \" \u0027%s\u0027 is a nonexistent property \" % k)"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"            image_client.images.update("},{"line_number":896,"context_line":"                image.id,"},{"line_number":897,"context_line":"                parsed_args.properties,"},{"line_number":898,"context_line":"                **kwargs)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":""},{"line_number":901,"context_line":"class ShowImage(command.ShowOne):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_b3ad10eb","line":898,"range":{"start_line":895,"start_character":0,"end_line":898,"end_character":25},"in_reply_to":"bab6814e_8daf0f7c","updated":"2016-05-23 05:51:09.000000000","message":"Done\n\nnice suggestions","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7f8b86827ebd3dabde84b426d5a10fa2e8240c4c","unresolved":false,"context_lines":[{"line_number":876,"context_line":"            return {}, {}"},{"line_number":877,"context_line":""},{"line_number":878,"context_line":"        kwargs \u003d {}"},{"line_number":879,"context_line":"        ret0 \u003d 0"},{"line_number":880,"context_line":"        ret1 \u003d 0"},{"line_number":881,"context_line":"        if parsed_args.tags:"},{"line_number":882,"context_line":"            for k in parsed_args.tags:"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_3b9e2b63","line":879,"range":{"start_line":879,"start_character":8,"end_line":879,"end_character":12},"updated":"2016-05-26 21:13:05.000000000","message":"these variables could be named a bit better.","commit_id":"bb73a0924f90ad2b9d3cb3a850f3053106c29b1a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"be3c191ef18fdafa8e8a02a96f67f006f44024ac","unresolved":false,"context_lines":[{"line_number":835,"context_line":"            raise e"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":""},{"line_number":838,"context_line":"class UnsetImage(command.Command):"},{"line_number":839,"context_line":"    \"\"\"Unset image tags and properties\"\"\""},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_9d74fd9c","line":838,"range":{"start_line":838,"start_character":6,"end_line":838,"end_character":16},"updated":"2016-05-28 03:58:29.000000000","message":"should go below \"show\"","commit_id":"a3d34eb65587117b351062148ed4258545cee585"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"be3c191ef18fdafa8e8a02a96f67f006f44024ac","unresolved":false,"context_lines":[{"line_number":843,"context_line":"        parser.add_argument("},{"line_number":844,"context_line":"            \"image\","},{"line_number":845,"context_line":"            metavar\u003d\"\u003cimage\u003e\","},{"line_number":846,"context_line":"            help\u003d_(\"Image to unset (name or ID)\"),"},{"line_number":847,"context_line":"        )"},{"line_number":848,"context_line":"        parser.add_argument("},{"line_number":849,"context_line":"            \"--tag\","}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_bd73c1b0","line":846,"range":{"start_line":846,"start_character":20,"end_line":846,"end_character":47},"updated":"2016-05-28 03:58:29.000000000","message":"recommend using the words:\n\n  Image to modify (name or ID)","commit_id":"a3d34eb65587117b351062148ed4258545cee585"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"cab3620587406232e354f6da5e0a395aeb159919","unresolved":false,"context_lines":[{"line_number":866,"context_line":"        parser.add_argument("},{"line_number":867,"context_line":"            \"image\","},{"line_number":868,"context_line":"            metavar\u003d\"\u003cimage\u003e\","},{"line_number":869,"context_line":"            help\u003d_(\"Image to unset (name or ID)\"),"},{"line_number":870,"context_line":"        )"},{"line_number":871,"context_line":"        parser.add_argument("},{"line_number":872,"context_line":"            \"--tag\","}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_3dab5176","line":869,"range":{"start_line":869,"start_character":20,"end_line":869,"end_character":50},"updated":"2016-05-28 04:43:15.000000000","message":"\"Image to modify (name or ID)\"","commit_id":"6ab8f804e9502616cdef3836cc0578f3e53d419f"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"ffeff564bd09561dcb58cae728fd2118d959e010","unresolved":false,"context_lines":[{"line_number":866,"context_line":"        parser.add_argument("},{"line_number":867,"context_line":"            \"image\","},{"line_number":868,"context_line":"            metavar\u003d\"\u003cimage\u003e\","},{"line_number":869,"context_line":"            help\u003d_(\"Image to unset (name or ID)\"),"},{"line_number":870,"context_line":"        )"},{"line_number":871,"context_line":"        parser.add_argument("},{"line_number":872,"context_line":"            \"--tag\","}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_3de351a5","line":869,"range":{"start_line":869,"start_character":20,"end_line":869,"end_character":50},"in_reply_to":"9abb7d3a_3dab5176","updated":"2016-05-28 05:11:50.000000000","message":"Done","commit_id":"6ab8f804e9502616cdef3836cc0578f3e53d419f"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"a52f97ffd6c2f836f6e89dce495f17c2f3e94665","unresolved":false,"context_lines":[{"line_number":897,"context_line":""},{"line_number":898,"context_line":"        if not (parsed_args.tags or parsed_args.properties):"},{"line_number":899,"context_line":"            self.log.warning(_(\"No arguments specified\"))"},{"line_number":900,"context_line":"            return {}, {}"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"        kwargs \u003d {}"},{"line_number":903,"context_line":"        tagret \u003d 0"}],"source_content_type":"text/x-python","patch_set":12,"id":"9abb7d3a_5d07351c","line":900,"range":{"start_line":900,"start_character":12,"end_line":900,"end_character":25},"updated":"2016-05-28 05:48:02.000000000","message":"network set commands will raise an exception if nothing specified. So I think unset command should also follow that behavior. And it should not return anything either. No output for set and unset commands. \n\nAnd the message, let\u0027s make it to \"Nothing specified to be set\".\n\nI can see that \"image set\" command is implemented in this way, so you followed it. I think we need to change \"image set\" command to return nothing.","commit_id":"789a7807c51622091c09349622c13f26c9dca41f"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"a52f97ffd6c2f836f6e89dce495f17c2f3e94665","unresolved":false,"context_lines":[{"line_number":928,"context_line":"            total \u003d len(parsed_args.tags)"},{"line_number":929,"context_line":"            msg \u003d \"Failed to unset %s of %s tags.\" % (tagret, total)"},{"line_number":930,"context_line":"            raise exceptions.CommandError(msg)"},{"line_number":931,"context_line":"        if propret \u003e 0:"},{"line_number":932,"context_line":"            total \u003d len(parsed_args.properties)"},{"line_number":933,"context_line":"            msg \u003d \"Failed to unset %s of %s properties.\" % (propret, total)"},{"line_number":934,"context_line":"            raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9abb7d3a_c00e9e33","line":934,"range":{"start_line":931,"start_character":0,"end_line":934,"end_character":46},"updated":"2016-05-28 05:48:02.000000000","message":"This is a little problematic. If tagret \u003e 0 and propret \u003e 0, only the tag error will be raised, right ?  I think we should raise both.","commit_id":"789a7807c51622091c09349622c13f26c9dca41f"}],"openstackclient/tests/image/v2/test_image.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"565b7fdafadfb4fd92d0c337dd9c5b6cb5aebca4","unresolved":false,"context_lines":[{"line_number":1162,"context_line":"            schemas.SchemaBasedModel,"},{"line_number":1163,"context_line":"        )"},{"line_number":1164,"context_line":""},{"line_number":1165,"context_line":"        self.images_mock.get.return_value \u003d self.model(**image_fakes.IMAGE)"},{"line_number":1166,"context_line":"        self.image_tags_mock.delete.return_value \u003d self.model("},{"line_number":1167,"context_line":"            **image_fakes.IMAGE)"},{"line_number":1168,"context_line":"        # Get the command object to test"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_cdd477ed","line":1165,"range":{"start_line":1165,"start_character":55,"end_line":1165,"end_character":74},"updated":"2016-05-23 04:26:19.000000000","message":"You should use class FakeImage in fake.py.","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":21808,"name":"sunyajing","email":"yajing.sun@easystack.cn","username":"sunyajing"},"change_message_id":"c75b7a988d9d5ed70d7e13043edae13fd068d272","unresolved":false,"context_lines":[{"line_number":1162,"context_line":"            schemas.SchemaBasedModel,"},{"line_number":1163,"context_line":"        )"},{"line_number":1164,"context_line":""},{"line_number":1165,"context_line":"        self.images_mock.get.return_value \u003d self.model(**image_fakes.IMAGE)"},{"line_number":1166,"context_line":"        self.image_tags_mock.delete.return_value \u003d self.model("},{"line_number":1167,"context_line":"            **image_fakes.IMAGE)"},{"line_number":1168,"context_line":"        # Get the command object to test"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_73a7280b","line":1165,"range":{"start_line":1165,"start_character":55,"end_line":1165,"end_character":74},"in_reply_to":"bab6814e_cdd477ed","updated":"2016-05-23 05:51:09.000000000","message":"Did you mean that i should use self.model(**image_fakes.FakeImage.get_images(None,1))\nBut why?\nthis seems weird , and other commands in image.py use image_fake.IMAGE too .","commit_id":"d678016df561bf0bd18c4b23fc681297e88ecdb5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"be3c191ef18fdafa8e8a02a96f67f006f44024ac","unresolved":false,"context_lines":[{"line_number":1151,"context_line":"            self.cmd.take_action, parsed_args)"},{"line_number":1152,"context_line":""},{"line_number":1153,"context_line":""},{"line_number":1154,"context_line":"class TestImageUnset(TestImage):"},{"line_number":1155,"context_line":""},{"line_number":1156,"context_line":"    attrs \u003d {}"},{"line_number":1157,"context_line":"    attrs[\u0027tags\u0027] \u003d [\u0027test\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"9abb7d3a_fd3ee9b6","line":1154,"range":{"start_line":1154,"start_character":6,"end_line":1154,"end_character":20},"updated":"2016-05-28 03:58:29.000000000","message":"should go below \"show\"","commit_id":"a3d34eb65587117b351062148ed4258545cee585"}]}
