diff --git a/.gitignore b/.gitignore index 9431f8a1885..03e8221e49d 100644 --- a/.gitignore +++ b/.gitignore @@ -88,6 +88,7 @@ network_closure.sh # Juju Stuff /cluster/juju/charms/* +/cluster/juju/bundles/local.yaml # Downloaded Kubernetes binary release /kubernetes/ diff --git a/cluster/juju/bundles/local.yaml b/cluster/juju/bundles/local.yaml.base similarity index 73% rename from cluster/juju/bundles/local.yaml rename to cluster/juju/bundles/local.yaml.base index 907022b1e6c..dc01cf16b90 100644 --- a/cluster/juju/bundles/local.yaml +++ b/cluster/juju/bundles/local.yaml.base @@ -1,13 +1,13 @@ services: kubernetes: - charm: local:trusty/kubernetes + charm: __CHARM_DIR__/builds/kubernetes annotations: "gui-x": "600" "gui-y": "0" expose: true num_units: 2 etcd: - charm: cs:~containers/trusty/etcd + charm: cs:~containers/etcd annotations: "gui-x": "300" "gui-y": "0" @@ -15,4 +15,4 @@ services: relations: - - "kubernetes:etcd" - "etcd:db" -series: trusty +series: xenial diff --git a/cluster/juju/identify-leaders.py b/cluster/juju/identify-leaders.py index 0dd9eff1af1..dd0e80e339f 100755 --- a/cluster/juju/identify-leaders.py +++ b/cluster/juju/identify-leaders.py @@ -17,13 +17,15 @@ from subprocess import check_output import yaml -out = check_output(['juju', 'status', 'kubernetes', '--format=yaml']) + +cmd = ['juju', 'run', '--application', 'kubernetes', '--format=yaml', 'is-leader'] +out = check_output(cmd) try: parsed_output = yaml.safe_load(out) - model = parsed_output['services']['kubernetes']['units'] - for unit in model: - if 'workload-status' in model[unit].keys(): - if 'leader' in model[unit]['workload-status']['message']: - print(unit) + for unit in parsed_output: + standard_out = unit['Stdout'].rstrip() + unit_id = unit['UnitId'] + if 'True' in standard_out: + print(unit_id) except: pass diff --git a/cluster/juju/layers/kubernetes/metadata.yaml b/cluster/juju/layers/kubernetes/metadata.yaml index e9980d1a2d8..4b135da119d 100644 --- a/cluster/juju/layers/kubernetes/metadata.yaml +++ b/cluster/juju/layers/kubernetes/metadata.yaml @@ -16,4 +16,4 @@ requires: etcd: interface: etcd series: - - 'trusty' + - xenial diff --git a/cluster/juju/util.sh b/cluster/juju/util.sh index 0e707d4258b..8715b4418c9 100755 --- a/cluster/juju/util.sh +++ b/cluster/juju/util.sh @@ -38,7 +38,7 @@ function build-local() { # This used to build the kubernetes project. Now it rebuilds the charm(s) # living in `cluster/juju/layers` - charm build -o $JUJU_REPOSITORY -s trusty ${JUJU_PATH}/layers/kubernetes + charm build ${JUJU_PATH}/layers/kubernetes -o $JUJU_REPOSITORY -r --no-local-layers } function detect-master() { @@ -54,7 +54,7 @@ function detect-master() { function detect-nodes() { # Run the Juju command that gets the minion private IP addresses. local ipoutput - ipoutput=$(juju run --service kubernetes "unit-get private-address" --format=json) + ipoutput=$(juju run --application kubernetes "unit-get private-address" --format=json) # [ # {"MachineId":"2","Stdout":"192.168.122.188\n","UnitId":"kubernetes/0"}, # {"MachineId":"3","Stdout":"192.168.122.166\n","UnitId":"kubernetes/1"} @@ -69,6 +69,9 @@ function detect-nodes() { function kube-up() { build-local + # Replace the charm directory in the bundle. + sed "s|__CHARM_DIR__|${JUJU_REPOSITORY}|" < ${KUBE_BUNDLE_PATH}.base > ${KUBE_BUNDLE_PATH} + # The juju-deployer command will deploy the bundle and can be run # multiple times to continue deploying the parts that fail. juju deploy ${KUBE_BUNDLE_PATH} @@ -88,7 +91,7 @@ function kube-up() { tar xfz ${KUBECTL_DIR}/kubectl_package.tar.gz -C ${KUBECTL_DIR} ) # Export the location of the kubectl configuration file. - export KUBECONFIG="${KUBECTL_DIR}/config" + export KUBECONFIG="${KUBECTL_DIR}/kubeconfig" } function kube-down() { @@ -117,7 +120,7 @@ function sleep-status() { while [[ $i < $maxtime && -z $jujustatus ]]; do sleep 15 - i+=15 + i=$((i + 15)) jujustatus=$(${JUJU_PATH}/identify-leaders.py) export KUBE_MASTER_NAME=${jujustatus} done