diff options
author | Scott Moser <smoser@ubuntu.com> | 2012-08-20 21:27:04 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2012-08-20 21:27:04 -0400 |
commit | 989252019b14c7147367ffddaa990b371438fa7c (patch) | |
tree | be49fc53b38eca8eef5e074efa2e198a40004305 /cloudinit/sources/DataSourceNone.py | |
parent | a2ebfe8f6f31ae6972620f271ab9fa935d46dff1 (diff) | |
parent | c1d2bc7ff9824b967cca21ed0254e4ee47168b10 (diff) | |
download | vyos-cloud-init-989252019b14c7147367ffddaa990b371438fa7c.tar.gz vyos-cloud-init-989252019b14c7147367ffddaa990b371438fa7c.zip |
Add the "None" datasource
The None datasource is the last resort fallback datasource. It is
identifiable by a property 'is_disconnected' that indicates that the
datasource used is "not connected to a datasource".
This will allow any thing that needs to run to still run in the absense
of a DataSource.
Also, we add a logging of the datasource found in final_message, and
a warning if the None datasource is found.
LP: #906669
Diffstat (limited to 'cloudinit/sources/DataSourceNone.py')
-rw-r--r-- | cloudinit/sources/DataSourceNone.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/cloudinit/sources/DataSourceNone.py b/cloudinit/sources/DataSourceNone.py new file mode 100644 index 00000000..b186113c --- /dev/null +++ b/cloudinit/sources/DataSourceNone.py @@ -0,0 +1,63 @@ +# vi: ts=4 expandtab +# +# Copyright (C) 2012 Yahoo! Inc. +# +# Author: Joshua Harlow <harlowja@yahoo-inc.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from cloudinit import log as logging +from cloudinit import sources +from cloudinit import util + +LOG = logging.getLogger(__name__) + + +class DataSourceNone(sources.DataSource): + def __init__(self, sys_cfg, distro, paths, ud_proc=None): + sources.DataSource.__init__(self, sys_cfg, distro, paths, ud_proc) + self.userdata = {} + self.metadata = {} + self.userdata_raw = '' + + def get_data(self): + # If the datasource config has any provided 'fallback' + # userdata or metadata, use it... + if 'userdata' in self.ds_cfg: + self.userdata = self.ds_cfg['userdata'] + self.userdata_raw = util.yaml_dumps(self.userdata) + if 'metadata' in self.ds_cfg: + self.metadata = self.ds_cfg['metadata'] + return True + + def get_instance_id(self): + return 'iid-datasource-none' + + def __str__(self): + return util.obj_name(self) + + @property + def is_disconnected(self): + return True + + +# Used to match classes to dependencies +datasources = [ + (DataSourceNone, (sources.DEP_FILESYSTEM, sources.DEP_NETWORK)), + (DataSourceNone, []), +] + + +# Return a list of data sources that match this set of dependencies +def get_datasource_list(depends): + return sources.list_from_depends(depends, datasources) |