From da3c3bde24a0263a9ff3769a5fa67e2aff8f3784 Mon Sep 17 00:00:00 2001 From: Eric Fried Date: Tue, 5 Nov 2019 08:58:58 -0600 Subject: [PATCH] image: autogenerate docs $namespace = openstack.image.v{1|2} The subcommand documents for $namespace were hardcoded and thus prone to drift over time. This commit removes the hardcoded content and uses the autoprogram-cliff directive to generate them automatically from the subcommand configuration classes. Some reorganization happened here. The `image` subcommand name is shared by image v1 and v2. Previously the hardcoded document had them combined and interleaved. Attempting to preserve this with autoprogram-cliff would have required significant additional infrastructure. However, since most readers care completely about one and not at all about the other, we instead split the v1 and v2 versions of these commands into separate pages. In case links to the old pages exist in the wild, they are preserved, but moved (with redirects) to a hidden directory, and populated simply with links to the new version-specific generated documents. Change-Id: I24dc6dc10671c7f1267c27002542f61f8a3c18ae --- doc/source/_extra/.htaccess | 6 +- doc/source/cli/_hidden/image.rst | 13 + doc/source/cli/command-objects/image-v1.rst | 6 + doc/source/cli/command-objects/image-v2.rst | 6 + doc/source/cli/command-objects/image.rst | 650 -------------------- doc/test/redirect-tests.txt | 1 + 6 files changed, 30 insertions(+), 652 deletions(-) create mode 100644 doc/source/cli/_hidden/image.rst create mode 100644 doc/source/cli/command-objects/image-v1.rst create mode 100644 doc/source/cli/command-objects/image-v2.rst delete mode 100644 doc/source/cli/command-objects/image.rst diff --git a/doc/source/_extra/.htaccess b/doc/source/_extra/.htaccess index 1ac063cc3..8c0a00542 100644 --- a/doc/source/_extra/.htaccess +++ b/doc/source/_extra/.htaccess @@ -9,6 +9,8 @@ redirectmatch 301 ^/python-openstackclient/([^/]+)/specs/([^/.]+).html$ /python- redirectmatch 301 ^/python-openstackclient/([^/]+)/(command-(beta|errors|logs|options|wrappers)|developing|humaninterfaceguide|plugins).html$ /python-openstackclient/$1/contributor/$2.html redirectmatch 301 ^/python-openstackclient/([^/]+)/cli/plugin-commands.html$ /python-openstackclient/$1/cli/plugin-commands/index.html -# Identity pages were split into -v2 and -v3 for common subcommand names. +# For common subcommand names: +# - identity pages were split into -v2 and -v3 +# - image pages were split into -v1 and -v2 # The unversioned page is hidden but contains links to the versioned pages so links in the wild redirect somewhere sane. -redirectmatch 301 ^/python-openstackclient/([^/]+)/cli/command-objects/(ec2-credentials|endpoint|project|role|service|token|user).html$ /python-openstackclient/$1/cli/_hidden/$2.html +redirectmatch 301 ^/python-openstackclient/([^/]+)/cli/command-objects/(ec2-credentials|endpoint|image|project|role|service|token|user).html$ /python-openstackclient/$1/cli/_hidden/$2.html diff --git a/doc/source/cli/_hidden/image.rst b/doc/source/cli/_hidden/image.rst new file mode 100644 index 000000000..85ffde6f3 --- /dev/null +++ b/doc/source/cli/_hidden/image.rst @@ -0,0 +1,13 @@ +===== +image +===== + +.. NOTE(efried): This page is hidden from the main TOC; it's here so links in + the wild redirect somewhere sane, because previously identity v2 and v3 were + combined in a single page. + +.. toctree:: + :maxdepth: 2 + + ../command-objects/image-v1 + ../command-objects/image-v2 diff --git a/doc/source/cli/command-objects/image-v1.rst b/doc/source/cli/command-objects/image-v1.rst new file mode 100644 index 000000000..4f7edc432 --- /dev/null +++ b/doc/source/cli/command-objects/image-v1.rst @@ -0,0 +1,6 @@ +======== +image v1 +======== + +.. autoprogram-cliff:: openstack.image.v1 + :command: image * diff --git a/doc/source/cli/command-objects/image-v2.rst b/doc/source/cli/command-objects/image-v2.rst new file mode 100644 index 000000000..473b26d07 --- /dev/null +++ b/doc/source/cli/command-objects/image-v2.rst @@ -0,0 +1,6 @@ +======== +image v2 +======== + +.. autoprogram-cliff:: openstack.image.v2 + :command: image * diff --git a/doc/source/cli/command-objects/image.rst b/doc/source/cli/command-objects/image.rst deleted file mode 100644 index 459a07702..000000000 --- a/doc/source/cli/command-objects/image.rst +++ /dev/null @@ -1,650 +0,0 @@ -===== -image -===== - -Image v1, v2 - -image add project ------------------ - -*Only supported for Image v2* - -Associate project with image - -.. program:: image add project -.. code:: bash - - openstack image add project - [--project-domain ] - - - -.. option:: --project-domain - - Domain the project belongs to (name or ID). - This can be used in case collisions between project names exist. - -.. _image_add_project-image: -.. describe:: - - Image to share (name or ID). - -.. _image_add_project-project: -.. describe:: - - Project to associate with image (ID) - -image create ------------- - -*Image v1, v2* - -Create/upload an image - -.. program:: image create -.. code:: bash - - openstack image create - [--id ] - [--store ] - [--container-format ] - [--disk-format ] - [--size ] - [--min-disk ] - [--min-ram ] - [--location ] - [--copy-from ] - [--file | --volume ] - [--force] - [--checksum ] - [--protected | --unprotected] - [--public | --private | --community | --shared] - [--property [...] ] - [--tag [...] ] - [--project ] - [--project-domain ] - - -.. option:: --id - - Image ID to reserve - -.. option:: --store - - Upload image to this store - - *Image version 1 only.* - -.. option:: --container-format - - Image container format. The supported options are: ami, ari, aki, - bare, docker, ova, ovf. The default format is: bare - -.. option:: --disk-format - - Image disk format. The supported options are: ami, ari, aki, vhd, vmdk, - raw, qcow2, vhdx, vdi, iso, and ploop. The default format is: raw - -.. option:: --size - - Image size, in bytes (only used with :option:`--location` and :option:`--copy-from`) - - *Image version 1 only.* - -.. option:: --min-disk - - Minimum disk size needed to boot image, in gigabytes - -.. option:: --min-ram - - Minimum RAM size needed to boot image, in megabytes - -.. option:: --location - - Download image from an existing URL - - *Image version 1 only.* - -.. option:: --copy-from - - Copy image from the data store (similar to :option:`--location`) - - *Image version 1 only.* - -.. option:: --file - - Upload image from local file - -.. option:: --volume - - Create image from a volume - -.. option:: --force - - Force image creation if volume is in use (only meaningful with :option:`--volume`) - -.. option:: --checksum - - Image hash used for verification - - *Image version 1 only.* - -.. option:: --protected - - Prevent image from being deleted - -.. option:: --unprotected - - Allow image to be deleted (default) - -.. option:: --public - - Image is accessible to the public - -.. option:: --private - - Image is inaccessible to the public (default) - -.. option:: --community - - Image is accessible to the community - -.. option:: --shared - - Image can be shared - -.. option:: --property - - Set a property on this image (repeat option to set multiple properties) - -.. option:: --tag - - Set a tag on this image (repeat option to set multiple tags) - - .. versionadded:: 2 - -.. option:: --project - - Set an alternate project on this image (name or ID). - Previously known as `--owner`. - -.. option:: --project-domain - - Domain the project belongs to (name or ID). - This can be used in case collisions between project names exist. - - .. versionadded:: 2 - -.. _image_create-image-name: -.. describe:: - - New image name - -image delete ------------- - -Delete image(s) - -.. program:: image delete -.. code:: bash - - openstack image delete - - -.. _image_delete-image: -.. describe:: - - Image(s) to delete (name or ID) - -image list ----------- - -List available images - -.. program:: image list -.. code:: bash - - openstack image list - [--public | --private | --community | --shared] - [--property ] - [--name ] - [--status ] - [--member-status ] - [--tag ] - [--long] - [--sort [:]] - [--limit ] - [--marker ] - -.. option:: --public - - List only public images - -.. option:: --private - - List only private images - -.. option:: --community - - List only community images - - *Image version 2 only.* - -.. option:: --shared - - List only shared images - - *Image version 2 only.* - -.. option:: --property - - Filter output based on property - -.. option:: --name - - Filter images based on name - - *Image version 2 only.* - -.. option:: --status - - Filter images based on status - - *Image version 2 only* - -.. option:: --member-status - - Filter images based on member status - - *Image version 2 only* - -.. option:: --tag - - Filter images based on tag - - *Image version 2 only* - -.. option:: --long - - List additional fields in output - -.. option:: --sort [:] - - Sort output by selected keys and directions(asc or desc) (default: name:asc), - multiple keys and directions can be specified separated by comma - -.. option:: --limit - - Maximum number of images to display. - - *Image version 2 only* - -.. option:: --marker - - The last image of the previous page. Display list of images - after marker. Display all images if not specified. (name or ID) - - *Image version 2 only* - -image member list ------------------ - -List projects associated with image - -.. program:: image member list -.. code:: bash - - openstack image member list - - -.. _image_member_list-image: -.. describe:: - - Image(s) to view members for (name or ID) - -image remove project --------------------- - -*Only supported for Image v2* - -Disassociate project with image - -.. program:: image remove project -.. code:: bash - - openstack image remove project - [--project-domain ] - - - -.. option:: --project-domain - - Domain the project belongs to (name or ID). - This can be used in case collisions between project names exist. - -.. _image_remove_project: -.. describe:: - - Image to unshare (name or ID). - -.. describe:: - - Project to disassociate with image (name or ID) - -image save ----------- - -Save an image locally - -.. program:: image save -.. code:: bash - - openstack image save - --file - - -.. option:: --file - - Downloaded image save filename (default: stdout) - -.. _image_save-image: -.. describe:: - - Image to save (name or ID) - -image set ---------- - -*Image v1, v2* - -Set image properties - -.. program:: image set -.. code:: bash - - openstack image set - [--name ] - [--min-disk ] - [--min-ram ] - [--container-format ] - [--disk-format ] - [--size ] - [--protected | --unprotected] - [--public | --private | --community | --shared] - [--store ] - [--location ] - [--copy-from ] - [--file ] - [--volume ] - [--force] - [--checksum ] - [--stdin] - [--property [...] ] - [--tag [...] ] - [--architecture ] - [--instance-id ] - [--kernel-id ] - [--os-distro ] - [--os-version ] - [--ramdisk-id ] - [--deactivate | --activate] - [--project ] - [--project-domain ] - [--accept | --reject | --pending] - - -.. option:: --name - - New image name - -.. option:: --min-disk - - Minimum disk size needed to boot image, in gigabytes - -.. option:: --min-ram - - Minimum RAM size needed to boot image, in megabytes - -.. option:: --container-format - - Image container format. The supported options are: ami, ari, aki, - bare, docker, ova, ovf. - -.. option:: --disk-format - - Image disk format. The supported options are: ami, ari, aki, vhd, vmdk, - raw, qcow2, vhdx, vdi, iso, and ploop. - -.. option:: --size - - Size of image data (in bytes) - - *Image version 1 only.* - -.. option:: --protected - - Prevent image from being deleted - -.. option:: --unprotected - - Allow image to be deleted (default) - -.. option:: --public - - Image is accessible to the public - -.. option:: --private - - Image is inaccessible to the public (default) - -.. option:: --community - - Image is accessible to the community - -.. option:: --shared - - Image can be shared - -.. option:: --store - - Upload image to this store - - *Image version 1 only.* - -.. option:: --location - - Download image from an existing URL - - *Image version 1 only.* - -.. option:: --copy-from - - Copy image from the data store (similar to :option:`--location`) - - *Image version 1 only.* - -.. option:: --file - - Upload image from local file - - *Image version 1 only.* - -.. option:: --volume - - Update image with a volume - - *Image version 1 only.* - -.. option:: --force - - Force image update if volume is in use (only meaningful with :option:`--volume`) - - *Image version 1 only.* - -.. option:: --checksum - - Image hash used for verification - - *Image version 1 only.* - -.. option:: --stdin - - Allow to read image data from standard input - - *Image version 1 only.* - -.. option:: --property - - Set a property on this image (repeat option to set multiple properties) - - .. versionadded:: 2 - -.. option:: --tag - - Set a tag on this image (repeat option to set multiple tags) - - .. versionadded:: 2 - -.. option:: --architecture - - Operating system architecture - - .. versionadded:: 2 - -.. option:: --instance-id - - ID of server instance used to create this image - - .. versionadded:: 2 - -.. option:: --kernel-id - - ID of kernel image used to boot this disk image - - .. versionadded:: 2 - -.. option:: --os-distro - - Operating system distribution name - - .. versionadded:: 2 - -.. option:: --os-version - - Operating system distribution version - - .. versionadded:: 2 - -.. option:: --ramdisk-id - - ID of ramdisk image used to boot this disk image - - .. versionadded:: 2 - -.. option:: --deactivate - - Deactivate the image. - - .. versionadded:: 2 - -.. option:: --activate - - Activate the image. - - .. versionadded:: 2 - -.. option:: --project - - Set an alternate project on this image (name or ID). - Previously known as `--owner`. - -.. option:: --project-domain - - Domain the project belongs to (name or ID). - This can be used in case collisions between project names exist. - - .. versionadded:: 2 - -.. option:: --accept - - Accept the image membership. - - If `--project` is passed, this will update the membership status for the - given project, otherwise `--project` will default to the project the user - is authenticated to. - - .. versionadded:: 2 - -.. option:: --reject - - Reject the image membership. - - If `--project` is passed, this will update the membership status for the - given project, otherwise `--project` will default to the project the user - is authenticated to. - - .. versionadded:: 2 - -.. option:: --pending - - Reset the image membership to 'pending'. - - If `--project` is passed, this will update the membership status for the - given project, otherwise `--project` will default to the project the user - is authenticated to. - - .. versionadded:: 2 - -.. _image_set-image: -.. describe:: - - Image to modify (name or ID) - -image show ----------- - -Display image details - -.. program:: image show -.. code:: bash - - openstack image show - [--human-readable] - - -.. option:: --human-readable - - Print image size in a human-friendly format. - -.. _image_show-image: -.. describe:: - - Image to display (name or ID) - -image unset ------------ - -*Only supported for Image v2* - -Unset image tags or properties - -.. program:: image unset -.. code:: bash - - openstack image unset - [--tag ] - [--property ] - - -.. option:: --tag - - Unset a tag on this image (repeat option to unset multiple tags) - -.. option:: --property - - Unset a property on this image (repeat option to unset multiple properties) - -.. _image_unset-image: -.. describe:: - - Image to modify (name or ID) diff --git a/doc/test/redirect-tests.txt b/doc/test/redirect-tests.txt index d18660a0b..5ed7c19cb 100644 --- a/doc/test/redirect-tests.txt +++ b/doc/test/redirect-tests.txt @@ -18,6 +18,7 @@ /python-openstackclient/latest/cli/plugin-commands.html 301 /python-openstackclient/latest/cli/plugin-commands/index.html /python-openstackclient/latest/cli/command-objects/ec2-credentials.html 301 /python-openstackclient/latest/cli/_hidden/ec2-credentials.html /python-openstackclient/latest/cli/command-objects/endpoint.html 301 /python-openstackclient/latest/cli/_hidden/endpoint.html +/python-openstackclient/latest/cli/command-objects/image.html 301 /python-openstackclient/latest/cli/_hidden/image.html /python-openstackclient/latest/cli/command-objects/project.html 301 /python-openstackclient/latest/cli/_hidden/project.html /python-openstackclient/latest/cli/command-objects/role.html 301 /python-openstackclient/latest/cli/_hidden/role.html /python-openstackclient/latest/cli/command-objects/service.html 301 /python-openstackclient/latest/cli/_hidden/service.html