From a782462a1a8361e1c4c936e434c9144a33455728 Mon Sep 17 00:00:00 2001 From: Jiri Stransky Date: Thu, 15 Mar 2018 18:15:47 +0100 Subject: [PATCH] Remove unused minor update code Since Pike, minor updates are done via the composable services framework. The old shell script approach hasn't been used/tested for 2 releases now, and should be dropped. Also drop the UpdateWorkflow interface. Before we started doing upgrades via Ansible, we used this pluggable resource interface to perform oneshot operations like migrations to WSGI or AODH services. Nowadays this interface is not referenced from anywhere and we'd probably rather do similar operations via Ansible tasks. Change-Id: I6c5eafe76eb53bc38d100a9ba132dd8fe6dd2d5f --- extraconfig/tasks/yum_update.sh | 165 --------------------- extraconfig/tasks/yum_update.yaml | 34 ----- extraconfig/tasks/yum_update_noop.yaml | 29 ---- overcloud-resource-registry-puppet.j2.yaml | 4 - overcloud.j2.yaml | 16 -- puppet/role.role.j2.yaml | 22 --- 6 files changed, 270 deletions(-) delete mode 100755 extraconfig/tasks/yum_update.sh delete mode 100644 extraconfig/tasks/yum_update.yaml delete mode 100644 extraconfig/tasks/yum_update_noop.yaml diff --git a/extraconfig/tasks/yum_update.sh b/extraconfig/tasks/yum_update.sh deleted file mode 100755 index 9d9cc2011b..0000000000 --- a/extraconfig/tasks/yum_update.sh +++ /dev/null @@ -1,165 +0,0 @@ -#!/bin/bash - -# A heat-config-script which runs yum update during a stack-update. -# Inputs: -# deploy_action - yum will only be run if this is UPDATE -# update_identifier - yum will only run for previously unused values of update_identifier -# command - yum sub-command to run, defaults to "update" -# command_arguments - yum command arguments, defaults to "" - -echo "Started yum_update.sh on server $deploy_server_id at `date`" -echo -n "false" > $heat_outputs_path.update_managed_packages - -if [ -f /.dockerenv ]; then - echo "Not running due to running inside a container" - exit 0 -fi - -if [[ -z "$update_identifier" ]]; then - echo "Not running due to unset update_identifier" - exit 0 -fi - -timestamp_dir=/var/lib/overcloud-yum-update -mkdir -p $timestamp_dir - -# sanitise to remove unusual characters -update_identifier=${update_identifier//[^a-zA-Z0-9-_]/} - -# seconds to wait for this node to rejoin the cluster after update -cluster_start_timeout=600 -galera_sync_timeout=1800 -cluster_settle_timeout=1800 - -timestamp_file="$timestamp_dir/$update_identifier" -if [[ -a "$timestamp_file" ]]; then - echo "Not running for already-run timestamp \"$update_identifier\"" - exit 0 -fi -touch "$timestamp_file" - -pacemaker_status="" -# We include word boundaries in order to not match pacemaker_remote -if hiera -c /etc/puppet/hiera.yaml service_names | grep -q '\bpacemaker\b'; then - pacemaker_status=$(systemctl is-active pacemaker) -fi - -# (NB: when backporting this s/pacemaker_short_bootstrap_node_name/bootstrap_nodeid) -# This runs before the yum_update so we are guaranteed to run it even in the absence -# of packages to update (the check for -z "$update_identifier" guarantees that this -# is run only on overcloud stack update -i) -if [[ "$pacemaker_status" == "active" && \ - "$(hiera -c /etc/puppet/hiera.yaml pacemaker_short_bootstrap_node_name | tr '[:upper:]' '[:lower:]')" == "$(facter hostname | tr '[:upper:]' '[:lower:]')" ]] ; then \ - # OCF scripts don't cope with -eu - echo "Verifying if we need to fix up any IPv6 VIPs" - set +eu - fixup_wrong_ipv6_vip - ret=$? - set -eu - if [ $ret -ne 0 ]; then - echo "Fixing up IPv6 VIPs failed. Stopping here. (See https://bugs.launchpad.net/tripleo/+bug/1686357 for more info)" - exit 1 - fi -fi - -command_arguments=${command_arguments:-} - -# Always ensure yum has full cache -check_for_yum_lock -yum makecache || echo "Yum makecache failed. This can cause failure later on." - -# yum check-update exits 100 if updates are available -check_for_yum_lock -set +e -check_update=$(yum check-update 2>&1) -check_update_exit=$? -set -e - -if [[ "$check_update_exit" == "1" ]]; then - echo "Failed to check for package updates" - echo "$check_update" - exit 1 -elif [[ "$check_update_exit" != "100" ]]; then - echo "No packages require updating" - exit 0 -fi - -# special case https://bugs.launchpad.net/tripleo/+bug/1635205 +bug/1669714 -special_case_ovs_upgrade_if_needed - -# Resolve any RPM dependency issues before attempting the update -check_for_yum_lock -yum_pre_update - -if [[ "$pacemaker_status" == "active" ]] ; then - echo "Pacemaker running, stopping cluster node and doing full package update" - node_count=$(pcs status xml | grep -o "" | grep -o 'number="[0-9]*"' | grep -o "[0-9]*") - if [[ "$node_count" == "1" ]] ; then - echo "Active node count is 1, stopping node with --force" - pcs cluster stop --force - else - pcs cluster stop - fi -else - echo "Upgrading Puppet modules and dependencies" - check_for_yum_lock - yum -q -y update puppet-tripleo - yum deplist puppet-tripleo | awk '/dependency/{print $2}' | xargs yum -q -y update - echo "Upgrading other packages is handled by config management tooling" - echo -n "true" > $heat_outputs_path.update_managed_packages - exit 0 -fi - -command=${command:-update} -full_command="yum -q -y $command $command_arguments" - -echo "Running: $full_command" -check_for_yum_lock -result=$($full_command) -return_code=$? -echo "$result" -echo "yum return code: $return_code" - -if [[ "$pacemaker_status" == "active" ]] ; then - echo "Starting cluster node" - pcs cluster start - - hostname=$(hostname -s) - tstart=$(date +%s) - while [[ "$(pcs status | grep "^Online" | grep -F -o $hostname)" == "" ]]; do - sleep 5 - tnow=$(date +%s) - if (( tnow-tstart > cluster_start_timeout )) ; then - echo "ERROR $hostname failed to join cluster in $cluster_start_timeout seconds" - pcs status - exit 1 - fi - done - - RETVAL=$( pcs resource show galera-master | grep wsrep_cluster_address | grep -q `crm_node -n` ; echo $? ) - - if [[ $RETVAL -eq 0 && -e /etc/sysconfig/clustercheck ]]; then - tstart=$(date +%s) - while ! clustercheck; do - sleep 5 - tnow=$(date +%s) - if (( tnow-tstart > galera_sync_timeout )) ; then - echo "ERROR galera sync timed out" - exit 1 - fi - done - fi - - echo "Waiting for pacemaker cluster to settle" - if ! timeout -k 10 $cluster_settle_timeout crm_resource --wait; then - echo "ERROR timed out while waiting for the cluster to settle" - exit 1 - fi - - pcs status -fi - - -echo "Finished yum_update.sh on server $deploy_server_id at `date` with return code: $return_code" - -exit $return_code diff --git a/extraconfig/tasks/yum_update.yaml b/extraconfig/tasks/yum_update.yaml deleted file mode 100644 index 8735cdf278..0000000000 --- a/extraconfig/tasks/yum_update.yaml +++ /dev/null @@ -1,34 +0,0 @@ -heat_template_version: queens - -description: > - Software-config for performing package updates using yum - -resources: - - config: - type: OS::Heat::SoftwareConfig - properties: - group: script - config: - list_join: - - '' - - - get_file: pacemaker_common_functions.sh - - get_file: yum_update.sh - - inputs: - - name: update_identifier - description: yum will only run for previously unused values of update_identifier - default: '' - - name: command - description: yum sub-command to run, defaults to "update" - default: update - - name: command_arguments - description: yum command arguments, defaults to "" - default: '' - outputs: - - name: update_managed_packages - description: boolean value indicating whether to upgrade managed packages - -outputs: - OS::stack_id: - value: {get_resource: config} diff --git a/extraconfig/tasks/yum_update_noop.yaml b/extraconfig/tasks/yum_update_noop.yaml deleted file mode 100644 index 36e5b73ffc..0000000000 --- a/extraconfig/tasks/yum_update_noop.yaml +++ /dev/null @@ -1,29 +0,0 @@ -heat_template_version: queens -description: 'No-op yum update task' - -resources: - - config: - type: OS::Heat::SoftwareConfig - properties: - group: script - config: | - #!/bin/bash - echo -n "false" > $heat_outputs_path.update_managed_packages - inputs: - - name: update_identifier - description: yum will only run for previously unused values of update_identifier - default: '' - - name: command - description: yum sub-command to run, defaults to "update" - default: update - - name: command_arguments - description: yum command arguments, defaults to "" - default: '' - outputs: - - name: update_managed_packages - description: boolean value indicating whether to upgrade managed packages - -outputs: - OS::stack_id: - value: {get_resource: config} diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml index 1fcf77ac20..c2edebc931 100644 --- a/overcloud-resource-registry-puppet.j2.yaml +++ b/overcloud-resource-registry-puppet.j2.yaml @@ -10,10 +10,6 @@ resource_registry: OS::TripleO::DefaultPasswords: default_passwords.yaml OS::TripleO::RandomString: OS::Heat::RandomString - # Tasks (for internal TripleO usage) - OS::TripleO::Tasks::UpdateWorkflow: OS::Heat::None - OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml - {% for role in roles %} OS::TripleO::{{role.name}}::PreNetworkConfig: OS::Heat::None OS::TripleO::{{role.name}}PostDeploySteps: common/post.yaml diff --git a/overcloud.j2.yaml b/overcloud.j2.yaml index 225b59a544..b1b4151d7a 100644 --- a/overcloud.j2.yaml +++ b/overcloud.j2.yaml @@ -835,27 +835,11 @@ resources: data: {get_attr: [{{primary_role_name}}, {{network.name_lower}}_ip_address]} {%- endfor %} - UpdateWorkflow: - type: OS::TripleO::Tasks::UpdateWorkflow - depends_on: -{% for role in roles %} - - {{role.name}}AllNodesDeployment -{% endfor %} - properties: - servers: -{% for role in roles %} - {{role.name}}: {get_attr: [{{role.name}}Servers, value]} -{% endfor %} - input_values: - deploy_identifier: {get_param: DeployIdentifier} - update_identifier: {get_param: UpdateIdentifier} - # Optional ExtraConfig for all nodes - all roles are passed in here, but # the nested template may configure each role differently (or not at all) AllNodesExtraConfig: type: OS::TripleO::AllNodesExtraConfig depends_on: - - UpdateWorkflow {% for role in roles %} - {{role.name}}AllNodesValidationDeployment {% endfor %} diff --git a/puppet/role.role.j2.yaml b/puppet/role.role.j2.yaml index 1f6a56e522..aac2b9812a 100644 --- a/puppet/role.role.j2.yaml +++ b/puppet/role.role.j2.yaml @@ -499,8 +499,6 @@ resources: name: {{server_resource_name}}Deployment config: {get_resource: {{server_resource_name}}Config} server: {get_resource: {{server_resource_name}}} - input_values: - enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]} actions: if: - server_not_blacklisted @@ -551,7 +549,6 @@ resources: - {get_param: {{server_resource_name}}ExtraConfig} extraconfig: {get_param: ExtraConfig} {{role.name.lower()}}: - tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade} tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources} tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups} tripleo::clouddomain: {get_param: CloudDomain} @@ -605,25 +602,6 @@ resources: properties: server: {get_resource: {{server_resource_name}}} - UpdateConfig: - type: OS::TripleO::Tasks::PackageUpdate - - UpdateDeployment: - type: OS::Heat::SoftwareDeployment - depends_on: NetworkDeployment - properties: - name: UpdateDeployment - config: {get_resource: UpdateConfig} - server: {get_resource: {{server_resource_name}}} - input_values: - update_identifier: - get_param: UpdateIdentifier - actions: - if: - - server_not_blacklisted - - ['CREATE', 'UPDATE'] - - [] - DeploymentActions: type: OS::Heat::Value properties: