github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/acceptancetests/repository/charms/jenkins-slave/hooks/config-changed (about)

     1  #!/bin/bash
     2  set -eux
     3  
     4  status-set maintenance "Updating scripts" || true
     5  if [[ ! -d  /var/lib/jenkins/bin ]]; then
     6      mkdir -p /var/lib/jenkins/bin
     7  fi
     8  cp $JUJU_CHARM_DIR/scripts/start-jenkins-slave.sh /var/lib/jenkins/bin
     9  chmod +x /var/lib/jenkins/bin/start-jenkins-slave.sh
    10  cp $JUJU_CHARM_DIR/scripts/place-slave.sh /var/lib/jenkins/bin
    11  chmod +x /var/lib/jenkins/bin/place-slave.sh
    12  
    13  status-set maintenance "Checking config" 
    14  PACKAGES=$(config-get packages)
    15  if [[ "$PACKAGES" != "" ]]; then
    16      status-set maintenance "Installing packages." || true
    17      apt-get install -y $PACKAGES
    18  fi
    19  
    20  SLAVE_NAME=$(config-get slave-name)
    21  if [[ "$SLAVE_NAME" == "" ]]; then
    22      APP_NAME=$(echo $JUJU_UNIT_NAME | cut -d / -f 1)
    23      APP_ALPHA=$(echo $JUJU_UNIT_NAME | cut -d / -f 2 | tr 0123456789 abcdefghij)
    24      SLAVE_NAME="$APP_NAME-$APP_ALPHA"
    25  fi
    26  
    27  MASTER_URL=$(config-get master-url)
    28  # This is a hack. We don't want to iterate, but we need to
    29  # because we need the state of relations and config to know
    30  # if this charm is active or something else.
    31  for app in $(relation-ids slave); do
    32      for unit in $(relation-list -r $app); do
    33          MASTER_URL"$(relation-get -r $app url $unit)"
    34          break
    35      done
    36  done
    37  if [[ "$MASTER_URL" == "" ]]; then
    38      status-set blocked "Set master-url option or relate to master" || true
    39      juju-log "master-url config is not set or master needs to export its url"
    40      exit 0
    41  fi
    42  
    43  status-set maintenance "Updating configuration." || true
    44  cp $JUJU_CHARM_DIR/files/default/jenkins-slave /etc/default/jenkins-slave
    45  sed -i -r \
    46      "s,NAME=jenkins-slave,NAME=$SLAVE_NAME," /etc/default/jenkins-slave
    47  sed -i -r \
    48      "s,#JENKINS_URL=.*,JENKINS_URL=$MASTER_URL," /etc/default/jenkins-slave
    49  
    50  if [[ -d /etc/systemd ]]; then
    51      cp $JUJU_CHARM_DIR/files/systemd/system/jenkins-slave.service \
    52          /etc/systemd/system/jenkins-slave.service
    53      systemctl enable jenkins-slave
    54  else
    55      cp $JUJU_CHARM_DIR/files/init/jenkins-slave.conf \
    56          /etc/init/jenkins-slave.conf
    57      ln -s /lib/init/upstart-job /etc/init.d/jenkins-slave || true
    58  fi
    59  
    60  status-set maintenance "Checking jenkins slave.jar" || true
    61  /var/lib/jenkins/bin/place-slave.sh "$MASTER_URL"
    62  
    63  status-set maintenance "Starting services." || true
    64  service jenkins-slave stop 2>/dev/null || true
    65  service jenkins-slave start || true
    66  status-set active "$SLAVE_NAME is accepting work" || true