Merge ~chad.smith/ubuntu/+source/ubuntu-advantage-tools:release-27-focal into ubuntu/+source/ubuntu-advantage-tools:ubuntu/focal-proposed
- Git
- lp:~chad.smith/ubuntu/+source/ubuntu-advantage-tools
- release-27-focal
- Merge into ubuntu/focal-proposed
Status: | Merged |
---|---|
Approved by: | Bryce Harrington |
Approved revision: | 68c4edb78a348f6bd179b5c23d1fae3d09ce8a32 |
Merge reported by: | Chad Smith |
Merged at revision: | 17c40189b04b728c28797d3f41d9bbf66096f5f3 |
Proposed branch: | ~chad.smith/ubuntu/+source/ubuntu-advantage-tools:release-27-focal |
Merge into: | ubuntu/+source/ubuntu-advantage-tools:ubuntu/focal-proposed |
Diff against target: |
393 lines (+202/-5) (has conflicts) 10 files modified
.gitignore (+8/-0) Jenkinsfile (+16/-0) apt-hook/Makefile (+30/-0) apt-hook/json-hook-src/go.mod (+4/-0) apt-hook/json-hook-src/json-hook.go (+42/-0) apt-hook/json-hook-src/json-hook_test.go (+34/-0) debian/changelog (+22/-0) debian/control (+7/-0) debian/rules (+1/-0) uaclient/tests/test_util.py (+38/-5) Conflict in .gitignore Conflict in Jenkinsfile Conflict in apt-hook/Makefile Conflict in apt-hook/json-hook-src/go.mod Conflict in apt-hook/json-hook-src/json-hook.go Conflict in apt-hook/json-hook-src/json-hook_test.go Conflict in debian/changelog Conflict in debian/control Conflict in uaclient/tests/test_util.py |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Bryce Harrington (community) | Approve | ||
Grant Orndorff | Pending | ||
Lucas Albuquerque Medeiros de Moura | Pending | ||
Review via email: mp+401917@code.launchpad.net |
Commit message
Description of the change
New upstream release of 27.0 for release into xenial
Avoiding rich commit history because this is a branch new client (python instead of bash) which represented a major upgrade that is backwards incompatible.
We will be following this verification procedure for SRU of ubuntu-
Functional equivalent debs have been uploaded to this ppa for testing https:/
to test:
$ cat > 27_test_setup.yaml <<EOF
#cloud-config
write_files:
- content: |
# Ubuntu-Advantage client config file.
contract_url: 'https:/
data_dir: /var/lib/
log_level: debug
log_file: /var/log/
features:
allow_beta: true
owner: root:root
path: /etc/ubuntu-
permissions: '0644'
apt:
sources:
ua_staging_ppa:
source: 'deb http://
keyid: 74E59E9E
packages: [ubuntu-
EOF
$ lxc launch ubuntu-
$ lxc exec test-27-f -- cloud-init status --wait --long # wait for pkg installs
$ lxc exec test-27-f -- ua version
$ lxc exec test-27-f -- ua status # show unattached
This machine is not attached to a UA subscription.
See https:/
# attach with token from https:/
$ lxc exec test-27-f -- ua attach <REDACTED>
# assert esm-infra auto enabled
# no failures on attach
lxc exect test-27-f -- grep Traceback /var/log/
# assert default contract not authorized to esm-apps
$ lxc exec test-27-f -- ua enable esm-apps
will manipulate other subcommands
Chad Smith (chad.smith) wrote : | # |
Bryce Harrington (bryce) wrote : | # |
Running through the test case, at the part to grep for Traceback, I did indeed find one in the log:
2021-04-28 02:49:25,798 - util.py:(414) [DEBUG]: Reading file: /var/lib/
2021-04-28 02:49:25,799 - config.py:(357) [DEBUG]: File does not exist: /var/lib/
ken.json
2021-04-28 02:49:25,799 - cli.py:(1026) [ERROR]: Auto-attach image support is not available on lxd
See: https:/
Traceback (most recent call last):
File "/usr/lib/
return func(*args, **kwargs)
File "/usr/lib/
return args.action(args, cfg)
File "/usr/lib/
return f(*args, **kwargs)
File "/usr/lib/
retval = f(args, cfg, **kwargs)
File "/usr/lib/
token = _get_contract_
File "/usr/lib/
raise e
File "/usr/lib/
instance = identity.
File "/usr/lib/
raise exceptions.
uaclient.
See: https:/
This appeared to occur during installation.
Despite the traceback, everything seems to be working fine.
Bryce Harrington (bryce) wrote : | # |
I got an unexpected error from the last command in the test case:
triage-
One moment, checking your subscription first
Cannot enable unknown service 'esm-apps'.
Try esm-infra, fips, fips-updates, livepatch.
triage-
SERVICE ENTITLED STATUS DESCRIPTION
esm-apps yes enabled UA Apps: Extended Security Maintenance (ESM)
esm-infra yes enabled UA Infra: Extended Security Maintenance (ESM)
fips yes n/a NIST-certified FIPS modules
fips-updates yes n/a Uncertified security updates to FIPS modules
livepatch yes n/a Canonical Livepatch service
Enable services with: ua enable <service>
Valid until: 3999-12-31 00:00:00
Technical support level: essential
triage-
Updating package lists
A reboot is required to complete disable operation.
triage-
One moment, checking your subscription first
Cannot enable unknown service 'esm-apps'.
Try esm-infra, fips, fips-updates, livepatch.
triage-
SERVICE ENTITLED STATUS DESCRIPTION
esm-infra yes enabled UA Infra: Extended Security Maintenance (ESM)
fips yes n/a NIST-certified FIPS modules
fips-updates yes n/a Uncertified security updates to FIPS modules
livepatch yes n/a Canonical Livepatch service
Enable services with: ua enable <service>
Valid until: 3999-12-31 00:00:00
Technical support level: essential
This is a bit confusing to have esm-apps shown as enabled, but when running ua enable esm-apps it says it can't be enabled, and then disabling it and attempting to re-enable it doesn't work. However I can detach and reattach the token and esm-apps comes back.
Bryce Harrington (bryce) wrote : | # |
Tagged and pushed...
triage-
Enumerating objects: 242, done.
Counting objects: 100% (242/242), done.
Delta compression using up to 12 threads
Compressing objects: 100% (131/131), done.
Writing objects: 100% (156/156), 218.56 KiB | 453.00 KiB/s, done.
Total 156 (delta 57), reused 76 (delta 22)
remote: Resolving deltas: 100% (57/57), completed with 50 local objects.
To ssh://git.
* [new tag] upload/27.0_20.04.1 -> upload/27.0_20.04.1
triage-
Checking signature on .changes
gpg: /home/bryce/
Checking signature on .dsc
gpg: /home/bryce/
Uploading to ubuntu (via ftp to upload.ubuntu.com):
Uploading ubuntu-
Uploading ubuntu-
Uploading ubuntu-
Successfully uploaded packages.
Bryce Harrington (bryce) wrote : | # |
Since there were additional changes needed, the sru upload was dropped from the waiting queue, and I've now uploaded a replacement with the above fixes.
triage-
Checking signature on .changes
gpg: /home/bryce/
Checking signature on .dsc
gpg: /home/bryce/
Uploading to ubuntu (via ftp to upload.ubuntu.com):
Uploading ubuntu-
Uploading ubuntu-
Uploading ubuntu-
Uploading ubuntu-
Successfully uploaded packages.
stirling:
Enumerating objects: 251, done.
Counting objects: 100% (251/251), done.
Delta compression using up to 12 threads
Compressing objects: 100% (149/149), done.
Writing objects: 100% (165/165), 219.30 KiB | 453.00 KiB/s, done.
Total 165 (delta 64), reused 56 (delta 13)
remote: Resolving deltas: 100% (64/64), completed with 50 local objects.
To ssh://git.
+ d91b6458...6f2d8ea8 upload/27.0_20.04.1 -> upload/27.0_20.04.1 (forced update)
- a6bc924... by Grant Orndorff
-
apt-hook: refactor json hook messaging to be dry
The message construction code in the json hook
was pretty repetitive. This cleans it up a bit
and also removes some unnecessary explicit struct
names in the tests. - 05742dc... by Grant Orndorff
-
apt-hook: ignore go hook on some architectures
Golang doesn't support powerpc and riscv on older versions.
This configures our Build-Depends and Makefile to gracefully
handle scenarios where we can't build our go hook. We will
simply not ship the go hook in these limited scenarios.Fixes: #1603
- 56c18d9... by Grant Orndorff
-
build: order build-depends alternatives newer first
When using alternatives in the Build-Depends section of
debian/control, we should always put the newer version of
a package first. This is because sbuild doesn't resolve
alternatives by default and we want sbuild to work on the
latest version of ubuntu with default settings.LP: #1926949
- b65402c... by Grant Orndorff
-
tests: fix subp ls error case
- 23a3f35... by Chad Smith
-
changelog 27.0.1 & 27.0.2
- f40810b... by Chad Smith
-
jenkinsfile: trusty sbuild --resolve-depends for CI runs
- 17c4018... by Chad Smith
-
changelog: 27.0.2~20.04.1
Preview Diff
1 | diff --git a/.gitignore b/.gitignore | |||
2 | index 2b2da67..29b86f4 100644 | |||
3 | --- a/.gitignore | |||
4 | +++ b/.gitignore | |||
5 | @@ -22,3 +22,11 @@ ubuntu_advantage_tools.dsc | |||
6 | 22 | # test/jenkins artifacts | 22 | # test/jenkins artifacts |
7 | 23 | pytest_results.xml | 23 | pytest_results.xml |
8 | 24 | reports/ | 24 | reports/ |
9 | 25 | <<<<<<< .gitignore | ||
10 | 26 | ======= | ||
11 | 27 | |||
12 | 28 | # apt-hook build artifacts | ||
13 | 29 | apt-hook/hook | ||
14 | 30 | apt-hook/ubuntu-advantage.pot | ||
15 | 31 | apt-hook/json-hook-src/json-hook | ||
16 | 32 | >>>>>>> .gitignore | ||
17 | diff --git a/Jenkinsfile b/Jenkinsfile | |||
18 | index 2082e19..925a9c3 100644 | |||
19 | --- a/Jenkinsfile | |||
20 | +++ b/Jenkinsfile | |||
21 | @@ -87,7 +87,11 @@ pipeline { | |||
22 | 87 | cp debian/changelog ${WORKSPACE}/debian/changelog-${SERIES_VERSION} | 87 | cp debian/changelog ${WORKSPACE}/debian/changelog-${SERIES_VERSION} |
23 | 88 | sed -i "s/${PKG_VERSION}/${NEW_PKG_VERSION}/" ${WORKSPACE}/debian/changelog-${SERIES_VERSION} | 88 | sed -i "s/${PKG_VERSION}/${NEW_PKG_VERSION}/" ${WORKSPACE}/debian/changelog-${SERIES_VERSION} |
24 | 89 | dpkg-source -l${WORKSPACE}/debian/changelog-${SERIES_VERSION} -b . | 89 | dpkg-source -l${WORKSPACE}/debian/changelog-${SERIES_VERSION} -b . |
25 | 90 | <<<<<<< Jenkinsfile | ||
26 | 90 | sbuild --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc | 91 | sbuild --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc |
27 | 92 | ======= | ||
28 | 93 | sbuild --resolve-alternatives --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc | ||
29 | 94 | >>>>>>> Jenkinsfile | ||
30 | 91 | cp ./ubuntu-advantage-tools*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-tools-${BUILD_SERIES}.deb | 95 | cp ./ubuntu-advantage-tools*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-tools-${BUILD_SERIES}.deb |
31 | 92 | cp ./ubuntu-advantage-pro*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-pro-${BUILD_SERIES}.deb | 96 | cp ./ubuntu-advantage-pro*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-pro-${BUILD_SERIES}.deb |
32 | 93 | ''' | 97 | ''' |
33 | @@ -108,7 +112,11 @@ pipeline { | |||
34 | 108 | cp debian/changelog ${WORKSPACE}/debian/changelog-${SERIES_VERSION} | 112 | cp debian/changelog ${WORKSPACE}/debian/changelog-${SERIES_VERSION} |
35 | 109 | sed -i "s/${PKG_VERSION}/${NEW_PKG_VERSION}/" ${WORKSPACE}/debian/changelog-${SERIES_VERSION} | 113 | sed -i "s/${PKG_VERSION}/${NEW_PKG_VERSION}/" ${WORKSPACE}/debian/changelog-${SERIES_VERSION} |
36 | 110 | dpkg-source -l${WORKSPACE}/debian/changelog-${SERIES_VERSION} -b . | 114 | dpkg-source -l${WORKSPACE}/debian/changelog-${SERIES_VERSION} -b . |
37 | 115 | <<<<<<< Jenkinsfile | ||
38 | 111 | sbuild --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc | 116 | sbuild --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc |
39 | 117 | ======= | ||
40 | 118 | sbuild --resolve-alternatives --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc | ||
41 | 119 | >>>>>>> Jenkinsfile | ||
42 | 112 | cp ./ubuntu-advantage-tools*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-tools-${BUILD_SERIES}.deb | 120 | cp ./ubuntu-advantage-tools*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-tools-${BUILD_SERIES}.deb |
43 | 113 | cp ./ubuntu-advantage-pro*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-pro-${BUILD_SERIES}.deb | 121 | cp ./ubuntu-advantage-pro*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-pro-${BUILD_SERIES}.deb |
44 | 114 | ''' | 122 | ''' |
45 | @@ -129,7 +137,11 @@ pipeline { | |||
46 | 129 | cp debian/changelog ${WORKSPACE}/debian/changelog-${SERIES_VERSION} | 137 | cp debian/changelog ${WORKSPACE}/debian/changelog-${SERIES_VERSION} |
47 | 130 | sed -i "s/${PKG_VERSION}/${NEW_PKG_VERSION}/" ${WORKSPACE}/debian/changelog-${SERIES_VERSION} | 138 | sed -i "s/${PKG_VERSION}/${NEW_PKG_VERSION}/" ${WORKSPACE}/debian/changelog-${SERIES_VERSION} |
48 | 131 | dpkg-source -l${WORKSPACE}/debian/changelog-${SERIES_VERSION} -b . | 139 | dpkg-source -l${WORKSPACE}/debian/changelog-${SERIES_VERSION} -b . |
49 | 140 | <<<<<<< Jenkinsfile | ||
50 | 132 | sbuild --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc | 141 | sbuild --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc |
51 | 142 | ======= | ||
52 | 143 | sbuild --resolve-alternatives --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc | ||
53 | 144 | >>>>>>> Jenkinsfile | ||
54 | 133 | cp ./ubuntu-advantage-tools*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-tools-${BUILD_SERIES}.deb | 145 | cp ./ubuntu-advantage-tools*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-tools-${BUILD_SERIES}.deb |
55 | 134 | cp ./ubuntu-advantage-pro*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-pro-${BUILD_SERIES}.deb | 146 | cp ./ubuntu-advantage-pro*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-pro-${BUILD_SERIES}.deb |
56 | 135 | ''' | 147 | ''' |
57 | @@ -150,7 +162,11 @@ pipeline { | |||
58 | 150 | cp debian/changelog ${WORKSPACE}/debian/changelog-${SERIES_VERSION} | 162 | cp debian/changelog ${WORKSPACE}/debian/changelog-${SERIES_VERSION} |
59 | 151 | sed -i "s/${PKG_VERSION}/${NEW_PKG_VERSION}/" ${WORKSPACE}/debian/changelog-${SERIES_VERSION} | 163 | sed -i "s/${PKG_VERSION}/${NEW_PKG_VERSION}/" ${WORKSPACE}/debian/changelog-${SERIES_VERSION} |
60 | 152 | dpkg-source -l${WORKSPACE}/debian/changelog-${SERIES_VERSION} -b . | 164 | dpkg-source -l${WORKSPACE}/debian/changelog-${SERIES_VERSION} -b . |
61 | 165 | <<<<<<< Jenkinsfile | ||
62 | 153 | sbuild --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc | 166 | sbuild --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc |
63 | 167 | ======= | ||
64 | 168 | sbuild --resolve-alternatives --nolog --verbose --dist=${BUILD_SERIES} --no-run-lintian --append-to-version=~${SERIES_VERSION} ../ubuntu-advantage-tools*${NEW_PKG_VERSION}*dsc | ||
65 | 169 | >>>>>>> Jenkinsfile | ||
66 | 154 | cp ./ubuntu-advantage-tools*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-tools-${BUILD_SERIES}.deb | 170 | cp ./ubuntu-advantage-tools*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-tools-${BUILD_SERIES}.deb |
67 | 155 | cp ./ubuntu-advantage-pro*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-pro-${BUILD_SERIES}.deb | 171 | cp ./ubuntu-advantage-pro*${SERIES_VERSION}*.deb ${ARTIFACT_DIR}/ubuntu-advantage-pro-${BUILD_SERIES}.deb |
68 | 156 | ''' | 172 | ''' |
69 | diff --git a/apt-hook/Makefile b/apt-hook/Makefile | |||
70 | index 15c4856..11294b1 100644 | |||
71 | --- a/apt-hook/Makefile | |||
72 | +++ b/apt-hook/Makefile | |||
73 | @@ -1,3 +1,21 @@ | |||
74 | 1 | # the go hook steps will be skipped if this is a nonempty string | ||
75 | 2 | SKIP_GO_HOOK = "" | ||
76 | 3 | |||
77 | 4 | GO_BIN = $(shell which go) | ||
78 | 5 | # Try go-1.14 and go-1.10 if not in path | ||
79 | 6 | ifeq ($(GO_BIN),) | ||
80 | 7 | ifneq ($(wildcard /usr/lib/go-1.14/bin/go),) | ||
81 | 8 | GO_BIN = /usr/lib/go-1.14/bin/go | ||
82 | 9 | else ifneq ($(wildcard /usr/lib/go-1.10/bin/go),) | ||
83 | 10 | GO_BIN = /usr/lib/go-1.10/bin/go | ||
84 | 11 | endif | ||
85 | 12 | endif | ||
86 | 13 | |||
87 | 14 | # If still not found then just don't build the go hook | ||
88 | 15 | ifeq ($(GO_BIN),) | ||
89 | 16 | SKIP_GO_HOOK = "1" | ||
90 | 17 | endif | ||
91 | 18 | |||
92 | 1 | all: build | 19 | all: build |
93 | 2 | 20 | ||
94 | 3 | build: hook ubuntu-advantage.pot json-hook | 21 | build: hook ubuntu-advantage.pot json-hook |
95 | @@ -9,15 +27,27 @@ hook: hook.cc | |||
96 | 9 | $(CXX) -Wall -Wextra -pedantic -std=c++11 $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -g -o hook hook.cc -lapt-pkg $(LDLIBS) | 27 | $(CXX) -Wall -Wextra -pedantic -std=c++11 $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -g -o hook hook.cc -lapt-pkg $(LDLIBS) |
97 | 10 | 28 | ||
98 | 11 | json-hook: | 29 | json-hook: |
99 | 30 | <<<<<<< apt-hook/Makefile | ||
100 | 12 | cd json-hook-src && GOCACHE=/tmp/ go build json-hook.go | 31 | cd json-hook-src && GOCACHE=/tmp/ go build json-hook.go |
101 | 32 | ======= | ||
102 | 33 | [ $(SKIP_GO_HOOK) ] || (cd json-hook-src && GOCACHE=/tmp/ $(GO_BIN) build json-hook.go) | ||
103 | 34 | >>>>>>> apt-hook/Makefile | ||
104 | 13 | 35 | ||
105 | 14 | install: hook json-hook | 36 | install: hook json-hook |
106 | 15 | install -D -m 644 20apt-esm-hook.conf $(DESTDIR)/etc/apt/apt.conf.d/20apt-esm-hook.conf | 37 | install -D -m 644 20apt-esm-hook.conf $(DESTDIR)/etc/apt/apt.conf.d/20apt-esm-hook.conf |
107 | 16 | install -D -m 755 hook $(DESTDIR)/usr/lib/ubuntu-advantage/apt-esm-hook | 38 | install -D -m 755 hook $(DESTDIR)/usr/lib/ubuntu-advantage/apt-esm-hook |
108 | 39 | <<<<<<< apt-hook/Makefile | ||
109 | 17 | install -D -m 755 json-hook-src/json-hook $(DESTDIR)/usr/lib/ubuntu-advantage/apt-esm-json-hook | 40 | install -D -m 755 json-hook-src/json-hook $(DESTDIR)/usr/lib/ubuntu-advantage/apt-esm-json-hook |
110 | 41 | ======= | ||
111 | 42 | [ $(SKIP_GO_HOOK) ] || install -D -m 755 json-hook-src/json-hook $(DESTDIR)/usr/lib/ubuntu-advantage/apt-esm-json-hook | ||
112 | 43 | >>>>>>> apt-hook/Makefile | ||
113 | 18 | 44 | ||
114 | 19 | clean: | 45 | clean: |
115 | 20 | rm -f hook ubuntu-advantage.pot json-hook-src/json-hook | 46 | rm -f hook ubuntu-advantage.pot json-hook-src/json-hook |
116 | 21 | 47 | ||
117 | 22 | test: | 48 | test: |
118 | 49 | <<<<<<< apt-hook/Makefile | ||
119 | 23 | cd json-hook-src && go test | 50 | cd json-hook-src && go test |
120 | 51 | ======= | ||
121 | 52 | [ $(SKIP_GO_HOOK) ] || (cd json-hook-src && GOCACHE=/tmp/ $(GO_BIN) test) | ||
122 | 53 | >>>>>>> apt-hook/Makefile | ||
123 | diff --git a/apt-hook/json-hook-src/go.mod b/apt-hook/json-hook-src/go.mod | |||
124 | index 66726af..2823e25 100644 | |||
125 | --- a/apt-hook/json-hook-src/go.mod | |||
126 | +++ b/apt-hook/json-hook-src/go.mod | |||
127 | @@ -1,3 +1,7 @@ | |||
128 | 1 | module json-hook | 1 | module json-hook |
129 | 2 | 2 | ||
130 | 3 | <<<<<<< apt-hook/json-hook-src/go.mod | ||
131 | 3 | go 1.2 | 4 | go 1.2 |
132 | 5 | ======= | ||
133 | 6 | go 1.7 | ||
134 | 7 | >>>>>>> apt-hook/json-hook-src/go.mod | ||
135 | diff --git a/apt-hook/json-hook-src/json-hook.go b/apt-hook/json-hook-src/json-hook.go | |||
136 | index 0f2e3eb..fc6b704 100644 | |||
137 | --- a/apt-hook/json-hook-src/json-hook.go | |||
138 | +++ b/apt-hook/json-hook-src/json-hook.go | |||
139 | @@ -45,6 +45,21 @@ type jsonRPC struct { | |||
140 | 45 | } `json:"params"` | 45 | } `json:"params"` |
141 | 46 | } | 46 | } |
142 | 47 | 47 | ||
143 | 48 | <<<<<<< apt-hook/json-hook-src/json-hook.go | ||
144 | 49 | ======= | ||
145 | 50 | func updatesFromSource(count int, source string, first bool) string { | ||
146 | 51 | security := "" | ||
147 | 52 | if first { | ||
148 | 53 | security = "security " | ||
149 | 54 | } | ||
150 | 55 | updates := "updates" | ||
151 | 56 | if count == 1 { | ||
152 | 57 | updates = "update" | ||
153 | 58 | } | ||
154 | 59 | return fmt.Sprintf("%d %s %s%s", count, source, security, updates) | ||
155 | 60 | } | ||
156 | 61 | |||
157 | 62 | >>>>>>> apt-hook/json-hook-src/json-hook.go | ||
158 | 48 | func createUpdateMessage(standardSecurityCount int, esmInfraCount int, esmAppsCount int) string { | 63 | func createUpdateMessage(standardSecurityCount int, esmInfraCount int, esmAppsCount int) string { |
159 | 49 | displayStandard := true | 64 | displayStandard := true |
160 | 50 | displayEsmInfra := true | 65 | displayEsmInfra := true |
161 | @@ -72,6 +87,7 @@ func createUpdateMessage(standardSecurityCount int, esmInfraCount int, esmAppsCo | |||
162 | 72 | } | 87 | } |
163 | 73 | 88 | ||
164 | 74 | standardUpdates := "" | 89 | standardUpdates := "" |
165 | 90 | <<<<<<< apt-hook/json-hook-src/json-hook.go | ||
166 | 75 | esmInfraUpdates := "" | 91 | esmInfraUpdates := "" |
167 | 76 | esmAppsUpdates := "" | 92 | esmAppsUpdates := "" |
168 | 77 | if displayStandard { | 93 | if displayStandard { |
169 | @@ -118,6 +134,32 @@ func createUpdateMessage(standardSecurityCount int, esmInfraCount int, esmAppsCo | |||
170 | 118 | } | 134 | } |
171 | 119 | 135 | ||
172 | 120 | return standardUpdates + esmInfraUpdates + esmAppsUpdates | 136 | return standardUpdates + esmInfraUpdates + esmAppsUpdates |
173 | 137 | ======= | ||
174 | 138 | afterStandard := "" | ||
175 | 139 | esmInfraUpdates := "" | ||
176 | 140 | afterInfra := "" | ||
177 | 141 | esmAppsUpdates := "" | ||
178 | 142 | |||
179 | 143 | if displayStandard { | ||
180 | 144 | standardUpdates = updatesFromSource(standardSecurityCount, "standard", true) | ||
181 | 145 | if displayEsmInfra && displayEsmApps { | ||
182 | 146 | afterStandard = ", " | ||
183 | 147 | } else if displayEsmInfra || displayEsmApps { | ||
184 | 148 | afterStandard = " and " | ||
185 | 149 | } | ||
186 | 150 | } | ||
187 | 151 | if displayEsmInfra { | ||
188 | 152 | esmInfraUpdates = updatesFromSource(esmInfraCount, "esm-infra", esmInfraFirst) | ||
189 | 153 | if displayEsmApps { | ||
190 | 154 | afterInfra = " and " | ||
191 | 155 | } | ||
192 | 156 | } | ||
193 | 157 | if displayEsmApps { | ||
194 | 158 | esmAppsUpdates = updatesFromSource(esmAppsCount, "esm-apps", esmAppsFirst) | ||
195 | 159 | } | ||
196 | 160 | |||
197 | 161 | return standardUpdates + afterStandard + esmInfraUpdates + afterInfra + esmAppsUpdates | ||
198 | 162 | >>>>>>> apt-hook/json-hook-src/json-hook.go | ||
199 | 121 | } | 163 | } |
200 | 122 | 164 | ||
201 | 123 | func fromOriginAndArchive(pkgVersion jsonRPCPackageVersion, origin string, archive string) bool { | 165 | func fromOriginAndArchive(pkgVersion jsonRPCPackageVersion, origin string, archive string) bool { |
202 | diff --git a/apt-hook/json-hook-src/json-hook_test.go b/apt-hook/json-hook-src/json-hook_test.go | |||
203 | index cfc1788..135ec2c 100644 | |||
204 | --- a/apt-hook/json-hook-src/json-hook_test.go | |||
205 | +++ b/apt-hook/json-hook-src/json-hook_test.go | |||
206 | @@ -14,6 +14,7 @@ func TestCreateUpdateMessages(t *testing.T) { | |||
207 | 14 | expectedMessage string | 14 | expectedMessage string |
208 | 15 | } | 15 | } |
209 | 16 | testParamsList := []params{ | 16 | testParamsList := []params{ |
210 | 17 | <<<<<<< apt-hook/json-hook-src/json-hook_test.go | ||
211 | 17 | params{0, 0, 0, ""}, | 18 | params{0, 0, 0, ""}, |
212 | 18 | params{0, 0, 1, "1 esm-apps security update"}, | 19 | params{0, 0, 1, "1 esm-apps security update"}, |
213 | 19 | params{0, 0, 2, "2 esm-apps security updates"}, | 20 | params{0, 0, 2, "2 esm-apps security updates"}, |
214 | @@ -41,6 +42,35 @@ func TestCreateUpdateMessages(t *testing.T) { | |||
215 | 41 | params{2, 2, 0, "2 standard security updates and 2 esm-infra updates"}, | 42 | params{2, 2, 0, "2 standard security updates and 2 esm-infra updates"}, |
216 | 42 | params{2, 2, 1, "2 standard security updates, 2 esm-infra updates and 1 esm-apps update"}, | 43 | params{2, 2, 1, "2 standard security updates, 2 esm-infra updates and 1 esm-apps update"}, |
217 | 43 | params{2, 2, 2, "2 standard security updates, 2 esm-infra updates and 2 esm-apps updates"}, | 44 | params{2, 2, 2, "2 standard security updates, 2 esm-infra updates and 2 esm-apps updates"}, |
218 | 45 | ======= | ||
219 | 46 | {0, 0, 0, ""}, | ||
220 | 47 | {0, 0, 1, "1 esm-apps security update"}, | ||
221 | 48 | {0, 0, 2, "2 esm-apps security updates"}, | ||
222 | 49 | {0, 1, 0, "1 esm-infra security update"}, | ||
223 | 50 | {0, 1, 1, "1 esm-infra security update and 1 esm-apps update"}, | ||
224 | 51 | {0, 1, 2, "1 esm-infra security update and 2 esm-apps updates"}, | ||
225 | 52 | {0, 2, 0, "2 esm-infra security updates"}, | ||
226 | 53 | {0, 2, 1, "2 esm-infra security updates and 1 esm-apps update"}, | ||
227 | 54 | {0, 2, 2, "2 esm-infra security updates and 2 esm-apps updates"}, | ||
228 | 55 | {1, 0, 0, "1 standard security update"}, | ||
229 | 56 | {1, 0, 1, "1 standard security update and 1 esm-apps update"}, | ||
230 | 57 | {1, 0, 2, "1 standard security update and 2 esm-apps updates"}, | ||
231 | 58 | {1, 1, 0, "1 standard security update and 1 esm-infra update"}, | ||
232 | 59 | {1, 1, 1, "1 standard security update, 1 esm-infra update and 1 esm-apps update"}, | ||
233 | 60 | {1, 1, 2, "1 standard security update, 1 esm-infra update and 2 esm-apps updates"}, | ||
234 | 61 | {1, 2, 0, "1 standard security update and 2 esm-infra updates"}, | ||
235 | 62 | {1, 2, 1, "1 standard security update, 2 esm-infra updates and 1 esm-apps update"}, | ||
236 | 63 | {1, 2, 2, "1 standard security update, 2 esm-infra updates and 2 esm-apps updates"}, | ||
237 | 64 | {2, 0, 0, "2 standard security updates"}, | ||
238 | 65 | {2, 0, 1, "2 standard security updates and 1 esm-apps update"}, | ||
239 | 66 | {2, 0, 2, "2 standard security updates and 2 esm-apps updates"}, | ||
240 | 67 | {2, 1, 0, "2 standard security updates and 1 esm-infra update"}, | ||
241 | 68 | {2, 1, 1, "2 standard security updates, 1 esm-infra update and 1 esm-apps update"}, | ||
242 | 69 | {2, 1, 2, "2 standard security updates, 1 esm-infra update and 2 esm-apps updates"}, | ||
243 | 70 | {2, 2, 0, "2 standard security updates and 2 esm-infra updates"}, | ||
244 | 71 | {2, 2, 1, "2 standard security updates, 2 esm-infra updates and 1 esm-apps update"}, | ||
245 | 72 | {2, 2, 2, "2 standard security updates, 2 esm-infra updates and 2 esm-apps updates"}, | ||
246 | 73 | >>>>>>> apt-hook/json-hook-src/json-hook_test.go | ||
247 | 44 | } | 74 | } |
248 | 45 | 75 | ||
249 | 46 | for i, testParams := range testParamsList { | 76 | for i, testParams := range testParamsList { |
250 | @@ -62,7 +92,11 @@ func TestCountSecurityUpdates(t *testing.T) { | |||
251 | 62 | expectedEsmAppsCount int | 92 | expectedEsmAppsCount int |
252 | 63 | } | 93 | } |
253 | 64 | testParamsList := []params{ | 94 | testParamsList := []params{ |
254 | 95 | <<<<<<< apt-hook/json-hook-src/json-hook_test.go | ||
255 | 65 | params{mockJson, 1, 2, 3}, | 96 | params{mockJson, 1, 2, 3}, |
256 | 97 | ======= | ||
257 | 98 | {mockJson, 1, 2, 3}, | ||
258 | 99 | >>>>>>> apt-hook/json-hook-src/json-hook_test.go | ||
259 | 66 | } | 100 | } |
260 | 67 | 101 | ||
261 | 68 | for i, testParams := range testParamsList { | 102 | for i, testParams := range testParamsList { |
262 | diff --git a/debian/changelog b/debian/changelog | |||
263 | index 3ae8a1c..4219a8d 100644 | |||
264 | --- a/debian/changelog | |||
265 | +++ b/debian/changelog | |||
266 | @@ -1,3 +1,25 @@ | |||
267 | 1 | <<<<<<< debian/changelog | ||
268 | 2 | ======= | ||
269 | 3 | ubuntu-advantage-tools (27.0.2~20.04.1) focal; urgency=medium | ||
270 | 4 | |||
271 | 5 | * d/control: | ||
272 | 6 | - order build-depends alternatives newer first (LP: #1926949) | ||
273 | 7 | - apt-hook: do not attempt to package go APT JSON hook on some | ||
274 | 8 | architectures (GH: #1603) (LP: #1927795) | ||
275 | 9 | * Bug-fix release 27.0.2: build failures on riscv64 and powerpc | ||
276 | 10 | - apt-hook: refactor json hook messaging to be dry | ||
277 | 11 | - tests: fix subp ls error case for powerpc builds | ||
278 | 12 | - jenkinsfile: add --resolve-alternatives for trusty builds | ||
279 | 13 | |||
280 | 14 | -- Chad Smith <chad.smith@canonical.com> Fri, 07 May 2021 11:58:03 -0600 | ||
281 | 15 | |||
282 | 16 | ubuntu-advantage-tools (27.0.1) impish; urgency=medium | ||
283 | 17 | |||
284 | 18 | * Add .gitignore and cleanup ignored directory .pytest_cache | ||
285 | 19 | |||
286 | 20 | -- Chad Smith <chad.smith@canonical.com> Fri, 07 May 2021 11:55:07 -0600 | ||
287 | 21 | |||
288 | 22 | >>>>>>> debian/changelog | ||
289 | 1 | ubuntu-advantage-tools (27.0~20.04.1) focal; urgency=medium | 23 | ubuntu-advantage-tools (27.0~20.04.1) focal; urgency=medium |
290 | 2 | 24 | ||
291 | 3 | * New upstream release 27.0: (LP: #1926361) | 25 | * New upstream release 27.0: (LP: #1926361) |
292 | diff --git a/debian/control b/debian/control | |||
293 | index cd28a1f..660a80d 100644 | |||
294 | --- a/debian/control | |||
295 | +++ b/debian/control | |||
296 | @@ -6,10 +6,17 @@ Build-Depends: bash-completion, | |||
297 | 6 | debhelper (>=9), | 6 | debhelper (>=9), |
298 | 7 | debianutils, | 7 | debianutils, |
299 | 8 | dh-python, | 8 | dh-python, |
300 | 9 | <<<<<<< debian/control | ||
301 | 9 | dh-systemd | debhelper (>= 13.3), | 10 | dh-systemd | debhelper (>= 13.3), |
302 | 10 | gettext, | 11 | gettext, |
303 | 11 | git, | 12 | git, |
304 | 12 | golang, | 13 | golang, |
305 | 14 | ======= | ||
306 | 15 | debhelper (>= 13.3) | dh-systemd, | ||
307 | 16 | gettext, | ||
308 | 17 | git, | ||
309 | 18 | golang-go (>= 2:1.14~) [!powerpc] | golang-1.14-go [!powerpc] | golang-1.10-go [!powerpc !riscv64], | ||
310 | 19 | >>>>>>> debian/control | ||
311 | 13 | libapt-pkg-dev, | 20 | libapt-pkg-dev, |
312 | 14 | po-debconf, | 21 | po-debconf, |
313 | 15 | python3 (>= 3.4), | 22 | python3 (>= 3.4), |
314 | diff --git a/debian/rules b/debian/rules | |||
315 | index 9bea522..57898f9 100755 | |||
316 | --- a/debian/rules | |||
317 | +++ b/debian/rules | |||
318 | @@ -27,6 +27,7 @@ override_dh_auto_build: | |||
319 | 27 | 27 | ||
320 | 28 | override_dh_auto_test: | 28 | override_dh_auto_test: |
321 | 29 | ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) | 29 | ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) |
322 | 30 | make -C apt-hook test | ||
323 | 30 | python3 -m pytest | 31 | python3 -m pytest |
324 | 31 | ifdef FLAKE8 | 32 | ifdef FLAKE8 |
325 | 32 | # required for Trusty: flake8 does not install a __main__ for -m | 33 | # required for Trusty: flake8 does not install a __main__ for -m |
326 | diff --git a/uaclient/tests/test_util.py b/uaclient/tests/test_util.py | |||
327 | index 019faf2..29a5bd2 100644 | |||
328 | --- a/uaclient/tests/test_util.py | |||
329 | +++ b/uaclient/tests/test_util.py | |||
330 | @@ -291,11 +291,12 @@ class TestSubp: | |||
331 | 291 | with pytest.raises(util.ProcessExecutionError) as excinfo: | 291 | with pytest.raises(util.ProcessExecutionError) as excinfo: |
332 | 292 | util.subp(["ls", "--bogus"]) | 292 | util.subp(["ls", "--bogus"]) |
333 | 293 | 293 | ||
339 | 294 | expected_error = ( | 294 | expected_errors = [ |
340 | 295 | "Failed running command 'ls --bogus' [exit(2)]." | 295 | "Failed running command 'ls --bogus' [exit(2)].", |
341 | 296 | " Message: ls: unrecognized option" | 296 | "ls: unrecognized option '--bogus'", |
342 | 297 | ) | 297 | ] |
343 | 298 | assert expected_error in str(excinfo.value) | 298 | for msg in expected_errors: |
344 | 299 | assert msg in str(excinfo.value) | ||
345 | 299 | assert 0 == m_sleep.call_count # no retries | 300 | assert 0 == m_sleep.call_count # no retries |
346 | 300 | 301 | ||
347 | 301 | @mock.patch("uaclient.util.time.sleep") | 302 | @mock.patch("uaclient.util.time.sleep") |
348 | @@ -795,6 +796,37 @@ class TestIsConfigValueTrue: | |||
349 | 795 | config=cfg.cfg, path_to_value="features.allow_beta" | 796 | config=cfg.cfg, path_to_value="features.allow_beta" |
350 | 796 | ) | 797 | ) |
351 | 797 | assert return_val == actual_val | 798 | assert return_val == actual_val |
352 | 799 | <<<<<<< uaclient/tests/test_util.py | ||
353 | 800 | |||
354 | 801 | @pytest.mark.parametrize( | ||
355 | 802 | "config_dict, key_val", | ||
356 | 803 | [ | ||
357 | 804 | ({"allow_beta": "tru"}, "tru"), | ||
358 | 805 | ({"allow_beta": "Tre"}, "Tre"), | ||
359 | 806 | ({"allow_beta": "flse"}, "flse"), | ||
360 | 807 | ({"allow_beta": "Fale"}, "Fale"), | ||
361 | 808 | ], | ||
362 | 809 | ) | ||
363 | 810 | def test_exception_is_config_value_true( | ||
364 | 811 | self, config_dict, key_val, FakeConfig | ||
365 | 812 | ): | ||
366 | 813 | path_to_value = "features.allow_beta" | ||
367 | 814 | cfg = FakeConfig() | ||
368 | 815 | cfg.override_features(config_dict) | ||
369 | 816 | with pytest.raises(exceptions.UserFacingError) as excinfo: | ||
370 | 817 | util.is_config_value_true( | ||
371 | 818 | config=cfg.cfg, path_to_value=path_to_value | ||
372 | 819 | ) | ||
373 | 820 | |||
374 | 821 | expected_msg = status.ERROR_INVALID_CONFIG_VALUE.format( | ||
375 | 822 | path_to_value=path_to_value, | ||
376 | 823 | expected_value="boolean string: true or false", | ||
377 | 824 | value=key_val, | ||
378 | 825 | ) | ||
379 | 826 | assert expected_msg == str(excinfo.value) | ||
380 | 827 | |||
381 | 828 | |||
382 | 829 | ======= | ||
383 | 798 | 830 | ||
384 | 799 | @pytest.mark.parametrize( | 831 | @pytest.mark.parametrize( |
385 | 800 | "config_dict, key_val", | 832 | "config_dict, key_val", |
386 | @@ -824,6 +856,7 @@ class TestIsConfigValueTrue: | |||
387 | 824 | assert expected_msg == str(excinfo.value) | 856 | assert expected_msg == str(excinfo.value) |
388 | 825 | 857 | ||
389 | 826 | 858 | ||
390 | 859 | >>>>>>> uaclient/tests/test_util.py | ||
391 | 827 | class TestRedactSensitiveLogs: | 860 | class TestRedactSensitiveLogs: |
392 | 828 | @pytest.mark.parametrize( | 861 | @pytest.mark.parametrize( |
393 | 829 | "raw_log,expected", | 862 | "raw_log,expected", |
csmith@ downtown: /tmp$ lxc exec test-27-f -- cloud-init status --wait --long
status: done var/lib/ cloud/seed/ nocloud- net][dsmode= net] downtown: /tmp$ lxc exec test-27-f -- ua version security_ params downtown: /tmp$ lxc exec test-27-f -- ua status
time: Wed, 28 Apr 2021 00:10:02 +0000
detail:
DataSourceNoCloud [seed=/
csmith@
27.0~20.04.1 +allow_beta +extra_
csmith@
SERVICE AVAILABLE DESCRIPTION
cc-eal no Common Criteria EAL2 Provisioning Packages
cis no Center for Internet Security Audit Tools
esm-apps yes UA Apps: Extended Security Maintenance (ESM)
esm-infra yes UA Infra: Extended Security Maintenance (ESM)
fips no NIST-certified FIPS modules
fips-updates no Uncertified security updates to FIPS modules
livepatch yes Canonical Livepatch service
This machine is not attached to a UA subscription. /ubuntu. com/advantage downtown: /tmp$ lxc exec test-27-f -- ua attach <REDACTED_NO_APPS>
See https:/
csmith@
Enabling default service esm-infra
Updating package lists
UA Infra: ESM enabled
This machine is now attached to '<email address hidden>'
SERVICE ENTITLED STATUS DESCRIPTION
cc-eal yes n/a Common Criteria EAL2 Provisioning Packages
cis yes n/a Center for Internet Security Audit Tools
esm-apps no — UA Apps: Extended Security Maintenance (ESM)
esm-infra yes enabled UA Infra: Extended Security Maintenance (ESM)
fips yes n/a NIST-certified FIPS modules
fips-updates yes n/a Uncertified security updates to FIPS modules
livepatch yes n/a Canonical Livepatch service
NOTICES
Operation in progress: ua attach
Enable services with: ua enable <service>
Account: <email address hidden> downtown: /tmp$ lxc exec test-27-f -- grep Traceback /var/log/ ubuntu- advantage. log downtown: /tmp$ lxc exec test-27-f -- ua enable esm-apps /ubuntu. com/advantage. downtown: /tmp$ lxc exec test-27-f -- ua detach downtown: /tmp$ downtown: /tmp$ downtown: /tmp$ downtown: /tmp$ lxc exec test-27-f -- ua attach <REDACTED_ WITH_APPS_ ACCESS>
Subscription: <email address hidden>
csmith@
csmith@
One moment, checking your subscription first
This subscription is not entitled to UA Apps: ESM
For more information see: https:/
csmith@
Detach will disable the following service:
esm-infra
Are you sure? (y/N) y
Updating package lists
This machine is now detached.
csmith@
csmith@
csmith@
csmith@
Enabling default service esm-apps
Updating package lists
UA Apps: ESM enabled
Enabling default service esm-infra
Updating package lists
UA Infra: ESM enabled
This machine is now attached to 'UA Applications - Essential (Physical)'
SERVICE ENTITLED STATUS DESCRIPTION
cc-eal yes n/a Common Criteria EAL2 Provisioning Packages
cis yes n/a Center for Internet Security Audit Tools
esm-apps yes enabled UA Apps: Extended Security Maintenance (ESM)
esm-infra yes enabled UA Infra: Extended Security Maintenance (ESM)
fips yes n/a NIST-certified FIPS modules
fips-updates yes n/a Unc...