diff options
Diffstat (limited to 'cloudinit/sources/tests')
| -rw-r--r-- | cloudinit/sources/tests/test_init.py | 86 | ||||
| -rw-r--r-- | cloudinit/sources/tests/test_oracle.py | 8 | 
2 files changed, 91 insertions, 3 deletions
| diff --git a/cloudinit/sources/tests/test_init.py b/cloudinit/sources/tests/test_init.py index 8082019e..6378e98b 100644 --- a/cloudinit/sources/tests/test_init.py +++ b/cloudinit/sources/tests/test_init.py @@ -11,7 +11,8 @@ from cloudinit.helpers import Paths  from cloudinit import importer  from cloudinit.sources import (      EXPERIMENTAL_TEXT, INSTANCE_JSON_FILE, INSTANCE_JSON_SENSITIVE_FILE, -    REDACT_SENSITIVE_VALUE, UNSET, DataSource, redact_sensitive_keys) +    METADATA_UNKNOWN, REDACT_SENSITIVE_VALUE, UNSET, DataSource, +    canonical_cloud_id, redact_sensitive_keys)  from cloudinit.tests.helpers import CiTestCase, skipIf, mock  from cloudinit.user_data import UserDataProcessor  from cloudinit import util @@ -295,6 +296,7 @@ class TestDataSource(CiTestCase):              'base64_encoded_keys': [],              'sensitive_keys': [],              'v1': { +                '_beta_keys': ['subplatform'],                  'availability-zone': 'myaz',                  'availability_zone': 'myaz',                  'cloud-name': 'subclasscloudname', @@ -303,7 +305,10 @@ class TestDataSource(CiTestCase):                  'instance_id': 'iid-datasource',                  'local-hostname': 'test-subclass-hostname',                  'local_hostname': 'test-subclass-hostname', -                'region': 'myregion'}, +                'platform': 'mytestsubclass', +                'public_ssh_keys': [], +                'region': 'myregion', +                'subplatform': 'unknown'},              'ds': {                  '_doc': EXPERIMENTAL_TEXT,                  'meta_data': {'availability_zone': 'myaz', @@ -339,6 +344,7 @@ class TestDataSource(CiTestCase):              'base64_encoded_keys': [],              'sensitive_keys': ['ds/meta_data/some/security-credentials'],              'v1': { +                '_beta_keys': ['subplatform'],                  'availability-zone': 'myaz',                  'availability_zone': 'myaz',                  'cloud-name': 'subclasscloudname', @@ -347,7 +353,10 @@ class TestDataSource(CiTestCase):                  'instance_id': 'iid-datasource',                  'local-hostname': 'test-subclass-hostname',                  'local_hostname': 'test-subclass-hostname', -                'region': 'myregion'}, +                'platform': 'mytestsubclass', +                'public_ssh_keys': [], +                'region': 'myregion', +                'subplatform': 'unknown'},              'ds': {                  '_doc': EXPERIMENTAL_TEXT,                  'meta_data': { @@ -599,4 +608,75 @@ class TestRedactSensitiveData(CiTestCase):              redact_sensitive_keys(md)) +class TestCanonicalCloudID(CiTestCase): + +    def test_cloud_id_returns_platform_on_unknowns(self): +        """When region and cloud_name are unknown, return platform.""" +        self.assertEqual( +            'platform', +            canonical_cloud_id(cloud_name=METADATA_UNKNOWN, +                               region=METADATA_UNKNOWN, +                               platform='platform')) + +    def test_cloud_id_returns_platform_on_none(self): +        """When region and cloud_name are unknown, return platform.""" +        self.assertEqual( +            'platform', +            canonical_cloud_id(cloud_name=None, +                               region=None, +                               platform='platform')) + +    def test_cloud_id_returns_cloud_name_on_unknown_region(self): +        """When region is unknown, return cloud_name.""" +        for region in (None, METADATA_UNKNOWN): +            self.assertEqual( +                'cloudname', +                canonical_cloud_id(cloud_name='cloudname', +                                   region=region, +                                   platform='platform')) + +    def test_cloud_id_returns_platform_on_unknown_cloud_name(self): +        """When region is set but cloud_name is unknown return cloud_name.""" +        self.assertEqual( +            'platform', +            canonical_cloud_id(cloud_name=METADATA_UNKNOWN, +                               region='region', +                               platform='platform')) + +    def test_cloud_id_aws_based_on_region_and_cloud_name(self): +        """When cloud_name is aws, return proper cloud-id based on region.""" +        self.assertEqual( +            'aws-china', +            canonical_cloud_id(cloud_name='aws', +                               region='cn-north-1', +                               platform='platform')) +        self.assertEqual( +            'aws', +            canonical_cloud_id(cloud_name='aws', +                               region='us-east-1', +                               platform='platform')) +        self.assertEqual( +            'aws-gov', +            canonical_cloud_id(cloud_name='aws', +                               region='us-gov-1', +                               platform='platform')) +        self.assertEqual(  # Overrideen non-aws cloud_name is returned +            '!aws', +            canonical_cloud_id(cloud_name='!aws', +                               region='us-gov-1', +                               platform='platform')) + +    def test_cloud_id_azure_based_on_region_and_cloud_name(self): +        """Report cloud-id when cloud_name is azure and region is in china.""" +        self.assertEqual( +            'azure-china', +            canonical_cloud_id(cloud_name='azure', +                               region='chinaeast', +                               platform='platform')) +        self.assertEqual( +            'azure', +            canonical_cloud_id(cloud_name='azure', +                               region='!chinaeast', +                               platform='platform')) +  # vi: ts=4 expandtab diff --git a/cloudinit/sources/tests/test_oracle.py b/cloudinit/sources/tests/test_oracle.py index 7599126c..97d62947 100644 --- a/cloudinit/sources/tests/test_oracle.py +++ b/cloudinit/sources/tests/test_oracle.py @@ -71,6 +71,14 @@ class TestDataSourceOracle(test_helpers.CiTestCase):          self.assertFalse(ds._get_data())          mocks._is_platform_viable.assert_called_once_with() +    def test_platform_info(self): +        """Return platform-related information for Oracle Datasource.""" +        ds, _mocks = self._get_ds() +        self.assertEqual('oracle', ds.cloud_name) +        self.assertEqual('oracle', ds.platform_type) +        self.assertEqual( +            'metadata (http://169.254.169.254/openstack/)', ds.subplatform) +      @mock.patch(DS_PATH + "._is_iscsi_root", return_value=True)      def test_without_userdata(self, m_is_iscsi_root):          """If no user-data is provided, it should not be in return dict.""" | 
