Skip to content

Commit

Permalink
oracle: fix detect_openstack to report True on OracleCloud.com DMI data
Browse files Browse the repository at this point in the history
The OpenStack datasource in 18.3 changed to detect data in the
init-local stage instead of init-network and attempted to redetect
OpenStackLocal datasource on Oracle across reboots. The function
detect_openstack was added to quickly detect whether a platform is
OpenStack based on dmi product_name or chassis_asset_tag and it was
a bit too strict for Oracle in checking for 'OpenStack Nova'/'Compute'
DMI product_name.

Oracle's DMI product_name reports 'SAtandard PC (i440FX + PIIX, 1996)'
and DMI chassis_asset_tag is 'OracleCloud.com'.

detect_openstack function now adds 'OracleCloud.com' as a supported value
'OracleCloud.com' to valid chassis-asset-tags for the OpenStack
datasource.

LP: #1784685
  • Loading branch information
blackboxsw authored and Server Team CI Bot committed Jul 31, 2018
1 parent 361ae34 commit 3cee0bf
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
3 changes: 2 additions & 1 deletion cloudinit/sources/DataSourceOpenStack.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@
DMI_PRODUCT_COMPUTE = 'OpenStack Compute'
VALID_DMI_PRODUCT_NAMES = [DMI_PRODUCT_NOVA, DMI_PRODUCT_COMPUTE]
DMI_ASSET_TAG_OPENTELEKOM = 'OpenTelekomCloud'
VALID_DMI_ASSET_TAGS = [DMI_ASSET_TAG_OPENTELEKOM]
DMI_ASSET_TAG_ORACLE_CLOUD = 'OracleCloud.com'
VALID_DMI_ASSET_TAGS = [DMI_ASSET_TAG_OPENTELEKOM, DMI_ASSET_TAG_ORACLE_CLOUD]


class DataSourceOpenStack(openstack.SourceMixin, sources.DataSource):
Expand Down
18 changes: 18 additions & 0 deletions tests/unittests/test_datasource/test_openstack.py
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,24 @@ def fake_dmi_read(dmi_key):
ds.detect_openstack(),
'Expected detect_openstack == True on OpenTelekomCloud')

@test_helpers.mock.patch(MOCK_PATH + 'util.read_dmi_data')
def test_detect_openstack_oraclecloud_chassis_asset_tag(self, m_dmi,
m_is_x86):
"""Return True on OpenStack reporting Oracle cloud asset-tag."""
m_is_x86.return_value = True

def fake_dmi_read(dmi_key):
if dmi_key == 'system-product-name':
return 'Standard PC (i440FX + PIIX, 1996)' # No match
if dmi_key == 'chassis-asset-tag':
return 'OracleCloud.com'
assert False, 'Unexpected dmi read of %s' % dmi_key

m_dmi.side_effect = fake_dmi_read
self.assertTrue(
ds.detect_openstack(),
'Expected detect_openstack == True on OracleCloud.com')

@test_helpers.mock.patch(MOCK_PATH + 'util.get_proc_env')
@test_helpers.mock.patch(MOCK_PATH + 'util.read_dmi_data')
def test_detect_openstack_by_proc_1_environ(self, m_dmi, m_proc_env,
Expand Down

0 comments on commit 3cee0bf

Please sign in to comment.