)]}'
{"osc_placement/resources/common.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4f4b36b8082d0045e5a9c00f3d823e9bbfde6605","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7ffa3b31_0532df10","updated":"2017-04-19 11:57:48.000000000","message":"Are there not corresponding versions of these things in the osc core that can be used?","commit_id":"4ad9f2b0eda66e4c7caecb11fd6da604f7a1627f"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"63739e60cacc856779218c9cd60500eb0822f905","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7ffa3b31_1bdc5be2","in_reply_to":"7ffa3b31_0532df10","updated":"2017-04-20 13:36:18.000000000","message":"Sort of. Removed repr_one() and repr_many() and corresponding unit tests.","commit_id":"4ad9f2b0eda66e4c7caecb11fd6da604f7a1627f"}],"osc_placement/resources/resource_provider.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4f4b36b8082d0045e5a9c00f3d823e9bbfde6605","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            \u0027--name\u0027,"},{"line_number":68,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":69,"context_line":"            help\u003d\u0027name of the resource provider\u0027"},{"line_number":70,"context_line":"        )"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        return parser"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7ffa3b31_c899ae6e","line":70,"updated":"2017-04-19 11:57:48.000000000","message":"Not sure how many of the query params we want to support but:\n\n* v 1.3 adds member_of\n* v 1.4 addd resources","commit_id":"4ad9f2b0eda66e4c7caecb11fd6da604f7a1627f"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"63739e60cacc856779218c9cd60500eb0822f905","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            \u0027--name\u0027,"},{"line_number":68,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":69,"context_line":"            help\u003d\u0027name of the resource provider\u0027"},{"line_number":70,"context_line":"        )"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        return parser"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7ffa3b31_dba83321","line":70,"in_reply_to":"7ffa3b31_c899ae6e","updated":"2017-04-20 13:36:18.000000000","message":"Ack. This only targets 1.0 for now. Will add these parameters in separate patches. Thanks!","commit_id":"4ad9f2b0eda66e4c7caecb11fd6da604f7a1627f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a36e63cbd3397c54349896c4375b95ebdb1492c4","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        parser.add_argument("},{"line_number":35,"context_line":"            \u0027name\u0027,"},{"line_number":36,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":37,"context_line":"            help\u003d\u0027name of the resource provider\u0027"},{"line_number":38,"context_line":"        )"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_a7ef16af","line":37,"range":{"start_line":37,"start_character":18,"end_line":37,"end_character":22},"updated":"2017-09-08 20:14:59.000000000","message":"Name?","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        parser.add_argument("},{"line_number":35,"context_line":"            \u0027name\u0027,"},{"line_number":36,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":37,"context_line":"            help\u003d\u0027name of the resource provider\u0027"},{"line_number":38,"context_line":"        )"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_7203250f","line":37,"range":{"start_line":37,"start_character":18,"end_line":37,"end_character":22},"in_reply_to":"5f2577a7_a7ef16af","updated":"2017-09-20 06:11:55.000000000","message":"Done. Updated in other places as well.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a36e63cbd3397c54349896c4375b95ebdb1492c4","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        data \u003d {}"},{"line_number":46,"context_line":"        if \u0027name\u0027 in parsed_args and parsed_args.name:"},{"line_number":47,"context_line":"            data[\u0027name\u0027] \u003d parsed_args.name"},{"line_number":48,"context_line":"        if \u0027uuid\u0027 in parsed_args and parsed_args.uuid:"},{"line_number":49,"context_line":"            data[\u0027uuid\u0027] \u003d parsed_args.uuid"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_2739e640","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":54},"updated":"2017-09-08 20:14:59.000000000","message":"name is required, and is an argument, so does the parser enforce that? In other words, do we need to check it here?","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1053e9df74351ce258deb56eb5ce9bac36d6573a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        data \u003d {}"},{"line_number":46,"context_line":"        if \u0027name\u0027 in parsed_args and parsed_args.name:"},{"line_number":47,"context_line":"            data[\u0027name\u0027] \u003d parsed_args.name"},{"line_number":48,"context_line":"        if \u0027uuid\u0027 in parsed_args and parsed_args.uuid:"},{"line_number":49,"context_line":"            data[\u0027uuid\u0027] \u003d parsed_args.uuid"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_840e4ae3","line":46,"updated":"2017-09-09 18:13:02.000000000","message":"no, the test is not required.  The parser\u0027s Namespace object will always contain a name element","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        data \u003d {}"},{"line_number":46,"context_line":"        if \u0027name\u0027 in parsed_args and parsed_args.name:"},{"line_number":47,"context_line":"            data[\u0027name\u0027] \u003d parsed_args.name"},{"line_number":48,"context_line":"        if \u0027uuid\u0027 in parsed_args and parsed_args.uuid:"},{"line_number":49,"context_line":"            data[\u0027uuid\u0027] \u003d parsed_args.uuid"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_320dad37","line":46,"in_reply_to":"5f2577a7_840e4ae3","updated":"2017-09-20 06:11:55.000000000","message":"Done","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1053e9df74351ce258deb56eb5ce9bac36d6573a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        data \u003d {}"},{"line_number":46,"context_line":"        if \u0027name\u0027 in parsed_args and parsed_args.name:"},{"line_number":47,"context_line":"            data[\u0027name\u0027] \u003d parsed_args.name"},{"line_number":48,"context_line":"        if \u0027uuid\u0027 in parsed_args and parsed_args.uuid:"},{"line_number":49,"context_line":"            data[\u0027uuid\u0027] \u003d parsed_args.uuid"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        resp \u003d http.request(\u0027POST\u0027, BASE_URL, json\u003ddata)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_64135e0f","line":48,"updated":"2017-09-09 18:13:02.000000000","message":"The only reason to do this test is if the API acts differently if uuid is present or not present in the data dict.  Otherwise it is safe to always make this assignment too  (some OpenStack APIs have that characteristic so in some places OSC does do what otherwise look like unnecessary checks on option values).","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        data \u003d {}"},{"line_number":46,"context_line":"        if \u0027name\u0027 in parsed_args and parsed_args.name:"},{"line_number":47,"context_line":"            data[\u0027name\u0027] \u003d parsed_args.name"},{"line_number":48,"context_line":"        if \u0027uuid\u0027 in parsed_args and parsed_args.uuid:"},{"line_number":49,"context_line":"            data[\u0027uuid\u0027] \u003d parsed_args.uuid"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        resp \u003d http.request(\u0027POST\u0027, BASE_URL, json\u003ddata)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_d21bf170","line":48,"in_reply_to":"5f2577a7_64135e0f","updated":"2017-09-20 06:11:55.000000000","message":"Yes, we need this condition because API acts differently.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a36e63cbd3397c54349896c4375b95ebdb1492c4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def get_parser(self, prog_name):"},{"line_number":60,"context_line":"        parser \u003d super(ListResourceProvider, self).get_parser(prog_name)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        parser.add_argument("},{"line_number":63,"context_line":"            \u0027--uuid\u0027,"},{"line_number":64,"context_line":"            metavar\u003d\u0027\u003cuuid\u003e\u0027,"},{"line_number":65,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":66,"context_line":"        )"},{"line_number":67,"context_line":"        parser.add_argument("},{"line_number":68,"context_line":"            \u0027--name\u0027,"},{"line_number":69,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":70,"context_line":"            help\u003d\u0027name of the resource provider\u0027"},{"line_number":71,"context_line":"        )"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        return parser"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_a7a71650","line":71,"range":{"start_line":62,"start_character":8,"end_line":71,"end_character":9},"updated":"2017-09-08 20:14:59.000000000","message":"We can use the member_of filter in 1.3 and \u0027resources\u0027 filter in 1.4, but we don\u0027t support microversions here yet I guess.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def get_parser(self, prog_name):"},{"line_number":60,"context_line":"        parser \u003d super(ListResourceProvider, self).get_parser(prog_name)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        parser.add_argument("},{"line_number":63,"context_line":"            \u0027--uuid\u0027,"},{"line_number":64,"context_line":"            metavar\u003d\u0027\u003cuuid\u003e\u0027,"},{"line_number":65,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":66,"context_line":"        )"},{"line_number":67,"context_line":"        parser.add_argument("},{"line_number":68,"context_line":"            \u0027--name\u0027,"},{"line_number":69,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":70,"context_line":"            help\u003d\u0027name of the resource provider\u0027"},{"line_number":71,"context_line":"        )"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        return parser"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_12406935","line":71,"range":{"start_line":62,"start_character":8,"end_line":71,"end_character":9},"in_reply_to":"5f2577a7_a7a71650","updated":"2017-09-20 06:11:55.000000000","message":"I\u0027m thinking about the following flow:\n- finish version 1.0\n- add microversion support\n- add new parameters and calls","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ee602b43128be678b1d35e0d23f4eddcfe6689af","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def get_parser(self, prog_name):"},{"line_number":60,"context_line":"        parser \u003d super(ListResourceProvider, self).get_parser(prog_name)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        parser.add_argument("},{"line_number":63,"context_line":"            \u0027--uuid\u0027,"},{"line_number":64,"context_line":"            metavar\u003d\u0027\u003cuuid\u003e\u0027,"},{"line_number":65,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":66,"context_line":"        )"},{"line_number":67,"context_line":"        parser.add_argument("},{"line_number":68,"context_line":"            \u0027--name\u0027,"},{"line_number":69,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":70,"context_line":"            help\u003d\u0027name of the resource provider\u0027"},{"line_number":71,"context_line":"        )"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        return parser"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_b91287b0","line":71,"range":{"start_line":62,"start_character":8,"end_line":71,"end_character":9},"in_reply_to":"bf57530f_12406935","updated":"2017-09-22 20:55:11.000000000","message":"Yeah I\u0027m good with 1.0 support and add the microversion support in separately later.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ed79722414d02b378ccaccc4a30f40d9f9c08a2","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    def get_parser(self, prog_name):"},{"line_number":94,"context_line":"        parser \u003d super(ShowResourceProvider, self).get_parser(prog_name)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        parser.add_argument("},{"line_number":97,"context_line":"            \u0027uuid\u0027,"},{"line_number":98,"context_line":"            metavar\u003d\u0027\u003cuuid\u003e\u0027,"},{"line_number":99,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":100,"context_line":"        )"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        return parser"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_1973ee82","line":100,"range":{"start_line":96,"start_character":8,"end_line":100,"end_character":9},"updated":"2017-09-08 21:53:34.000000000","message":"At some point we probably want this to be a uuid or name, since playing with this locally I tried using name without first looking if I could show by name. Maybe a TODO for later?","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    def get_parser(self, prog_name):"},{"line_number":94,"context_line":"        parser \u003d super(ShowResourceProvider, self).get_parser(prog_name)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        parser.add_argument("},{"line_number":97,"context_line":"            \u0027uuid\u0027,"},{"line_number":98,"context_line":"            metavar\u003d\u0027\u003cuuid\u003e\u0027,"},{"line_number":99,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":100,"context_line":"        )"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        return parser"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_f23cb5c0","line":100,"range":{"start_line":96,"start_character":8,"end_line":100,"end_character":9},"in_reply_to":"5f2577a7_1973ee82","updated":"2017-09-20 06:11:55.000000000","message":"Done","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a36e63cbd3397c54349896c4375b95ebdb1492c4","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":"        parser.add_argument("},{"line_number":124,"context_line":"            \u0027--name\u0027,"},{"line_number":125,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":126,"context_line":"            help\u003d\u0027a new name of the resource provider\u0027"},{"line_number":127,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_22a9d4de","line":124,"range":{"start_line":124,"start_character":13,"end_line":124,"end_character":19},"updated":"2017-09-08 20:14:59.000000000","message":"This isn\u0027t optional:\n\nhttps://developer.openstack.org/api-ref/placement/#update-resource-provider\n\nPlus you\u0027re not checking for it as optional below in take_action.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1053e9df74351ce258deb56eb5ce9bac36d6573a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":"        parser.add_argument("},{"line_number":124,"context_line":"            \u0027--name\u0027,"},{"line_number":125,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":126,"context_line":"            help\u003d\u0027a new name of the resource provider\u0027"},{"line_number":127,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_44f862c3","line":124,"updated":"2017-09-09 18:13:02.000000000","message":"With no other options on the command it is probably OK to make --name required, but if other options are added (or for other resources) it should be optional, and you would pass the existing name.  Doing the lookup of the positional argument (name or ID) to get the id gives you the existing resource so you will already have the existing name once that is in place.  In some cases commands optimize the update call away if no changes are actually requests, which we have decided is a legal CLI command for user-convenience reasons.\n\nAlso, the command verb would be \u0027set\u0027 for consistency with the rest of OSC.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"483c1c0c49a75553932109d9c33e4a9a25e381d0","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":"        parser.add_argument("},{"line_number":124,"context_line":"            \u0027--name\u0027,"},{"line_number":125,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":126,"context_line":"            help\u003d\u0027a new name of the resource provider\u0027"},{"line_number":127,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_19f88ec2","line":124,"range":{"start_line":124,"start_character":13,"end_line":124,"end_character":19},"in_reply_to":"5f2577a7_22a9d4de","updated":"2017-09-08 21:55:15.000000000","message":"This is the unhelpful error you get when name is not provided.\n\nstack@devstack-queens:~/osc-placement$ openstack resource-provider update f86f0f17-0fbf-40e2-9ee3-d7c9dbd383b5\nJSON does not validate: None is not of type \u0027string\u0027  Failed validating \u0027type\u0027 in schema[\u0027properties\u0027][\u0027name\u0027]:     {\u0027maxLength\u0027: 200, \u0027type\u0027: \u0027string\u0027}  On instance[me\u0027]:     None (HTTP 400)","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":"        parser.add_argument("},{"line_number":124,"context_line":"            \u0027--name\u0027,"},{"line_number":125,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":126,"context_line":"            help\u003d\u0027a new name of the resource provider\u0027"},{"line_number":127,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_b2463d4f","line":124,"in_reply_to":"5f2577a7_44f862c3","updated":"2017-09-20 06:11:55.000000000","message":"Added required\u003dTrue. Changed update to set.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"383ef2c98c3142d660b3096a71666404e62f42ee","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    def get_parser(self, prog_name):"},{"line_number":144,"context_line":"        parser \u003d super(DeleteResourceProvider, self).get_parser(prog_name)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        parser.add_argument("},{"line_number":147,"context_line":"            \u0027uuid\u0027,"},{"line_number":148,"context_line":"            metavar\u003d\u0027\u003cuuid\u003e\u0027,"},{"line_number":149,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        return parser"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_d9efa6e7","line":150,"range":{"start_line":146,"start_character":8,"end_line":150,"end_character":9},"updated":"2017-09-08 21:58:12.000000000","message":"Similar to show, we should allow deleting by name and then lookup the UUID. But could be a TODO.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    def get_parser(self, prog_name):"},{"line_number":144,"context_line":"        parser \u003d super(DeleteResourceProvider, self).get_parser(prog_name)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        parser.add_argument("},{"line_number":147,"context_line":"            \u0027uuid\u0027,"},{"line_number":148,"context_line":"            metavar\u003d\u0027\u003cuuid\u003e\u0027,"},{"line_number":149,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        return parser"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_727a0589","line":150,"range":{"start_line":146,"start_character":8,"end_line":150,"end_character":9},"in_reply_to":"5f2577a7_d9efa6e7","updated":"2017-09-20 06:11:55.000000000","message":"Done","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"}],"osc_placement/tests/functional/base.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3d0290ee80c58732c7063ad89579b631b84037f4","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        def cleanup():"},{"line_number":53,"context_line":"            try:"},{"line_number":54,"context_line":"                self.openstack(\u0027resource-provider delete \u0027 + res[\u0027uuid\u0027])"},{"line_number":55,"context_line":"            except subprocess.CalledProcessError as exc:"},{"line_number":56,"context_line":"                # may have already been deleted by a test case"},{"line_number":57,"context_line":"                if \u0027not found\u0027 in exc.output.decode(\u0027utf-8\u0027).lower():"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_766441ba","line":54,"updated":"2017-09-08 21:08:46.000000000","message":"nit: You could re-use resource_provider_delete here.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        def cleanup():"},{"line_number":53,"context_line":"            try:"},{"line_number":54,"context_line":"                self.openstack(\u0027resource-provider delete \u0027 + res[\u0027uuid\u0027])"},{"line_number":55,"context_line":"            except subprocess.CalledProcessError as exc:"},{"line_number":56,"context_line":"                # may have already been deleted by a test case"},{"line_number":57,"context_line":"                if \u0027not found\u0027 in exc.output.decode(\u0027utf-8\u0027).lower():"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_b2699d8c","line":54,"in_reply_to":"5f2577a7_766441ba","updated":"2017-09-20 06:11:55.000000000","message":"Done","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3d0290ee80c58732c7063ad89579b631b84037f4","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            except subprocess.CalledProcessError as exc:"},{"line_number":56,"context_line":"                # may have already been deleted by a test case"},{"line_number":57,"context_line":"                if \u0027not found\u0027 in exc.output.decode(\u0027utf-8\u0027).lower():"},{"line_number":58,"context_line":"                    pass"},{"line_number":59,"context_line":"        self.addCleanup(cleanup)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_36459918","line":58,"updated":"2017-09-08 21:08:46.000000000","message":"re-raise otherwise?","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            except subprocess.CalledProcessError as exc:"},{"line_number":56,"context_line":"                # may have already been deleted by a test case"},{"line_number":57,"context_line":"                if \u0027not found\u0027 in exc.output.decode(\u0027utf-8\u0027).lower():"},{"line_number":58,"context_line":"                    pass"},{"line_number":59,"context_line":"        self.addCleanup(cleanup)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_32136d10","line":58,"in_reply_to":"5f2577a7_36459918","updated":"2017-09-20 06:11:55.000000000","message":"Done. Also message text was changed.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3d0290ee80c58732c7063ad89579b631b84037f4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        return res"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def resource_provider_update(self, uuid, name):"},{"line_number":64,"context_line":"        to_exec \u003d \u0027resource-provider update \u0027 + uuid + \u0027 --name \u0027 + name"},{"line_number":65,"context_line":"        return self.openstack(to_exec, use_json\u003dTrue)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def resource_provider_show(self, uuid):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_164a9d26","line":64,"range":{"start_line":64,"start_character":57,"end_line":64,"end_character":63},"updated":"2017-09-08 21:08:46.000000000","message":"As noted in the code, this shouldn\u0027t be an option, it\u0027s required in the API.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        return res"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def resource_provider_update(self, uuid, name):"},{"line_number":64,"context_line":"        to_exec \u003d \u0027resource-provider update \u0027 + uuid + \u0027 --name \u0027 + name"},{"line_number":65,"context_line":"        return self.openstack(to_exec, use_json\u003dTrue)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def resource_provider_show(self, uuid):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_f2f4b5d1","line":64,"range":{"start_line":64,"start_character":57,"end_line":64,"end_character":63},"in_reply_to":"5f2577a7_164a9d26","updated":"2017-09-20 06:11:55.000000000","message":"It\u0027s still an option but required now.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"}],"osc_placement/tests/functional/test_resource_provider.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b7164263a5508c2a84907f5c44ea8701c31c57b5","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        created \u003d self.resource_provider_create(name\u003d\u0027test_rp_orig_name\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        before_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"},{"line_number":53,"context_line":"        self.assertEqual(\u0027test_rp_orig_name\u0027, before_update[\u0027name\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        self.resource_provider_update(created[\u0027uuid\u0027], name\u003d\u0027test_rp_new_name\u0027)"},{"line_number":56,"context_line":"        after_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_39822a51","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":68},"updated":"2017-09-08 21:48:18.000000000","message":"Also assert the generation is 0?","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        created \u003d self.resource_provider_create(name\u003d\u0027test_rp_orig_name\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        before_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"},{"line_number":53,"context_line":"        self.assertEqual(\u0027test_rp_orig_name\u0027, before_update[\u0027name\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        self.resource_provider_update(created[\u0027uuid\u0027], name\u003d\u0027test_rp_new_name\u0027)"},{"line_number":56,"context_line":"        after_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_1221894e","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":68},"in_reply_to":"5f2577a7_39822a51","updated":"2017-09-20 06:11:55.000000000","message":"Added assert for generation.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3d0290ee80c58732c7063ad89579b631b84037f4","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        before_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"},{"line_number":53,"context_line":"        self.assertEqual(\u0027test_rp_orig_name\u0027, before_update[\u0027name\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        self.resource_provider_update(created[\u0027uuid\u0027], name\u003d\u0027test_rp_new_name\u0027)"},{"line_number":56,"context_line":"        after_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(\u0027test_rp_new_name\u0027, after_update[\u0027name\u0027])"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_b669898c","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":79},"updated":"2017-09-08 21:08:46.000000000","message":"How about a negative tests where update is called without a name? That should be a 400 from the server.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        before_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"},{"line_number":53,"context_line":"        self.assertEqual(\u0027test_rp_orig_name\u0027, before_update[\u0027name\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        self.resource_provider_update(created[\u0027uuid\u0027], name\u003d\u0027test_rp_new_name\u0027)"},{"line_number":56,"context_line":"        after_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(\u0027test_rp_new_name\u0027, after_update[\u0027name\u0027])"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_92d21934","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":79},"in_reply_to":"5f2577a7_b669898c","updated":"2017-09-20 06:11:55.000000000","message":"It\u0027s required on client side now with functional provided by library.","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b7164263a5508c2a84907f5c44ea8701c31c57b5","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        self.resource_provider_update(created[\u0027uuid\u0027], name\u003d\u0027test_rp_new_name\u0027)"},{"line_number":56,"context_line":"        after_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(\u0027test_rp_new_name\u0027, after_update[\u0027name\u0027])"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_resource_provider_update_not_found(self):"},{"line_number":60,"context_line":"        rp_uuid \u003d six.text_type(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_19976e93","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":66},"updated":"2017-09-08 21:48:18.000000000","message":"Assert the generation changed?","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b4ef0bae216232ff0f910a9caa7522ae078cbd26","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        self.resource_provider_update(created[\u0027uuid\u0027], name\u003d\u0027test_rp_new_name\u0027)"},{"line_number":56,"context_line":"        after_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(\u0027test_rp_new_name\u0027, after_update[\u0027name\u0027])"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_resource_provider_update_not_found(self):"},{"line_number":60,"context_line":"        rp_uuid \u003d six.text_type(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_79d79225","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":66},"in_reply_to":"5f2577a7_19976e93","updated":"2017-09-08 21:57:06.000000000","message":"I guess it doesn\u0027t actually change, which surprised me:\n\nstack@devstack-queens:~/osc-placement$ openstack resource-provider update f86f0f17-0fbf-40e2-9ee3-d7c9dbd383b5 --name test-rp2\n+------------+--------------------------------------+\n| Field      | Value                                |\n+------------+--------------------------------------+\n| uuid       | f86f0f17-0fbf-40e2-9ee3-d7c9dbd383b5 |\n| name       | test-rp2                             |\n| generation | 0                                    |\n+------------+--------------------------------------+","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"31b35e14092aa48fa68de527257761a423f1a690","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        self.resource_provider_update(created[\u0027uuid\u0027], name\u003d\u0027test_rp_new_name\u0027)"},{"line_number":56,"context_line":"        after_update \u003d self.resource_provider_show(created[\u0027uuid\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(\u0027test_rp_new_name\u0027, after_update[\u0027name\u0027])"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_resource_provider_update_not_found(self):"},{"line_number":60,"context_line":"        rp_uuid \u003d six.text_type(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf57530f_72d7a525","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":66},"in_reply_to":"5f2577a7_79d79225","updated":"2017-09-20 06:11:55.000000000","message":"Added assert generation \u003d\u003d 0","commit_id":"5556f9f2a616108958d3c263a12b552cf4b0c77d"}],"osc_placement/tests/unit/test_common.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6537763595f593eadb822e296e08842125892615","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class TestCommon(base.BaseTestCase):"},{"line_number":23,"context_line":"    def test_encode(self):"},{"line_number":24,"context_line":"        self.assertEqual(u\u0027привет\u0027.encode(\u0027utf-8\u0027),"},{"line_number":25,"context_line":"                         common.encode(u\u0027привет\u0027))"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def test_encode_custom_encoding(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_15129e0a","line":24,"range":{"start_line":24,"start_character":27,"end_line":24,"end_character":33},"updated":"2017-10-03 16:43:45.000000000","message":"well, hello to you, too. :)","commit_id":"1b1ae94ed8444fcb91b0b23c961997e381256475"}],"setup.cfg":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1968a775a098f8da84dd5fdcb8cc956c1772fbf6","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    placement \u003d osc_placement.plugin"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"openstack.placement.v1 \u003d"},{"line_number":30,"context_line":"    resource_provider_create \u003d osc_placement.resources.resource_provider:CreateResourceProvider"},{"line_number":31,"context_line":"    resource_provider_list   \u003d osc_placement.resources.resource_provider:ListResourceProvider"},{"line_number":32,"context_line":"    resource_provider_show   \u003d osc_placement.resources.resource_provider:ShowResourceProvider"},{"line_number":33,"context_line":"    resource_provider_set    \u003d osc_placement.resources.resource_provider:SetResourceProvider"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"7f515b1d_a8f32f73","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":28},"updated":"2017-09-25 15:16:08.000000000","message":"nit: This behavior (replacing underscores with spaces) is customizable. I wonder if it would be worth disabling so we can say:\n\n    resource-provider create\n\ninstead? After all, there\u0027s no resource command \u0027resource\u0027 - the command is \u0027resource-provider\u0027","commit_id":"1b1ae94ed8444fcb91b0b23c961997e381256475"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbaa5b747393323d7c68770027c1bad3083a7fcd","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    placement \u003d osc_placement.plugin"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"openstack.placement.v1 \u003d"},{"line_number":30,"context_line":"    resource_provider_create \u003d osc_placement.resources.resource_provider:CreateResourceProvider"},{"line_number":31,"context_line":"    resource_provider_list   \u003d osc_placement.resources.resource_provider:ListResourceProvider"},{"line_number":32,"context_line":"    resource_provider_show   \u003d osc_placement.resources.resource_provider:ShowResourceProvider"},{"line_number":33,"context_line":"    resource_provider_set    \u003d osc_placement.resources.resource_provider:SetResourceProvider"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"7f515b1d_7e36eae8","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":28},"in_reply_to":"7f515b1d_92d3eb38","updated":"2017-09-26 15:16:17.000000000","message":"Being new to OSC I\u0027m going to follow Dean\u0027s direction here.","commit_id":"1b1ae94ed8444fcb91b0b23c961997e381256475"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f50599d5502bcdf978254413463c9af6f26b573e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    placement \u003d osc_placement.plugin"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"openstack.placement.v1 \u003d"},{"line_number":30,"context_line":"    resource_provider_create \u003d osc_placement.resources.resource_provider:CreateResourceProvider"},{"line_number":31,"context_line":"    resource_provider_list   \u003d osc_placement.resources.resource_provider:ListResourceProvider"},{"line_number":32,"context_line":"    resource_provider_show   \u003d osc_placement.resources.resource_provider:ShowResourceProvider"},{"line_number":33,"context_line":"    resource_provider_set    \u003d osc_placement.resources.resource_provider:SetResourceProvider"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"7f515b1d_e8a6c753","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":28},"in_reply_to":"7f515b1d_a8f32f73","updated":"2017-09-25 15:18:08.000000000","message":"Aha, I see dtroyer said to do this. I respectfully disagree (osc got this wrong), but we should follow there examples alright","commit_id":"1b1ae94ed8444fcb91b0b23c961997e381256475"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"ca43fc43276e60f865de31e00e4b20a8209afe6e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    placement \u003d osc_placement.plugin"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"openstack.placement.v1 \u003d"},{"line_number":30,"context_line":"    resource_provider_create \u003d osc_placement.resources.resource_provider:CreateResourceProvider"},{"line_number":31,"context_line":"    resource_provider_list   \u003d osc_placement.resources.resource_provider:ListResourceProvider"},{"line_number":32,"context_line":"    resource_provider_show   \u003d osc_placement.resources.resource_provider:ShowResourceProvider"},{"line_number":33,"context_line":"    resource_provider_set    \u003d osc_placement.resources.resource_provider:SetResourceProvider"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"7f515b1d_92d3eb38","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":28},"in_reply_to":"7f515b1d_e8a6c753","updated":"2017-09-26 05:00:32.000000000","message":"Agree that it\u0027s maybe not semantically correct but it goes consistently with other namings.","commit_id":"1b1ae94ed8444fcb91b0b23c961997e381256475"}]}
