)]}'
{"novaclient/tests/functional/v2/test_device_tagging.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5611488cc1ce93fe0234ae3ad05ae9633cb31f15","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    COMPUTE_API_VERSION \u003d \"2.32\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def test_boot_server_with_tagged_devices(self):"},{"line_number":25,"context_line":"        network \u003d self.client.networks.list()[0]"},{"line_number":26,"context_line":"        server_info \u003d self.nova(\u0027boot\u0027, params\u003d{"},{"line_number":27,"context_line":"            \u0027%(name)s --flavor %(flavor)s --poll \u0027"},{"line_number":28,"context_line":"            \u0027--nic uuid\u003d%(net-uuid)s,tag\u003dfoo \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_75b64fdd","line":25,"updated":"2016-07-11 12:35:49.000000000","message":"You can use https://github.com/openstack/python-novaclient/blob/master/novaclient/tests/functional/base.py#L213 instead","commit_id":"5f70eb9b994f1370c76a4f6419db65164e9edef2"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"952fdf0733c4cb8b913b13848052ad42288d6529","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    COMPUTE_API_VERSION \u003d \"2.32\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def test_boot_server_with_tagged_devices(self):"},{"line_number":25,"context_line":"        network \u003d self.client.networks.list()[0]"},{"line_number":26,"context_line":"        server_info \u003d self.nova(\u0027boot\u0027, params\u003d{"},{"line_number":27,"context_line":"            \u0027%(name)s --flavor %(flavor)s --poll \u0027"},{"line_number":28,"context_line":"            \u0027--nic uuid\u003d%(net-uuid)s,tag\u003dfoo \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_7b962f3f","line":25,"in_reply_to":"1aa78d24_75b64fdd","updated":"2016-07-11 17:01:42.000000000","message":"Done. Thanks for the tip!","commit_id":"5f70eb9b994f1370c76a4f6419db65164e9edef2"}],"novaclient/v2/servers.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8696d2b59b85e04ef9bf1a1e34e5f1d93549623c","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"        if nics:"},{"line_number":1281,"context_line":"            for nic_info in nics:"},{"line_number":1282,"context_line":"                if \"tag\" in nic_info and self.api_version \u003c tags_microversion:"},{"line_number":1283,"context_line":"                    raise ValueError(\"Setting interface tags is unsupported \""},{"line_number":1284,"context_line":"                                     \"before microversion 2.26\")"},{"line_number":1285,"context_line":"        return self._base_create(name, image, flavor, meta\u003dmeta, files\u003dfiles,"},{"line_number":1286,"context_line":"                                 reservation_id\u003dreservation_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_3cd5b91b","line":1283,"updated":"2016-03-30 15:59:36.000000000","message":"This clause doesn\u0027t make sense; this version of create() should only be called if the API version is greater than 2.26 anyway.","commit_id":"635dc34ef2e5959b61f066294c80855a524abcbf"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"04d7934955069e1c697fa01679e50f47e890c448","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"        if nics:"},{"line_number":1281,"context_line":"            for nic_info in nics:"},{"line_number":1282,"context_line":"                if \"tag\" in nic_info and self.api_version \u003c tags_microversion:"},{"line_number":1283,"context_line":"                    raise ValueError(\"Setting interface tags is unsupported \""},{"line_number":1284,"context_line":"                                     \"before microversion 2.26\")"},{"line_number":1285,"context_line":"        return self._base_create(name, image, flavor, meta\u003dmeta, files\u003dfiles,"},{"line_number":1286,"context_line":"                                 reservation_id\u003dreservation_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_a83ea025","line":1283,"in_reply_to":"ba0121b8_3cd5b91b","updated":"2016-03-30 18:22:02.000000000","message":"Done","commit_id":"635dc34ef2e5959b61f066294c80855a524abcbf"}],"novaclient/v2/shell.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3e11b016cd5f588d56da821adac7997b58157bbe","unresolved":false,"context_lines":[{"line_number":500,"context_line":"           \"honoured only if device type is supplied) \""},{"line_number":501,"context_line":"           \"type\u003ddevice type (e.g. disk, cdrom, ...; defaults to \u0027disk\u0027) \""},{"line_number":502,"context_line":"           \"device\u003dname of the device (e.g. vda, xda, ...; \""},{"line_number":503,"context_line":"           \"tag\u003ddevice metadata tag (optional, starting in microversion 2.31) \""},{"line_number":504,"context_line":"           \"if omitted, hypervisor driver chooses suitable device \""},{"line_number":505,"context_line":"           \"depending on selected bus; note the libvirt driver always \""},{"line_number":506,"context_line":"           \"uses default device names), \""}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_e6150d40","line":503,"updated":"2016-06-30 21:01:41.000000000","message":"This has to be versioned, you can\u0027t request a tag on the CLI with the API \u003c 2.32 else you\u0027ll get a validation error (400) from the nova API.","commit_id":"ee1adfd034f16d4ff2ee106dfad627490afdbe13"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"74302c2d35b468a14ffa66e568d3eec95ceab7d1","unresolved":false,"context_lines":[{"line_number":500,"context_line":"           \"honoured only if device type is supplied) \""},{"line_number":501,"context_line":"           \"type\u003ddevice type (e.g. disk, cdrom, ...; defaults to \u0027disk\u0027) \""},{"line_number":502,"context_line":"           \"device\u003dname of the device (e.g. vda, xda, ...; \""},{"line_number":503,"context_line":"           \"tag\u003ddevice metadata tag (optional, starting in microversion 2.31) \""},{"line_number":504,"context_line":"           \"if omitted, hypervisor driver chooses suitable device \""},{"line_number":505,"context_line":"           \"depending on selected bus; note the libvirt driver always \""},{"line_number":506,"context_line":"           \"uses default device names), \""}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_54d8a753","line":503,"in_reply_to":"3aaa91ec_e6150d40","updated":"2016-07-04 17:04:48.000000000","message":"I did that - in a completely disgusting way, which I fully expect to be shot down, but I do hope a better alternative can be found.\n\nMy initial approach was to just have a versioned get_bdm_help_text method, and set help\u003dget_bdm_help_text() in the utils.arg decorator. The problem is that a versioned method needs to be passed a client object so that the decorator knows what version the client is on. I\u0027ve found no way to do that from \"inside\" the utils.arg decorator.\n\nI can always have two versioned do_boot methods, but it seems like a lot of copy paste for a single difference.","commit_id":"ee1adfd034f16d4ff2ee106dfad627490afdbe13"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3e11b016cd5f588d56da821adac7997b58157bbe","unresolved":false,"context_lines":[{"line_number":548,"context_line":"           \"v4-fixed-ip: IPv4 fixed address for NIC (optional), \""},{"line_number":549,"context_line":"           \"v6-fixed-ip: IPv6 fixed address for NIC (optional), \""},{"line_number":550,"context_line":"           \"port-id: attach NIC to port with this UUID \""},{"line_number":551,"context_line":"           \"tag: interface metadata tag (optional, starting in version 2.31) \""},{"line_number":552,"context_line":"           \"(either port-id or net-id must be provided).\"))"},{"line_number":553,"context_line":"@utils.arg("},{"line_number":554,"context_line":"    \u0027--config-drive\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_06177945","line":551,"updated":"2016-06-30 21:01:41.000000000","message":"ditto","commit_id":"ee1adfd034f16d4ff2ee106dfad627490afdbe13"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"74302c2d35b468a14ffa66e568d3eec95ceab7d1","unresolved":false,"context_lines":[{"line_number":548,"context_line":"           \"v4-fixed-ip: IPv4 fixed address for NIC (optional), \""},{"line_number":549,"context_line":"           \"v6-fixed-ip: IPv6 fixed address for NIC (optional), \""},{"line_number":550,"context_line":"           \"port-id: attach NIC to port with this UUID \""},{"line_number":551,"context_line":"           \"tag: interface metadata tag (optional, starting in version 2.31) \""},{"line_number":552,"context_line":"           \"(either port-id or net-id must be provided).\"))"},{"line_number":553,"context_line":"@utils.arg("},{"line_number":554,"context_line":"    \u0027--config-drive\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_d4e4970e","line":551,"in_reply_to":"3aaa91ec_06177945","updated":"2016-07-04 17:04:48.000000000","message":"See reply above.","commit_id":"ee1adfd034f16d4ff2ee106dfad627490afdbe13"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"86e8baee45d78409f0745ce79c3a4069cabfe4b7","unresolved":false,"context_lines":[{"line_number":567,"context_line":"    use\u003d_(\u0027use \"%s\"; this option will be removed in \u0027"},{"line_number":568,"context_line":"          \u0027novaclient 3.3.0.\u0027) % \u0027--block-device-mapping\u0027,"},{"line_number":569,"context_line":"    help\u003dargparse.SUPPRESS)"},{"line_number":570,"context_line":"@utils.arg("},{"line_number":571,"context_line":"    \u0027--block-device\u0027,"},{"line_number":572,"context_line":"    metavar\u003d\"key1\u003dvalue1[,key2\u003dvalue2...]\","},{"line_number":573,"context_line":"    action\u003d\u0027append\u0027,"},{"line_number":574,"context_line":"    default\u003d[],"},{"line_number":575,"context_line":"    help\u003d_get_bdm_help_text())"},{"line_number":576,"context_line":"@utils.arg("},{"line_number":577,"context_line":"    \u0027--swap\u0027,"},{"line_number":578,"context_line":"    metavar\u003d\"\u003cswap_size\u003e\","}],"source_content_type":"text/x-python","patch_set":11,"id":"1aa78d24_1b13deb9","line":575,"range":{"start_line":570,"start_character":0,"end_line":575,"end_character":30},"updated":"2016-07-05 06:07:51.000000000","message":"instead of using shell variable with version, it is better to have several args. CLI utils will automatically choose proper argument.\n\n    @utils.arg(\n        \u0027--block-device\u0027,\n        metavar\u003d\"key1\u003dvalue1[,key2\u003dvalue2...]\",\n        action\u003d\u0027append\u0027,\n        default\u003d[],\n        start_version\u003d\"2.0\", end_version\u003d\"2.31\",\n        help\u003d\"First type of text\")\n    @utils.arg(\n        \u0027--block-device\u0027,\n        metavar\u003d\"key1\u003dvalue1[,key2\u003dvalue2...]\",\n        action\u003d\u0027append\u0027,\n        default\u003d[],\n        start_version\u003d\"2.32\",\n        help\u003d\"Second type of text\")","commit_id":"67d6683a42cbcb74e2c8ff259882183f002ae92c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a30443b9873e850dd293885543b9e974b47bd07e","unresolved":false,"context_lines":[{"line_number":567,"context_line":"    use\u003d_(\u0027use \"%s\"; this option will be removed in \u0027"},{"line_number":568,"context_line":"          \u0027novaclient 3.3.0.\u0027) % \u0027--block-device-mapping\u0027,"},{"line_number":569,"context_line":"    help\u003dargparse.SUPPRESS)"},{"line_number":570,"context_line":"@utils.arg("},{"line_number":571,"context_line":"    \u0027--block-device\u0027,"},{"line_number":572,"context_line":"    metavar\u003d\"key1\u003dvalue1[,key2\u003dvalue2...]\","},{"line_number":573,"context_line":"    action\u003d\u0027append\u0027,"},{"line_number":574,"context_line":"    default\u003d[],"},{"line_number":575,"context_line":"    help\u003d_get_bdm_help_text())"},{"line_number":576,"context_line":"@utils.arg("},{"line_number":577,"context_line":"    \u0027--swap\u0027,"},{"line_number":578,"context_line":"    metavar\u003d\"\u003cswap_size\u003e\","}],"source_content_type":"text/x-python","patch_set":11,"id":"1aa78d24_392fa1f7","line":575,"range":{"start_line":570,"start_character":0,"end_line":575,"end_character":30},"in_reply_to":"1aa78d24_1b13deb9","updated":"2016-07-05 16:37:58.000000000","message":"*facepalm* I don\u0027t know what I was thinking when I did my global API_VERSION hack, this is much better. Thank you, done!","commit_id":"67d6683a42cbcb74e2c8ff259882183f002ae92c"}]}
