Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1399 commits
Select commit Hold shift + click to select a range
b3d1413
fix: Integration tests (#5576)
holmanb Aug 2, 2024
315c146
refactor: update handle function of cc_mounts (#5498)
TheRealFalcon Aug 2, 2024
bb475c6
chore: Add helper, refactor utilities into separate module (#5573)
holmanb Aug 2, 2024
86c076a
feat: Single process optimization (#5489)
holmanb Aug 2, 2024
fbab917
fix: nocloud no fail when network-config absent (#5580)
blackboxsw Aug 3, 2024
eb4e8f9
update changelog (new upstream snapshot)
holmanb Aug 5, 2024
f03d682
Add no-single-process.patch
holmanb Aug 5, 2024
2f7c14c
Update changelog
holmanb Aug 5, 2024
ea5168a
Add no-nocloud-network.patch
holmanb Aug 5, 2024
17b0f5f
Update changelog
holmanb Aug 5, 2024
b9db6d9
Merge remote-tracking branch 'upstream/main' into ubuntu/noble
TheRealFalcon Aug 7, 2024
a3e7474
refresh patches against upstream/main
TheRealFalcon Aug 7, 2024
78783f9
update changelog (new upstream snapshot)
TheRealFalcon Aug 7, 2024
10449cb
Release 24.3
blackboxsw Aug 30, 2024
6963dcc
fix(netops): fix ip addr flush command (#5651)
holmanb Aug 31, 2024
92e380e
test: add test coverage for iproute2 commands (#5651)
holmanb Sep 3, 2024
337c651
Release 24.3.1 (#5375)
blackboxsw Sep 4, 2024
e44fea7
fix(no-nocloud-network.patch): avoid reading network-config from read…
blackboxsw Sep 5, 2024
1962033
merge from 24.3.1 at 24.3.1
blackboxsw Sep 5, 2024
4183217
refresh patches against 24.3.1
blackboxsw Sep 5, 2024
283a40a
update changelog (new upstream snapshot)
blackboxsw Sep 5, 2024
5139603
fix(no-single-process.patch): revert references to cloud-init-network
blackboxsw Sep 6, 2024
0047c6b
sync ubuntu released 24.2-0ubuntu1-24.04.2 d/control and d/changelog
blackboxsw Sep 6, 2024
152161b
releasing cloud-init version 24.3.1-0ubuntu0~24.04.1
blackboxsw Sep 5, 2024
636162c
merge from 313390f8 at 24.3-19-g313390f8
blackboxsw Sep 11, 2024
26ed394
refresh patches against main 313390f8
blackboxsw Sep 11, 2024
b0542a4
update changelog (new upstream snapshot)
blackboxsw Sep 11, 2024
7aa9d07
merge from upstream/main at 24.3-23-ga9c6b140
blackboxsw Sep 13, 2024
d11b2de
refresh patches due to 7a32eff8
blackboxsw Sep 13, 2024
ca48711
update changelog (new upstream snapshot)
blackboxsw Sep 13, 2024
5261b8e
merge from upstream/main at 24.3-31-gc62d7f22
TheRealFalcon Sep 18, 2024
fadc1be
refresh patches against upstream/main
TheRealFalcon Sep 18, 2024
23c2abe
update changelog (new upstream snapshot)
TheRealFalcon Sep 18, 2024
2ef11f2
merge from upstream/main at 24.3-53-gc9dce94d
TheRealFalcon Sep 25, 2024
9d6926f
refresh patches against upstream/main
TheRealFalcon Sep 25, 2024
855a108
update changelog (new upstream snapshot)
TheRealFalcon Sep 25, 2024
6892872
merge from upstream/main at 24.3-100-ge30549e8
TheRealFalcon Oct 18, 2024
bcfff3a
refresh patches against upstream/main
TheRealFalcon Oct 18, 2024
1c0ac10
update changelog (new upstream snapshot)
TheRealFalcon Oct 18, 2024
56582c1
test: unbreak pytest-xdist (#5829)
TheRealFalcon Oct 18, 2024
ec7dc6d
fix: fix ordering cycle for distros with default deps (#5819)
holmanb Oct 12, 2024
addf122
chore: eliminate redundant ordering dependencies (#5819)
holmanb Oct 12, 2024
e72bab9
chore: remove unnecessary systemd settings (#5830)
holmanb Oct 18, 2024
892e196
chore: remove redundant Before=NetworkManager.service (#5830)
holmanb Oct 18, 2024
a300fee
chore: simplify Conflicts=shutdown.target (#5830)
holmanb Oct 18, 2024
39260b0
chore: simplify and standardize cloud-final.service (#5830)
holmanb Oct 18, 2024
076d63b
chore: don't render non-templated unit files (#5830)
holmanb Oct 18, 2024
9c76610
test: Fix duplicate judgment conditions in password generation (#5835)
Oct 21, 2024
a25026e
fix(openbsd): Enable sysv init scripts in OpenBSD build script (#5790)
hcartiaux Oct 21, 2024
04fc0d8
fix: refresh patches
holmanb Oct 21, 2024
310a0e4
update changelog (new upstream snapshot)
holmanb Oct 22, 2024
08bb4e6
merge from upstream/main at 24.3-116-gacbb26c1
TheRealFalcon Nov 11, 2024
b087e42
refresh patches against upstream/main
TheRealFalcon Nov 11, 2024
4cb9842
update changelog (new upstream snapshot)
TheRealFalcon Nov 11, 2024
95d8b56
Add d/p/grub-dpkg-support.patch
TheRealFalcon Nov 11, 2024
551f796
update changelog
TheRealFalcon Nov 11, 2024
b4a4593
Fix bad refresh of no-single-process.patch in 04fc0d8
TheRealFalcon Nov 18, 2024
d52ef01
merge from 24.4 at 24.4
TheRealFalcon Nov 26, 2024
855c8f8
refresh patches against 24.4
TheRealFalcon Nov 26, 2024
a0f4c32
update changelog (new upstream snapshot)
TheRealFalcon Nov 26, 2024
03792b8
releasing cloud-init version 24.4-0ubuntu1~24.04.1
TheRealFalcon Nov 26, 2024
f01566e
Fix d/p/no-single-process.patch
TheRealFalcon Dec 2, 2024
64a1f23
update changelog
TheRealFalcon Dec 2, 2024
ca9bf2d
releasing cloud-init version 24.4-0ubuntu1~24.04.2
TheRealFalcon Dec 2, 2024
f7070f2
update no-single-process.patch
holmanb Jan 7, 2025
9ee0eff
update changelog
holmanb Jan 7, 2025
4d559e7
fix: uninstall custom signal handlers before shutdown (#5913)
holmanb Jan 13, 2025
07db0da
refactor: Pass deprecation log args as tuple (#5953)
TheRealFalcon Jan 7, 2025
b2cf0a6
fix: Don't break modules that use get_meta_doc() (#5953)
TheRealFalcon Jan 7, 2025
30232cf
feat(url_helper): Retry on 503 error (#5938)
TheRealFalcon Jan 8, 2025
e702638
fix: Don't log error in wait_for_url (#5972)
TheRealFalcon Jan 14, 2025
470f652
fix: Ensure _should_wait_via_user_data() handles all user data types …
TheRealFalcon Jan 15, 2025
4b475ed
Release 24.4.1
TheRealFalcon Jan 13, 2025
f3effd5
merge from 24.4.1 at 24.4.1
TheRealFalcon Jan 15, 2025
83dc72b
update changelog (new upstream snapshot)
TheRealFalcon Jan 15, 2025
963c50b
cherry-pick 84806336 to make wait online patching easier
TheRealFalcon Jan 16, 2025
b56c384
update changelog
TheRealFalcon Jan 16, 2025
1f6110f
Add d/p/no-remove-networkd-online.patch
TheRealFalcon Jan 16, 2025
e03a8ab
update changelog
TheRealFalcon Jan 16, 2025
3141142
Add d/p/cpick-d75840be-fix-retry-AWS-hotplug-for-async-IMDS-5995
holmanb Feb 3, 2025
7a8621e
update changelog
holmanb Jan 31, 2025
24faff1
wait for mounts
holmanb Feb 4, 2025
475c824
update changelog
holmanb Feb 4, 2025
ad14d52
releasing cloud-init version 24.4.1-0ubuntu0~24.04.1
holmanb Feb 4, 2025
c7b218d
wait for mounts
holmanb Feb 4, 2025
c86d25b
update changelog
holmanb Feb 4, 2025
0959fe1
refresh patches
holmanb Feb 17, 2025
ce95f22
update changelog
holmanb Feb 17, 2025
45951c4
Merge remote-tracking branch 'upstream/ubuntu/noble-24.4.x' into ubun…
holmanb Feb 17, 2025
a5838a8
merge from upstream/main at 24.4-61-g1a9393ee
holmanb Feb 17, 2025
4971322
update changelog (new upstream snapshot)
holmanb Feb 17, 2025
81ed940
refresh patches
holmanb Feb 17, 2025
785839f
update changelog
holmanb Feb 17, 2025
b97c2b4
merge from 25.1 at 25.1
holmanb Feb 24, 2025
340a626
refresh patches against 25.1
holmanb Feb 24, 2025
11938d2
update changelog (new upstream snapshot)
holmanb Feb 24, 2025
da45e44
update changelog
holmanb Feb 24, 2025
b29fc7f
sync released debian/changelog 24.4.1-0ubuntu~20.04.2
blackboxsw Mar 25, 2025
e78c0b4
merge from upstream/main at 25.1-53-ga87e4da8
TheRealFalcon Apr 4, 2025
e3747fe
refresh patches against upstream/main
TheRealFalcon Apr 4, 2025
2e6606f
update changelog (new upstream snapshot)
TheRealFalcon Apr 4, 2025
e2e5650
update changelog with correct previous distro name
TheRealFalcon May 20, 2025
ca04e88
chore: reorder iface filters & log on inherited MAC (#6140)
MggMuggins Apr 7, 2025
b5de0b8
chore: remove reference to refresh_rmc_and_interface module (#6156)
ani-sinha Apr 8, 2025
a9a7699
fix: drop udev remove action in hotplug (#6152)
yukariatlas Apr 8, 2025
e13e4a1
tests: fix ibm expected warnings on invalid vendor-data schema (#6157)
blackboxsw Apr 9, 2025
b8a65b9
tests: ibm expect invalid vendor-data in stderr (#6158)
blackboxsw Apr 10, 2025
e85c05e
tests: ibm expect invalid vendor-data in stderr (#6160)
blackboxsw Apr 11, 2025
6fa1b00
tests: ibm correct logged message. Invalid schema: vendor-data (#6163)
blackboxsw Apr 11, 2025
2beee86
test: fix integration test on new lxd versions (#6164)
holmanb Apr 15, 2025
980bac9
tests: ibm fix apt and ds-id testing (#6168)
blackboxsw Apr 14, 2025
9493f6a
tests: ibm avoid schema validation for DataSourceNone on ibm (#6168)
blackboxsw Apr 14, 2025
0447a21
cloud.cfg.tmpl: do not enable cc_reset_rmc for Alpine Linux (#6170)
dermotbradley Apr 16, 2025
e074903
fix: ensure MAAS datasource retries on failure (#6167)
TheRealFalcon Apr 16, 2025
efac846
fix: setup.py doesn't match AmazonLinux CPE 2.2 releases (#6173)
blackboxsw Apr 25, 2025
85b2e76
docs: clarify examples for network addresses/gateway (#6186)
dbungert Apr 25, 2025
1e5cf05
Fix: Add Ephemeral Network for CloudStackLocal DS (#6144)
bryanfraschetti Apr 25, 2025
06fbefd
fix: stop reporting error if cloud-init receives signal (#6159)
TheRealFalcon Apr 29, 2025
d3c364b
feat(azure): allow unspecified user name (#6177)
cjp256 Apr 29, 2025
b0fefc9
fix: simplify MAAS check logic
holmanb Apr 14, 2025
57d5fb2
test: drop fixed xfail tests
holmanb Apr 14, 2025
2bde41c
chore: add fedora package build support for run-container and read-de…
blackboxsw Apr 30, 2025
425c0f8
fix: copr builds of CentOS9 require CRB and baseurl in centos.repo (#…
blackboxsw May 1, 2025
57e6e9a
revert "chore: Deprecate partially supported system config (#5515)"
TheRealFalcon May 1, 2025
f51b356
Release 25.1.2 (#6197)
blackboxsw May 1, 2025
c67b197
fix(net): ignore udevadm failures when enumerating nics (#6185)
cjp256 May 7, 2025
90622cf
docs: ensure proper 'sudo' representation (#6196)
TheRealFalcon May 9, 2025
192d494
feat(ca_certs): add rocky to rhel distro overrides (#6208)
lukasfriedhoff May 9, 2025
623847f
docs: Use Noble for examples instead of Jammy (#6209)
akx May 9, 2025
819be96
test(apt): add questing versiong for hello pkg (#6213)
blackboxsw May 9, 2025
601717e
feat: Change ansible pull module type from dict to list (#6010)
shaerpour May 10, 2025
2f87ce3
fix: no traceback on command line missing subcommand (#6214)
rjschwei May 13, 2025
e6df44b
docs: remove monospace formatting from SSH section heading (#6215)
crd477 May 13, 2025
0c30051
fix: ansible-pull multiple playbooks on older ansible ver < 2.12 (#6218)
blackboxsw May 13, 2025
f68338b
docs: merge "Availability" and "Supported distros" pages (#6217)
JacobisEpic May 14, 2025
caddb42
test: remove FilesystemMockingTestCase from test_dmi.py (#6219)
TheRealFalcon May 14, 2025
1fc229d
test: remove FilesystemMockingTestCase from test_util.py (#6220)
TheRealFalcon May 14, 2025
e79ddb8
fix: make 'cloud-init --all-stages' work interactively (#6211)
TheRealFalcon May 15, 2025
afb79eb
test: remove FilesystemMockingTestCase from test_cc_apk_configure.py …
TheRealFalcon May 16, 2025
c69ee07
feat: Add subnet metric support for netplan (#6222)
ArtsiomAntropau May 19, 2025
bf57541
test: pre-fetch instance id when logging from reaper (#6234)
TheRealFalcon May 27, 2025
f5d9eb0
fix: fix untyped-defs on tests/unittests and cloudinit/sources (#6230)
Ritvikj23 May 29, 2025
a24fbeb
feat(azure): add interface to dhcp_log_func (#6238)
cjp256 May 30, 2025
acf3631
feat: Add Raspberry Pi OS support (#5827)
paulober Jun 4, 2025
ca578a8
ec2: Improve metadata retrieval by iterating all interfaces (#6233)
yukariatlas Jun 4, 2025
5e2461e
docs: include missing --seed flags in clean CLI (#6244)
Faizan-Alam-1 Jun 4, 2025
54c48a8
test: use latest version of LXD in integration tests (#6249)
TheRealFalcon Jun 5, 2025
3cb1914
fix: remove unnecessary 'Wants' from cloud-init-main.service (#6255)
TheRealFalcon Jun 6, 2025
7f71ac6
refresh patches against main
blackboxsw Jun 9, 2025
508d9f5
update changelog (new upstream snapshot)
blackboxsw Jun 9, 2025
8a551d7
d/cloud-init-base.postinst: move existing hotplug-cmd fifo to limited…
blackboxsw Jun 13, 2025
0985d77
merge from upstream/main at 25.1-124-gff1d9f04
blackboxsw Jul 8, 2025
bdc3c66
refresh patches against upstream/main
blackboxsw Jul 8, 2025
2925e55
update changelog (new upstream snapshot)
blackboxsw Jul 8, 2025
41ffed7
merge from upstream/main at 25.1-126-g2b6c7e65
TheRealFalcon Jul 9, 2025
f5aa9c7
refresh patches
TheRealFalcon Jul 9, 2025
ab7f4c2
update changelog (new upstream snapshot)
TheRealFalcon Jul 9, 2025
51e9729
Add d/p/strip-invalid-mtu.patch
TheRealFalcon Jul 9, 2025
cdbabe0
update changelog
TheRealFalcon Jul 9, 2025
fe990a7
pull in 25.1.x changelogs
TheRealFalcon Aug 12, 2025
57a74ee
d/cloud-init.templates: Move VMware before OVF
blackboxsw Mar 25, 2025
d47636a
update changelog
TheRealFalcon Aug 12, 2025
2147d91
d/cloud-init.templates: Add CloudCIX to datasource list
TheRealFalcon Mar 11, 2025
3a62c1c
update changelog
TheRealFalcon Aug 12, 2025
77ccf41
merge from 25.2 at 25.2
TheRealFalcon Aug 12, 2025
4f652ab
refresh patches against 25.2
TheRealFalcon Aug 12, 2025
fe19abb
update changelog (new upstream snapshot)
TheRealFalcon Aug 12, 2025
0189463
represent noble-security properly in changelog
TheRealFalcon Aug 12, 2025
d9ae4bb
Fix how cloud-init-base overwrites cloud-init files
TheRealFalcon Apr 1, 2025
1efbf31
update changelog
TheRealFalcon Aug 13, 2025
83e8375
releasing cloud-init version 25.2-0ubuntu1~24.04.1
TheRealFalcon Aug 12, 2025
386257e
cloud-init-hotplugd: remove use of "exec" and unnecessary exit (#6357)
dermotbradley Aug 13, 2025
d6a6390
feat(networkd): add support for rendering bridge devices (#6349)
sshedi Aug 14, 2025
5c9b45b
test: skip gpg dependency test on questing (#6388)
TheRealFalcon Aug 14, 2025
e719f5e
fix: make tools/tox-venv with current versions of tox (#6365)
smoser Aug 14, 2025
812da4e
test: drop citestcase from n and o sources (#6363)
aciba90 Aug 14, 2025
61f578d
test: drop citestcase from v sources (#6372)
aciba90 Aug 14, 2025
63059b2
test: drop citestcase from r, s and u sources (#6373)
aciba90 Aug 14, 2025
89239b4
test: drop citestcase from s* tests (#6378)
aciba90 Aug 14, 2025
e7a4e1e
Add 'to: default' support in network state (#6391)
sshedi Aug 14, 2025
3891d78
test: drop citestcase from test_util.py (#6387)
aciba90 Aug 14, 2025
9e244ad
test: drop citestcase net_freebsd (#6374)
aciba90 Aug 15, 2025
37ccc4a
fix: add missing test mock (#6395)
holmanb Aug 15, 2025
c33f203
test: drop citestcase from t* tests (#6379)
aciba90 Aug 15, 2025
87e9889
doc: change `jammy` to `noble` (#6398)
shaerpour Aug 19, 2025
78471f4
chore(ci): bump versions for black, ruff, and mypy (#6406)
holmanb Aug 19, 2025
74fd00b
chore(ci): fix cloud-init test failures from new pylint (#6407)
holmanb Aug 19, 2025
a901632
chore(ci): bump pylint version, fix test failures (#6408)
holmanb Aug 20, 2025
dec3481
test: drop citestcase from net/test_dhcp.py (#6401)
aciba90 Aug 20, 2025
8d9802c
test: drop citestcase from net/test_network_state.py (#6402)
aciba90 Aug 20, 2025
fa541e8
refresh patches against upstream/main
TheRealFalcon Aug 21, 2025
31ef64e
update changelog (new upstream snapshot)
TheRealFalcon Aug 21, 2025
f9306e3
merge from 1e9aba63 at 25.2-59-g1e9aba63
blackboxsw Sep 9, 2025
0885a90
refresh patches against 1e9aba63
blackboxsw Sep 9, 2025
7c3bc85
update changelog (new upstream snapshot)
blackboxsw Sep 9, 2025
000b77b
d/p/retain-setuptools.patch: retain setuptools as build-packend not m…
blackboxsw Sep 9, 2025
7a2f93e
update changelog
blackboxsw Sep 9, 2025
e449e7a
fix: properly quote commands in `do_as` function (#6400)
shaerpour Sep 10, 2025
3361b4a
fix(bddeb): require exec permissions on temporary folder
aciba90 Sep 10, 2025
fc49fa9
fix(net-convert): respect output directory with netplan
aciba90 Sep 10, 2025
bd45dec
feat(hetzner): enable hotplug support and prepare IPv6 integration (#…
DarkPhily Sep 11, 2025
be72c3e
fix: correct netplan renderer target (#6465)
aciba90 Sep 12, 2025
cbb527e
feat(schema): add support for the not keyword (#6469)
mostafaCamel Sep 15, 2025
7990791
test: fix integration for PROPOSED to run apt update prior to install…
blackboxsw Sep 18, 2025
02fd37e
test: Convert test_registry.py from unittest to pytest (#6479)
GautamThorani Sep 22, 2025
2d6860f
fix: preserve special permission bits (#6467)
deepsghimire Sep 23, 2025
d526f46
test(distros): Convert test_hosts.py from unittest to pytest (#6481)
GautamThorani Sep 23, 2025
187e169
feat(eni): support "ip route" if available instead of "route" (#6460)
dermotbradley Sep 24, 2025
d51e60d
chore(cc_rh_subscription): deprecate hyphenated fields, remove self.l…
mostafaCamel Sep 24, 2025
70d8814
feat(CI): new workflow to shellcheck debian package scripts (#6371)
mostafaCamel Sep 25, 2025
be25cef
Release 25.3 (#6486)
aciba90 Sep 26, 2025
3fc56ba
refresh patches against 25.3
blackboxsw Nov 15, 2025
fbe2464
d/p/retain-setuptools.patchpatch: sync identical patch as plucky
blackboxsw Dec 3, 2025
e309ebd
update changelog (new upstream snapshot)
blackboxsw Nov 15, 2025
faf67b9
releasing cloud-init version 25.3-0ubuntu1~24.04.1
blackboxsw Nov 15, 2025
66fcfdd
revert openstack bond name change
holmanb Nov 28, 2025
245f37a
update changelog
holmanb Dec 15, 2025
b915451
merge from upstream/main at 25.3-67-g5efa2c63
holmanb Dec 18, 2025
353df91
update changelog (new upstream snapshot)
holmanb Dec 18, 2025
aa3a747
refresh patches
holmanb Dec 18, 2025
4a301c9
update changelog
holmanb Dec 18, 2025
2ccce27
chore: refresh d/p/retain-setuptools including read-version
blackboxsw Dec 19, 2025
66259f6
update changelog
blackboxsw Dec 19, 2025
c286b4c
update changelog
blackboxsw Feb 2, 2026
9b911ad
merge from upstream/main at 25.3-128-g567cfe89
blackboxsw Feb 2, 2026
8db8534
refresh patches against upstream/main
blackboxsw Feb 2, 2026
c465155
update changelog (new upstream snapshot)
blackboxsw Feb 2, 2026
eaf44be
d/rules: replace DOWNSTREAM_VERSION with packaged DEB_VERSION value
blackboxsw Feb 2, 2026
5268bae
update changelog
blackboxsw Feb 2, 2026
f307132
fix(azure): round duration field in FinishReportingEvent to four deci…
peytonr18 Feb 3, 2026
92961fd
chore: pin full SHA commits for all workflows (#6711)
blackboxsw Feb 3, 2026
9f482f6
fix: DNS resolution performance regression during local stage (#6707)
drzee99 Feb 5, 2026
0974746
update changelog (new upstream snapshot)
holmanb Feb 5, 2026
465f94a
new patch 0001-Revert-fix-DNS-resolution-performance-regression-dur.p…
holmanb Feb 5, 2026
43f13da
update changelog
holmanb Feb 5, 2026
1ec3f63
merge from upstream/main at 25.3-133-g090026a3
blackboxsw Feb 7, 2026
6ede1e0
update changelog (new upstream snapshot)
blackboxsw Feb 7, 2026
84e702e
d/rules: export DEB_VERSION and PACKAGED_VERSION
blackboxsw Feb 7, 2026
9ffe393
d/p/retain-setuptools: drop read-version use PACKAGED_VERSION env var
blackboxsw Feb 7, 2026
e62e888
update changelog
blackboxsw Feb 7, 2026
2973df3
merge from 26.1 at 26.1
blackboxsw Mar 30, 2026
357b2eb
update changelog (new upstream snapshot)
blackboxsw Mar 30, 2026
c68caf6
releasing cloud-init version 26.1-0ubuntu1~24.04.1
blackboxsw Mar 30, 2026
cffabf8
Add ovf-logging patch
cadejacobson Aug 6, 2026
00d65c8
Add azure stack chassis tag to azure datasources
cadejacobson Aug 6, 2026
6d4c13c
DisableIMDS
cadejacobson Aug 6, 2026
eb92a42
DiableWireserver
cadejacobson Aug 6, 2026
aed28fc
Add default network config support
cadejacobson Aug 7, 2026
d57577f
Skip DHCP when both flags are true
cadejacobson Aug 7, 2026
df9d4c2
Update json to yaml
cadejacobson Aug 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 103 additions & 7 deletions cloudinit/sources/DataSourceAzure.py
Original file line number Diff line number Diff line change
Expand Up @@ -335,12 +335,16 @@ def __init__(self, sys_cfg, distro, paths):
)
self._iso_dev = None
self._network_config = None
self._ovf_network_config = None
self._ephemeral_dhcp_ctx: Optional[EphemeralDHCPv4] = None
self._reported_ready_marker_file = os.path.join(
paths.cloud_dir, "data", "reported_ready"
)
self._route_configured_for_imds = False
self._route_configured_for_wireserver = False
self._is_azure_stack = False
self._disable_imds = False
self._disable_wireserver = False
self._system_uuid = None
self._vm_id = None
self._wireserver_endpoint = DEFAULT_WIRESERVER_ENDPOINT
Expand All @@ -350,11 +354,15 @@ def _unpickle(self, ci_pkl_version: int) -> None:

self._ephemeral_dhcp_ctx = None
self._iso_dev = None
self._ovf_network_config = None
self._reported_ready_marker_file = os.path.join(
self.paths.cloud_dir, "data", "reported_ready"
)
self._route_configured_for_imds = False
self._route_configured_for_wireserver = False
self._is_azure_stack = False
self._disable_imds = False
self._disable_wireserver = False
self._system_uuid = None
self._vm_id = None
self._wireserver_endpoint = DEFAULT_WIRESERVER_ENDPOINT
Expand Down Expand Up @@ -705,17 +713,38 @@ def crawl_metadata(self):
)
report_diagnostic_event(msg, logger_func=LOG.warning)

# Azure Stack may opt out of IMDS and/or Wireserver via ovf-env.xml.
self._disable_imds = bool(cfg.get("DisableIMDS"))
self._disable_wireserver = bool(cfg.get("DisableWireserver"))

# Azure Stack may provide a native v2 network config in ovf-env.xml.
self._ovf_network_config = cfg.get("Network")

# If we read OVF from attached media, we are provisioning. If OVF
# is not found, we are probably provisioning on a system which does
# not have UDF support. In either case, require IMDS metadata.
# If we require IMDS metadata, try harder to obtain networking, waiting
# for at least 20 minutes. Otherwise only wait 5 minutes.
requires_imds_metadata = bool(self._iso_dev) or ovf_source is None
timeout_minutes = 20 if requires_imds_metadata else 5
try:
self._setup_ephemeral_networking(timeout_minutes=timeout_minutes)
except NoDHCPLeaseError:
pass
# for at least 20 minutes. Otherwise only wait 5 minutes. With IMDS
# disabled we never query it, so do not wait longer on its behalf.
# Networking only exists to reach IMDS and/or Wireserver, so skip DHCP
# entirely when both are disabled.
if self._disable_imds and self._disable_wireserver:
report_diagnostic_event(
"Skipping DHCP setup: DisableIMDS and DisableWireserver are "
"set in ovf-env.xml.",
logger_func=LOG.info,
)
else:
requires_imds_metadata = not self._disable_imds and (
bool(self._iso_dev) or ovf_source is None
)
timeout_minutes = 20 if requires_imds_metadata else 5
try:
self._setup_ephemeral_networking(
timeout_minutes=timeout_minutes
)
except NoDHCPLeaseError:
pass

imds_md = {}
if self._is_ephemeral_networking_up():
Expand Down Expand Up @@ -858,6 +887,13 @@ def crawl_metadata(self):

@azure_ds_telemetry_reporter
def get_metadata_from_imds(self, report_failure: bool) -> Dict:
if self._disable_imds:
report_diagnostic_event(
"Skipping IMDS query: DisableIMDS is set in ovf-env.xml.",
logger_func=LOG.info,
)
return {}

start_time = monotonic()
retry_deadline = start_time + 300

Expand Down Expand Up @@ -914,6 +950,9 @@ def ds_detect(self):
"""
chassis_tag = identity.ChassisAssetTag.query_system()
if chassis_tag is not None:
self._is_azure_stack = (
chassis_tag is identity.ChassisAssetTag.AZURE_STACK
)
return True

# If no valid chassis tag, check for seeded ovf-env.xml.
Expand Down Expand Up @@ -1415,6 +1454,14 @@ def _report_failure(
if host_only:
return reported

if self._disable_wireserver:
report_diagnostic_event(
"Skipping failure report to Wireserver: DisableWireserver is "
"set in ovf-env.xml.",
logger_func=LOG.info,
)
return reported

if self._is_ephemeral_networking_up():
try:
report_diagnostic_event(
Expand Down Expand Up @@ -1475,6 +1522,17 @@ def _report_ready(
report_dmesg_to_kvp()
kvp.report_success_to_host(vm_id=self._vm_id)

if self._disable_wireserver:
report_diagnostic_event(
"Skipping Wireserver report ready: DisableWireserver is set "
"in ovf-env.xml.",
logger_func=LOG.info,
)
# Reporting ready ejects OVF media; skip since we did not report.
self._iso_dev = None
self._negotiated = True
return None

try:
data = get_metadata_from_fabric(
endpoint=self._wireserver_endpoint,
Expand Down Expand Up @@ -1616,6 +1674,12 @@ def _generate_network_config(self):
str(e),
)

# Use native v2 network config provided in ovf-env.xml, if configured.
if self._ovf_network_config and self.ds_cfg.get(
"apply_network_config"
):
return self._ovf_network_config

# Generate fallback configuration.
try:
return _generate_network_config_from_fallback_config()
Expand Down Expand Up @@ -1962,6 +2026,15 @@ def read_azure_ovf(contents):
:raises NonAzureDataSource: if XML is not in Azure's format.
:raises errors.ReportableError: if XML is unparsable or invalid.
"""
# DEBUG: DO NOT MERGE -- logs raw ovf-env.xml (may contain secrets) to
# diagnose provisioning. Logged before parse so it survives a parse
# failure. Remove before production.
LOG.warning(
"Reading ovf-env.xml: %s",
contents.decode("utf-8", "ignore")
if isinstance(contents, bytes)
else contents,
)
ovf_env = OvfEnvXml.parse_text(contents)
md: Dict[str, Any] = {}
cfg = {}
Expand Down Expand Up @@ -2006,6 +2079,25 @@ def read_azure_ovf(contents):
"ProvisionGuestProxyAgent: %s" % ovf_env.provision_guest_proxy_agent,
logger_func=LOG.info,
)

cfg["DisableIMDS"] = ovf_env.disable_imds
report_diagnostic_event(
"DisableIMDS: %s" % ovf_env.disable_imds,
logger_func=LOG.info,
)

cfg["DisableWireserver"] = ovf_env.disable_wireserver
report_diagnostic_event(
"DisableWireserver: %s" % ovf_env.disable_wireserver,
logger_func=LOG.info,
)

if ovf_env.network is not None:
cfg["Network"] = ovf_env.network
report_diagnostic_event(
"Network config provided in ovf-env.xml.",
logger_func=LOG.info,
)
return (md, ud, cfg)


Expand Down Expand Up @@ -2079,6 +2171,10 @@ def load_azure_ds_dir(source_dir):
with performance.Timed("Reading ovf-env.xml"), open(ovf_file, "rb") as fp:
contents = fp.read()

# DEBUG: DO NOT MERGE -- dumps raw provisioning media (may contain
# secrets) to diagnose provisioning. Remove before production.
Path("/run/cloud-init/ovf-env.xml").write_bytes(contents)

md, ud, cfg = read_azure_ovf(contents)
return (md, ud, cfg, {"ovf-env.xml": contents})

Expand Down
1 change: 1 addition & 0 deletions cloudinit/sources/azure/identity.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ def query_vm_id() -> str:

class ChassisAssetTag(enum.Enum):
AZURE_CLOUD = "7783-7084-3265-9085-8269-3286-77"
AZURE_STACK = "4860-8370-5222-2345-9626-0897-77"

@classmethod
def query_system(cls) -> Optional["ChassisAssetTag"]:
Expand Down
48 changes: 48 additions & 0 deletions cloudinit/sources/helpers/azure.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
from xml.etree import ElementTree as ET # nosec B405
from xml.sax.saxutils import escape # nosec B406

import yaml

from cloudinit import distros, subp, temp_utils, url_helper, util, version
from cloudinit.reporting import events
from cloudinit.sources.azure import errors
Expand Down Expand Up @@ -1000,6 +1002,9 @@ def __init__(
preprovisioned_vm: bool = False,
preprovisioned_vm_type: Optional[str] = None,
provision_guest_proxy_agent: bool = False,
disable_imds: bool = False,
disable_wireserver: bool = False,
network: Optional[dict] = None,
) -> None:
self.username = username
self.password = password
Expand All @@ -1010,6 +1015,9 @@ def __init__(
self.preprovisioned_vm = preprovisioned_vm
self.preprovisioned_vm_type = preprovisioned_vm_type
self.provision_guest_proxy_agent = provision_guest_proxy_agent
self.disable_imds = disable_imds
self.disable_wireserver = disable_wireserver
self.network = network

def __eq__(self, other) -> bool:
return self.__dict__ == other.__dict__
Expand All @@ -1036,6 +1044,7 @@ def parse_text(cls, ovf_env_xml: str) -> "OvfEnvXml":
instance = OvfEnvXml()
instance._parse_linux_configuration_set_section(root)
instance._parse_platform_settings_section(root)
instance._parse_azure_stack_configuration_section(root)

return instance

Expand Down Expand Up @@ -1070,6 +1079,7 @@ def _parse_property(
required: bool,
decode_base64: bool = False,
parse_bool: bool = False,
parse_yaml: bool = False,
default=None,
):
matches = node.findall("./wa:" + name, OvfEnvXml.NAMESPACES)
Expand Down Expand Up @@ -1098,6 +1108,14 @@ def _parse_property(
if parse_bool:
value = util.translate_bool(value)

if parse_yaml and value is not None:
try:
value = yaml.safe_load(value)
except yaml.YAMLError as e:
raise errors.ReportableErrorOvfInvalidMetadata(
"failed to parse %r as YAML" % name
) from e

return value

def _parse_linux_configuration_set_section(self, root):
Expand Down Expand Up @@ -1162,6 +1180,36 @@ def _parse_platform_settings_section(self, root):
required=False,
)

def _parse_azure_stack_configuration_section(self, root):
"""Parse the optional Azure Stack configuration section."""
section = self._find(
root, "AzureStackConfigurationSection", required=False
)
if section is None:
return

self.disable_imds = self._parse_property(
section,
"DisableIMDS",
parse_bool=True,
default=False,
required=False,
)
self.disable_wireserver = self._parse_property(
section,
"DisableWireserver",
parse_bool=True,
default=False,
required=False,
)
self.network = self._parse_property(
section,
"Network",
decode_base64=True,
parse_yaml=True,
required=False,
)

def _parse_ssh_section(self, config_set):
self.public_keys = []

Expand Down
30 changes: 30 additions & 0 deletions debian/README.source
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
=== General Info ===
Packaging branches for the Ubuntu development release are maintained in
upstream git under ubuntu/devel branch.

git clone git://git.launchpad.net/cloud-init -b ubuntu/devel

Stable release branches are also available in ubuntu/<codename>
$ git clone git://git.launchpad.net/cloud-init
$ cd cloud-init
$ git branch -r
origin/HEAD -> origin/master
origin/master
origin/ubuntu/devel
origin/ubuntu/precise
origin/ubuntu/trusty
origin/ubuntu/xenial

Patches in debian/patches are stored un-applied.

== New snapshot ==
Upstream maintains a script to handle new upstream snapshots at:
https://github.com/cloud-init/qa-scripts/
Its usage is like:
new-upstream-snapshot master

== Cherry Pick ==
To cherry pick an upstream commit:
./debian/cherry-pick <hash>

That will add a patch to debian/patches/ and debian/patches/series.
12 changes: 12 additions & 0 deletions debian/apport-general-hook.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
"""General Apport hook for all reports that are using cloud-init."""

from cloudinit.apport import general_add_info


def add_info(report, ui) -> None:
"""Entry point for Apport.

Add a subset of non-sensitive cloud-init data from
/run/cloud/instance-data.json that will be helpful for debugging.
"""
general_add_info(report, ui)
7 changes: 7 additions & 0 deletions debian/apport-launcher.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"""Wrapper for cloudinit apport interface"""

from cloudinit.apport import add_info as cloudinit_add_info


def add_info(report, ui):
return cloudinit_add_info(report, ui)
Loading