From afe8a69ea9e8b224e05dd3ba7568e5b30a244552 Mon Sep 17 00:00:00 2001 From: Adam Gandelman Date: Wed, 22 May 2013 13:50:39 -0700 Subject: [PATCH] Add config-changed openstack upgrade support. --- hooks/config-changed | 1 + hooks/swift-storage-node-common | 19 +++++++++++++++++++ hooks/swift-storage-node-relations | 14 ++++++++++++++ 3 files changed, 34 insertions(+) create mode 120000 hooks/config-changed diff --git a/hooks/config-changed b/hooks/config-changed new file mode 120000 index 0000000..68e4122 --- /dev/null +++ b/hooks/config-changed @@ -0,0 +1 @@ +swift-storage-node-relations \ No newline at end of file diff --git a/hooks/swift-storage-node-common b/hooks/swift-storage-node-common index 342f351..9972214 100755 --- a/hooks/swift-storage-node-common +++ b/hooks/swift-storage-node-common @@ -129,3 +129,22 @@ function setup_storage { done chown -R swift:swift /srv/node } + +function do_openstack_upgrade { + # update openstack components to those provided by a new installation source + # it is assumed the calling hook has confirmed that the upgrade is sane. + local rel="$1" + shift + local packages=$@ + + # Backup the config directory. + local stamp=$(date +"%Y%m%d%M%S") + tar -pcf /var/lib/juju/$CHARM-backup-$stamp.tar $CONF_DIR + + configure_install_source "$rel" + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get \ + --option Dpkg::Options::=--force-confnew -y \ + install --no-install-recommends $packages + swift-init all restart || true +} diff --git a/hooks/swift-storage-node-relations b/hooks/swift-storage-node-relations index ea53b48..0a81996 100755 --- a/hooks/swift-storage-node-relations +++ b/hooks/swift-storage-node-relations @@ -67,9 +67,23 @@ function storage_changed { swift-init all start || true } +function config_changed { + local install_src=$(config-get openstack-origin) + local cur=$(get_os_codename_package "glance-common") + local available=$(get_os_codename_install_source "$install_src") + if [[ "$available" != "unknown" ]] ; then + if dpkg --compare-versions $(get_os_version_codename "$cur") lt \ + $(get_os_version_codename "$available") ; then + juju-log "$CHARM: Upgrading OpenStack release: $cur -> $available." + do_openstack_upgrade "$install_src" $PACKAGES + fi + fi +} + case $ARG0 in "install") install_hook ;; "start"|"stop") exit 0 ;; "swift-storage-relation-joined") storage_joined ;; "swift-storage-relation-changed") storage_changed ;; + "config-changed") config_changed ;; esac