Show controller instances in 'juju controllers'

Bug #1600453 reported by Mark Shuttleworth
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Canonical Juju
Fix Released
Medium
Ian Booth

Bug Description

Currently we show the following output from 'juju controllers':

CONTROLLER MODEL USER CLOUD/REGION
ms-goog-eu* k8s admin@local google/europe-west1

I'd like to add more information to give some sense of:

 * the number of machines providing the controller (1, 3 etc)
 * the contact URL / address (just one of them?)

Possibly also:

 * the machine instance type?

For example:

CONTROLLER MODEL USER CLOUD/REGION ADDRESS UNITS INSTANCE
ms-goog-eu* k8s admin@local google/europe-west1 103.22.35.211 1 juju-324d5a-0

Tags: usability 2.0
Changed in juju-core:
status: New → Triaged
importance: Undecided → Medium
tags: added: 2.0 usability
Revision history for this message
Richard Harding (rharding) wrote :

I wanted to propose some suggestions here. I think right now the idea is that this command is really fast using cached information and we should be aware that adding live data means we'll need to sync this up. This has to happen anyway, but it means there is a chance for it to be a bit out of date.

That said, I like the idea of some important top level information. I tried to setup a sample use case and put together some examples of what output would/could look like here.

Examples/proposals are located at http://paste.ubuntu.com/19282424/ to help with formatting visibility.

Taking each in line. The ADDRESS is interesting, but I'm curious when/how you use that address info in regular Juju use. I'm also concerned that in my lxd controller my first address is actually IPV6 and it eats up a lot of space and I'm not sure that the value of having it here brings. What use case is this address drives the desire to see it here on the high level command used frequently?

The UNITS I like a lot, but I'd like to propose offering it as a way to gain visibility into HA status. We don't currently have that, and if it's degraded, or not HA, then I think it deserves high level attention. I've proposed in #2/#3 to expose that more as a true, false, degraded value set vs a number of units. Especially because units here feels a bit overloaded and I'd prefer to help the user translate the number into meaning (e.g. 2 means degraded vs just showing a 2).

The instance id is interesting as well in the single case. I could see wanting to be able to map the instance id to your controller endpoints in the cloud control panel and making sure you don't touch them. However, if that's the use case then I feel we'd want to display each id when the controller is in HA mode. Again, the size requirements and mental overhead of those strings I'm not sure are worth the space in day to day use. I DO think that we should add those to the show-controller output though. Currently you have to do:

juju switch azure-test:controller
juju status

to get the list of those ids from the machine section of status.

I'd like to propose that we approach this with adding HA details, adding instance ids to the show-controller output, and the addresses are already in the show-controller output. This plus fixing the visibility issues with HA as a whole (lp:1602749) will be a nice improvement in usability imo.

Thoughts?

Changed in juju-core:
milestone: none → 2.0.0
affects: juju-core → juju
Changed in juju:
milestone: 2.0.0 → none
milestone: none → 2.0.0
Ian Booth (wallyworld)
Changed in juju:
milestone: 2.0.0 → 2.0-beta18
assignee: nobody → Ian Booth (wallyworld)
status: Triaged → In Progress
Revision history for this message
Ian Booth (wallyworld) wrote :

I have a prototype branch which does the following. It adds a new block to the show-controller output.

  controller-machines:
    "0":
      instance-id: juju-a76762-0
      ha-status: enabled
    "1":
      instance-id: juju-a76762-1
      ha-status: enabled
    "2":
      instance-id: juju-a76762-2
      ha-status: pending

The above shows that enable-ha has been run with 3 controller machines. 2 have successfully joined the replicaset, the third is still pending.

We could roll up a single overall ha status for display in list-controllers:

# pending / # configured

eg

1/3

means 3 HA controllers configured, 1 is functional in replicaset, 2 are still pending

etc

We would only show an HA column if HA is configured.

$ juju list-controllers
CONTROLLER MODEL USER ACCESS CLOUD/REGION MODELS MACHINES HA VERSION
ian* controller admin@local superuser lxd/localhost 2 4 3/3 2.0-beta18.1

Revision history for this message
Ian Booth (wallyworld) wrote :

I have implemented the above based on the notion we want to surface the number of machines providing the controller as well as visibility into HA status which is a bit lacking right now. It follows the recent pattern of displaying cached information in list-controllers but --refresh fetches the latest. It keeps list-controllers compact in what is displayed, and only exposes the HA column at all if HA has been enabled on any of the controllers. The HA column shows the number of machines providing the controller (assuming HA has been enabled). If all the controller machines are participating in HA and are active, it shows just the number. Otherwise it will show active/configured. Note: there's a typo in the previous comment; it says "pending/configured", it should say "active/configured".

It also surfaces detail of the controller machines in the show-controller output - instance id, ha status. I can do a follow up to also include machine instance type but before doing the extra work, wanted to get this done and see how it plays out.

Changed in juju:
status: In Progress → Fix Committed
Curtis Hovey (sinzui)
Changed in juju:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.