diff options
-rw-r--r-- | cloudinit/sources/DataSourceAzure.py | 15 | ||||
-rw-r--r-- | tests/unittests/test_datasource/test_azure.py | 12 |
2 files changed, 18 insertions, 9 deletions
diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py index a0b9eaef..a8bad90b 100644 --- a/cloudinit/sources/DataSourceAzure.py +++ b/cloudinit/sources/DataSourceAzure.py @@ -799,18 +799,17 @@ def encrypt_pass(password, salt_id="$6$"): def list_possible_azure_ds_devs(): - # return a sorted list of devices that might have a azure datasource devlist = [] if util.is_FreeBSD(): + # add '/dev/cd0' to devlist if it is configured + # here wants to test whether '/dev/cd0' is available cdrom_dev = "/dev/cd0" try: - util.subp(["mount", "-o", "ro", "-t", "udf", cdrom_dev, - "/mnt/cdrom/secure"]) - except util.ProcessExecutionError: - LOG.debug("Fail to mount cd") - return devlist - util.subp(["umount", "/mnt/cdrom/secure"]) - devlist.append(cdrom_dev) + with open(cdrom_dev) as fp: + fp.read(1024) + devlist.append(cdrom_dev) + except IOError: + LOG.debug("cdrom (%s) is not configured", cdrom_dev) else: for fstype in ("iso9660", "udf"): devlist.extend(util.find_devs_with("TYPE=%s" % fstype)) diff --git a/tests/unittests/test_datasource/test_azure.py b/tests/unittests/test_datasource/test_azure.py index b17f389c..114b1a5d 100644 --- a/tests/unittests/test_datasource/test_azure.py +++ b/tests/unittests/test_datasource/test_azure.py @@ -7,7 +7,8 @@ from cloudinit.util import find_freebsd_part from cloudinit.util import get_path_dev_freebsd from ..helpers import (CiTestCase, TestCase, populate_dir, mock, - ExitStack, PY26, SkipTest) + ExitStack, PY26, PY3, SkipTest) +from mock import patch, mock_open import crypt import os @@ -543,6 +544,15 @@ fdescfs /dev/fd fdescfs rw 0 0 ds.get_data() self.assertEqual(self.instance_id, ds.metadata['instance-id']) + def test_list_possible_azure_ds_devs(self): + devlist = [] + with patch('platform.platform', + mock.MagicMock(return_value="FreeBSD")): + name = 'builtins.open' if PY3 else '__builtin__.open' + with patch(name, mock_open(read_data="data")): + devlist.extend(dsaz.list_possible_azure_ds_devs()) + self.assertEqual(devlist, ['/dev/cd0']) + class TestAzureBounce(TestCase): |