Edit file File name : postinst-migrations.sh Content :#!/bin/sh # # Migrations from previous ubuntu-pro-client/ubuntu-advantage-tools versions # # These exist in this script separate from the *.postinst scripts because they # may need to be called from either ubuntu-pro-client.postinst or from # ubuntu-advantage-tools.postinst, depending on the situation. # # Because ubuntu-advantage-tools Depends on ubuntu-pro-client, # ubuntu-pro-client.postinst will always be executed before # ubuntu-advantage-tools.postinst. # # If the system already has ubuntu-pro-client and is upgrading to a new version # of ubuntu-pro-client, that means all migrations present in # ubuntu-advantage-tools.postinst must have already run at the time the system # upgraded to the renamed ubuntu-pro-client. That means the migrations in this # file can and should execute as part of ubuntu-pro-client.postinst. # # If upgrading from before the rename to the current version (from before # version 31), then not necessarily all migrations inside of # ubuntu-advantage-tools.postinst will have already run. Because the migrations # present in this file may depend on those previous migrations, then this file # must execute at the end of ubuntu-advantage-tools.postinst. # # In practice, this file is executed conditionally in either # ubuntu-pro-client.postinst or ubuntu-advantage-tools.postinst using version # checks. If we're upgrading from a version earlier than 31, then this executes # in ubuntu-advantage-tools.postinst. If we're upgrading from version 31 or # later, then this executes in ubuntu-pro-client.postinst. # # # # Migrations should always be version-gated using PREVIOUS_PKG_VER and execute # in order from oldest to newest. # # For example: # if dpkg --compare-versions "$PREVIOUS_PKG_VER" lt "33~"; then # # do the migrations to version 33 # fi # if dpkg --compare-versions "$PREVIOUS_PKG_VER" lt "34~"; then # # do the migrations to version 34 # fi # set -e PREVIOUS_PKG_VER=$1 if dpkg --compare-versions "$PREVIOUS_PKG_VER" lt "32~"; then # When we perform the write operation through # UserConfigFile we write the public # version of the user-config file with all the # sensitive data removed. # We also move the user-config.json file to the private # directory source_file="/var/lib/ubuntu-advantage/user-config.json" destination_dir="/var/lib/ubuntu-advantage/private" # Check if the source file exists if [ -f "$source_file" ]; then mkdir -p "$destination_dir" # Move the user-config.json file to the private directory mv "$source_file" "$destination_dir/user-config.json" /usr/bin/python3 -c " from uaclient.files import UserConfigFileObject try: user_config_file = UserConfigFileObject() content = user_config_file.read() user_config_file.write(content) except Exception as e: print('Error while creating public user-config file: {}'.format(e)) " fi fi if dpkg --compare-versions "$PREVIOUS_PKG_VER" lt "35~"; then # Create an only series marker file only if # the machine-token.json file exists # This is to ensure that the only-series # contract check runs correctly if [ -f "/var/lib/ubuntu-advantage/private/machine-token.json" ]; then touch "/var/lib/ubuntu-advantage/marker-only-series-check" fi # For attached machines, we need to ensure that the apt auth configuration # is updated to include the snapshot urls for esm-infra and esm-apps if [ -f "/var/lib/ubuntu-advantage/private/machine-token.json" ]; then /usr/bin/python3 /usr/lib/ubuntu-advantage/add_esm_snapshot_auth.py fi fi Save