diff -Nru ubuntu-advantage-tools-27.11~22.10.1/debian/changelog ubuntu-advantage-tools-27.11.2~22.10.1/debian/changelog --- ubuntu-advantage-tools-27.11~22.10.1/debian/changelog 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/debian/changelog 2022-09-29 19:20:42.000000000 +0000 @@ -1,3 +1,23 @@ +ubuntu-advantage-tools (27.11.2~22.10.1) kinetic; urgency=medium + + * New upstream release 27.11.2: (LP: #1991173) + - esm: add the --beta flag back to esm-apps + - messaging: show Ubuntu Pro beta message in apt output + - security-status: don't show esm-apps information when the service is not + enabled + - ros: add the --beta flag back to ros and ros-updates + + -- Renan Rodrigo Thu, 29 Sep 2022 16:20:42 -0300 + +ubuntu-advantage-tools (27.11.1~22.10.1) kinetic; urgency=medium + + * New upstream release 27.11.1: (LP: #1990907) + - Fix release upgrade when ESM packages are installed + + d/postinst: remove series information from the APT preferences template + + esm: remove series information from the APT preferences file + + -- Renan Rodrigo Tue, 27 Sep 2022 16:19:41 -0300 + ubuntu-advantage-tools (27.11~22.10.1) kinetic; urgency=medium * d/control: diff -Nru ubuntu-advantage-tools-27.11~22.10.1/debian/ubuntu-advantage-tools.postinst ubuntu-advantage-tools-27.11.2~22.10.1/debian/ubuntu-advantage-tools.postinst --- ubuntu-advantage-tools-27.11~22.10.1/debian/ubuntu-advantage-tools.postinst 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/debian/ubuntu-advantage-tools.postinst 2022-09-29 19:20:42.000000000 +0000 @@ -217,7 +217,7 @@ cat > "${apt_pref_file}" <", "message_code": "invalid-service-or-failure", "service": null, "type": "system"}], "failed_services": ["foobar"], "needs_reboot": false, "processed_services": [], "result": "failure", "warnings": []} """ - And I verify that running `pro enable realtime-kernel foobar --format json --assume-yes` `with sudo` exits `1` + And I verify that running `pro enable ros foobar --format json --assume-yes` `with sudo` exits `1` And stdout is a json matching the `ua_operation` schema And I will see the following on stdout: """ - {"_schema_version": "0.1", "errors": [{"message": "Cannot enable unknown service 'foobar, realtime-kernel'.\nTry ", "message_code": "invalid-service-or-failure", "service": null, "type": "system"}], "failed_services": ["foobar", "realtime-kernel"], "needs_reboot": false, "processed_services": [], "result": "failure", "warnings": []} + {"_schema_version": "0.1", "errors": [{"message": "Cannot enable unknown service 'foobar, ros'.\nTry ", "message_code": "invalid-service-or-failure", "service": null, "type": "system"}], "failed_services": ["foobar", "ros"], "needs_reboot": false, "processed_services": [], "result": "failure", "warnings": []} """ And I verify that running `pro enable esm-infra --format json --assume-yes` `with sudo` exits `1` And stdout is a json matching the `ua_operation` schema @@ -200,11 +200,11 @@ """ Examples: ubuntu release - | release | valid_services | - | xenial | cc-eal, cis, esm-apps, esm-infra, fips, fips-updates, livepatch, ros,\nros-updates. | - | bionic | cc-eal, cis, esm-apps, esm-infra, fips, fips-updates, livepatch, ros,\nros-updates. | - | focal | cc-eal, esm-apps, esm-infra, fips, fips-updates, livepatch, ros,\nros-updates, usg. | - | jammy | cc-eal, esm-apps, esm-infra, fips, fips-updates, livepatch, ros,\nros-updates, usg. | + | release | valid_services | + | xenial | cc-eal, cis, esm-infra, fips, fips-updates, livepatch. | + | bionic | cc-eal, cis, esm-infra, fips, fips-updates, livepatch. | + | focal | cc-eal, esm-infra, fips, fips-updates, livepatch, usg. | + | jammy | cc-eal, esm-infra, fips, fips-updates, livepatch, usg. | @series.lts @uses.config.machine_type.lxd.container @@ -213,36 +213,36 @@ When I attach `contract_token` with sudo Then I verify that running `pro enable foobar` `as non-root` exits `1` And I will see the following on stderr: - """ - This command must be run as root (try using sudo). - """ + """ + This command must be run as root (try using sudo). + """ And I verify that running `pro enable foobar` `with sudo` exits `1` And I will see the following on stdout: - """ - One moment, checking your subscription first - """ + """ + One moment, checking your subscription first + """ And stderr matches regexp: - """ - Cannot enable unknown service 'foobar'. - Try cc-eal, cis, esm-apps, esm-infra, fips, fips-updates, livepatch, ros,\nros-updates. - """ - And I verify that running `pro enable realtime-kernel foobar` `with sudo` exits `1` + """ + Cannot enable unknown service 'foobar'. + Try cc-eal, cis, esm-infra, fips, fips-updates, livepatch. + """ + And I verify that running `pro enable ros foobar` `with sudo` exits `1` And I will see the following on stdout: - """ - One moment, checking your subscription first - """ + """ + One moment, checking your subscription first + """ And stderr matches regexp: """ - Cannot enable unknown service 'foobar, realtime-kernel'. - Try cc-eal, cis, esm-apps, esm-infra, fips, fips-updates, livepatch, ros,\nros-updates. + Cannot enable unknown service 'foobar, ros'. + Try cc-eal, cis, esm-infra, fips, fips-updates, livepatch. """ And I verify that running `pro enable esm-infra` `with sudo` exits `1` And I will see the following on stdout: - """ - One moment, checking your subscription first - Ubuntu Pro: ESM Infra is already enabled. - See: sudo pro status - """ + """ + One moment, checking your subscription first + Ubuntu Pro: ESM Infra is already enabled. + See: sudo pro status + """ When I run `apt-cache policy` with sudo Then apt-cache policy for the following url has permission `500` """ @@ -269,36 +269,36 @@ When I attach `contract_token` with sudo Then I verify that running `pro enable foobar` `as non-root` exits `1` And I will see the following on stderr: - """ - This command must be run as root (try using sudo). - """ + """ + This command must be run as root (try using sudo). + """ And I verify that running `pro enable foobar` `with sudo` exits `1` And I will see the following on stdout: - """ - One moment, checking your subscription first - """ + """ + One moment, checking your subscription first + """ And stderr matches regexp: """ Cannot enable unknown service 'foobar'. - Try cc-eal, esm-apps, esm-infra, fips, fips-updates, livepatch, ros,\nros-updates, usg. + Try cc-eal, esm-infra, fips, fips-updates, livepatch, usg. """ - And I verify that running `pro enable realtime-kernel foobar` `with sudo` exits `1` + And I verify that running `pro enable ros foobar` `with sudo` exits `1` And I will see the following on stdout: - """ - One moment, checking your subscription first - """ + """ + One moment, checking your subscription first + """ And stderr matches regexp: """ - Cannot enable unknown service 'foobar, realtime-kernel'. - Try cc-eal, esm-apps, esm-infra, fips, fips-updates, livepatch, ros,\nros-updates, usg. + Cannot enable unknown service 'foobar, ros'. + Try cc-eal, esm-infra, fips, fips-updates, livepatch, usg. """ And I verify that running `pro enable esm-infra` `with sudo` exits `1` Then I will see the following on stdout: - """ - One moment, checking your subscription first - Ubuntu Pro: ESM Infra is already enabled. - See: sudo pro status - """ + """ + One moment, checking your subscription first + Ubuntu Pro: ESM Infra is already enabled. + See: sudo pro status + """ When I run `apt-cache policy` with sudo Then apt-cache policy for the following url has permission `500` """ @@ -558,10 +558,10 @@ """ One moment, checking your subscription first """ - And stderr matches regexp: + Then I will see the following on stderr: """ Cannot enable unknown service 'usg'. - Try cc-eal, cis, esm-apps, esm-infra, fips, fips-updates, livepatch, ros,\nros-updates. + Try cc-eal, cis, esm-infra, fips, fips-updates, livepatch. """ Examples: cis service @@ -803,7 +803,7 @@ FIPS enabled A reboot is required to complete install. """ - When I run `pro status` with sudo + When I run `pro status --all` with sudo Then stdout matches regexp: """ fips +yes +enabled @@ -868,7 +868,7 @@ """ ros +yes disabled Security Updates for the Robot Operating System """ - When I run `pro enable ros --assume-yes` with sudo + When I run `pro enable ros --assume-yes --beta` with sudo And I run `pro status --all` as non-root Then stdout matches regexp """ @@ -904,13 +904,13 @@ """ esm-apps +yes disabled Expanded Security Maintenance for Applications """ - When I verify that running `pro enable ros` `with sudo` and stdin `N` exits `1` + When I verify that running `pro enable ros --beta` `with sudo` and stdin `N` exits `1` Then stdout matches regexp """ ROS ESM Security Updates cannot be enabled with Ubuntu Pro: ESM Apps disabled. Enable Ubuntu Pro: ESM Apps and proceed to enable ROS ESM Security Updates\? \(y\/N\) Cannot enable ROS ESM Security Updates when Ubuntu Pro: ESM Apps is disabled. """ - When I run `pro enable ros` `with sudo` and stdin `y` + When I run `pro enable ros --beta` `with sudo` and stdin `y` Then stdout matches regexp """ One moment, checking your subscription first @@ -941,7 +941,7 @@ When I run `apt install python3-catkin-pkg -y` with sudo Then I verify that `python3-catkin-pkg` is installed from apt source `` - When I run `pro enable ros-updates --assume-yes` with sudo + When I run `pro enable ros-updates --assume-yes --beta` with sudo And I run `pro status --all` as non-root Then stdout matches regexp """ @@ -961,7 +961,7 @@ Disable ROS ESM All Updates and proceed to disable ROS ESM Security Updates\? \(y\/N\) Disabling dependent service: ROS ESM All Updates Updating package lists """ - When I run `pro enable ros-updates` `with sudo` and stdin `y` + When I run `pro enable ros-updates --beta` `with sudo` and stdin `y` Then stdout matches regexp """ One moment, checking your subscription first @@ -984,7 +984,7 @@ When I run `pro disable ros --assume-yes` with sudo When I run `pro disable esm-apps --assume-yes` with sudo When I run `pro disable esm-infra --assume-yes` with sudo - When I run `pro enable ros-updates --assume-yes` with sudo + When I run `pro enable ros-updates --assume-yes --beta` with sudo When I run `pro status --all` as non-root Then stdout matches regexp """ @@ -1132,3 +1132,46 @@ Examples: ubuntu release | release | | xenial | + + @series.lts + @uses.config.machine_type.lxd.container + Scenario Outline: Attached enable esm-apps on a machine + Given a `` machine with ubuntu-advantage-tools installed + When I attach `contract_token` with sudo + And I run `pro status --all` as non-root + Then stdout matches regexp + """ + esm-apps +yes enabled Expanded Security Maintenance for Applications + """ + And I verify that running `apt update` `with sudo` exits `0` + When I run `apt-cache policy` as non-root + Then apt-cache policy for the following url has permission `500` + """ + https://esm.ubuntu.com/apps/ubuntu -apps-updates/main amd64 Packages + """ + And apt-cache policy for the following url has permission `500` + """ + https://esm.ubuntu.com/apps/ubuntu -apps-security/main amd64 Packages + """ + And I verify that running `apt update` `with sudo` exits `0` + When I run `apt install -y ` with sudo, retrying exit [100] + And I run `apt-cache policy ` as non-root + Then stdout matches regexp: + """ + Version table: + \s*\*\*\* .* 500 + \s*500 https://esm.ubuntu.com/apps/ubuntu -apps-security/main amd64 Packages + """ + When I verify that running `pro enable esm-apps` `with sudo` exits `1` + Then stdout matches regexp + """ + One moment, checking your subscription first + Ubuntu Pro: ESM Apps is already enabled. + See: sudo pro status + """ + + Examples: ubuntu release + | release | apps-pkg | + | xenial | jq | + | bionic | bundler | + | focal | ant | diff -Nru ubuntu-advantage-tools-27.11~22.10.1/features/attached_status.feature ubuntu-advantage-tools-27.11.2~22.10.1/features/attached_status.feature --- ubuntu-advantage-tools-27.11~22.10.1/features/attached_status.feature 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/features/attached_status.feature 2022-09-29 19:20:42.000000000 +0000 @@ -76,8 +76,6 @@ esm-infra +yes +enabled +Expanded Security Maintenance for Infrastructure fips +yes +disabled +NIST-certified core packages fips-updates +yes +disabled +NIST-certified core packages with priority security updates - ros +yes +disabled +Security Updates for the Robot Operating System - ros-updates +yes +disabled +All Updates for the Robot Operating System Enable services with: pro enable """ diff -Nru ubuntu-advantage-tools-27.11~22.10.1/features/attach_invalidtoken.feature ubuntu-advantage-tools-27.11.2~22.10.1/features/attach_invalidtoken.feature --- ubuntu-advantage-tools-27.11~22.10.1/features/attach_invalidtoken.feature 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/features/attach_invalidtoken.feature 2022-09-29 19:20:42.000000000 +0000 @@ -46,7 +46,7 @@ Then stdout is a json matching the `ua_operation` schema And I will see the following on stdout: """ - {"_schema_version": "0.1", "errors": [{"additional_info": {"contract_expiry_date": "12-31-2019", "contract_id": "cAJ4NHcl2qAld2CbJt5cufzZNHgVZ0YTPIH96Ihsy4bU"}, "message": "Attach denied:\nContract \"cAJ4NHcl2qAld2CbJt5cufzZNHgVZ0YTPIH96Ihsy4bU\" expired on December 31, 2019\nVisit https://ubuntu.com/pro to manage contract tokens.", "message_code": "attach-forbidden-expired", "service": null, "type": "system"}], "failed_services": [], "needs_reboot": false, "processed_services": [], "result": "failure", "warnings": []} + {"_schema_version": "0.1", "errors": [{"additional_info": {"contract_expiry_date": "08-21-2022", "contract_id": "cAHT7ADjWMRCjo5Q53QlTawtPlrhxeRg7cbEnquxxm1g"}, "message": "Attach denied:\nContract \"cAHT7ADjWMRCjo5Q53QlTawtPlrhxeRg7cbEnquxxm1g\" expired on August 21, 2022\nVisit https://ubuntu.com/pro to manage contract tokens.", "message_code": "attach-forbidden-expired", "service": null, "type": "system"}], "failed_services": [], "needs_reboot": false, "processed_services": [], "result": "failure", "warnings": []} """ Examples: ubuntu release diff -Nru ubuntu-advantage-tools-27.11~22.10.1/features/enable_fips_vm.feature ubuntu-advantage-tools-27.11.2~22.10.1/features/enable_fips_vm.feature --- ubuntu-advantage-tools-27.11~22.10.1/features/enable_fips_vm.feature 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/features/enable_fips_vm.feature 2022-09-29 19:20:42.000000000 +0000 @@ -45,10 +45,10 @@ And I verify that `openssh-server-hmac` is installed from apt source `` And I verify that `openssh-client-hmac` is installed from apt source `` And I verify that `strongswan-hmac` is installed from apt source `` - When I run `pro status --format json` with sudo + When I run `pro status --format json --all` with sudo Then stdout contains substring: """ - {"available": "yes", "blocked_by": [{"name": "fips", "reason": "Livepatch cannot be enabled while running the official FIPS certified kernel. If you would like a FIPS compliant kernel with additional bug fixes and security updates, you can use the FIPS Updates service with Livepatch.", "reason_code": "livepatch-invalidates-fips"}], "description": "Canonical Livepatch service", "description_override": null, "entitled": "yes", "name": "livepatch", "status": "n/a", "status_details": "Cannot enable Livepatch when FIPS is enabled."} + {"available": "no", "blocked_by": [{"name": "fips", "reason": "Livepatch cannot be enabled while running the official FIPS certified kernel. If you would like a FIPS compliant kernel with additional bug fixes and security updates, you can use the FIPS Updates service with Livepatch.", "reason_code": "livepatch-invalidates-fips"}], "description": "Canonical Livepatch service", "description_override": null, "entitled": "yes", "name": "livepatch", "status": "n/a", "status_details": "Cannot enable Livepatch when FIPS is enabled."} """ When I reboot the machine @@ -168,10 +168,10 @@ And I verify that `openssh-server-hmac` is installed from apt source `` And I verify that `openssh-client-hmac` is installed from apt source `` And I verify that `strongswan-hmac` is installed from apt source `` - When I run `pro status --format json` with sudo + When I run `pro status --all --format json` with sudo Then stdout contains substring: """ - {"available": "yes", "blocked_by": [{"name": "fips-updates", "reason": "FIPS cannot be enabled if FIPS Updates has ever been enabled because FIPS Updates installs security patches that aren't officially certified.", "reason_code": "fips-updates-invalidates-fips"}], "description": "NIST-certified core packages", "description_override": null, "entitled": "yes", "name": "fips", "status": "n/a", "status_details": "Cannot enable FIPS when FIPS Updates is enabled."} + {"available": "no", "blocked_by": [{"name": "fips-updates", "reason": "FIPS cannot be enabled if FIPS Updates has ever been enabled because FIPS Updates installs security patches that aren't officially certified.", "reason_code": "fips-updates-invalidates-fips"}], "description": "NIST-certified core packages", "description_override": null, "entitled": "yes", "name": "fips", "status": "n/a", "status_details": "Cannot enable FIPS when FIPS Updates is enabled."} """ When I reboot the machine @@ -242,10 +242,10 @@ """ livepatch +yes +enabled """ - When I run `pro status --format json` with sudo + When I run `pro status --all --format json` with sudo Then stdout contains substring: """ - {"available": "yes", "blocked_by": [{"name": "livepatch", "reason": "Livepatch cannot be enabled while running the official FIPS certified kernel. If you would like a FIPS compliant kernel with additional bug fixes and security updates, you can use the FIPS Updates service with Livepatch.", "reason_code": "livepatch-invalidates-fips"}, {"name": "fips-updates", "reason": "FIPS cannot be enabled if FIPS Updates has ever been enabled because FIPS Updates installs security patches that aren't officially certified.", "reason_code": "fips-updates-invalidates-fips"}], "description": "NIST-certified core packages", "description_override": null, "entitled": "yes", "name": "fips", "status": "n/a", "status_details": "Cannot enable FIPS when FIPS Updates is enabled."} + {"available": "no", "blocked_by": [{"name": "livepatch", "reason": "Livepatch cannot be enabled while running the official FIPS certified kernel. If you would like a FIPS compliant kernel with additional bug fixes and security updates, you can use the FIPS Updates service with Livepatch.", "reason_code": "livepatch-invalidates-fips"}, {"name": "fips-updates", "reason": "FIPS cannot be enabled if FIPS Updates has ever been enabled because FIPS Updates installs security patches that aren't officially certified.", "reason_code": "fips-updates-invalidates-fips"}], "description": "NIST-certified core packages", "description_override": null, "entitled": "yes", "name": "fips", "status": "n/a", "status_details": "Cannot enable FIPS when FIPS Updates is enabled."} """ When I run `pro disable --assume-yes` with sudo And I run `pro enable --assume-yes --format json --assume-yes` with sudo diff -Nru ubuntu-advantage-tools-27.11~22.10.1/features/motd_messages.feature ubuntu-advantage-tools-27.11.2~22.10.1/features/motd_messages.feature --- ubuntu-advantage-tools-27.11~22.10.1/features/motd_messages.feature 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/features/motd_messages.feature 2022-09-29 19:20:42.000000000 +0000 @@ -1,102 +1,102 @@ Feature: MOTD Messages - @series.xenial - @series.bionic - @uses.config.machine_type.lxd.container - Scenario Outline: MOTD Announce Message - Given a `` machine with ubuntu-advantage-tools installed - When I run `apt-get install -y update-motd` with sudo - When I run `pro refresh messages` with sudo - And I run `run-parts /etc/update-motd.d/` with sudo - Then stdout matches regexp: - """ - - \* Introducing Expanded Security Maintenance for Applications\. - Receive updates to over 25,000 software packages with your - Ubuntu Pro subscription\. Free for personal use\. - - - - [\w\d]+ - """ - When I attach `contract_token` with sudo - And I run `update-motd` with sudo - And I run `run-parts /etc/update-motd.d/` with sudo - Then stdout does not match regexp: - """ - \* Introducing Expanded Security Maintenance for Applications\. - Receive updates to over 25,000 software packages with your - Ubuntu Pro subscription\. Free for personal use\. - - - """ - Examples: ubuntu release - | release | url | - | xenial | https:\/\/ubuntu.com\/16-04 | - | bionic | https:\/\/ubuntu.com\/pro | - - @series.xenial - @series.bionic - @uses.config.machine_type.aws.generic - Scenario Outline: AWS URLs - Given a `` machine with ubuntu-advantage-tools installed - When I run `apt-get install -y update-motd` with sudo - When I run `pro refresh messages` with sudo - And I run `run-parts /etc/update-motd.d/` with sudo - Then stdout matches regexp: - """ - \* Introducing Expanded Security Maintenance for Applications\. - Receive updates to over 25,000 software packages with your - Ubuntu Pro subscription\. Free for personal use\. - - - """ - Examples: ubuntu release - | release | url | - | xenial | https:\/\/ubuntu.com\/16-04 | - | bionic | https:\/\/ubuntu.com\/aws\/pro | - - @series.xenial - @series.bionic - @uses.config.machine_type.azure.generic - Scenario Outline: Azure URLs - Given a `` machine with ubuntu-advantage-tools installed - When I run `apt-get install -y update-motd` with sudo - When I run `pro refresh messages` with sudo - And I run `run-parts /etc/update-motd.d/` with sudo - Then stdout matches regexp: - """ - \* Introducing Expanded Security Maintenance for Applications\. - Receive updates to over 25,000 software packages with your - Ubuntu Pro subscription\. Free for personal use\. - - - """ - Examples: ubuntu release - | release | url | - | xenial | https:\/\/ubuntu.com\/16-04\/azure | - | bionic | https:\/\/ubuntu.com\/azure\/pro | - - @series.xenial - @series.bionic - @uses.config.machine_type.gcp.generic - Scenario Outline: GCP URLs - Given a `` machine with ubuntu-advantage-tools installed - When I run `apt-get install -y update-motd` with sudo - When I run `pro refresh messages` with sudo - And I run `run-parts /etc/update-motd.d/` with sudo - Then stdout matches regexp: - """ - \* Introducing Expanded Security Maintenance for Applications\. - Receive updates to over 25,000 software packages with your - Ubuntu Pro subscription\. Free for personal use\. - - - """ - Examples: ubuntu release - | release | url | - | xenial | https:\/\/ubuntu.com\/16-04 | - | bionic | https:\/\/ubuntu.com\/gcp\/pro | +# @series.xenial +# @series.bionic +# @uses.config.machine_type.lxd.container +# Scenario Outline: MOTD Announce Message +# Given a `` machine with ubuntu-advantage-tools installed +# When I run `apt-get install -y update-motd` with sudo +# When I run `pro refresh messages` with sudo +# And I run `run-parts /etc/update-motd.d/` with sudo +# Then stdout matches regexp: +# """ +# +# \* Introducing Expanded Security Maintenance for Applications\. +# Receive updates to over 25,000 software packages with your +# Ubuntu Pro subscription\. Free for personal use\. +# +# +# +# [\w\d]+ +# """ +# When I attach `contract_token` with sudo +# And I run `update-motd` with sudo +# And I run `run-parts /etc/update-motd.d/` with sudo +# Then stdout does not match regexp: +# """ +# \* Introducing Expanded Security Maintenance for Applications\. +# Receive updates to over 25,000 software packages with your +# Ubuntu Pro subscription\. Free for personal use\. +# +# +# """ +# Examples: ubuntu release +# | release | url | +# | xenial | https:\/\/ubuntu.com\/16-04 | +# | bionic | https:\/\/ubuntu.com\/pro | +# +# @series.xenial +# @series.bionic +# @uses.config.machine_type.aws.generic +# Scenario Outline: AWS URLs +# Given a `` machine with ubuntu-advantage-tools installed +# When I run `apt-get install -y update-motd` with sudo +# When I run `pro refresh messages` with sudo +# And I run `run-parts /etc/update-motd.d/` with sudo +# Then stdout matches regexp: +# """ +# \* Introducing Expanded Security Maintenance for Applications\. +# Receive updates to over 25,000 software packages with your +# Ubuntu Pro subscription\. Free for personal use\. +# +# +# """ +# Examples: ubuntu release +# | release | url | +# | xenial | https:\/\/ubuntu.com\/16-04 | +# | bionic | https:\/\/ubuntu.com\/aws\/pro | +# +# @series.xenial +# @series.bionic +# @uses.config.machine_type.azure.generic +# Scenario Outline: Azure URLs +# Given a `` machine with ubuntu-advantage-tools installed +# When I run `apt-get install -y update-motd` with sudo +# When I run `pro refresh messages` with sudo +# And I run `run-parts /etc/update-motd.d/` with sudo +# Then stdout matches regexp: +# """ +# \* Introducing Expanded Security Maintenance for Applications\. +# Receive updates to over 25,000 software packages with your +# Ubuntu Pro subscription\. Free for personal use\. +# +# +# """ +# Examples: ubuntu release +# | release | url | +# | xenial | https:\/\/ubuntu.com\/16-04\/azure | +# | bionic | https:\/\/ubuntu.com\/azure\/pro | +# +# @series.xenial +# @series.bionic +# @uses.config.machine_type.gcp.generic +# Scenario Outline: GCP URLs +# Given a `` machine with ubuntu-advantage-tools installed +# When I run `apt-get install -y update-motd` with sudo +# When I run `pro refresh messages` with sudo +# And I run `run-parts /etc/update-motd.d/` with sudo +# Then stdout matches regexp: +# """ +# \* Introducing Expanded Security Maintenance for Applications\. +# Receive updates to over 25,000 software packages with your +# Ubuntu Pro subscription\. Free for personal use\. +# +# +# """ +# Examples: ubuntu release +# | release | url | +# | xenial | https:\/\/ubuntu.com\/16-04 | +# | bionic | https:\/\/ubuntu.com\/gcp\/pro | @series.xenial @series.bionic @@ -160,4 +160,4 @@ Examples: ubuntu release | release | service | | xenial | esm-infra | - | bionic | esm-apps | + #| bionic | esm-apps | diff -Nru ubuntu-advantage-tools-27.11~22.10.1/features/security_status.feature ubuntu-advantage-tools-27.11.2~22.10.1/features/security_status.feature --- ubuntu-advantage-tools-27.11~22.10.1/features/security_status.feature 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/features/security_status.feature 2022-09-29 19:20:42.000000000 +0000 @@ -82,13 +82,13 @@ Then I will see the following on stderr: """ usage: security-status [-h] [--format {json,yaml,text}] - [--thirdparty | --unavailable | --esm-infra | --esm-apps] + [--thirdparty | --unavailable | --esm-infra] argument --format: invalid choice: 'unsupported' (choose from 'json', 'yaml', 'text') """ Examples: ubuntu release | release | package | service | | xenial | apport | esm-infra | - | bionic | libkrb5-3 | esm-apps | + # | bionic | libkrb5-3 | esm-apps | @series.xenial @uses.config.machine_type.lxd.vm @@ -135,10 +135,8 @@ Ubuntu Pro with 'esm-infra' enabled provides security updates for Main/Restricted packages until 2026 and has \d+ pending security update[s]?\. - Ubuntu Pro with 'esm-apps' enabled provides security updates for - Universe/Multiverse packages until 2026 and has \d+ pending security update[s]?\. - - Learn more about Ubuntu Pro at https://ubuntu\.com/pro + Try Ubuntu Pro beta with a free personal subscription on up to 5 machines. + Learn more at https://ubuntu.com/pro """ When I attach `contract_token` with sudo And I verify root and non-root `pro security-status` calls have the same output @@ -185,28 +183,28 @@ apt-cache policy .+ to learn more about that package\. """ - When I verify root and non-root `pro security-status --esm-apps` calls have the same output - And I run `pro security-status --esm-apps` as non-root - Then stdout matches regexp: - """ - \d+ packages installed: - +\d+ package[s]? from Ubuntu Universe/Multiverse repository - - Universe/Multiverse packages are receiving security updates from - Ubuntu Pro with 'esm-apps' enabled until 2026\. You have received (\d+|no) security - update[s]?\. - - Run 'pro help esm-apps' to learn more - - Package names in .*bold.* currently have an available update - with 'esm-apps' enabled - Packages: - (.|\n)+ - - For example, run: - apt-cache policy .+ - to learn more about that package\. - """ + # When I verify root and non-root `pro security-status --esm-apps` calls have the same output + # And I run `pro security-status --esm-apps` as non-root + # Then stdout matches regexp: + # """ + # \d+ packages installed: + # +\d+ package[s]? from Ubuntu Universe/Multiverse repository + + # Universe/Multiverse packages are receiving security updates from + # Ubuntu Pro with 'esm-apps' enabled until 2026\. You have received (\d+|no) security + # update[s]?\. + + # Run 'pro help esm-apps' to learn more + + # Package names in .*bold.* currently have an available update + # with 'esm-apps' enabled + # Packages: + # (.|\n)+ + + # For example, run: + # apt-cache policy .+ + # to learn more about that package\. + # """ When I run `pro disable esm-infra esm-apps` with sudo And I verify root and non-root `pro security-status` calls have the same output And I run `pro security-status` as non-root @@ -225,10 +223,6 @@ Ubuntu Pro with 'esm-infra' enabled provides security updates for Main/Restricted packages until 2026 and has \d+ pending security update[s]?\. Enable esm-infra with: pro enable esm-infra - - Ubuntu Pro with 'esm-apps' enabled provides security updates for - Universe/Multiverse packages until 2026 and has \d+ pending security update[s]?\. - Enable esm-apps with: pro enable esm-apps """ When I verify root and non-root `pro security-status --thirdparty` calls have the same output And I run `pro security-status --thirdparty` as non-root @@ -286,32 +280,32 @@ apt-cache policy .+ to learn more about that package\. """ - When I verify root and non-root `pro security-status --esm-apps` calls have the same output - And I run `pro security-status --esm-apps` as non-root - Then stdout matches regexp: - """ - \d+ packages installed: - +\d+ package[s]? from Ubuntu Universe/Multiverse repository - - Ubuntu Pro with 'esm-apps' enabled provides security updates for - Universe/Multiverse packages until 2026 and has 1 pending security update[s]?\. - - Run 'pro help esm-apps' to learn more - - Package names in .*bold.* currently have an available update - with 'esm-apps' enabled - Packages: - (.|\n)+ - - For example, run: - apt-cache policy .+ - to learn more about that package\. - """ + # When I verify root and non-root `pro security-status --esm-apps` calls have the same output + # And I run `pro security-status --esm-apps` as non-root + # Then stdout matches regexp: + # """ + # \d+ packages installed: + # +\d+ package[s]? from Ubuntu Universe/Multiverse repository + + # Ubuntu Pro with 'esm-apps' enabled provides security updates for + # Universe/Multiverse packages until 2026 and has 1 pending security update[s]?\. + + # Run 'pro help esm-apps' to learn more + + # Package names in .*bold.* currently have an available update + # with 'esm-apps' enabled + # Packages: + # (.|\n)+ + + # For example, run: + # apt-cache policy .+ + # to learn more about that package\. + # """ When I verify that running `pro security-status --thirdparty --unavailable` `as non-root` exits `2` Then I will see the following on stderr """ usage: security-status [-h] [--format {json,yaml,text}] - [--thirdparty | --unavailable | --esm-infra | --esm-apps] + [--thirdparty | --unavailable | --esm-infra] argument --unavailable: not allowed with argument --thirdparty """ @@ -340,10 +334,8 @@ Main/Restricted packages receive updates with LTS until 2025\. - Ubuntu Pro with 'esm-apps' enabled provides security updates for - Universe/Multiverse packages until 2030 and has \d+ pending security update[s]?\. - - Learn more about Ubuntu Pro at https://ubuntu\.com/pro + Try Ubuntu Pro beta with a free personal subscription on up to 5 machines. + Learn more at https://ubuntu.com/pro """ When I attach `contract_token` with sudo And I verify root and non-root `pro security-status` calls have the same output @@ -378,28 +370,28 @@ After the LTS period ends, Main/Restricted packages will get security updates from Ubuntu Pro with 'esm-infra' enabled\. """ - When I verify root and non-root `pro security-status --esm-apps` calls have the same output - And I run `pro security-status --esm-apps` as non-root - Then stdout matches regexp: - """ - \d+ packages installed: - +\d+ package[s]? from Ubuntu Universe/Multiverse repository - - Universe/Multiverse packages are receiving security updates from - Ubuntu Pro with 'esm-apps' enabled until 2030\. You have received (\d+|no) security - update[s]?\. - - Run 'pro help esm-apps' to learn more - - Package names in .*bold.* currently have an available update - with 'esm-apps' enabled - Packages: - (.|\n)+ - - For example, run: - apt-cache policy .+ - to learn more about that package\. - """ + # When I verify root and non-root `pro security-status --esm-apps` calls have the same output + # And I run `pro security-status --esm-apps` as non-root + # Then stdout matches regexp: + # """ + # \d+ packages installed: + # +\d+ package[s]? from Ubuntu Universe/Multiverse repository + + # Universe/Multiverse packages are receiving security updates from + # Ubuntu Pro with 'esm-apps' enabled until 2030\. You have received (\d+|no) security + # update[s]?\. + + # Run 'pro help esm-apps' to learn more + + # Package names in .*bold.* currently have an available update + # with 'esm-apps' enabled + # Packages: + # (.|\n)+ + + # For example, run: + # apt-cache policy .+ + # to learn more about that package\. + # """ When I run `pro disable esm-infra esm-apps` with sudo And I verify root and non-root `pro security-status` calls have the same output And I run `pro security-status` as non-root @@ -416,10 +408,6 @@ for a list of available options\. Main/Restricted packages receive updates with LTS until 2025\. - - Ubuntu Pro with 'esm-apps' enabled provides security updates for - Universe/Multiverse packages until 2030 and has \d+ pending security update[s]?\. - Enable esm-apps with: pro enable esm-apps """ When I verify root and non-root `pro security-status --thirdparty` calls have the same output And I run `pro security-status --thirdparty` as non-root @@ -468,32 +456,32 @@ After the LTS period ends, Main/Restricted packages will get security updates from Ubuntu Pro with 'esm-infra' enabled\. """ - When I verify root and non-root `pro security-status --esm-apps` calls have the same output - And I run `pro security-status --esm-apps` as non-root - Then stdout matches regexp: - """ - \d+ packages installed: - +\d+ package[s]? from Ubuntu Universe/Multiverse repository - - Ubuntu Pro with 'esm-apps' enabled provides security updates for - Universe/Multiverse packages until 2030 and has 1 pending security update[s]?\. - - Run 'pro help esm-apps' to learn more - - Package names in .*bold.* currently have an available update - with 'esm-apps' enabled - Packages: - (.|\n)+ - - For example, run: - apt-cache policy .+ - to learn more about that package\. - """ + # When I verify root and non-root `pro security-status --esm-apps` calls have the same output + # And I run `pro security-status --esm-apps` as non-root + # Then stdout matches regexp: + # """ + # \d+ packages installed: + # +\d+ package[s]? from Ubuntu Universe/Multiverse repository + + # Ubuntu Pro with 'esm-apps' enabled provides security updates for + # Universe/Multiverse packages until 2030 and has 1 pending security update[s]?\. + + # Run 'pro help esm-apps' to learn more + + # Package names in .*bold.* currently have an available update + # with 'esm-apps' enabled + # Packages: + # (.|\n)+ + + # For example, run: + # apt-cache policy .+ + # to learn more about that package\. + # """ When I verify that running `pro security-status --thirdparty --unavailable` `as non-root` exits `2` Then I will see the following on stderr """ usage: security-status [-h] [--format {json,yaml,text}] - [--thirdparty | --unavailable | --esm-infra | --esm-apps] + [--thirdparty | --unavailable | --esm-infra] argument --unavailable: not allowed with argument --thirdparty """ @@ -531,12 +519,3 @@ Ubuntu Pro is not available for non-LTS releases\. """ - When I verify root and non-root `pro security-status --esm-apps` calls have the same output - And I run `pro security-status --esm-apps` as non-root - Then stdout matches regexp: - """ - \d+ packages installed: - +\d+ package[s]? from Ubuntu Universe/Multiverse repository - - Ubuntu Pro is not available for non-LTS releases\. - """ diff -Nru ubuntu-advantage-tools-27.11~22.10.1/features/staging_commands.feature ubuntu-advantage-tools-27.11.2~22.10.1/features/staging_commands.feature --- ubuntu-advantage-tools-27.11~22.10.1/features/staging_commands.feature 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/features/staging_commands.feature 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -@uses.config.contract_token_staging -Feature: Enable command behaviour when attached to an Ubuntu Pro staging subscription - - @series.lts - @uses.config.machine_type.lxd.container - Scenario Outline: Attached enable esm-apps on a machine - Given a `` machine with ubuntu-advantage-tools installed - When I attach `contract_token_staging` with sudo - And I run `pro status --all` as non-root - Then stdout matches regexp - """ - esm-apps +yes enabled Expanded Security Maintenance for Applications - """ - And I verify that running `apt update` `with sudo` exits `0` - When I run `apt-cache policy` as non-root - Then apt-cache policy for the following url has permission `500` - """ - https://esm.staging.ubuntu.com/apps/ubuntu -apps-updates/main amd64 Packages - """ - And apt-cache policy for the following url has permission `500` - """ - https://esm.staging.ubuntu.com/apps/ubuntu -apps-security/main amd64 Packages - """ - And I verify that running `apt update` `with sudo` exits `0` - When I run `apt install -y ` with sudo, retrying exit [100] - And I run `apt-cache policy ` as non-root - Then stdout matches regexp: - """ - Version table: - \s*\*\*\* .* 500 - \s*500 https://esm.staging.ubuntu.com/apps/ubuntu -apps-security/main amd64 Packages - """ - When I verify that running `pro enable esm-apps` `with sudo` exits `1` - Then stdout matches regexp - """ - One moment, checking your subscription first - Ubuntu Pro: ESM Apps is already enabled. - See: sudo pro status - """ - - Examples: ubuntu release - | release | apps-pkg | - | xenial | jq | - | bionic | bundler | - | focal | ant | diff -Nru ubuntu-advantage-tools-27.11~22.10.1/features/ubuntu_upgrade.feature ubuntu-advantage-tools-27.11.2~22.10.1/features/ubuntu_upgrade.feature --- ubuntu-advantage-tools-27.11~22.10.1/features/ubuntu_upgrade.feature 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/features/ubuntu_upgrade.feature 2022-09-29 19:20:42.000000000 +0000 @@ -32,7 +32,7 @@ """ """ When I run `pro refresh` with sudo - And I run `pro status` with sudo + And I run `pro status --all` with sudo Then stdout matches regexp: """ +yes + diff -Nru ubuntu-advantage-tools-27.11~22.10.1/features/ubuntu_upgrade_unattached.feature ubuntu-advantage-tools-27.11.2~22.10.1/features/ubuntu_upgrade_unattached.feature --- ubuntu-advantage-tools-27.11~22.10.1/features/ubuntu_upgrade_unattached.feature 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/features/ubuntu_upgrade_unattached.feature 2022-09-29 19:20:42.000000000 +0000 @@ -30,6 +30,7 @@ """ """ When I attach `contract_token` with sudo + And I run `pro status --all` with sudo Then stdout matches regexp: """ esm-infra +yes + diff -Nru ubuntu-advantage-tools-27.11~22.10.1/features/unattached_commands.feature ubuntu-advantage-tools-27.11.2~22.10.1/features/unattached_commands.feature --- ubuntu-advantage-tools-27.11~22.10.1/features/unattached_commands.feature 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/features/unattached_commands.feature 2022-09-29 19:20:42.000000000 +0000 @@ -40,11 +40,23 @@ """ -32768 -infra-updates/main amd64 Packages """ - Then stdout matches regexp: + And stdout does not match regexp: + """ + -32768 -apps-updates/main amd64 Packages """ - -32768 -infra-security/main amd64 Packages + And stdout does not match regexp: """ - And stdout matches regexp: + -32768 -apps-security/main amd64 Packages + """ + When I append the following on uaclient config: + """ + features: + allow_beta: true + """ + And I run `dpkg-reconfigure ubuntu-advantage-tools` with sudo + And I run `apt-get update` with sudo + When I run `apt-cache policy` with sudo + Then stdout matches regexp: """ -32768 -apps-updates/main amd64 Packages """ diff -Nru ubuntu-advantage-tools-27.11~22.10.1/features/unattached_status.feature ubuntu-advantage-tools-27.11.2~22.10.1/features/unattached_status.feature --- ubuntu-advantage-tools-27.11~22.10.1/features/unattached_status.feature 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/features/unattached_status.feature 2022-09-29 19:20:42.000000000 +0000 @@ -52,13 +52,10 @@ SERVICE +AVAILABLE +DESCRIPTION cc-eal +yes +Common Criteria EAL2 Provisioning Packages cis +yes +Security compliance and audit tools - esm-apps +yes +Expanded Security Maintenance for Applications esm-infra +yes +Expanded Security Maintenance for Infrastructure fips +yes +NIST-certified core packages fips-updates +yes +NIST-certified core packages with priority security updates livepatch +yes +Canonical Livepatch service - ros +yes +Security Updates for the Robot Operating System - ros-updates +yes +All Updates for the Robot Operating System This machine is not attached to an Ubuntu Pro subscription. See https://ubuntu.com/pro @@ -123,7 +120,6 @@ Then stdout matches regexp: """ SERVICE +AVAILABLE +DESCRIPTION - esm-apps +yes +Expanded Security Maintenance for Applications esm-infra +yes +Expanded Security Maintenance for Infrastructure fips +yes +NIST-certified core packages fips-updates +yes +NIST-certified core packages with priority security updates @@ -189,7 +185,6 @@ Then stdout matches regexp: """ SERVICE +AVAILABLE +DESCRIPTION - esm-apps +yes +Expanded Security Maintenance for Applications esm-infra +yes +Expanded Security Maintenance for Infrastructure livepatch +yes +Canonical Livepatch service @@ -253,13 +248,10 @@ SERVICE +AVAILABLE +ENTITLED +AUTO_ENABLED +DESCRIPTION cc-eal +yes +yes +no +Common Criteria EAL2 Provisioning Packages cis +yes +yes +no +Security compliance and audit tools - esm-apps +yes +yes +yes +Expanded Security Maintenance for Applications esm-infra +yes +yes +yes +Expanded Security Maintenance for Infrastructure fips +yes +yes +no +NIST-certified core packages fips-updates +yes +yes +no +NIST-certified core packages with priority security updates livepatch +yes +yes +yes +Canonical Livepatch service - ros +yes +yes +no +Security Updates for the Robot Operating System - ros-updates +yes +yes +no +All Updates for the Robot Operating System """ When I do a preflight check for `contract_token` with the all flag Then stdout matches regexp: @@ -283,24 +275,23 @@ When I verify that a preflight check for `invalid_token` formatted as json exits 1 Then stdout is a json matching the `ua_status` schema And I will see the following on stdout: - """ - {"environment_vars": [], "errors": [{"message": "Invalid token. See https://ubuntu.com/pro", "message_code": "attach-invalid-token", "service": null, "type": "system"}], "result": "failure", "services": [], "warnings": []} - """ + """ + {"environment_vars": [], "errors": [{"message": "Invalid token. See https://ubuntu.com/pro", "message_code": "attach-invalid-token", "service": null, "type": "system"}], "result": "failure", "services": [], "warnings": []} + """ When I verify that a preflight check for `invalid_token` formatted as yaml exits 1 Then stdout is a yaml matching the `ua_status` schema And I will see the following on stdout: - """ - environment_vars: [] - errors: - - message: Invalid token. See https://ubuntu.com/pro - message_code: attach-invalid-token - service: null - type: system - result: failure - services: [] - warnings: [] - """ - + """ + environment_vars: [] + errors: + - message: Invalid token. See https://ubuntu.com/pro + message_code: attach-invalid-token + service: null + type: system + result: failure + services: [] + warnings: [] + """ Examples: ubuntu release | release | | xenial | @@ -315,7 +306,6 @@ Then stdout matches regexp: """ SERVICE +AVAILABLE +ENTITLED +AUTO_ENABLED +DESCRIPTION - esm-apps +yes +yes +yes +Expanded Security Maintenance for Applications esm-infra +yes +yes +yes +Expanded Security Maintenance for Infrastructure fips +yes +yes +no +NIST-certified core packages fips-updates +yes +yes +no +NIST-certified core packages with priority security updates @@ -375,7 +365,6 @@ Then stdout matches regexp: """ SERVICE +AVAILABLE +ENTITLED +AUTO_ENABLED +DESCRIPTION - esm-apps +yes +yes +yes +Expanded Security Maintenance for Applications esm-infra +yes +yes +yes +Expanded Security Maintenance for Infrastructure livepatch +yes +yes +yes +Canonical Livepatch service """ @@ -434,37 +423,34 @@ And I verify that a preflight check for `contract_token_staging_expired` formatted as json exits 1 Then stdout is a json matching the `ua_status` schema And stdout matches regexp: - """ - \"result\": \"failure\" - """ + """ + \"result\": \"failure\" + """ And stdout matches regexp: - """ - \"message\": \"Contract .* expired on .*\" - """ + """ + \"message\": \"Contract .* expired on .*\" + """ When I verify that a preflight check for `contract_token_staging_expired` formatted as yaml exits 1 Then stdout is a yaml matching the `ua_status` schema Then stdout matches regexp: - """ - errors: - - message: Contract .* expired on .* - """ + """ + errors: + - message: Contract .* expired on .* + """ When I verify that a preflight check for `contract_token_staging_expired` without the all flag exits 1 Then stdout matches regexp: - """ - This token is not valid. - Contract \".*\" expired on .* - - SERVICE +AVAILABLE +ENTITLED +AUTO_ENABLED +DESCRIPTION - cc-eal +yes +yes +no +Common Criteria EAL2 Provisioning Packages - cis +yes +yes +no +Security compliance and audit tools - esm-apps +yes +yes +yes +Expanded Security Maintenance for Applications - esm-infra +yes +yes +yes +Expanded Security Maintenance for Infrastructure - fips +yes +yes +no +NIST-certified core packages - fips-updates +yes +yes +no +NIST-certified core packages with priority security updates - livepatch +yes +yes +yes +Canonical Livepatch service - ros +yes +yes +no +Security Updates for the Robot Operating System - ros-updates +yes +yes +no +All Updates for the Robot Operating System - """ + """ + This token is not valid. + Contract \".*\" expired on .* + + SERVICE +AVAILABLE +ENTITLED +AUTO_ENABLED +DESCRIPTION + cc-eal +yes +yes +no +Common Criteria EAL2 Provisioning Packages + cis +yes +yes +no +Security compliance and audit tools + esm-infra +yes +yes +yes +Expanded Security Maintenance for Infrastructure + fips +yes +yes +no +NIST-certified core packages + fips-updates +yes +yes +no +NIST-certified core packages with priority security updates + livepatch +yes +yes +yes +Canonical Livepatch service + """ Examples: ubuntu release | release | @@ -501,7 +487,6 @@ Contract \".*\" expired on .* SERVICE +AVAILABLE +ENTITLED +AUTO_ENABLED +DESCRIPTION - esm-apps +yes +yes +yes +Expanded Security Maintenance for Applications esm-infra +yes +yes +yes +Expanded Security Maintenance for Infrastructure fips +yes +yes +no +NIST-certified core packages fips-updates +yes +yes +no +NIST-certified core packages with priority security updates @@ -543,7 +528,6 @@ Contract \".*\" expired on .* SERVICE +AVAILABLE +ENTITLED +AUTO_ENABLED +DESCRIPTION - esm-apps +yes +yes +yes +Expanded Security Maintenance for Applications esm-infra +yes +yes +yes +Expanded Security Maintenance for Infrastructure livepatch +yes +yes +yes +Canonical Livepatch service """ diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/api/tests/test_u_pro_attach_auto_full_auto_attach_v1.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/api/tests/test_u_pro_attach_auto_full_auto_attach_v1.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/api/tests/test_u_pro_attach_auto_full_auto_attach_v1.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/api/tests/test_u_pro_attach_auto_full_auto_attach_v1.py 2022-09-29 19:20:42.000000000 +0000 @@ -50,8 +50,8 @@ ): cfg = FakeConfig(root_mode=True) options = FullAutoAttachOptions( - enable=["esm-infra", "esm-apps", "cis"], - enable_beta=["realtime-kernel", "test", "wrong"], + enable=["esm-infra", "cis"], + enable_beta=["esm-apps", "realtime-kernel", "test", "wrong"], ) with pytest.raises(exceptions.EntitlementNotFoundError): _full_auto_attach(options, cfg) @@ -79,8 +79,8 @@ ): cfg = FakeConfig(root_mode=True) options = FullAutoAttachOptions( - enable=["esm-infra", "esm-apps", "cis"], - enable_beta=["realtime-kernel"], + enable=["esm-infra", "cis"], + enable_beta=["esm-apps", "realtime-kernel"], ) with pytest.raises(exceptions.EntitlementNotEnabledError): _full_auto_attach(options, cfg) @@ -102,8 +102,8 @@ ): cfg = FakeConfig(root_mode=True) options = FullAutoAttachOptions( - enable=["esm-infra", "esm-apps", "fips"], - enable_beta=["ros"], + enable=["esm-infra", "fips"], + enable_beta=["esm-apps", "ros"], ) with pytest.raises(exceptions.EntitlementNotEnabledError): _full_auto_attach(options, cfg) @@ -116,8 +116,8 @@ ): cfg = FakeConfig(root_mode=True) options = FullAutoAttachOptions( - enable=["esm-infra", "esm-apps", "fips"], - enable_beta=["livepatch"], + enable=["esm-infra", "fips"], + enable_beta=["esm-apps", "livepatch"], ) with pytest.raises(exceptions.IncompatibleEntitlementsDetected) as e: _full_auto_attach(options, cfg) diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/apt.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/apt.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/apt.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/apt.py 2022-09-29 19:20:42.000000000 +0000 @@ -397,16 +397,13 @@ def add_ppa_pinning(apt_preference_file, repo_url, origin, priority): """Add an apt preferences file and pin for a PPA.""" - series = system.get_platform_info()["series"] _protocol, repo_path = repo_url.split("://") if repo_path.endswith("/"): # strip trailing slash repo_path = repo_path[:-1] content = ( "Package: *\n" - "Pin: release o={origin}, n={series}\n" - "Pin-Priority: {priority}\n".format( - origin=origin, priority=priority, series=series - ) + "Pin: release o={origin}\n" + "Pin-Priority: {priority}\n".format(origin=origin, priority=priority) ) system.write_file(apt_preference_file, content) diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/cli.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/cli.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/cli.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/cli.py 2022-09-29 19:20:42.000000000 +0000 @@ -505,11 +505,11 @@ help=("List and present information about esm-infra packages"), action="store_true", ) - group.add_argument( - "--esm-apps", - help=("List and present information about esm-apps packages"), - action="store_true", - ) + # group.add_argument( + # "--esm-apps", + # help=("List and present information about esm-apps packages"), + # action="store_true", + # ) return parser @@ -556,8 +556,8 @@ security_status.list_unavailable_packages() elif args.esm_infra: security_status.list_esm_infra_packages(cfg) - elif args.esm_apps: - security_status.list_esm_apps_packages(cfg) + # elif args.esm_apps: + # security_status.list_esm_apps_packages(cfg) else: security_status.security_status(cfg) elif args.format == "json": diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/entitlements/esm.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/entitlements/esm.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/entitlements/esm.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/entitlements/esm.py 2022-09-29 19:20:42.000000000 +0000 @@ -64,6 +64,7 @@ description = "Expanded Security Maintenance for Applications" repo_key_file = "ubuntu-advantage-esm-apps.gpg" apt_repo_name = "apps" + is_beta = True @property def repo_pin_priority(self) -> Optional[str]: @@ -95,10 +96,10 @@ @property def repo_pin_priority(self) -> Optional[str]: - """Once a release goes into EOL it is entitled to ESM Infra.""" - if system.is_active_esm(system.get_platform_info()["series"]): + """All LTS are entitled to ESM Infra.""" + if system.is_lts(system.get_platform_info()["series"]): return "never" - return None # No pinning on non-ESM releases + return None # No pinning on non-LTS releases @property def disable_apt_auth_only(self) -> bool: diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/entitlements/ros.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/entitlements/ros.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/entitlements/ros.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/entitlements/ros.py 2022-09-29 19:20:42.000000000 +0000 @@ -7,6 +7,7 @@ class ROSCommonEntitlement(repo.RepoEntitlement): help_doc_url = "https://ubuntu.com/robotics/ros-esm" repo_key_file = "ubuntu-advantage-ros.gpg" + is_beta = True class ROSEntitlement(ROSCommonEntitlement): diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/entitlements/tests/test_esm.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/entitlements/tests/test_esm.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/entitlements/tests/test_esm.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/entitlements/tests/test_esm.py 2022-09-29 19:20:42.000000000 +0000 @@ -19,36 +19,37 @@ class TestESMRepoPinPriority: @pytest.mark.parametrize( - "series, is_active_esm, repo_pin_priority", + "series, is_lts, repo_pin_priority", ( ("xenial", True, "never"), - ("bionic", False, None), - ("focal", False, None), + ("bionic", True, "never"), + ("impish", False, None), ), ) - @mock.patch("uaclient.system.is_active_esm") + @mock.patch("uaclient.system.is_lts") @mock.patch("uaclient.entitlements.esm.system.get_platform_info") - def test_esm_infra_repo_pin_priority_never_on_active_esm( + def test_esm_infra_repo_pin_priority_never_on_lts( self, m_get_platform_info, - m_is_active_esm, + m_is_lts, series, - is_active_esm, + is_lts, repo_pin_priority, ): - """Repository pinning priority for ESMInfra is 'never' when active ESM + """Repository pinning priority for ESMInfra is 'never' when LTS A pin priority of 'never' means we advertize those service packages without allowing them to be installed until someone attaches the machine to Ubuntu Advantage. This is only done for ESM Infra - when the release is EOL and supports ESM. We won't want/need to - advertize ESM Infra packages on releases that are not EOL. + when the release is LTS. We won't want/need to + advertize ESM Infra packages on releases that are not EOL, but + this is dealt with in the enable/disable flows, and in postinst. """ - m_is_active_esm.return_value = is_active_esm + m_is_lts.return_value = is_lts m_get_platform_info.return_value = {"series": series} inst = ESMInfraEntitlement({}) assert repo_pin_priority == inst.repo_pin_priority - assert [mock.call(series)] == m_is_active_esm.call_args_list + assert [mock.call(series)] == m_is_lts.call_args_list @pytest.mark.parametrize( "series, is_beta, repo_pin_priority", @@ -196,6 +197,7 @@ } }, suites=["xenial"], + allow_beta=True, ) patched_packages = ["a", "b"] original_exists = os.path.exists @@ -384,12 +386,17 @@ assert add_apt_calls == m_add_apt.call_args_list assert 0 == m_add_pinning.call_count assert subp_calls == m_subp.call_args_list - # Enable esm-infra/apps xenial removes apt preferences pin 'never' file - remove_file_calls = [ - mock.call( - "/etc/apt/preferences.d/ubuntu-{}".format(entitlement.name) - ) - ] + if entitlement.name == "esm-infra": + # Enable esm-infra xenial removes apt preferences pin 'never' file + remove_file_calls = [ + mock.call( + "/etc/apt/preferences.d/ubuntu-{}".format(entitlement.name) + ) + ] + else: + remove_file_calls = ( + [] + ) # esm-apps there is no apt pref file to remove assert remove_file_calls == m_remove_file.call_args_list assert [ mock.call(run_apt_update=False) diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/jobs/tests/test_update_messaging.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/jobs/tests/test_update_messaging.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/jobs/tests/test_update_messaging.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/jobs/tests/test_update_messaging.py 2022-09-29 19:20:42.000000000 +0000 @@ -649,7 +649,7 @@ if is_lts: write_apt_calls = [mock.call(cfg, series)] - esm_announce_calls = [mock.call(cfg, series)] + esm_announce_calls = [] subp_calls = [ mock.call( [ diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/jobs/update_messaging.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/jobs/update_messaging.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/jobs/update_messaging.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/jobs/update_messaging.py 2022-09-29 19:20:42.000000000 +0000 @@ -28,6 +28,7 @@ CONTRACT_EXPIRED_MOTD_SOON_TMPL, DISABLED_APT_NO_PKGS_TMPL, DISABLED_APT_PKGS_TMPL, + TRY_UBUNTU_PRO_BETA, ) XENIAL_ESM_URL = "https://ubuntu.com/16-04" @@ -310,6 +311,32 @@ ], ) + if ( + system.is_current_series_lts() + and not system.is_active_esm(series) + and not cfg.is_attached + ): + _write_template_or_remove( + TRY_UBUNTU_PRO_BETA, os.path.join(msg_dir, apps_no_pkg_file) + ) + _write_template_or_remove( + TRY_UBUNTU_PRO_BETA, os.path.join(msg_dir, apps_pkg_file) + ) + _write_template_or_remove("", os.path.join(msg_dir, infra_no_pkg_file)) + _write_template_or_remove("", os.path.join(msg_dir, infra_pkg_file)) + _write_template_or_remove( + "", os.path.join(msg_dir, motd_apps_no_pkg_file) + ) + _write_template_or_remove( + "", os.path.join(msg_dir, motd_apps_pkg_file) + ) + _write_template_or_remove( + "", os.path.join(msg_dir, motd_infra_no_pkg_file) + ) + _write_template_or_remove( + "", os.path.join(msg_dir, motd_infra_pkg_file) + ) + def write_esm_announcement_message(cfg: config.UAConfig, series: str) -> None: """Write human-readable messages if ESM is offered on this LTS release. @@ -368,7 +395,7 @@ return True # Announce ESM availabilty on active ESM LTS releases - write_esm_announcement_message(cfg, series) + # write_esm_announcement_message(cfg, series) write_apt_and_motd_templates(cfg, series) # Now that we've setup/cleanedup templates render them with apt-hook system.subp( diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/messages.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/messages.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/messages.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/messages.py 2022-09-29 19:20:42.000000000 +0000 @@ -1010,7 +1010,12 @@ update{plural}.""" # noqa: E501 SS_SERVICE_COMMAND = "Enable {service} with: pro enable {service}" -SS_LEARN_MORE = "Learn more about Ubuntu Pro at " + BASE_UA_URL +SS_LEARN_MORE = """\ +Try Ubuntu Pro beta with a free personal subscription on up to 5 machines. +Learn more at {url} +""".format( + url=BASE_UA_URL +) SS_POLICY_HINT = """\ For example, run: @@ -1029,3 +1034,7 @@ with '{{service}}' enabled""".format( bold=TxtColor.BOLD, end_bold=TxtColor.ENDC ) + +TRY_UBUNTU_PRO_BETA = """\ +Try Ubuntu Pro beta with a free personal subscription on up to 5 machines. +Learn more at https://ubuntu.com/pro""" diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/security_status.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/security_status.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/security_status.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/security_status.py 2022-09-29 19:20:42.000000000 +0000 @@ -421,6 +421,7 @@ series = get_platform_info()["series"] is_lts = is_current_series_lts() is_attached = get_ua_info(cfg)["attached"] + esm_apps_enabled = "esm-apps" in get_ua_info(cfg)["enabled_services"] packages_by_origin = get_installed_packages_by_origin() security_upgradable_versions_infra = filter_security_updates( @@ -457,10 +458,14 @@ is_attached=is_attached, ) - if is_lts and ( - packages_by_origin["universe"] - or packages_by_origin["multiverse"] - or packages_by_origin["esm-apps"] + if ( + esm_apps_enabled + and is_lts + and ( + packages_by_origin["universe"] + or packages_by_origin["multiverse"] + or packages_by_origin["esm-apps"] + ) ): _print_service_support( service="esm-apps", diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_apt.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_apt.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_apt.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_apt.py 2022-09-29 19:20:42.000000000 +0000 @@ -69,7 +69,7 @@ expected_pref = dedent( """\ Package: * - Pin: release o=MYORIG, n=xenial + Pin: release o=MYORIG Pin-Priority: 1003\n""" ) assert expected_pref == system.load_file(pref_file) diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_cli_disable.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_cli_disable.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_cli_disable.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_cli_disable.py 2022-09-29 19:20:42.000000000 +0000 @@ -39,8 +39,8 @@ Arguments: service the name(s) of the Ubuntu Pro services to disable. One - of: cc-eal, cis, esm-apps, esm-infra, fips, fips- - updates, livepatch, ros, ros-updates + of: cc-eal, cis, esm-infra, fips, fips-updates, + livepatch Flags: -h, --help show this help message and exit diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_cli_enable.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_cli_enable.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_cli_enable.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_cli_enable.py 2022-09-29 19:20:42.000000000 +0000 @@ -20,8 +20,8 @@ Arguments: service the name(s) of the Ubuntu Pro services to enable. One - of: cc-eal, cis, esm-apps, esm-infra, fips, fips- - updates, livepatch, ros, ros-updates + of: cc-eal, cis, esm-infra, fips, fips-updates, + livepatch Flags: -h, --help show this help message and exit diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_cli.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_cli.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_cli.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_cli.py 2022-09-29 19:20:42.000000000 +0000 @@ -78,8 +78,6 @@ (https://ubuntu.com/cc-eal) - cis: Security compliance and audit tools (https://ubuntu.com/security/certifications/docs/usg) - - esm-apps: Expanded Security Maintenance for Applications - (https://ubuntu.com/security/esm) - esm-infra: Expanded Security Maintenance for Infrastructure (https://ubuntu.com/security/esm) - fips-updates: NIST-certified core packages with priority security updates diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_cli_security_status.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_cli_security_status.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_cli_security_status.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_cli_security_status.py 2022-09-29 19:20:42.000000000 +0000 @@ -17,7 +17,7 @@ HELP_OUTPUT = textwrap.dedent( """\ usage: security-status \[-h\] \[--format {json,yaml,text}\] - \[--thirdparty \| --unavailable \| --esm-infra \| --esm-apps\] + \[--thirdparty \| --unavailable \| --esm-infra\] Show security updates for packages in the system, including all available Expanded Security Maintenance \(ESM\) related content. @@ -45,7 +45,6 @@ --unavailable List and present information about unavailable packages --esm-infra List and present information about esm-infra packages - --esm-apps List and present information about esm-apps packages """ # noqa ) diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_cli_status.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_cli_status.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_cli_status.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_cli_status.py 2022-09-29 19:20:42.000000000 +0000 @@ -82,7 +82,6 @@ SIMULATED_STATUS = """\ SERVICE AVAILABLE ENTITLED AUTO_ENABLED DESCRIPTION -esm-apps yes no yes Expanded Security Maintenance for Applications esm-infra yes yes yes Expanded Security Maintenance for Infrastructure livepatch yes yes no Canonical Livepatch service """ # noqa: E501 @@ -104,7 +103,6 @@ UNATTACHED_STATUS = """\ SERVICE AVAILABLE DESCRIPTION -esm-apps yes Expanded Security Maintenance for Applications esm-infra yes Expanded Security Maintenance for Infrastructure livepatch yes Canonical Livepatch service @@ -134,7 +132,6 @@ # Omit beta services from status ATTACHED_STATUS = """\ SERVICE ENTITLED STATUS DESCRIPTION -esm-apps no {dash} Expanded Security Maintenance for Applications esm-infra no {dash} Expanded Security Maintenance for Infrastructure livepatch no {dash} Canonical Livepatch service {notices}{features} @@ -146,7 +143,7 @@ Technical support level: n/a """ # noqa: E501 -BETA_SVC_NAMES = ["realtime-kernel"] +BETA_SVC_NAMES = ["esm-apps", "realtime-kernel", "ros", "ros-updates"] SERVICES_JSON_ALL = [ { @@ -235,16 +232,6 @@ SERVICES_JSON = [ { - "description": "Expanded Security Maintenance for Applications", - "description_override": None, - "entitled": "no", - "name": "esm-apps", - "status": "—", - "status_details": "", - "available": "yes", - "blocked_by": [], - }, - { "description": "Expanded Security Maintenance for Infrastructure", "description_override": None, "entitled": "no", @@ -809,9 +796,6 @@ "entitled": "no", "name": "realtime-kernel", }, - ] - - services = [ { "auto_enabled": "yes", "available": "yes", @@ -820,6 +804,24 @@ "name": "esm-apps", }, { + "auto_enabled": "no", + "available": "no", + "description": "Security Updates for the Robot Operating" + " System", + "entitled": "no", + "name": "ros", + }, + { + "auto_enabled": "no", + "available": "no", + "description": "All Updates for the Robot Operating System", + "entitled": "no", + "name": "ros-updates", + }, + ] + + services = [ + { "auto_enabled": "yes", "available": "yes", "description": "Expanded Security Maintenance for Infrastructure", # noqa @@ -848,21 +850,6 @@ "entitled": "yes", "name": "livepatch", }, - { - "auto_enabled": "no", - "available": "no", - "description": "Security Updates for the Robot Operating" - " System", - "entitled": "no", - "name": "ros", - }, - { - "auto_enabled": "no", - "available": "no", - "description": "All Updates for the Robot Operating System", - "entitled": "no", - "name": "ros-updates", - }, ] expected_services = sorted( diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_status.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_status.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/tests/test_status.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/tests/test_status.py 2022-09-29 19:20:42.000000000 +0000 @@ -268,10 +268,8 @@ @pytest.fixture -def realtime_desc(FakeConfig): - return entitlement_factory( - cfg=FakeConfig(), name="realtime-kernel" - ).description +def ros_desc(FakeConfig): + return entitlement_factory(cfg=FakeConfig(), name="ros").description @mock.patch("uaclient.files.NoticeFile.remove") @@ -301,7 +299,7 @@ m_get_available_resources, _m_should_reboot, m_remove_notice, - realtime_desc, + ros_desc, esm_desc, show_all, FakeConfig, @@ -316,8 +314,8 @@ }, { "available": "no", - "name": "realtime-kernel", - "description": realtime_desc, + "name": "ros", + "description": ros_desc, }, ] else: @@ -331,7 +329,7 @@ cfg = FakeConfig() m_get_available_resources.return_value = [ {"name": "esm-infra", "available": True}, - {"name": "realtime-kernel", "available": False}, + {"name": "ros", "available": False}, ] expected = copy.deepcopy(DEFAULT_STATUS) expected["version"] = mock.ANY diff -Nru ubuntu-advantage-tools-27.11~22.10.1/uaclient/version.py ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/version.py --- ubuntu-advantage-tools-27.11~22.10.1/uaclient/version.py 2022-09-08 21:02:55.000000000 +0000 +++ ubuntu-advantage-tools-27.11.2~22.10.1/uaclient/version.py 2022-09-29 19:20:42.000000000 +0000 @@ -18,7 +18,7 @@ from uaclient.exceptions import ProcessExecutionError from uaclient.system import subp -__VERSION__ = "27.11" +__VERSION__ = "27.11.2" PACKAGED_VERSION = "@@PACKAGED_VERSION@@" CANDIDATE_REGEX = r"Candidate: (?P.*?)\n"