)]}'
{"doc/source/cli/command-objects/keypair.rst":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"29884c1c0355e54f5d94d87779ccfa0629dd5669","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":".. describe:: \u003cname\u003e"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    New public or private key name"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"keypair delete"},{"line_number":44,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_78512b30","line":41,"updated":"2018-07-03 10:52:18.000000000","message":"Actually this should be\n\n\"New keypair name\"\n\nI think.","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":26311,"name":"tianhui","email":"tianhui@awcloud.com","username":"tianhui"},"change_message_id":"4c02f4ab280494f29198c4f7ff1a3379da14b20d","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":".. describe:: \u003cname\u003e"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    New public or private key name"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"keypair delete"},{"line_number":44,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_34464ea9","line":41,"in_reply_to":"5f7c97a3_78512b30","updated":"2018-07-04 03:11:47.000000000","message":"Done","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"aa1869c6b7e0378697f108e9f90664db6c1d349d","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    openstack keypair create"},{"line_number":21,"context_line":"        [--public-key \u003cfile\u003e | --private-key \u003cfile\u003e]"},{"line_number":22,"context_line":"        [--key-type \u003ckey-type\u003e]"},{"line_number":23,"context_line":"        \u003cname\u003e"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":".. option:: --public-key \u003cfile\u003e"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_d0715dad","line":22,"range":{"start_line":22,"start_character":21,"end_line":22,"end_character":29},"updated":"2018-07-13 14:47:39.000000000","message":"OSC prefers to use individual options in cases like this rather than arguments, ie --key-type-ssh|--key-type-x509.  I\u0027m open to the actual names, maybe just --ssh and --x509 are obvious enough?","commit_id":"c81b44bcadbe45b44fe6d6502020504724b47f04"},{"author":{"_account_id":26311,"name":"tianhui","email":"tianhui@awcloud.com","username":"tianhui"},"change_message_id":"38514e0eee19b85cb292eb61ebaeaefa0f4b2977","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    openstack keypair create"},{"line_number":21,"context_line":"        [--public-key \u003cfile\u003e | --private-key \u003cfile\u003e]"},{"line_number":22,"context_line":"        [--key-type \u003ckey-type\u003e]"},{"line_number":23,"context_line":"        \u003cname\u003e"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":".. option:: --public-key \u003cfile\u003e"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_ee166858","line":22,"range":{"start_line":22,"start_character":21,"end_line":22,"end_character":29},"in_reply_to":"5f7c97a3_d0715dad","updated":"2018-08-01 09:26:22.000000000","message":"Done","commit_id":"c81b44bcadbe45b44fe6d6502020504724b47f04"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5509e11579b06e491a7d1f497f8b2dca57c521c9","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. option:: --key-type \u003cssh | x509\u003e"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    Keypair type. Can be ssh or x509. Only available starting with"},{"line_number":37,"context_line":"    ``--os-compute-api-version 2.2``."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":".. describe:: \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_5ae748ad","line":36,"updated":"2019-05-01 22:27:46.000000000","message":"Would be good to mention if not specified, the default is ssh. Or change the option above to be:\n\n.. option:: --key-type \u003cssh (default) | x509\u003e\n\nI\u0027m not sure what is standard practice for that kind of thing in OSC docs.","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5133ea7b2cab8aad56cd6f737959ee3bc9ad1a98","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. option:: --key-type \u003cssh | x509\u003e"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    Keypair type. Can be ssh or x509. Only available starting with"},{"line_number":37,"context_line":"    ``--os-compute-api-version 2.2``."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":".. describe:: \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9f560f44_389d0009","line":36,"in_reply_to":"ffb9cba7_5ae748ad","updated":"2020-10-12 11:27:26.000000000","message":"Done","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5509e11579b06e491a7d1f497f8b2dca57c521c9","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":".. describe:: \u003cname\u003e"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    New keypair name"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"keypair delete"},{"line_number":44,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_7aec8c8e","line":41,"updated":"2019-05-01 22:27:46.000000000","message":"This seems unrelated - why did it need to change for this patch?","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5133ea7b2cab8aad56cd6f737959ee3bc9ad1a98","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":".. describe:: \u003cname\u003e"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    New keypair name"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"keypair delete"},{"line_number":44,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9f560f44_589a7412","line":41,"in_reply_to":"ffb9cba7_7aec8c8e","updated":"2020-10-12 11:27:26.000000000","message":"Done","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"}],"openstackclient/compute/v2/keypair.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"29884c1c0355e54f5d94d87779ccfa0629dd5669","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        parser.add_argument("},{"line_number":59,"context_line":"            \u0027--key-type\u0027,"},{"line_number":60,"context_line":"            metavar\u003d\u0027\u003ckey-type\u003e\u0027,"},{"line_number":61,"context_line":"            help\u003d_(\"Keypair type. Can be ssh or x509. (Supported by API \""},{"line_number":62,"context_line":"                   \"versions \u00272.2\u0027 - \u00272.latest\u0027)\")"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_a342340c","line":61,"updated":"2018-07-03 10:52:18.000000000","message":"How about forcing the set of valid option by adding\n\nchoices\u003d[\u0027ssh\u0027,\u0027x509\u0027]\n\nhere? Seems better than sending invalid requests to the API.","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":26311,"name":"tianhui","email":"tianhui@awcloud.com","username":"tianhui"},"change_message_id":"4c02f4ab280494f29198c4f7ff1a3379da14b20d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        parser.add_argument("},{"line_number":59,"context_line":"            \u0027--key-type\u0027,"},{"line_number":60,"context_line":"            metavar\u003d\u0027\u003ckey-type\u003e\u0027,"},{"line_number":61,"context_line":"            help\u003d_(\"Keypair type. Can be ssh or x509. (Supported by API \""},{"line_number":62,"context_line":"                   \"versions \u00272.2\u0027 - \u00272.latest\u0027)\")"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_d4c4ba10","line":61,"in_reply_to":"5f7c97a3_a342340c","updated":"2018-07-04 03:11:47.000000000","message":"Done","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"29884c1c0355e54f5d94d87779ccfa0629dd5669","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        if parsed_args.key_type:"},{"line_number":82,"context_line":"            if compute_client.api_version \u003c api_versions.APIVersion(\"2.2\"):"},{"line_number":83,"context_line":"                msg \u003d _(\"--os-compute-api-version 2.2 or later is required\")"},{"line_number":84,"context_line":"                raise exceptions.CommandError(msg)"},{"line_number":85,"context_line":"            keypair \u003d compute_client.keypairs.create("},{"line_number":86,"context_line":"                parsed_args.name,"},{"line_number":87,"context_line":"                public_key\u003dpublic_key,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_833db8bd","line":84,"updated":"2018-07-03 10:52:18.000000000","message":"I don\u0027t know whether there has been a general approach set for this, but I don\u0027t think that this behaviour is very user-friendly. If I set this option, I thereby specifiy implicitly that I want to use an API version that supports it. So instead of placing that added burden onto the user, can\u0027t we be helpful and set --os-compute-api-version to 2.2 here if it is unset?","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"19fe3e8bc5362642c5a58b162e84e1e892217da4","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        if parsed_args.key_type:"},{"line_number":82,"context_line":"            if compute_client.api_version \u003c api_versions.APIVersion(\"2.2\"):"},{"line_number":83,"context_line":"                msg \u003d _(\"--os-compute-api-version 2.2 or later is required\")"},{"line_number":84,"context_line":"                raise exceptions.CommandError(msg)"},{"line_number":85,"context_line":"            keypair \u003d compute_client.keypairs.create("},{"line_number":86,"context_line":"                parsed_args.name,"},{"line_number":87,"context_line":"                public_key\u003dpublic_key,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_b81ede5c","line":84,"in_reply_to":"5f7c97a3_833db8bd","updated":"2018-07-03 13:41:43.000000000","message":"++, people tend to be really confused by this --os-\u003cxxx\u003e-api-version stuff. we ended up with defaulting to the latest supported version in ironicclient. if OSC does not do that (you should), then we probably need to default to 2.2 here and only fail if a lower version was requested explicitly.","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":26311,"name":"tianhui","email":"tianhui@awcloud.com","username":"tianhui"},"change_message_id":"4c02f4ab280494f29198c4f7ff1a3379da14b20d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        if parsed_args.key_type:"},{"line_number":82,"context_line":"            if compute_client.api_version \u003c api_versions.APIVersion(\"2.2\"):"},{"line_number":83,"context_line":"                msg \u003d _(\"--os-compute-api-version 2.2 or later is required\")"},{"line_number":84,"context_line":"                raise exceptions.CommandError(msg)"},{"line_number":85,"context_line":"            keypair \u003d compute_client.keypairs.create("},{"line_number":86,"context_line":"                parsed_args.name,"},{"line_number":87,"context_line":"                public_key\u003dpublic_key,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_9498821a","line":84,"in_reply_to":"5f7c97a3_b81ede5c","updated":"2018-07-04 03:11:47.000000000","message":"in this patch https://review.openstack.org/#/c/575390/ ,\nit also unset default version","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"29884c1c0355e54f5d94d87779ccfa0629dd5669","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                key_type\u003dparsed_args.key_type,"},{"line_number":89,"context_line":"            )"},{"line_number":90,"context_line":"        else:"},{"line_number":91,"context_line":"            keypair \u003d compute_client.keypairs.create("},{"line_number":92,"context_line":"                parsed_args.name,"},{"line_number":93,"context_line":"                public_key\u003dpublic_key,"},{"line_number":94,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_e36fccc1","line":91,"updated":"2018-07-03 10:52:18.000000000","message":"Maybe adding a kwargs construct would be easier than duplicating this whole call?","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":26311,"name":"tianhui","email":"tianhui@awcloud.com","username":"tianhui"},"change_message_id":"4c02f4ab280494f29198c4f7ff1a3379da14b20d","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                key_type\u003dparsed_args.key_type,"},{"line_number":89,"context_line":"            )"},{"line_number":90,"context_line":"        else:"},{"line_number":91,"context_line":"            keypair \u003d compute_client.keypairs.create("},{"line_number":92,"context_line":"                parsed_args.name,"},{"line_number":93,"context_line":"                public_key\u003dpublic_key,"},{"line_number":94,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_f4c9b624","line":91,"in_reply_to":"5f7c97a3_e36fccc1","updated":"2018-07-04 03:11:47.000000000","message":"Done","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5509e11579b06e491a7d1f497f8b2dca57c521c9","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                   \"print private key in console.\")"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":"        parser.add_argument("},{"line_number":59,"context_line":"            \u0027--key-type\u0027,"},{"line_number":60,"context_line":"            metavar\u003d\u0027\u003ckey-type\u003e\u0027,"},{"line_number":61,"context_line":"            choices\u003d[\u0027ssh\u0027, \u0027x509\u0027],"},{"line_number":62,"context_line":"            help\u003d_(\"Keypair type. Can be ssh or x509. (Supported by API \""}],"source_content_type":"text/x-python","patch_set":7,"id":"ffb9cba7_9a4dc09b","line":59,"range":{"start_line":59,"start_character":13,"end_line":59,"end_character":23},"updated":"2019-05-01 22:27:46.000000000","message":"nit: why --key-type rather than just --type? Isn\u0027t the \u0027key\u0027 prefix implied given it\u0027s a keypair resource?","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5133ea7b2cab8aad56cd6f737959ee3bc9ad1a98","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                   \"print private key in console.\")"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":"        parser.add_argument("},{"line_number":59,"context_line":"            \u0027--key-type\u0027,"},{"line_number":60,"context_line":"            metavar\u003d\u0027\u003ckey-type\u003e\u0027,"},{"line_number":61,"context_line":"            choices\u003d[\u0027ssh\u0027, \u0027x509\u0027],"},{"line_number":62,"context_line":"            help\u003d_(\"Keypair type. Can be ssh or x509. (Supported by API \""}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_78d498bb","line":59,"range":{"start_line":59,"start_character":13,"end_line":59,"end_character":23},"in_reply_to":"ffb9cba7_9a4dc09b","updated":"2020-10-12 11:27:26.000000000","message":"Done","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5509e11579b06e491a7d1f497f8b2dca57c521c9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            \u0027--key-type\u0027,"},{"line_number":60,"context_line":"            metavar\u003d\u0027\u003ckey-type\u003e\u0027,"},{"line_number":61,"context_line":"            choices\u003d[\u0027ssh\u0027, \u0027x509\u0027],"},{"line_number":62,"context_line":"            help\u003d_(\"Keypair type. Can be ssh or x509. (Supported by API \""},{"line_number":63,"context_line":"                   \"versions \u00272.2\u0027 - \u00272.latest\u0027)\")"},{"line_number":64,"context_line":"        )"},{"line_number":65,"context_line":"        return parser"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ffb9cba7_faf71c58","line":63,"range":{"start_line":62,"start_character":54,"end_line":63,"end_character":48},"updated":"2019-05-01 22:27:46.000000000","message":"This is copied from novaclient but you should say the same thing as in the docs, i.e. use --os-compute-api-version.","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5133ea7b2cab8aad56cd6f737959ee3bc9ad1a98","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            \u0027--key-type\u0027,"},{"line_number":60,"context_line":"            metavar\u003d\u0027\u003ckey-type\u003e\u0027,"},{"line_number":61,"context_line":"            choices\u003d[\u0027ssh\u0027, \u0027x509\u0027],"},{"line_number":62,"context_line":"            help\u003d_(\"Keypair type. Can be ssh or x509. (Supported by API \""},{"line_number":63,"context_line":"                   \"versions \u00272.2\u0027 - \u00272.latest\u0027)\")"},{"line_number":64,"context_line":"        )"},{"line_number":65,"context_line":"        return parser"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_38cfc028","line":63,"range":{"start_line":62,"start_character":54,"end_line":63,"end_character":48},"in_reply_to":"ffb9cba7_faf71c58","updated":"2020-10-12 11:27:26.000000000","message":"There are a couple of existing uses of this so I left this as-is","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a94b9ac71ba7db29ddac905db349207920967040","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def take_action(self, parsed_args):"},{"line_number":162,"context_line":"        compute_client \u003d self.app.client_manager.compute"},{"line_number":163,"context_line":"        columns \u003d ("},{"line_number":164,"context_line":"            \"Name\","},{"line_number":165,"context_line":"            \"Fingerprint\""},{"line_number":166,"context_line":"        )"},{"line_number":167,"context_line":"        data \u003d compute_client.keypairs.list()"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        return (columns,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffb9cba7_3a2374bf","line":166,"range":{"start_line":163,"start_character":8,"end_line":166,"end_character":9},"updated":"2019-05-01 22:30:20.000000000","message":"If --os-compute-api-version \u003e\u003d 2.2 you can also include \"Type\" in here.","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5133ea7b2cab8aad56cd6f737959ee3bc9ad1a98","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def take_action(self, parsed_args):"},{"line_number":162,"context_line":"        compute_client \u003d self.app.client_manager.compute"},{"line_number":163,"context_line":"        columns \u003d ("},{"line_number":164,"context_line":"            \"Name\","},{"line_number":165,"context_line":"            \"Fingerprint\""},{"line_number":166,"context_line":"        )"},{"line_number":167,"context_line":"        data \u003d compute_client.keypairs.list()"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        return (columns,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_f8c8a821","line":166,"range":{"start_line":163,"start_character":8,"end_line":166,"end_character":9},"in_reply_to":"ffb9cba7_3a2374bf","updated":"2020-10-12 11:27:26.000000000","message":"Done","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"}],"openstackclient/tests/unit/compute/v2/fakes.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"29884c1c0355e54f5d94d87779ccfa0629dd5669","unresolved":false,"context_lines":[{"line_number":873,"context_line":"        # Set default attributes."},{"line_number":874,"context_line":"        keypair_info \u003d {"},{"line_number":875,"context_line":"            \u0027name\u0027: \u0027keypair-name-\u0027 + uuid.uuid4().hex,"},{"line_number":876,"context_line":"            \u0027key_type\u0027: \u0027ssh\u0027,"},{"line_number":877,"context_line":"            \u0027fingerprint\u0027: \u0027dummy\u0027,"},{"line_number":878,"context_line":"            \u0027public_key\u0027: \u0027dummy\u0027,"},{"line_number":879,"context_line":"            \u0027user_id\u0027: \u0027user\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_c37ad075","line":876,"updated":"2018-07-03 10:52:18.000000000","message":"IIUC you\u0027ll need a patch to openstacksdk in order for this to match what\u0027s happening in the real world.","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"}],"openstackclient/tests/unit/compute/v2/test_keypair.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"29884c1c0355e54f5d94d87779ccfa0629dd5669","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                               \u0027APIVersion\u0027,"},{"line_number":225,"context_line":"                               return_value\u003d2.2):"},{"line_number":226,"context_line":"            self.assertRaises(exceptions.CommandError, self.cmd.take_action,"},{"line_number":227,"context_line":"                              parsed_args)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"class TestKeypairDelete(TestKeypair):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_438ec079","line":227,"updated":"2018-07-03 10:52:18.000000000","message":"I\u0027d like to see a test for generating an x509 keypair, too.","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":26311,"name":"tianhui","email":"tianhui@awcloud.com","username":"tianhui"},"change_message_id":"4c02f4ab280494f29198c4f7ff1a3379da14b20d","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                               \u0027APIVersion\u0027,"},{"line_number":225,"context_line":"                               return_value\u003d2.2):"},{"line_number":226,"context_line":"            self.assertRaises(exceptions.CommandError, self.cmd.take_action,"},{"line_number":227,"context_line":"                              parsed_args)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"class TestKeypairDelete(TestKeypair):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_54d8aaee","line":227,"in_reply_to":"5f7c97a3_438ec079","updated":"2018-07-04 03:11:47.000000000","message":"Done","commit_id":"1fa8fb7ce9c37ed1d845c4dd8126c5e6ac9b3d6d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5509e11579b06e491a7d1f497f8b2dca57c521c9","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def setUp(self):"},{"line_number":44,"context_line":"        super(TestKeypairCreate, self).setUp()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        self.columns \u003d ("},{"line_number":47,"context_line":"            \u0027fingerprint\u0027,"},{"line_number":48,"context_line":"            \u0027key_type\u0027,"},{"line_number":49,"context_line":"            \u0027name\u0027,"},{"line_number":50,"context_line":"            \u0027user_id\u0027"},{"line_number":51,"context_line":"        )"},{"line_number":52,"context_line":"        self.data \u003d ("},{"line_number":53,"context_line":"            self.keypair.fingerprint,"},{"line_number":54,"context_line":"            self.keypair.key_type,"},{"line_number":55,"context_line":"            self.keypair.name,"},{"line_number":56,"context_line":"            self.keypair.user_id"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # Get the command object to test"},{"line_number":60,"context_line":"        self.cmd \u003d keypair.CreateKeypair(self.app, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffb9cba7_5a6ae8ec","line":57,"range":{"start_line":46,"start_character":0,"end_line":57,"end_character":9},"updated":"2019-05-01 22:27:46.000000000","message":"Why do these need to change for all tests? Is it because of the change to the fake keypair info? This change could be a lot smaller if there were just a set of *new* tests dealing with 2.2 and the key-type option, right?","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5133ea7b2cab8aad56cd6f737959ee3bc9ad1a98","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def setUp(self):"},{"line_number":44,"context_line":"        super(TestKeypairCreate, self).setUp()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        self.columns \u003d ("},{"line_number":47,"context_line":"            \u0027fingerprint\u0027,"},{"line_number":48,"context_line":"            \u0027key_type\u0027,"},{"line_number":49,"context_line":"            \u0027name\u0027,"},{"line_number":50,"context_line":"            \u0027user_id\u0027"},{"line_number":51,"context_line":"        )"},{"line_number":52,"context_line":"        self.data \u003d ("},{"line_number":53,"context_line":"            self.keypair.fingerprint,"},{"line_number":54,"context_line":"            self.keypair.key_type,"},{"line_number":55,"context_line":"            self.keypair.name,"},{"line_number":56,"context_line":"            self.keypair.user_id"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # Get the command object to test"},{"line_number":60,"context_line":"        self.cmd \u003d keypair.CreateKeypair(self.app, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_d8f8444b","line":57,"range":{"start_line":46,"start_character":0,"end_line":57,"end_character":9},"in_reply_to":"ffb9cba7_5a6ae8ec","updated":"2020-10-12 11:27:26.000000000","message":"\u003e Why do these need to change for all tests? Is it because of the\n \u003e change to the fake keypair info?\n\nYup.\n\n \u003e This change could be a lot smaller\n \u003e if there were just a set of *new* tests dealing with 2.2 and the\n \u003e key-type option, right?\n\nIt\u0027s not much smaller if this is done so I retained this.","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5509e11579b06e491a7d1f497f8b2dca57c521c9","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            with mock.patch.object(novaclient.api_versions,"},{"line_number":226,"context_line":"                                   \u0027APIVersion\u0027,"},{"line_number":227,"context_line":"                                   return_value\u003d2.2):"},{"line_number":228,"context_line":"                self.assertRaises(exceptions.CommandError,"},{"line_number":229,"context_line":"                                  self.cmd.take_action,"},{"line_number":230,"context_line":"                                  parsed_args)"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ffb9cba7_daa81821","line":228,"updated":"2019-05-01 22:27:46.000000000","message":"Assert the error is what you expect by doing something like:\n\nex \u003d self.assertRaises(exceptions.CommandError, ...)\nself.assertIn(\u0027--os-compute-api-version 2.2 or later is required\u0027, six.text_type(ex))","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5133ea7b2cab8aad56cd6f737959ee3bc9ad1a98","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            with mock.patch.object(novaclient.api_versions,"},{"line_number":226,"context_line":"                                   \u0027APIVersion\u0027,"},{"line_number":227,"context_line":"                                   return_value\u003d2.2):"},{"line_number":228,"context_line":"                self.assertRaises(exceptions.CommandError,"},{"line_number":229,"context_line":"                                  self.cmd.take_action,"},{"line_number":230,"context_line":"                                  parsed_args)"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_f8f1c86b","line":228,"in_reply_to":"ffb9cba7_daa81821","updated":"2020-10-12 11:27:26.000000000","message":"Done","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5509e11579b06e491a7d1f497f8b2dca57c521c9","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            )"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"class TestKeypairList(TestKeypair):"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    # Return value of self.keypairs_mock.list()."},{"line_number":311,"context_line":"    keypairs \u003d compute_fakes.FakeKeypair.create_keypairs(count\u003d1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffb9cba7_3a75b4cb","line":308,"updated":"2019-05-01 22:27:46.000000000","message":"The type is also in the keypair list response for 2.2, so why isn\u0027t that handled in this change?\n\nhttps://developer.openstack.org/api-ref/compute/?expanded\u003dlist-keypairs-detail#list-keypairs","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5133ea7b2cab8aad56cd6f737959ee3bc9ad1a98","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            )"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"class TestKeypairList(TestKeypair):"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    # Return value of self.keypairs_mock.list()."},{"line_number":311,"context_line":"    keypairs \u003d compute_fakes.FakeKeypair.create_keypairs(count\u003d1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_58e554a3","line":308,"in_reply_to":"ffb9cba7_3a75b4cb","updated":"2020-10-12 11:27:26.000000000","message":"Done","commit_id":"2f9a192323848bf9545080c78ba9dc0e0831db2b"}]}
