Skip to content

Instantly share code, notes, and snippets.

@marcoceppi
Last active December 27, 2015 00:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcoceppi/7238964 to your computer and use it in GitHub Desktop.
Save marcoceppi/7238964 to your computer and use it in GitHub Desktop.
prettyprint in juju
#!/usr/bin/python
import os
import sys
import yaml
import subprocess
status_raw = subprocess.check_output(['juju', 'status'])
status = yaml.safe_load(status_raw)
def print_unit(unit, unit_data, indent=0):
if 'public-address' not in unit_data:
unit_data['public-address'] = None
if 'open-ports' not in unit_data:
unit_data['open-ports'] = []
print "%s: %s %s (%s)" % (unit, unit_data['public-address'], ', '.join(unit_data['open-ports']), unit_data['agent-state'])
for service in status['services']:
for unit in status['services'][service]['units']:
unit_status = status['services'][service]['units'][unit]
print_unit(unit, unit_status)
if 'subordinates' in unit_status:
for sub in unit_status['subordinate']:
print_unit(sub, unit_status['subordinate'][sub], 2)
marco@home:~$ chmod +x ~/.bin/juju-prettyprint
marco@home:~$ juju prettyprint
discourse/0: 15.185.120.52 80/tcp (started)
postgresql/0: 15.185.100.138 5432/tcp (started)
juju-gui/0: 15.185.108.183 80/tcp, 443/tcp (started)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment