summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/sources/DataSourceAzure.py15
-rw-r--r--tests/unittests/test_datasource/test_azure.py12
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):