diff options
author | Scott Moser <smoser@brickies.net> | 2016-08-18 15:58:17 -0400 |
---|---|---|
committer | Scott Moser <smoser@brickies.net> | 2016-08-18 15:58:17 -0400 |
commit | 8eebcee347ba3d851896285a1e5b18fece868c6b (patch) | |
tree | f3748c8b67b3d486e4aaa315ce4f4f238b5e2707 /cloudinit/dhclient_hook.py | |
parent | ad5045198413d7dc6e3e496541d3a362aa2f415e (diff) | |
parent | 41271bd8609550d02868b7681b49b8791678beaa (diff) | |
download | vyos-cloud-init-8eebcee347ba3d851896285a1e5b18fece868c6b.tar.gz vyos-cloud-init-8eebcee347ba3d851896285a1e5b18fece868c6b.zip |
merge from master at 0.7.7-13-g41271bd
Diffstat (limited to 'cloudinit/dhclient_hook.py')
-rw-r--r-- | cloudinit/dhclient_hook.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/cloudinit/dhclient_hook.py b/cloudinit/dhclient_hook.py new file mode 100644 index 00000000..9dcbe39c --- /dev/null +++ b/cloudinit/dhclient_hook.py @@ -0,0 +1,50 @@ +#!/usr/bin/python +# vi: ts=4 expandtab + +import os + +from cloudinit.atomic_helper import atomic_write_json +from cloudinit import log as logging +from cloudinit import stages + +LOG = logging.getLogger(__name__) + + +class LogDhclient(object): + + def __init__(self, cli_args): + self.hooks_dir = self._get_hooks_dir() + self.net_interface = cli_args.net_interface + self.net_action = cli_args.net_action + self.hook_file = os.path.join(self.hooks_dir, + self.net_interface + ".json") + + @staticmethod + def _get_hooks_dir(): + i = stages.Init() + return os.path.join(i.paths.get_runpath(), 'dhclient.hooks') + + def check_hooks_dir(self): + if not os.path.exists(self.hooks_dir): + os.makedirs(self.hooks_dir) + else: + # If the action is down and the json file exists, we need to + # delete the file + if self.net_action is 'down' and os.path.exists(self.hook_file): + os.remove(self.hook_file) + + @staticmethod + def get_vals(info): + new_info = {} + for k, v in info.items(): + if k.startswith("DHCP4_") or k.startswith("new_"): + key = (k.replace('DHCP4_', '').replace('new_', '')).lower() + new_info[key] = v + return new_info + + def record(self): + envs = os.environ + if self.hook_file is None: + return + atomic_write_json(self.hook_file, self.get_vals(envs)) + LOG.debug("Wrote dhclient options in %s", self.hook_file) |