ODS Grizzly: Unified CLI, take 2

Time: Tuesday 11:50 AM
Location: Annie AB
Etherpad: [http://etherpad.openstack.org/grizzly-common-unified-cli](http://etherpad.openstack.org/grizzly-common-unified-cli)

During the Folsom summit we defined some requirements for a unified command line client program for OpenStack. Since then we have begun development and made significant progress, but the project has stalled out a bit. During the Unified CLI, take 2 session we will discuss restarting the project and find additional contributors.

Original Project Goals

  • use the OpenStack Python client API modules, extending them as required
  • use consistent naming and structure for commands and arguments
  • consistent output formats with the option of reliably machine parseable formats
  • use a single-binary approach that also contains an embedded command-line that can execute multiple commands on a single authentication (see libvirt’s virsh for an example)
  • independence from the OpenStack project names


  • cliff framework provides
    • consistent output formats
    • parseable output
    • single binary with interactive mode
  • single main command “openstack”
  • style-guide in wiki specifies naming conventions
  • existing sub-commands:
    • roles
      • add role
      • create role
      • delete role
      • list role
      • remove role
      • show role
    • servers
      • list server
      • show server
    • endpoints
      • create endpoint
      • delete endpoint
      • list endpoint
      • show endpoint
    • services
      • create service
      • delete service
      • list service
      • show service
    • tenants
      • create tenant
      • delete tenant
      • list tenant
      • set tenant
      • show tenant
    • users
      • create user
      • delete user
      • list user
      • set user
      • show user
      • list user role
  • quantum is using cliff, but not part of the unified CLI, yet

Proposed Grizzly Goals

  • implement the commands associated with more services what priorities?
  • semi-official public release? incubation?
  • move commands for each service into the client library for the service
  • convert to meta-package with dependencies to install all of the parts
  • project client libraries do not depend on cliff or python-openstackclient
  • python-openstackclient depends on all client libraries
  • installing project client does not provide CLI, but provides plugins that are discovered when python-openstackclient is installed
  • document inconsistencies in the project client libraries to be addressed during “H”
  • another session on consistent APIs Wednesday at 4:30 Standardizing client & API capabilities