summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/sources/DataSourceSmartOS.py8
-rw-r--r--tests/unittests/test_datasource/test_smartos.py9
2 files changed, 15 insertions, 2 deletions
diff --git a/cloudinit/sources/DataSourceSmartOS.py b/cloudinit/sources/DataSourceSmartOS.py
index 32b57cdd..cf676504 100644
--- a/cloudinit/sources/DataSourceSmartOS.py
+++ b/cloudinit/sources/DataSourceSmartOS.py
@@ -1,5 +1,5 @@
# Copyright (C) 2013 Canonical Ltd.
-# Copyright (c) 2018, Joyent, Inc.
+# Copyright 2019 Joyent, Inc.
#
# Author: Ben Howard <ben.howard@canonical.com>
#
@@ -34,6 +34,7 @@ from cloudinit import log as logging
from cloudinit import serial
from cloudinit import sources
from cloudinit import util
+from cloudinit.event import EventType
LOG = logging.getLogger(__name__)
@@ -178,6 +179,7 @@ class DataSourceSmartOS(sources.DataSource):
self.metadata = {}
self.network_data = None
self._network_config = None
+ self.update_events['network'].add(EventType.BOOT)
self.script_base_d = os.path.join(self.paths.get_cpath("scripts"))
@@ -319,6 +321,10 @@ class DataSourceSmartOS(sources.DataSource):
@property
def network_config(self):
+ # sources.clear_cached_data() may set _network_config to '_unset'.
+ if self._network_config == sources.UNSET:
+ self._network_config = None
+
if self._network_config is None:
if self.network_data is not None:
self._network_config = (
diff --git a/tests/unittests/test_datasource/test_smartos.py b/tests/unittests/test_datasource/test_smartos.py
index 42ac6971..d5b1c29c 100644
--- a/tests/unittests/test_datasource/test_smartos.py
+++ b/tests/unittests/test_datasource/test_smartos.py
@@ -1,5 +1,5 @@
# Copyright (C) 2013 Canonical Ltd.
-# Copyright (c) 2018, Joyent, Inc.
+# Copyright 2019 Joyent, Inc.
#
# Author: Ben Howard <ben.howard@canonical.com>
#
@@ -31,6 +31,7 @@ from cloudinit.sources.DataSourceSmartOS import (
convert_smartos_network_data as convert_net,
SMARTOS_ENV_KVM, SERIAL_DEVICE, get_smartos_environ,
identify_file)
+from cloudinit.event import EventType
import six
@@ -653,6 +654,12 @@ class TestSmartOSDataSource(FilesystemMockingTestCase):
self.assertEqual(dsrc.device_name_to_device('FOO'),
mydscfg['disk_aliases']['FOO'])
+ def test_reconfig_network_on_boot(self):
+ # Test to ensure that network is configured from metadata on each boot
+ dsrc = self._get_ds(mockdata=MOCK_RETURNS)
+ self.assertSetEqual(set([EventType.BOOT_NEW_INSTANCE, EventType.BOOT]),
+ dsrc.update_events['network'])
+
class TestIdentifyFile(CiTestCase):
"""Test the 'identify_file' utility."""