summaryrefslogtreecommitdiff
path: root/packages/python-google-compute-engine/google_compute_engine/networking/network_daemon.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/python-google-compute-engine/google_compute_engine/networking/network_daemon.py')
-rw-r--r--packages/python-google-compute-engine/google_compute_engine/networking/network_daemon.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/packages/python-google-compute-engine/google_compute_engine/networking/network_daemon.py b/packages/python-google-compute-engine/google_compute_engine/networking/network_daemon.py
index e152464..89af61e 100644
--- a/packages/python-google-compute-engine/google_compute_engine/networking/network_daemon.py
+++ b/packages/python-google-compute-engine/google_compute_engine/networking/network_daemon.py
@@ -22,6 +22,7 @@ Update IP forwarding when metadata changes.
import logging.handlers
import optparse
import random
+import socket
from google_compute_engine import config_manager
from google_compute_engine import constants
@@ -31,6 +32,7 @@ from google_compute_engine import metadata_watcher
from google_compute_engine import network_utils
from google_compute_engine.networking.ip_forwarding import ip_forwarding
from google_compute_engine.networking.network_setup import network_setup
+from google_compute_engine.compat import distro_utils
LOCKFILE = constants.LOCALSTATEDIR + '/lock/google_networking.lock'
@@ -62,6 +64,7 @@ class NetworkDaemon(object):
self.ip_forwarding_enabled = ip_forwarding_enabled
self.network_setup_enabled = network_setup_enabled
self.target_instance_ips = target_instance_ips
+ self.dhclient_script = dhclient_script
self.ip_forwarding = ip_forwarding.IpForwarding(
proto_id=proto_id, debug=debug)
@@ -69,6 +72,7 @@ class NetworkDaemon(object):
dhclient_script=dhclient_script, dhcp_command=dhcp_command, debug=debug)
self.network_utils = network_utils.NetworkUtils(logger=self.logger)
self.watcher = metadata_watcher.MetadataWatcher(logger=self.logger)
+ self.distro_utils = distro_utils.Utils(debug=debug)
try:
with file_utils.LockFile(LOCKFILE):
@@ -76,7 +80,8 @@ class NetworkDaemon(object):
timeout = 60 + random.randint(0, 30)
self.watcher.WatchMetadata(
self.HandleNetworkInterfaces,
- metadata_key=self.network_interface_metadata_key, recursive=True,
+ metadata_key="instance/",
+ recursive=True,
timeout=timeout)
except (IOError, OSError) as e:
self.logger.warning(str(e))
@@ -87,7 +92,7 @@ class NetworkDaemon(object):
Args:
result: dict, the metadata response with the network interfaces.
"""
- network_interfaces = self._ExtractInterfaceMetadata(result)
+ network_interfaces = self._ExtractInterfaceMetadata(result['networkInterfaces'])
if self.network_setup_enabled:
default_interface = network_interfaces[0]
@@ -98,10 +103,13 @@ class NetworkDaemon(object):
self.network_setup.EnableNetworkInterfaces(
[interface.name for interface in network_interfaces[1:]])
- for interface in network_interfaces:
- if self.ip_forwarding_enabled:
- self.ip_forwarding.HandleForwardedIps(
- interface.name, interface.forwarded_ips, interface.ip)
+ if self.ip_forwarding_enabled:
+ for interface in network_interfaces:
+ self.ip_forwarding.HandleForwardedIps(interface.name,
+ interface.forwarded_ips,
+ interface.ip)
+ if socket.gethostname() != result['hostname']:
+ distro_utils.RestartNetworking(self.logger)
def _ExtractInterfaceMetadata(self, metadata):
"""Extracts network interface metadata.