)]}'
{"doc/source/cli/command-objects/project.rst":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"c94157fac4e5127ec234d1b91b084d671862b867","unresolved":false,"context_lines":[{"line_number":19,"context_line":"        [--enable | --disable]"},{"line_number":20,"context_line":"        [--property \u003ckey\u003dvalue\u003e]"},{"line_number":21,"context_line":"        [--or-show]"},{"line_number":22,"context_line":"        [--tag \u003ctag\u003e]"},{"line_number":23,"context_line":"        \u003cname\u003e"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":".. option:: --domain \u003cdomain\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f4e5783_61fc9a6f","line":22,"updated":"2017-10-17 20:51:25.000000000","message":"Why can I only have one tag on a project create? The API allows me to make multiple at creation time.","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"8d6379e5e7b3689e8500a111c61823c1bdcc72e7","unresolved":false,"context_lines":[{"line_number":19,"context_line":"        [--enable | --disable]"},{"line_number":20,"context_line":"        [--property \u003ckey\u003dvalue\u003e]"},{"line_number":21,"context_line":"        [--or-show]"},{"line_number":22,"context_line":"        [--tag \u003ctag\u003e]"},{"line_number":23,"context_line":"        \u003cname\u003e"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":".. option:: --domain \u003cdomain\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f4e5783_8458c430","line":22,"in_reply_to":"5f4e5783_410bde28","updated":"2017-10-17 21:07:21.000000000","message":"Oh, wait, it does, and it\u0027s even mentioned on line 63.","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"91fb85d97671810c2dbb77739c698916b918ab57","unresolved":false,"context_lines":[{"line_number":19,"context_line":"        [--enable | --disable]"},{"line_number":20,"context_line":"        [--property \u003ckey\u003dvalue\u003e]"},{"line_number":21,"context_line":"        [--or-show]"},{"line_number":22,"context_line":"        [--tag \u003ctag\u003e]"},{"line_number":23,"context_line":"        \u003cname\u003e"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":".. option:: --domain \u003cdomain\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f4e5783_410bde28","line":22,"in_reply_to":"5f4e5783_61fc9a6f","updated":"2017-10-17 21:02:27.000000000","message":"Good catch, this should allow for multiple","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"8d6379e5e7b3689e8500a111c61823c1bdcc72e7","unresolved":false,"context_lines":[{"line_number":60,"context_line":".. option:: --tag"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    Add a tag to the project"},{"line_number":63,"context_line":"    (repeate option to set multile tags)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. _project_create-name:"},{"line_number":66,"context_line":".. describe:: \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f4e5783_a46e20c6","line":63,"range":{"start_line":63,"start_character":27,"end_line":63,"end_character":34},"updated":"2017-10-17 21:07:21.000000000","message":"typo: multiple","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"8d6379e5e7b3689e8500a111c61823c1bdcc72e7","unresolved":false,"context_lines":[{"line_number":60,"context_line":".. option:: --tag"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    Add a tag to the project"},{"line_number":63,"context_line":"    (repeate option to set multile tags)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. _project_create-name:"},{"line_number":66,"context_line":".. describe:: \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f4e5783_2449105f","line":63,"range":{"start_line":63,"start_character":5,"end_line":63,"end_character":12},"updated":"2017-10-17 21:07:21.000000000","message":"typo: repeat","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"3a5c329f8358d1ade5bcb05986d4e1cfbb28b51e","unresolved":false,"context_lines":[{"line_number":60,"context_line":".. option:: --tag"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    Add a tag to the project"},{"line_number":63,"context_line":"    (repeate option to set multile tags)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. _project_create-name:"},{"line_number":66,"context_line":".. describe:: \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf8cb3f7_11762bda","line":63,"range":{"start_line":63,"start_character":27,"end_line":63,"end_character":34},"in_reply_to":"5f4e5783_a46e20c6","updated":"2017-12-20 22:40:23.000000000","message":"Done","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":23659,"name":"Jaewoo Park","email":"jaewoopark91@gmail.com","username":"aselius"},"change_message_id":"bf8924b9c5b5c05ce6ccf0e9fff10ea1531a53e7","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    Add a tag to the project"},{"line_number":63,"context_line":"    (repeate option to set multile tags)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. _project_create-name:"},{"line_number":66,"context_line":".. describe:: \u003cname\u003e"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f2577a7_1fd8337d","line":64,"updated":"2017-09-12 18:01:33.000000000","message":"nit: .. versionadded:: 3","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"3a5c329f8358d1ade5bcb05986d4e1cfbb28b51e","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    Add a tag to the project"},{"line_number":63,"context_line":"    (repeate option to set multile tags)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. _project_create-name:"},{"line_number":66,"context_line":".. describe:: \u003cname\u003e"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf8cb3f7_d17f63a9","line":64,"in_reply_to":"5f2577a7_1fd8337d","updated":"2017-12-20 22:40:23.000000000","message":"Done","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"8d6379e5e7b3689e8500a111c61823c1bdcc72e7","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        [--description \u003cdescription\u003e]"},{"line_number":174,"context_line":"        [--enable | --disable]"},{"line_number":175,"context_line":"        [--property \u003ckey\u003dvalue\u003e]"},{"line_number":176,"context_line":"        [--tag \u003ctag\u003e | --no-tag]"},{"line_number":177,"context_line":"        \u003cproject\u003e"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":".. option:: --name \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5f4e5783_a47ce071","line":176,"updated":"2017-10-17 21:07:21.000000000","message":"Seems like I can add a tag or remove all tags but not delete just one tag, which is allowed in the API, is that intentional?","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"5ab095cbbbd7d65616789d15bc1fd752f460ea16","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        [--description \u003cdescription\u003e]"},{"line_number":174,"context_line":"        [--enable | --disable]"},{"line_number":175,"context_line":"        [--property \u003ckey\u003dvalue\u003e]"},{"line_number":176,"context_line":"        [--tag \u003ctag\u003e | --no-tag]"},{"line_number":177,"context_line":"        \u003cproject\u003e"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":".. option:: --name \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf8cb3f7_f68e1dcf","line":176,"in_reply_to":"5f4e5783_a47ce071","updated":"2017-12-20 21:38:27.000000000","message":"Other projects have an unset option that keystone does not. Right now the way to delete a tag would be to get all tags, then update with the list minus the tags to be removed.","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1011b04a68848b60a42016eaf4409c9cf7c7ab80","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        [--description \u003cdescription\u003e]"},{"line_number":174,"context_line":"        [--enable | --disable]"},{"line_number":175,"context_line":"        [--property \u003ckey\u003dvalue\u003e]"},{"line_number":176,"context_line":"        [--tag \u003ctag\u003e | --no-tag]"},{"line_number":177,"context_line":"        \u003cproject\u003e"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":".. option:: --name \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f4b6375_86ea23d5","line":176,"in_reply_to":"5f4e5783_a47ce071","updated":"2018-02-23 20:27:48.000000000","message":"That should be added to the project unset command","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"15d080181c4ae0d17b7142c349b14177db12f924","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        [--description \u003cdescription\u003e]"},{"line_number":176,"context_line":"        [--enable | --disable]"},{"line_number":177,"context_line":"        [--property \u003ckey\u003dvalue\u003e]"},{"line_number":178,"context_line":"        [--tag \u003ctag\u003e | --no-tag]"},{"line_number":179,"context_line":"        \u003cproject\u003e"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. option:: --name \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7f96bb07_17d28a35","line":178,"range":{"start_line":178,"start_character":23,"end_line":178,"end_character":31},"updated":"2018-01-21 20:40:52.000000000","message":"This is now --clear-tags and -remove-tag \u003ctag\u003e","commit_id":"9cd210538181e18cba8bc89f702a764118bfdf9f"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"426ecde108e0c507f55db8a4d1a1357ee8118f59","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        [--description \u003cdescription\u003e]"},{"line_number":176,"context_line":"        [--enable | --disable]"},{"line_number":177,"context_line":"        [--property \u003ckey\u003dvalue\u003e]"},{"line_number":178,"context_line":"        [--tag \u003ctag\u003e | --no-tag]"},{"line_number":179,"context_line":"        \u003cproject\u003e"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. option:: --name \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5f93b717_80999820","line":178,"range":{"start_line":178,"start_character":23,"end_line":178,"end_character":31},"in_reply_to":"7f96bb07_17d28a35","updated":"2018-01-24 16:25:13.000000000","message":"Done","commit_id":"9cd210538181e18cba8bc89f702a764118bfdf9f"}],"openstackclient/identity/v3/project.py":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"a79003620eb0879774feabe138893a692c3db5a4","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        )"},{"line_number":82,"context_line":"        return parser"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def take_action(self, parsed_args):"},{"line_number":85,"context_line":"        identity_client \u003d self.app.client_manager.identity"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        domain \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_7f0ee63b","side":"PARENT","line":84,"updated":"2017-08-25 17:29:56.000000000","message":"I see no implementation of setting tags attribute here for create.","commit_id":"6fdce1316563f79fa6adf6ffa6439018cc5b8e98"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9e0bb571b4c38652877032964739e0ba5b87d3a6","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        )"},{"line_number":82,"context_line":"        return parser"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def take_action(self, parsed_args):"},{"line_number":85,"context_line":"        identity_client \u003d self.app.client_manager.identity"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        domain \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_bdf792d3","side":"PARENT","line":84,"in_reply_to":"7f287b81_7f0ee63b","updated":"2017-08-28 15:00:11.000000000","message":"Done","commit_id":"6fdce1316563f79fa6adf6ffa6439018cc5b8e98"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"a79003620eb0879774feabe138893a692c3db5a4","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":80,"context_line":"            help\u003d_(\u0027Return existing project\u0027),"},{"line_number":81,"context_line":"        )"},{"line_number":82,"context_line":"        parser.add_argument("},{"line_number":83,"context_line":"            \u0027--tag\u0027,"},{"line_number":84,"context_line":"            dest\u003d\u0027tags\u0027,"},{"line_number":85,"context_line":"            metavar\u003d\u0027\u003ctag\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_edf34f72","line":82,"updated":"2017-08-25 17:29:56.000000000","message":"Place this following --property","commit_id":"1bd358246b260b1b60074d1aa37321887d403b9f"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9e0bb571b4c38652877032964739e0ba5b87d3a6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":80,"context_line":"            help\u003d_(\u0027Return existing project\u0027),"},{"line_number":81,"context_line":"        )"},{"line_number":82,"context_line":"        parser.add_argument("},{"line_number":83,"context_line":"            \u0027--tag\u0027,"},{"line_number":84,"context_line":"            dest\u003d\u0027tags\u0027,"},{"line_number":85,"context_line":"            metavar\u003d\u0027\u003ctag\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_5d62eeaf","line":82,"in_reply_to":"7f287b81_edf34f72","updated":"2017-08-28 15:00:11.000000000","message":"Done","commit_id":"1bd358246b260b1b60074d1aa37321887d403b9f"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"a79003620eb0879774feabe138893a692c3db5a4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            metavar\u003d\u0027\u003ctag\u003e\u0027,"},{"line_number":86,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":87,"context_line":"            default\u003d[],"},{"line_number":88,"context_line":"            help\u003d_(\u0027List of simple strings that a project can have \u0027"},{"line_number":89,"context_line":"                   \u0027(repeat option to set multiple tags\u0027)"},{"line_number":90,"context_line":"        )"},{"line_number":91,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_6dd63fc6","line":88,"updated":"2017-08-25 17:29:56.000000000","message":"This does not explain how these tags are used","commit_id":"1bd358246b260b1b60074d1aa37321887d403b9f"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9e0bb571b4c38652877032964739e0ba5b87d3a6","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            metavar\u003d\u0027\u003ctag\u003e\u0027,"},{"line_number":86,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":87,"context_line":"            default\u003d[],"},{"line_number":88,"context_line":"            help\u003d_(\u0027List of simple strings that a project can have \u0027"},{"line_number":89,"context_line":"                   \u0027(repeat option to set multiple tags\u0027)"},{"line_number":90,"context_line":"        )"},{"line_number":91,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_bd72f279","line":88,"in_reply_to":"7f287b81_6dd63fc6","updated":"2017-08-28 15:00:11.000000000","message":"I reused network tags for this, so hopefully that clears things up.","commit_id":"1bd358246b260b1b60074d1aa37321887d403b9f"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"a79003620eb0879774feabe138893a692c3db5a4","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            metavar\u003d\u0027\u003cdescription\u003e\u0027,"},{"line_number":295,"context_line":"            help\u003d_(\u0027Set project description\u0027),"},{"line_number":296,"context_line":"        )"},{"line_number":297,"context_line":"        parser.add_argument("},{"line_number":298,"context_line":"            \u0027--tag\u0027,"},{"line_number":299,"context_line":"            dest\u003d\u0027tags\u0027,"},{"line_number":300,"context_line":"            metavar\u003d\u0027\u003ctag\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_8d04cb4b","line":297,"updated":"2017-08-25 17:29:56.000000000","message":"Place this following --property","commit_id":"1bd358246b260b1b60074d1aa37321887d403b9f"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9e0bb571b4c38652877032964739e0ba5b87d3a6","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            metavar\u003d\u0027\u003cdescription\u003e\u0027,"},{"line_number":295,"context_line":"            help\u003d_(\u0027Set project description\u0027),"},{"line_number":296,"context_line":"        )"},{"line_number":297,"context_line":"        parser.add_argument("},{"line_number":298,"context_line":"            \u0027--tag\u0027,"},{"line_number":299,"context_line":"            dest\u003d\u0027tags\u0027,"},{"line_number":300,"context_line":"            metavar\u003d\u0027\u003ctag\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_9d6bb683","line":297,"in_reply_to":"7f287b81_8d04cb4b","updated":"2017-08-28 15:00:11.000000000","message":"Done","commit_id":"1bd358246b260b1b60074d1aa37321887d403b9f"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"a79003620eb0879774feabe138893a692c3db5a4","unresolved":false,"context_lines":[{"line_number":302,"context_line":"            default\u003d[],"},{"line_number":303,"context_line":"            help\u003d_(\u0027Set a tag on a project (repeat option to set \u0027"},{"line_number":304,"context_line":"                   \u0027multiple tags, setting multiple tags will \u0027"},{"line_number":305,"context_line":"                   \u0027remove all existing tags on a project)\u0027)"},{"line_number":306,"context_line":"        )"},{"line_number":307,"context_line":"        enable_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":308,"context_line":"        enable_group.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_df1dda73","line":305,"updated":"2017-08-25 17:29:56.000000000","message":"This \u0027set multiple to replace\u0027 is awkward and non-intuitive.  Network commands have --no-tag for this purpose.","commit_id":"1bd358246b260b1b60074d1aa37321887d403b9f"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9e0bb571b4c38652877032964739e0ba5b87d3a6","unresolved":false,"context_lines":[{"line_number":302,"context_line":"            default\u003d[],"},{"line_number":303,"context_line":"            help\u003d_(\u0027Set a tag on a project (repeat option to set \u0027"},{"line_number":304,"context_line":"                   \u0027multiple tags, setting multiple tags will \u0027"},{"line_number":305,"context_line":"                   \u0027remove all existing tags on a project)\u0027)"},{"line_number":306,"context_line":"        )"},{"line_number":307,"context_line":"        enable_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":308,"context_line":"        enable_group.add_argument("}],"source_content_type":"text/x-python","patch_set":5,"id":"7f287b81_3d0cc2eb","line":305,"in_reply_to":"7f287b81_df1dda73","updated":"2017-08-28 15:00:11.000000000","message":"Done","commit_id":"1bd358246b260b1b60074d1aa37321887d403b9f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fb96717b2275011a9c321e1d37f3360922e92080","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        kwargs \u003d {}"},{"line_number":104,"context_line":"        if parsed_args.property:"},{"line_number":105,"context_line":"            kwargs \u003d parsed_args.property.copy()"},{"line_number":106,"context_line":"        kwargs[\u0027tags\u0027] \u003d list(set(parsed_args.tags))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        try:"},{"line_number":109,"context_line":"            project \u003d identity_client.projects.create("}],"source_content_type":"text/x-python","patch_set":12,"id":"9f91af0f_9027e2ca","line":106,"updated":"2018-01-09 22:25:37.000000000","message":"I do notice we still have the unicode bit:\n\n  \u003e openstack project show test\n  +-------------+----------------------------------+\n  | Field       | Value                            |\n  +-------------+----------------------------------+\n  | description |                                  |\n  | domain_id   | default                          |\n  | enabled     | True                             |\n  | id          | 4e5201bab5ad41558c88f7b9d336c138 |\n  | is_domain   | False                            |\n  | name        | test                             |\n  | parent_id   | default                          |\n  | tags        | [u\u0027blue\u0027]                        |\n  +-------------+----------------------------------+","commit_id":"ec26ed2e40ceecfc234cda64cfc07dfb61256424"}],"openstackclient/identity/v3/tag.py":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"d7902e6464bd90cc472e97a4b8358e410cc29530","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               \u0027(Comma-separated list of tags)\u0027) % collection_name"},{"line_number":45,"context_line":"    )"},{"line_number":46,"context_line":"    parser.add_argument("},{"line_number":47,"context_line":"        \u0027--not-tags-any\u0027,"},{"line_number":48,"context_line":"        metavar\u003d\u0027\u003ctag\u003e[,\u003ctag\u003e,...]\u0027,"},{"line_number":49,"context_line":"        action\u003d_CommaListAction,"},{"line_number":50,"context_line":"        help\u003d_(\u0027Exclude %s which have any given tag(s) \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f515b1d_a0a2f149","line":47,"range":{"start_line":47,"start_character":20,"end_line":47,"end_character":23},"updated":"2017-09-26 21:21:22.000000000","message":"Both of the --*-any tags are not in the docs.\n\nAlso, why change the option name?  One of the strengths of OSC is consistency, there should be a strong case to make a change like that.","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"735155462b4263b27c4d60b8ba666af133cfdf0b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               \u0027(Comma-separated list of tags)\u0027) % collection_name"},{"line_number":45,"context_line":"    )"},{"line_number":46,"context_line":"    parser.add_argument("},{"line_number":47,"context_line":"        \u0027--not-tags-any\u0027,"},{"line_number":48,"context_line":"        metavar\u003d\u0027\u003ctag\u003e[,\u003ctag\u003e,...]\u0027,"},{"line_number":49,"context_line":"        action\u003d_CommaListAction,"},{"line_number":50,"context_line":"        help\u003d_(\u0027Exclude %s which have any given tag(s) \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f515b1d_5bd8d27d","line":47,"range":{"start_line":47,"start_character":20,"end_line":47,"end_character":23},"in_reply_to":"7f515b1d_a0a2f149","updated":"2017-10-12 20:54:45.000000000","message":"Ah, my bad. I\u0027ll add those in.\n\nSo when we wrote the spec for keystone for project tags, we basically followed the API-WG spec[0] as closely as possible.  The name format \"not-tags-any\" is from that spec. We can change this to match the others on the CLI front for consistency.\n\n[0] https://specs.openstack.org/openstack/api-wg/guidelines/tags.html","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3596955393abca4371d48f7612b94e54f6b358b5","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    parser.add_argument("},{"line_number":95,"context_line":"        \u0027--no-tag\u0027,"},{"line_number":96,"context_line":"        action\u003d\u0027store_true\u0027,"},{"line_number":97,"context_line":"        help\u003d_(\"Clear tags associated with the %s. Specify both \""},{"line_number":98,"context_line":"               \"--tag and --no-tag to overwrite current tags\") % resource_name"},{"line_number":99,"context_line":"    )"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"df87a7cf_e09ad76c","line":98,"range":{"start_line":97,"start_character":7,"end_line":98,"end_character":78},"updated":"2017-12-01 20:30:07.000000000","message":"This bit doesn\u0027t seem to work for me?\n\n  (osc) lbragstad|keystone-dev|~ \u003e\u003e\u003e openstack project set --help\n  usage: openstack project set [-h] [--name \u003cname\u003e] [--domain \u003cdomain\u003e]\n                             [--description \u003cdescription\u003e]\n                             [--enable | --disable] [--property \u003ckey\u003dvalue\u003e]\n                             [--tag \u003ctag\u003e] [--no-tag]\n                             \u003cproject\u003e\n\n  Set project properties\n\n  positional arguments:\n    \u003cproject\u003e             Project to modify (name or ID)\n\n  optional arguments:\n    -h, --help            show this help message and exit\n    --name \u003cname\u003e         Set project name\n    --domain \u003cdomain\u003e     Domain owning \u003cproject\u003e (name or ID)\n    --description \u003cdescription\u003e\n                          Set project description\n    --enable              Enable project\n    --disable             Disable project\n    --property \u003ckey\u003dvalue\u003e\n                          Set a property on \u003cproject\u003e (repeat option to set\n                          multiple properties)\n    --tag \u003ctag\u003e           Tag to be added to the project (repeat option to set\n                          multiple tags)\n    --no-tag              Clear tags associated with the project. Specify both\n                          --tag and --no-tag to overwrite current tags\n  (osc) lbragstad|keystone-dev|~ \u003e\u003e\u003e openstack project show demo \n  +-------------+----------------------------------------+\n  | Field       | Value                                  |\n  +-------------+----------------------------------------+\n  | description |                                        |\n  | domain_id   | default                                |\n  | enabled     | True                                   |\n  | id          | c817ce6eba7147b491313caded798108       |\n  | is_domain   | False                                  |\n  | name        | demo                                   |\n  | parent_id   | default                                |\n  | tags        | [u\u0027blue\u0027, u\u0027green\u0027, u\u0027orange\u0027, u\u0027red\u0027] |\n  +-------------+----------------------------------------+\n  (osc) lbragstad|keystone-dev|~ \u003e\u003e\u003e openstack project set --tag brown --no-tag \n  demo \n  (osc) lbragstad|keystone-dev|~ \u003e\u003e\u003e openstack project show demo \n  +-------------+--------------------------------------------------+\n  | Field       | Value                                            |\n  +-------------+--------------------------------------------------+\n  | description |                                                  |\n  | domain_id   | default                                          |\n  | enabled     | True                                             |\n  | id          | c817ce6eba7147b491313caded798108                 |\n  | is_domain   | False                                            |\n  | name        | demo                                             |\n  | parent_id   | default                                          |\n  | tags        | [u\u0027blue\u0027, u\u0027brown\u0027, u\u0027green\u0027, u\u0027orange\u0027, u\u0027red\u0027] |\n  +-------------+--------------------------------------------------+","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"5ab095cbbbd7d65616789d15bc1fd752f460ea16","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    parser.add_argument("},{"line_number":95,"context_line":"        \u0027--no-tag\u0027,"},{"line_number":96,"context_line":"        action\u003d\u0027store_true\u0027,"},{"line_number":97,"context_line":"        help\u003d_(\"Clear tags associated with the %s. Specify both \""},{"line_number":98,"context_line":"               \"--tag and --no-tag to overwrite current tags\") % resource_name"},{"line_number":99,"context_line":"    )"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bf8cb3f7_56b7c987","line":98,"range":{"start_line":97,"start_character":7,"end_line":98,"end_character":78},"in_reply_to":"df87a7cf_e09ad76c","updated":"2017-12-20 21:38:27.000000000","message":"Done","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"dd51d7565349b2fb46cda7ed3af54d328bccde8c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"               \u0027(Comma-separated list of tags)\u0027) % collection_name"},{"line_number":31,"context_line":"    )"},{"line_number":32,"context_line":"    parser.add_argument("},{"line_number":33,"context_line":"        \u0027--tags-any\u0027,"},{"line_number":34,"context_line":"        metavar\u003d\u0027\u003ctag\u003e[,\u003ctag\u003e,...]\u0027,"},{"line_number":35,"context_line":"        action\u003d_CommaListAction,"},{"line_number":36,"context_line":"        help\u003d_(\u0027List %s which have any given tag(s) \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf8cb3f7_5145936f","line":33,"range":{"start_line":33,"start_character":9,"end_line":33,"end_character":19},"updated":"2017-12-20 22:41:19.000000000","message":"this wording could be changed to be consistent with how the other projects implemented searching by tags, otherwise this follows the API-WG spec.","commit_id":"1607c242849b93b8182da35a2a57b50ee023ac8f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fb96717b2275011a9c321e1d37f3360922e92080","unresolved":false,"context_lines":[{"line_number":66,"context_line":"def add_tag_option_to_parser_for_create(parser, resource_name):"},{"line_number":67,"context_line":"    tag_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":68,"context_line":"    tag_group.add_argument("},{"line_number":69,"context_line":"        \u0027--tag\u0027,"},{"line_number":70,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":71,"context_line":"        dest\u003d\u0027tags\u0027,"},{"line_number":72,"context_line":"        metavar\u003d\u0027\u003ctag\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f91af0f_7b8b1f67","line":69,"range":{"start_line":69,"start_character":11,"end_line":69,"end_character":14},"updated":"2018-01-09 22:25:37.000000000","message":"Same comment here as below.","commit_id":"ec26ed2e40ceecfc234cda64cfc07dfb61256424"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"d60a8c355de08091377ad14dcd49c1b52c574ada","unresolved":false,"context_lines":[{"line_number":66,"context_line":"def add_tag_option_to_parser_for_create(parser, resource_name):"},{"line_number":67,"context_line":"    tag_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":68,"context_line":"    tag_group.add_argument("},{"line_number":69,"context_line":"        \u0027--tag\u0027,"},{"line_number":70,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":71,"context_line":"        dest\u003d\u0027tags\u0027,"},{"line_number":72,"context_line":"        metavar\u003d\u0027\u003ctag\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f91af0f_9b4dc33f","line":69,"range":{"start_line":69,"start_character":11,"end_line":69,"end_character":14},"in_reply_to":"9f91af0f_7b8b1f67","updated":"2018-01-09 22:30:47.000000000","message":"This follows the same convention that glance/neutron use in this client:\n\nhttps://github.com/openstack/python-openstackclient/blob/master/openstackclient/image/v2/image.py#L227","commit_id":"ec26ed2e40ceecfc234cda64cfc07dfb61256424"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"76399ecd66d77915abd11124af63f91a26a478e5","unresolved":false,"context_lines":[{"line_number":66,"context_line":"def add_tag_option_to_parser_for_create(parser, resource_name):"},{"line_number":67,"context_line":"    tag_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":68,"context_line":"    tag_group.add_argument("},{"line_number":69,"context_line":"        \u0027--tag\u0027,"},{"line_number":70,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":71,"context_line":"        dest\u003d\u0027tags\u0027,"},{"line_number":72,"context_line":"        metavar\u003d\u0027\u003ctag\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f96bb07_78b761da","line":69,"range":{"start_line":69,"start_character":11,"end_line":69,"end_character":14},"in_reply_to":"9f91af0f_9b4dc33f","updated":"2018-01-10 19:55:50.000000000","message":"Left this as is for now because of the convention. I think --tag is fine, but agree --add-tag would be more descriptive.","commit_id":"ec26ed2e40ceecfc234cda64cfc07dfb61256424"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fb96717b2275011a9c321e1d37f3360922e92080","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               \u0027(repeat option to set multiple tags)\u0027) % resource_name"},{"line_number":88,"context_line":"    )"},{"line_number":89,"context_line":"    parser.add_argument("},{"line_number":90,"context_line":"        \u0027--no-tag\u0027,"},{"line_number":91,"context_line":"        action\u003d\u0027store_true\u0027,"},{"line_number":92,"context_line":"        help\u003d_(\u0027Clear tags associated with the %s. Specify both \u0027"},{"line_number":93,"context_line":"               \u0027--tag and --no-tag to overwrite current tags\u0027) % resource_name"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f91af0f_fba64f0f","line":90,"range":{"start_line":90,"start_character":11,"end_line":90,"end_character":13},"updated":"2018-01-09 22:25:37.000000000","message":"When I first saw this I was a little confused if this meant removing a specific tag or clearing all tags:\n\n  --clear-tags\n\nIs a little more descriptive.","commit_id":"ec26ed2e40ceecfc234cda64cfc07dfb61256424"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"76399ecd66d77915abd11124af63f91a26a478e5","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               \u0027(repeat option to set multiple tags)\u0027) % resource_name"},{"line_number":88,"context_line":"    )"},{"line_number":89,"context_line":"    parser.add_argument("},{"line_number":90,"context_line":"        \u0027--no-tag\u0027,"},{"line_number":91,"context_line":"        action\u003d\u0027store_true\u0027,"},{"line_number":92,"context_line":"        help\u003d_(\u0027Clear tags associated with the %s. Specify both \u0027"},{"line_number":93,"context_line":"               \u0027--tag and --no-tag to overwrite current tags\u0027) % resource_name"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f96bb07_788e8128","line":90,"range":{"start_line":90,"start_character":11,"end_line":90,"end_character":13},"in_reply_to":"9f91af0f_bb48c72c","updated":"2018-01-10 19:55:50.000000000","message":"Done","commit_id":"ec26ed2e40ceecfc234cda64cfc07dfb61256424"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"d60a8c355de08091377ad14dcd49c1b52c574ada","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               \u0027(repeat option to set multiple tags)\u0027) % resource_name"},{"line_number":88,"context_line":"    )"},{"line_number":89,"context_line":"    parser.add_argument("},{"line_number":90,"context_line":"        \u0027--no-tag\u0027,"},{"line_number":91,"context_line":"        action\u003d\u0027store_true\u0027,"},{"line_number":92,"context_line":"        help\u003d_(\u0027Clear tags associated with the %s. Specify both \u0027"},{"line_number":93,"context_line":"               \u0027--tag and --no-tag to overwrite current tags\u0027) % resource_name"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f91af0f_bb48c72c","line":90,"range":{"start_line":90,"start_character":11,"end_line":90,"end_character":13},"in_reply_to":"9f91af0f_fba64f0f","updated":"2018-01-09 22:30:47.000000000","message":"ditto, but I think clear-tags does make more sense","commit_id":"ec26ed2e40ceecfc234cda64cfc07dfb61256424"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fb96717b2275011a9c321e1d37f3360922e92080","unresolved":false,"context_lines":[{"line_number":93,"context_line":"               \u0027--tag and --no-tag to overwrite current tags\u0027) % resource_name"},{"line_number":94,"context_line":"    )"},{"line_number":95,"context_line":"    parser.add_argument("},{"line_number":96,"context_line":"        \u0027--del-tag\u0027,"},{"line_number":97,"context_line":"        metavar\u003d\u0027\u003ctag\u003e\u0027,"},{"line_number":98,"context_line":"        default\u003d[],"},{"line_number":99,"context_line":"        help\u003d_(\u0027Tag to be deleted from the %s \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f91af0f_dba34bff","line":96,"range":{"start_line":96,"start_character":11,"end_line":96,"end_character":14},"updated":"2018-01-09 22:25:37.000000000","message":"nit: I don\u0027t think we use this convention anywhere else. Unless we\u0027re required to use an abbreviated naming convention, I\u0027d be inclined to say we should use:\n\n  --remove-tag\n\nWe could do the same with\n\n  --add-tag\n\ninstead of just:\n\n  --tag","commit_id":"ec26ed2e40ceecfc234cda64cfc07dfb61256424"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"76399ecd66d77915abd11124af63f91a26a478e5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"               \u0027--tag and --no-tag to overwrite current tags\u0027) % resource_name"},{"line_number":94,"context_line":"    )"},{"line_number":95,"context_line":"    parser.add_argument("},{"line_number":96,"context_line":"        \u0027--del-tag\u0027,"},{"line_number":97,"context_line":"        metavar\u003d\u0027\u003ctag\u003e\u0027,"},{"line_number":98,"context_line":"        default\u003d[],"},{"line_number":99,"context_line":"        help\u003d_(\u0027Tag to be deleted from the %s \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f96bb07_98934d50","line":96,"range":{"start_line":96,"start_character":11,"end_line":96,"end_character":14},"in_reply_to":"9f91af0f_7b4ebf38","updated":"2018-01-10 19:55:50.000000000","message":"Done","commit_id":"ec26ed2e40ceecfc234cda64cfc07dfb61256424"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"d60a8c355de08091377ad14dcd49c1b52c574ada","unresolved":false,"context_lines":[{"line_number":93,"context_line":"               \u0027--tag and --no-tag to overwrite current tags\u0027) % resource_name"},{"line_number":94,"context_line":"    )"},{"line_number":95,"context_line":"    parser.add_argument("},{"line_number":96,"context_line":"        \u0027--del-tag\u0027,"},{"line_number":97,"context_line":"        metavar\u003d\u0027\u003ctag\u003e\u0027,"},{"line_number":98,"context_line":"        default\u003d[],"},{"line_number":99,"context_line":"        help\u003d_(\u0027Tag to be deleted from the %s \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f91af0f_7b4ebf38","line":96,"range":{"start_line":96,"start_character":11,"end_line":96,"end_character":14},"in_reply_to":"9f91af0f_dba34bff","updated":"2018-01-09 22:30:47.000000000","message":"--remove-tag should be fine, I don\u0027t think the other services have a specific tag removal (other than glance which has it\u0027s own command)","commit_id":"ec26ed2e40ceecfc234cda64cfc07dfb61256424"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a23a778193d2f74dc2a18954ad68c752382119e7","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        args[\u0027tags\u0027] \u003d []"},{"line_number":107,"context_line":"        obj.tags \u003d []"},{"line_number":108,"context_line":"    if parsed_args.remove_tag:"},{"line_number":109,"context_line":"        if parsed_args.del_tag in obj.tags:"},{"line_number":110,"context_line":"            obj.tags.remove(parsed_args.del_tag)"},{"line_number":111,"context_line":"        args[\u0027tags\u0027] \u003d list(set(obj.tags))"},{"line_number":112,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f93b717_60832c58","line":109,"range":{"start_line":109,"start_character":23,"end_line":109,"end_character":30},"updated":"2018-01-24 16:01:39.000000000","message":"I think this is breaking something for me locally: \n\nhttp://paste.openstack.org/show/652281/\n\nI\u0027m also still seeing some issues rendering tag lists.","commit_id":"ac5504c6c5fd1d4cd2409c2220b8756f1de4c941"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"c1c9f4210a4072ec2d4e3d3f840fe9f0f588428e","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        args[\u0027tags\u0027] \u003d []"},{"line_number":107,"context_line":"        obj.tags \u003d []"},{"line_number":108,"context_line":"    if parsed_args.remove_tag:"},{"line_number":109,"context_line":"        if parsed_args.del_tag in obj.tags:"},{"line_number":110,"context_line":"            obj.tags.remove(parsed_args.del_tag)"},{"line_number":111,"context_line":"        args[\u0027tags\u0027] \u003d list(set(obj.tags))"},{"line_number":112,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f93b717_63625619","line":109,"range":{"start_line":109,"start_character":23,"end_line":109,"end_character":30},"in_reply_to":"5f93b717_60832c58","updated":"2018-01-24 16:55:36.000000000","message":"Done","commit_id":"ac5504c6c5fd1d4cd2409c2220b8756f1de4c941"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"426ecde108e0c507f55db8a4d1a1357ee8118f59","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        args[\u0027tags\u0027] \u003d []"},{"line_number":107,"context_line":"        obj.tags \u003d []"},{"line_number":108,"context_line":"    if parsed_args.remove_tag:"},{"line_number":109,"context_line":"        if parsed_args.del_tag in obj.tags:"},{"line_number":110,"context_line":"            obj.tags.remove(parsed_args.del_tag)"},{"line_number":111,"context_line":"        args[\u0027tags\u0027] \u003d list(set(obj.tags))"},{"line_number":112,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f93b717_40bcf068","line":109,"range":{"start_line":109,"start_character":23,"end_line":109,"end_character":30},"in_reply_to":"5f93b717_60832c58","updated":"2018-01-24 16:25:13.000000000","message":"Looking into this locally too","commit_id":"ac5504c6c5fd1d4cd2409c2220b8756f1de4c941"}],"openstackclient/tests/unit/identity/v3/test_project.py":[{"author":{"_account_id":23659,"name":"Jaewoo Park","email":"jaewoopark91@gmail.com","username":"aselius"},"change_message_id":"22c8e8399115724cd5c01e7d53326b6fed2eb21b","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            (\u0027disable\u0027, True),"},{"line_number":288,"context_line":"            (\u0027name\u0027, self.project.name),"},{"line_number":289,"context_line":"            (\u0027parent\u0027, None),"},{"line_number":290,"context_line":"        ]"},{"line_number":291,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        # In base command class ShowOne in cliff, abstract method take_action()"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f2577a7_da8cf980","line":290,"updated":"2018-02-20 04:33:10.000000000","message":"missing (\u0027tags\u0027, []) ?","commit_id":"cbc227c57722fb27cad05224daa8822b966e2f01"}],"releasenotes/notes/bp-project-tags-b544aef9672d415b.yaml":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"15d080181c4ae0d17b7142c349b14177db12f924","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`blueprint project-tags \u003chttps://blueprints.launchpad.net/keystone/+spec/project-tags\u003e`_]"},{"line_number":5,"context_line":"    Add ``--tag`` and ``--not-tag`` options to project creation and"},{"line_number":6,"context_line":"    setting. Add ``--tags``, ``--tags-any``, ``--not-tags``, and"},{"line_number":7,"context_line":"    ``--not-tags-any`` to project listing in order to filter list results"},{"line_number":8,"context_line":"    by different projects based on their tags."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"7f96bb07_d7dbc24c","line":5,"range":{"start_line":5,"start_character":22,"end_line":5,"end_character":34},"updated":"2018-01-21 20:40:52.000000000","message":"This is now --clear-tags and --remove-tag \u003ctag\u003e and doesn\u0027t apply to creation","commit_id":"9cd210538181e18cba8bc89f702a764118bfdf9f"},{"author":{"_account_id":22604,"name":"Samuel Pilla","email":"sp516w@att.com","username":"samuel.pilla"},"change_message_id":"426ecde108e0c507f55db8a4d1a1357ee8118f59","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`blueprint project-tags \u003chttps://blueprints.launchpad.net/keystone/+spec/project-tags\u003e`_]"},{"line_number":5,"context_line":"    Add ``--tag`` and ``--not-tag`` options to project creation and"},{"line_number":6,"context_line":"    setting. Add ``--tags``, ``--tags-any``, ``--not-tags``, and"},{"line_number":7,"context_line":"    ``--not-tags-any`` to project listing in order to filter list results"},{"line_number":8,"context_line":"    by different projects based on their tags."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"5f93b717_e0873cb6","line":5,"range":{"start_line":5,"start_character":22,"end_line":5,"end_character":34},"in_reply_to":"7f96bb07_d7dbc24c","updated":"2018-01-24 16:25:13.000000000","message":"Done","commit_id":"9cd210538181e18cba8bc89f702a764118bfdf9f"}]}
