summaryrefslogtreecommitdiff
path: root/cloudinit/handlers
AgeCommit message (Collapse)Author
2015-04-16fix cloud-config-archive handlingScott Moser
handling of cloud-config-archive input would fail in fully_decoded_payload. part.get_charset() would return a Charset object, but get_charset.input_codec is a string suitable for passing to decode. This handles that correctly, and is more careful about binary data inside input. The test added verifies that cloud-config inside a cloud-config-archive is handled correctly and also that binary data there is ignored without exceptions raised. LP: #1445143
2015-04-16pep8 fixesScott Moser
2015-03-11userdata-handlers: python3-related fixes on do-not-process-this-part pathOleg Strikov
Cloud-init crashed when received multipart userdata object with 'application/octet-stream' part or some other 'application/*' part except archived ones (x-gzip and friends). These parts are not processed by cloud-init and result only in a message in the log. We used some non-python3-friendly techniques while generating this log message which was a reason for the crash.
2015-01-27Respond to review:Barry Warsaw
- Refactor "fully" decoding the payload of a text/* part. In Python 3, decode=True only means to decode according to Content-Transfer-Encoding, not according to any charset in the Content-Type header. So do that.
2015-01-26Fix a few string/bytes problems with Python 3.Barry Warsaw
2015-01-21Largely merge lp:~harlowja/cloud-init/py2-3 albeit manually because it seemedBarry Warsaw
to be behind trunk. `tox -e py27` passes full test suite. Now to work on replacing mocker.
2014-08-26further remove evidence of pylint.Scott Moser
This just removes comments '# pylint:' things and other code remnents of pylint.
2014-01-16simplify consume_vendordata, move exclusion, consume_vendordata per instanceScott Moser
this simplifies consume_vendordata a bit, changes consume_vendordata to be by default "PER_INSTANCE" (like userdata). The other thing we do here is move the exlusion to be handled when walking the data. The benefit of doing it then is that we can exclude part-handlers. Without the ability to exlude part handlers, exclusion is basically useless (since part-handlers could accomplish anything they wanted).
2014-01-08Significant re-working of the userdata handling and introduction ofBen Howard
vendordata. Vendordata is a datasource provided userdata-like blob that is parsed similiarly to userdata, execept at the user's pleasure. cloudinit/config/cc_scripts_vendor.py: added vendor script cloud config cloudinit/config/cc_vendor_scripts_per_boot.py: added vendor per boot cloud config cloudinit/config/cc_vendor_scripts_per_instance.py: added vendor per instance vendor cloud config cloudinit/config/cc_vendor_scripts_per_once.py: added per once vendor cloud config script doc/examples/cloud-config-vendor-data.txt: documentation of vendor-data examples doc/vendordata.txt: documentation of vendordata for vendors (RENAMED) tests/unittests/test_userdata.py => tests/unittests/test_userdata.py TO: tests/unittests/test_userdata.py => tests/unittests/test_data.py: userdata test cases are not expanded to confirm superiority over vendor data. bin/cloud-init: change instances of 'consume_userdata' to 'consume_data' cloudinit/handlers/cloud_config.py: Added vendor script handling to default cloud-config modules cloudinit/handlers/shell_script.py: Added ability to change the path key to support vendor provided 'vendor-scripts'. Defaults to 'script'. cloudinit/helpers.py: - Changed ConfigMerger to include handling of vendordata. - Changed helpers to include paths for vendordata. cloudinit/sources/__init__.py: Added functions for helping vendordata - get_vendordata_raw(): returns vendordata unprocessed - get_vendordata(): returns vendordata through userdata processor - has_vendordata(): indicator if vendordata is present - consume_vendordata(): datasource directive for indicating explict user approval of vendordata consumption. Defaults to 'false' cloudinit/stages.py: Re-jiggered for handling of vendordata - _initial_subdirs(): added vendor script definition - update(): added self._store_vendordata() - [ADDED] _store_vendordata(): store vendordata - _get_default_handlers(): modified to allow for filtering which handlers will run against vendordata - [ADDED] _do_handlers(): moved logic from consume_userdata to _do_handlers(). This allows _consume_vendordata() and _consume_userdata() to use the same code path. - [RENAMED] consume_userdata() to _consume_userdata() - [ADDED] _consume_vendordata() for handling vendordata - run after userdata to get user cloud-config - uses ConfigMerger to get the configuration from the instance perspective about whether or not to use vendordata - [ADDED] consume_data() to call _consume_{user,vendor}data cloudinit/util.py: - [ADDED] get_nested_option_as_list() used by cc_vendor* for getting a nested value from a dict and returned as a list - runparts(): added 'exe_prefix' for running exe with a prefix, used by cc_vendor* config/cloud.cfg: Added vendor script execution as default tests/unittests/test_runs/test_merge_run.py: changed consume_userdata() to consume_data() tests/unittests/test_runs/test_simple_run.py: changed consume_userdata() to consume_data()
2013-07-24Fix small prefix bug + jsonp tests.Joshua Harlow
Fix the wrong usage of the prefix removal array action by just using the new util function that does these actions correctly. Add in a couple of unit tests to verify the jsonp merging and usage works as expected.
2013-07-24rename CC_JSONP_PRE again (JSONP_PREFIX) and use CLOUD_PREFIXScott Moser
2013-07-24change 'json-patch' to 'cloud-config-jsonp'Scott Moser
2013-07-24merge from trunkScott Moser
2013-07-23use constants for startswith in handlers. add strip_prefix_suffix.Joshua Harlow
Just cleans up some repeated strings into module constants + a util function to do the boothook prefix cleanup (before writing).
2013-07-21Just use an initialized array.Joshua Harlow
2013-07-21Use a util helper to do prefix/suffix removal.Joshua Harlow
2013-07-21Use constants for repeated type strings.Joshua Harlow
2013-07-20Remove return not used.Joshua Harlow
2013-07-20Also handle custom handlers correctly.Joshua Harlow
LP: #1203368
2013-07-20Ensure we remove the same way we detect.Joshua Harlow
2013-07-20Remove json-patch inclusion header if payload contains it.Joshua Harlow
2013-07-20Fix constant move.Joshua Harlow
2013-07-20Fix content-type constant.Joshua Harlow
2013-07-20Add usage of '#json-patch'Joshua Harlow
2013-07-19Add the ability to merge with jsonpatch.Joshua Harlow
Jsonpatch is a new RFC standard for merging json-like structures which the cloud-init cloud-config is one such structure. To use this in a limited fashion (to start) add the ability for the cloud-config handler to accept this content-type and use it as an alternate way to merge new cloud-config sections into the accumulated cloud-config. LP: #1200476
2013-07-11upstart_job.py: fix pylint and bad bad variable in _has_suitable_upstartScott Moser
2013-07-09handlers/upstart_job.py: invoke reload-configuration if we can.Scott Moser
Previously we'd not invoked reload-configuration because doing so caused issues with upstart. Now, instead, determine if we can invoke it. LP: #1124384
2013-06-19fix and cleanup usage of util.logexcJuerg Haefliger
2013-05-09Adjust comment on why we are merging cloud config the way we are.Joshua Harlow
2013-05-09Fix the cloud config merging so that it is backwards compat.Joshua Harlow
The new change for merging works well in the mergedict case but the default merging type for cloud config needs to reflect how yaml was loaded in bulk, which is the same as the replacing keys merging type that is now provided.
2013-04-22Continue working on merging.Joshua Harlow
2013-04-17Altering the order of merging.Joshua Harlow
2013-03-07more pep8/pylint. all clean nowScott Moser
2013-03-07merge from trunkScott Moser
2013-03-06Continue working on merging code.Joshua Harlow
2013-03-05Add in a bunch of changes and tests.Joshua Harlow
2013-02-27do not reload upstart configuration on upstart jobsScott Moser
For now, we disable reloading upstart jobs due to bug 1124384. At some point in the future, we could enable it again when that bug is fixed. The change here allows for a boothook in a multipart input to write the file '/run/cloud-init-upstart-reload' and then have configuration reloaded.
2012-12-19cloudinit/handlers/upstart_job.py: pep8 / trailing whitespaceScott Moser
2012-12-17tell upstart to reload configuration after writing an upstart jobScott Moser
Invoking 'initctl reload-configuration' is only required if inotify does not work. overlayroot does not support inotify. So, we just call initctl always, which wont hurt anything. LP: #1080841
2012-11-22Allow mergers to take options.Joshua Harlow
2012-11-22Add which files the yaml blob came from.Joshua Harlow
2012-11-22Adjust naming and exception catching.Joshua Harlow
2012-11-22Change the yaml merge header extraction to be in a sep. function that can ↵Joshua Harlow
look in more places.
2012-11-22Continue work.Joshua Harlow
2012-11-22Select merge-type from either header or content after loading as yaml.Joshua Harlow
2012-11-22Continue working on merging prototype.Joshua Harlow
2012-11-20Start allowing different merging types to be appliedJoshua Harlow
After user data handling splits apart all the different content types into there various mime messages it is nice to be able to have each message specify how it should be merged (mainly for cloud-config or cloud-archive) into the single cloud config that is eventually used. This starts to add a plugable merging framework and the needed components to activate said headers and merging.
2012-11-06Do the append after escape.Joshua Harlow
2012-11-06Use a method instead + at leastJoshua Harlow
attempt the unicode-escape path.
2012-11-06Fix the case where a unknown type is seen andJoshua Harlow
it has contents which are in unicode which seems to cause python to blow-up when this happens since 'string-escape' doesn't work on unicode (at least in 2.6). LP: #1075756