Browse Source

feat(juju): add functions to get current controller and model (#11572)

Jose C. Massón 1 year ago
parent
commit
5efcfc3973
2 changed files with 33 additions and 1 deletions
  1. 2 0
      plugins/juju/README.md
  2. 31 1
      plugins/juju/juju.plugin.zsh

+ 2 - 0
plugins/juju/README.md

@@ -126,5 +126,7 @@ Naming convention:
 - `jaddr <app_name> [unit_num]`: display app or unit IP address.
 - `jreld <relation_name> <app_name> <unit_num>`: display app and unit relation data.
 - `jclean`: destroy all controllers
+- `jcontroller`: display the controller your are connected to.
+- `jmodel`: display the model your are connected to.
 - `wjst [interval_secs] [args_for_watch]`: watch juju status, with optional interval
   (default: 5s); you may pass additional arguments to `watch`.

+ 31 - 1
plugins/juju/juju.plugin.zsh

@@ -163,10 +163,40 @@ jreld() {
   juju run "relation-get -r $relid - $2" --unit $2/$3
 }
 
+# Return Juju current controller
+jcontroller() {
+  local controller="$(awk '/current-controller/ {print $2}' ~/.local/share/juju/controllers.yaml)"
+  if [[ -z "$controller" ]]; then
+    return 1
+  fi
+
+  echo $controller
+  return 0
+}
+
+# Return Juju current model
+jmodel() {
+  local yqbin="$(whereis yq | awk '{print $2}')"
+
+  if [[ -z "$yqbin" ]]; then
+    echo "--"
+    return 1
+  fi
+
+  local model="$(yq e ".controllers.$(jcontroller).current-model" < ~/.local/share/juju/models.yaml | cut -d/ -f2)"
+  
+  if [[ -z "$model" ]]; then
+    echo "--"
+    return 1
+  fi
+
+  echo $model
+  return 0
+}
+
 # Watch juju status, with optional interval (default: 5 sec)
 wjst() {
   local interval="${1:-5}"
   shift $(( $# > 0 ))
   watch -n "$interval" --color juju status --relations --color "$@"
 }
-