{
  "id": "openstackclient",
  "name": "OpenStackClient",
  "homepage": "https://docs.openstack.org/python-openstackclient/",
  "description": "OpenStack command-line client.",
  "executables": [
    "openstack"
  ],
  "dotfiles": {
    "paths": [
      "~/.config/openstack/clouds-public.yaml"
    ],
    "exclude": [],
    "secret": [
      "~/.config/openstack/clouds.yaml"
    ],
    "side_effect": false
  },
  "commands": {
    "format": 1,
    "label": "OpenStack servers",
    "description": "List compute servers or boot a new one. Authentication comes from clouds.yaml or OS_* environment variables; networks, volumes, images and the other resource commands are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "server",
          "list"
        ],
        "label": "List servers",
        "source": [
          {
            "id": "docs",
            "kind": "manual",
            "url": "https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/server.html",
            "revision": "latest",
            "evidence": "--name <name-regex>: Regular expression to match names\n--status <status>: Search by server status\n--flavor <flavor>: Search by flavor (name or ID)\n--image <image>: Search by image (name or ID)\n--ip <ip-address-regex>: Regular expression to match IP addresses\n--all-projects: Include all projects (admin only)\n--long: List additional fields in output\n--limit <limit>: The maximum number of entries to return per page.\n--sort-column SORT_COLUMN: specify the column(s) to sort the data\n--sort-ascending: sort the column(s) in ascending order\n--sort-descending: sort the column(s) in descending order\n--tags <tag>: Only list servers with the specified tag. Specify multiple times to filter on multiple tags.\n"
          }
        ],
        "field": [
          {
            "id": "name",
            "label": "Name (regex)",
            "type": "string",
            "option": [
              "--name"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "status",
            "label": "Status",
            "type": "string",
            "option": [
              "--status"
            ],
            "suggestions": [
              {
                "value": "ACTIVE",
                "label": "Active"
              },
              {
                "value": "SHUTOFF",
                "label": "Shut off"
              },
              {
                "value": "ERROR",
                "label": "Error"
              },
              {
                "value": "BUILD",
                "label": "Build"
              }
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "flavor",
            "label": "Flavor",
            "type": "string",
            "option": [
              "--flavor"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "image",
            "label": "Image",
            "type": "string",
            "option": [
              "--image"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "ip",
            "label": "IP address (regex)",
            "type": "string",
            "option": [
              "--ip"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "all_projects",
            "label": "All projects",
            "description": "Admin only.",
            "type": "boolean",
            "option": [
              "--all-projects"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "long",
            "label": "Extra columns",
            "type": "boolean",
            "option": [
              "--long"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "sort_column",
            "label": "Sort columns",
            "type": "string",
            "option": [
              "--sort-column"
            ],
            "multiple": true,
            "sources": [
              "docs"
            ]
          },
          {
            "id": "sort_descending",
            "label": "Sort descending",
            "type": "boolean",
            "option": [
              "--sort-descending"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "limit",
            "label": "Page size",
            "type": "integer",
            "option": [
              "--limit"
            ],
            "validation": {
              "min": 1
            },
            "sources": [
              "docs"
            ]
          },
          {
            "id": "tags",
            "label": "Tags",
            "type": "string",
            "option": [
              "--tags"
            ],
            "multiple": true,
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "active",
            "label": "List active servers",
            "fields": [
              "status",
              "long"
            ],
            "set": {
              "status": [
                "ACTIVE"
              ]
            }
          },
          {
            "id": "find",
            "label": "Find by name",
            "fields": [
              "name",
              "long"
            ],
            "required": [
              "name"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "name",
              "status",
              "flavor",
              "image",
              "ip",
              "long"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "all_projects",
              "sort_column",
              "sort_descending",
              "limit",
              "tags"
            ]
          }
        ]
      },
      {
        "path": [
          "server",
          "create"
        ],
        "label": "Create a server",
        "source": [
          {
            "id": "docs",
            "kind": "manual",
            "url": "https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/server.html",
            "revision": "latest",
            "evidence": "--flavor <flavor>: Create server with this flavor (name or ID)\n--image <image>: Create server boot disk from this image (name or ID)\n--network <network>: Create a NIC on the server and connect it to network. Specify option multiple times to create multiple NICs.\n--security-group <security-group>: Security group to associate with ports attached to this server (name or ID) (repeat option to set multiple groups)\n--key-name <key-name>: Keypair to inject into this server\n--user-data <user-data>: User data file to serve from the metadata server\n--availability-zone <zone-name>: Select an availability zone for the server.\n--property <key=value>: Set a property on this server (repeat option to set multiple values)\n--min <count>: Minimum number of servers to launch (default=1)\n--max <count>: Maximum number of servers to launch (default=1)\n--wait: Wait for build to complete\nserver-name: New server name\n"
          }
        ],
        "field": [
          {
            "id": "flavor",
            "label": "Flavor",
            "description": "Name or ID.",
            "type": "string",
            "option": [
              "--flavor"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "image",
            "label": "Image",
            "description": "Name or ID of the boot image.",
            "type": "string",
            "option": [
              "--image"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "network",
            "label": "Networks",
            "description": "Name or ID; repeat to create several NICs.",
            "type": "string",
            "option": [
              "--network"
            ],
            "multiple": true,
            "sources": [
              "docs"
            ]
          },
          {
            "id": "security_group",
            "label": "Security groups",
            "type": "string",
            "option": [
              "--security-group"
            ],
            "multiple": true,
            "sources": [
              "docs"
            ]
          },
          {
            "id": "key_name",
            "label": "Keypair",
            "type": "string",
            "option": [
              "--key-name"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "user_data",
            "label": "User data file",
            "type": "path",
            "option": [
              "--user-data"
            ],
            "path": {
              "kind": "file",
              "role": "input"
            },
            "sources": [
              "docs"
            ]
          },
          {
            "id": "availability_zone",
            "label": "Availability zone",
            "type": "string",
            "option": [
              "--availability-zone"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "property",
            "label": "Properties",
            "description": "key=value; repeatable.",
            "type": "string",
            "option": [
              "--property"
            ],
            "multiple": true,
            "sources": [
              "docs"
            ]
          },
          {
            "id": "min",
            "label": "Minimum count",
            "type": "integer",
            "option": [
              "--min"
            ],
            "validation": {
              "min": 1
            },
            "sources": [
              "docs"
            ]
          },
          {
            "id": "max",
            "label": "Maximum count",
            "type": "integer",
            "option": [
              "--max"
            ],
            "validation": {
              "min": 1
            },
            "sources": [
              "docs"
            ]
          },
          {
            "id": "wait",
            "label": "Wait for build",
            "type": "boolean",
            "option": [
              "--wait"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "server_name",
            "label": "Server name",
            "type": "string",
            "position": 0,
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "boot",
            "label": "Boot from image",
            "fields": [
              "flavor",
              "image",
              "network",
              "key_name",
              "wait",
              "server_name"
            ],
            "required": [
              "flavor",
              "image",
              "server_name"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "server_name",
              "flavor",
              "image",
              "network",
              "key_name",
              "wait"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "security_group",
              "user_data",
              "availability_zone",
              "property",
              "min",
              "max"
            ]
          }
        ]
      }
    ]
  }
}
