summaryrefslogtreecommitdiff
path: root/cloudinit/sources/DataSourceNoCloud.py
diff options
context:
space:
mode:
authorWesley Wiedenmeier <wesley.wiedenmeier@gmail.com>2016-03-21 23:56:23 -0500
committerWesley Wiedenmeier <wesley.wiedenmeier@gmail.com>2016-03-21 23:56:23 -0500
commit6082a5b0c2b1a52ddbf63bfd80331f28f8cdc4fa (patch)
treed42a72aad62a96870ad36dca8f7d85ce09582311 /cloudinit/sources/DataSourceNoCloud.py
parentbb9cb8df25eaeca8740f5e1bcbc9cd2feafcba24 (diff)
parent4f2065ad569355d5d0bc54176bde6b8e55047341 (diff)
downloadvyos-cloud-init-6082a5b0c2b1a52ddbf63bfd80331f28f8cdc4fa.tar.gz
vyos-cloud-init-6082a5b0c2b1a52ddbf63bfd80331f28f8cdc4fa.zip
Merge from trunk
Diffstat (limited to 'cloudinit/sources/DataSourceNoCloud.py')
-rw-r--r--cloudinit/sources/DataSourceNoCloud.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/cloudinit/sources/DataSourceNoCloud.py b/cloudinit/sources/DataSourceNoCloud.py
index a3532463..741ef5bc 100644
--- a/cloudinit/sources/DataSourceNoCloud.py
+++ b/cloudinit/sources/DataSourceNoCloud.py
@@ -209,6 +209,41 @@ class DataSourceNoCloud(sources.DataSource):
mydata['meta-data']['dsmode'])
return False
+ def check_instance_id(self):
+ # quickly (local check only) if self.instance_id is still valid
+ # we check kernel command line or files.
+ current = self.get_instance_id()
+ if not current:
+ return None
+
+ quick_id = _quick_read_instance_id(cmdline_id=self.cmdline_id,
+ dirs=[self.seed_dir])
+ if not quick_id:
+ return None
+ return quick_id == current
+
+
+def _quick_read_instance_id(cmdline_id, dirs=None):
+ if dirs is None:
+ dirs = []
+
+ iid_key = 'instance-id'
+ if cmdline_id is None:
+ fill = {}
+ if parse_cmdline_data(cmdline_id, fill) and iid_key in fill:
+ return fill[iid_key]
+
+ for d in dirs:
+ try:
+ data = util.pathprefix2dict(d, required=['meta-data'])
+ md = util.load_yaml(data['meta-data'])
+ if iid_key in md:
+ return md[iid_key]
+ except ValueError:
+ pass
+
+ return None
+
# Returns true or false indicating if cmdline indicated
# that this module should be used