diff options
| author | Scott Moser <smoser@ubuntu.com> | 2016-03-22 03:29:49 -0400 | 
|---|---|---|
| committer | Scott Moser <smoser@ubuntu.com> | 2016-03-22 03:29:49 -0400 | 
| commit | 9e05dd2d21f3db77607f1e4aa53a4657514a4fce (patch) | |
| tree | 247f8049b34d8d5fb0dc05cd78be8bbb1db91327 /cloudinit/sources/DataSourceNoCloud.py | |
| parent | 3a3f960d5cfee60766e7de9e1fced537cac72106 (diff) | |
| parent | 6ce134c1868478345471ba9166f1523f7d9bf19d (diff) | |
| download | vyos-cloud-init-9e05dd2d21f3db77607f1e4aa53a4657514a4fce.tar.gz vyos-cloud-init-9e05dd2d21f3db77607f1e4aa53a4657514a4fce.zip  | |
merge from trunk.net1
Diffstat (limited to 'cloudinit/sources/DataSourceNoCloud.py')
| -rw-r--r-- | cloudinit/sources/DataSourceNoCloud.py | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/cloudinit/sources/DataSourceNoCloud.py b/cloudinit/sources/DataSourceNoCloud.py index 64853385..538df7d9 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  | 
