summaryrefslogtreecommitdiff
path: root/cloudinit/user_data.py
AgeCommit message (Collapse)Author
2014-01-24pylint and long line fixes.Scott Moser
This fixes up many long lines to be < 80 chars and some other pylint issues. pylint 1.1 (in trusty) is now complaining about the lazy logging, so I'll clean that up when I touch things.
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-20Just check the filename existing.Joshua Harlow
2013-07-20Unify filename, header replacement.Joshua Harlow
2013-07-20Keep filename from original part.Joshua Harlow
2013-07-20Ensure we reset the part after decompression.Joshua Harlow
2013-07-19Add the ability to decompress MIME gzip.Joshua Harlow
Instead of being restricted to only gzip compressing the overall mime segment or individual included segments, allow for each mime segment to be gzip compressed. LP: #1203203
2013-02-23Get tests working and further adjustments.harlowja
2013-02-21Update to code on trunk.harlowja
2013-02-19Continue working on integrating requests.harlowja
2012-10-10Fixed typo on dict value referenceAvishai Ish-Shalom
LP: #1065116
2012-08-31When a parts content type is found to be different thanJoshua Harlow
its original content type said it is, make sure we set the new value, also unsure if the old top level message should have the same header (which will flip-flop).
2012-08-31Don't look into cloud-archive (after processing) for launchJoshua Harlow
indexes (since they will be handled beforehand) and fix the types being checked on the root of the archive format to be a tuple instead of a list (which oddly causes complaints).
2012-08-27Update so that the content types searched for launch-indexJoshua Harlow
variable has a little more meaning and by default look in metadata for 'launch-index' and have ec2 instead look for a different variable (thus allowing more datasources to just work).
2012-08-26Ensure when an archive is exploded and if it contains theJoshua Harlow
'launch-index' key that we copy that key over to the right header (which will then be used later when assigning the 'real' header when the message is attached)
2012-08-26Fix tests running and add in a check on the content typeJoshua Harlow
before we look into the payload as well as make the skip test a function that the datasource module can also use.
2012-08-26Add the capability to understand and filter onJoshua Harlow
userdata based on a launch-index (or leave userdata alone if none is provided by the datasource). This works by doing the following. 1. Adjusting the userdata processor to attempt to inject a "Launch-Index" header into the messages headers (by either taking a header that already exists or by looking into the payload to see if it exists there). 2. Adjust the get_userdata ds function to apply a filter on the returned userdata (defaulting to false) that will now use the datasources get_launch_index value to restrict the 'final' message used in consuming user data (the same behavior if not existent). 3. Further down the line processes that use the 'resultant' userdata now will only see the ones for there own launch index (ie cloud-config will be restricted automatically and so on) and are unaffected (although they can now ask the cloud object or the datasource for its launch index via the above new ds method.
2012-08-22fix pep8 complaints.Scott Moser
make pep8 now is silent on precise's pep8 ( 0.6.1-2ubuntu2).
2012-07-10Fixes 1012854 by implementing file writing, adjustsJoshua Harlow
other code to have user/group parsing in util instead of in stages.py, renames decomp_str to decomp_gzip since it is more meaningful when named that (as thats all it can decompress).
2012-06-221. Adjust the logging of phone home module when its not enabledharlowja
2. Fix pylint warning in userdata about unused variable
2012-06-22Constant adding for content type, allow the part filename to be over-ridden ↵Joshua Harlow
easily
2012-06-20Massive pylint + pep8 fixups!Joshua Harlow
2012-06-18Fix include once always staying on, only turn it on until a include says to ↵Joshua Harlow
turn it back off, if one of those is encountered
2012-06-171. Add a url response class that urlreading now returns (instead of a tuple). harlowja
a. This allows for more properties to be added as needed in the future, instead of being very restrictive. 2. Fix up all uses of the url reading to now use this new response object. 3. Also fixup user data including, such that if no response actual occurs the url content is not further processed.
2012-06-16Add todo to see if we should turn back off include onceJoshua Harlow
2012-06-16Fix include on enabling, simplify statements around include skipping, allow ↵Joshua Harlow
for case insensitive include statements to be used
2012-06-16Move the helper functions for handlers to the handler __init__ instead of ↵Joshua Harlow
being in here. This class will now just contain user data parsing, leaving the handler running to happen elsewhere.
2012-06-16For the different base classes, ensure we are using the 'abc' module + ↵Joshua Harlow
appropriate annotations + metaclasses.
2012-06-161. Change to fixup handler instead of fixup moduleJoshua Harlow
2. Add logging of unknown content types + seperate payload logging detail message into a separate function.
2012-06-16Some simple fixes that will make the python 3 translation easierJoshua Harlow
2012-06-15Fixups to ensure that pylint does not find anything major wrong.Joshua Harlow
2012-06-15Moved the common user data classes and functionality back to this file since ↵Joshua Harlow
for now it seems to make organizational sense to put it here.
2012-06-09Rename these to user_data module + submodules.Joshua Harlow
2012-06-08Large amounts of refactoring.Joshua Harlow
Now there exists a class which processes the user data down to a mime message and just some small utility methods to walk and determine types. Large amount of content type cleanups & constant creation.
2012-06-071. Adding some new helper files that split off file inclusion, templating, ↵Joshua Harlow
importing, constant usage. 1. Move all datasources to a new sources directory 1. Rename some files to be more consistent with python file/module naming.