)]}'
{"doc/source/cli/command-objects/keypair.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","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":"        [--user-id \u003cfile\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":2,"id":"bfb3d3c7_272c0698","line":22,"updated":"2019-05-23 14:52:43.000000000","message":"ack: https://developer.openstack.org/api-ref/compute/?expanded\u003dcreate-or-import-keypair-detail#create-or-import-keypair","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":49,"context_line":".. code:: bash"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    openstack keypair delete"},{"line_number":52,"context_line":"        [--user-id \u003cfile\u003e]"},{"line_number":53,"context_line":"        \u003ckey\u003e [\u003ckey\u003e ...]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":".. option:: --user-id \u003cfile\u003e"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bfb3d3c7_e7258eac","line":52,"updated":"2019-05-23 14:52:43.000000000","message":"ack: https://developer.openstack.org/api-ref/compute/?expanded\u003ddelete-keypair-detail#delete-keypair","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":70,"context_line":".. code:: bash"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    openstack keypair list"},{"line_number":73,"context_line":"        [--user-id \u003cfile\u003e]"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":".. option:: --user-id \u003cfile\u003e"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"bfb3d3c7_a73796e3","line":73,"updated":"2019-05-23 14:52:43.000000000","message":"ack: https://developer.openstack.org/api-ref/compute/?expanded\u003dlist-keypairs-detail#list-keypairs","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    openstack keypair show"},{"line_number":89,"context_line":"        [--public-key]"},{"line_number":90,"context_line":"        [--user-id \u003cfile\u003e]"},{"line_number":91,"context_line":"        \u003ckey\u003e"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":".. option:: --public-key"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bfb3d3c7_074ea26e","line":90,"updated":"2019-05-23 14:52:43.000000000","message":"ack: https://developer.openstack.org/api-ref/compute/?expanded\u003dshow-keypair-details-detail#show-keypair-details","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"}],"openstackclient/compute/v2/keypair.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1900096fcd7e1e8f2540eb45f5bf17487766fe94","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            help\u003d_(\"Filename for private key to save. If not used, \""},{"line_number":56,"context_line":"                   \"print private key in console.\")"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":"        key_group.add_argument("},{"line_number":59,"context_line":"            \u0027--user-id\u0027,"},{"line_number":60,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":61,"context_line":"            help\u003d_(\"The user_id for a keypair. This allows administrative \""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_eaa33842","line":58,"updated":"2018-06-19 14:35:51.000000000","message":"Please see how we do user look up for other commands, like this one: https://github.com/openstack/python-openstackclient/blob/master/openstackclient/compute/v2/server.py#L1035-L1040\n\nit should have a ``user`` and ``user-domain`` option.","commit_id":"3cad84a1c8ba1162d6ee098db3a40a598a24144d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":61,"context_line":"            help\u003d_(\"The user_id for a keypair. This allows administrative \""},{"line_number":62,"context_line":"                   \"users to upload keys for other users than themselves. \""},{"line_number":63,"context_line":"                   \"(Supported by API versions \u00272.10\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":2,"id":"bfb3d3c7_e75a6e28","line":63,"range":{"start_line":63,"start_character":20,"end_line":63,"end_character":67},"updated":"2019-05-23 14:52:43.000000000","message":"This is the wording we use in nova CLI but in OSC we generally say something like what you have in the docs, i.e. \"Only available starting with ``--os-compute-api-version 2.10``.\"","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cc4281d758cccc2278e94d2bee16448b445c87ea","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":61,"context_line":"            help\u003d_(\"The user_id for a keypair. This allows administrative \""},{"line_number":62,"context_line":"                   \"users to upload keys for other users than themselves. \""},{"line_number":63,"context_line":"                   \"(Supported by API versions \u00272.10\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":2,"id":"1f621f24_5bbb1bc3","line":63,"range":{"start_line":63,"start_character":20,"end_line":63,"end_character":67},"in_reply_to":"bfb3d3c7_e75a6e28","updated":"2020-11-02 12:55:27.000000000","message":"Done","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        user_id \u003d parsed_args.user_id"},{"line_number":85,"context_line":"        if user_id:"},{"line_number":86,"context_line":"            if compute_client.api_version \u003c api_versions.APIVersion(\u00272.10\u0027):"},{"line_number":87,"context_line":"                msg \u003d _(\u0027--os-compute-api-version 2.10 or later is required \u0027"},{"line_number":88,"context_line":"                        \u0027for --user-id option\u0027)"},{"line_number":89,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_67699e89","line":86,"updated":"2019-05-23 14:52:43.000000000","message":"I don\u0027t see negative tests for any of these commands to specify --user-id with a version less than 2.10.","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cc4281d758cccc2278e94d2bee16448b445c87ea","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        user_id \u003d parsed_args.user_id"},{"line_number":85,"context_line":"        if user_id:"},{"line_number":86,"context_line":"            if compute_client.api_version \u003c api_versions.APIVersion(\u00272.10\u0027):"},{"line_number":87,"context_line":"                msg \u003d _(\u0027--os-compute-api-version 2.10 or later is required \u0027"},{"line_number":88,"context_line":"                        \u0027for --user-id option\u0027)"},{"line_number":89,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_9bae5396","line":86,"in_reply_to":"bfb3d3c7_67699e89","updated":"2020-11-02 12:55:27.000000000","message":"Done","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":142,"context_line":"            help\u003d_(\"The user_id for a keypair. This allows administrative \""},{"line_number":143,"context_line":"                   \"users to delete keys for other users than themselves.\""},{"line_number":144,"context_line":"                   \"(Supported by API versions \u00272.10\u0027 - \u00272.latest\u0027)\")"},{"line_number":145,"context_line":"        )"},{"line_number":146,"context_line":"        return parser"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_077782a2","line":144,"updated":"2019-05-23 14:52:43.000000000","message":"same","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        user_id \u003d parsed_args.user_id"},{"line_number":154,"context_line":"        if user_id:"},{"line_number":155,"context_line":"            if compute_client.api_version \u003c api_versions.APIVersion(\u00272.10\u0027):"},{"line_number":156,"context_line":"                msg \u003d _(\u0027--os-compute-api-version 2.10 or later is required \u0027"},{"line_number":157,"context_line":"                        \u0027for --user-id option\u0027)"},{"line_number":158,"context_line":"                raise exceptions.CommandError(msg)"},{"line_number":159,"context_line":"            cli_kwargs[\u0027user_id\u0027] \u003d user_id"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        for n in parsed_args.name:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_47649ae4","line":158,"range":{"start_line":155,"start_character":12,"end_line":158,"end_character":50},"updated":"2019-05-23 14:52:43.000000000","message":"nit: maybe it\u0027d be good to pull this into a module-level helper method called _validate_user_id or something? Just to avoid the copy/paste.","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":186,"context_line":"            help\u003d_(\"The user_id for a keypair. This allows administrative \""},{"line_number":187,"context_line":"                   \"users to delete keys for other users than themselves.\""},{"line_number":188,"context_line":"                   \"(Supported by API versions \u00272.10\u0027 - \u00272.latest\u0027)\")"},{"line_number":189,"context_line":"        )"},{"line_number":190,"context_line":"        return parser"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_079c62be","line":188,"updated":"2019-05-23 14:52:43.000000000","message":"same","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":235,"context_line":"            help\u003d_(\"The user_id for a keypair. This allows administrative \""},{"line_number":236,"context_line":"                   \"users to delete keys for other users than themselves.\""},{"line_number":237,"context_line":"                   \"(Supported by API versions \u00272.10\u0027 - \u00272.latest\u0027)\")"},{"line_number":238,"context_line":"        )"},{"line_number":239,"context_line":"        return parser"},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_879852c0","line":237,"updated":"2019-05-23 14:52:43.000000000","message":"same","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        cli_kwargs \u003d {}"},{"line_number":243,"context_line":"        compute_client \u003d self.app.client_manager.compute"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        user_id \u003d parsed_args.user_id"},{"line_number":246,"context_line":"        if user_id:"},{"line_number":247,"context_line":"            if compute_client.api_version \u003c api_versions.APIVersion(\u00272.10\u0027):"},{"line_number":248,"context_line":"                msg \u003d _(\u0027--os-compute-api-version 2.10 or later is required \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_0761c2a9","line":245,"updated":"2019-05-23 14:52:43.000000000","message":"I don\u0027t see a test for the keypair show command with --user-id.","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cc4281d758cccc2278e94d2bee16448b445c87ea","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        cli_kwargs \u003d {}"},{"line_number":243,"context_line":"        compute_client \u003d self.app.client_manager.compute"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        user_id \u003d parsed_args.user_id"},{"line_number":246,"context_line":"        if user_id:"},{"line_number":247,"context_line":"            if compute_client.api_version \u003c api_versions.APIVersion(\u00272.10\u0027):"},{"line_number":248,"context_line":"                msg \u003d _(\u0027--os-compute-api-version 2.10 or later is required \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_bbab4f87","line":245,"in_reply_to":"bfb3d3c7_0761c2a9","updated":"2020-11-02 12:55:27.000000000","message":"Done","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"}],"releasenotes/notes/keypair-user-id-db694210695a0ee0.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a421b903a7c6ec8c9ae2918286aa5df1156c4680","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``--user-id`` option to the ``keypair create``, ``keypair delete``,"},{"line_number":5,"context_line":"    ``keypair list`` and ``keypair show`` commands of keypair. Only"},{"line_number":6,"context_line":"    available starting with ``--os-compute-api-version 2.10``."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"bfb3d3c7_0706a2cf","line":5,"range":{"start_line":5,"start_character":51,"end_line":5,"end_character":61},"updated":"2019-05-23 14:52:43.000000000","message":"nit: you could remove this, it\u0027s redundant","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cc4281d758cccc2278e94d2bee16448b445c87ea","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``--user-id`` option to the ``keypair create``, ``keypair delete``,"},{"line_number":5,"context_line":"    ``keypair list`` and ``keypair show`` commands of keypair. Only"},{"line_number":6,"context_line":"    available starting with ``--os-compute-api-version 2.10``."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1f621f24_5ba4bbb9","line":5,"range":{"start_line":5,"start_character":51,"end_line":5,"end_character":61},"in_reply_to":"bfb3d3c7_0706a2cf","updated":"2020-11-02 12:55:27.000000000","message":"Done","commit_id":"50ecd55ba3b4991c502555f3dd80db10bf89fca3"}]}
