def test_get_gke_metadata(self, http_request_mock):

        def assign_attribute_value(*args, **kwargs):
            attribute_uri = args[0].split('/')[-1]
            if attribute_uri == 'id':
                return 'my-instance'
            elif attribute_uri == 'project-id':
                return 'my-project'
            elif attribute_uri == 'cluster-name':
                return 'cluster'
            elif attribute_uri == 'zone':
                return 'us-east1'

        http_request_mock.side_effect = assign_attribute_value
        GcpMetadataConfig.inited = False
        GcpMetadataConfig.is_running = False
        gcp_metadata_config.gcp_metadata_map = {}

        self.assertTrue(GcpMetadataConfig.is_running_on_gcp())

        labels_list = GcpMetadataConfig().get_gke_metadata()

        self.assertEquals(len(labels_list), 7)

        expected_labels = {
            'instance_id': 'my-instance',
            'cluster_name': 'cluster',
            'project_id': 'my-project',
            'zone': 'us-east1',
            'pod_id': 'localhost',
            'namespace_id': 'namespace',
            'container_name': 'container'
        }

        self.assertEquals(labels_list, expected_labels)
    def test_get_gce_metadata_binary_strings(self, http_request_mock):
        """
        At least in python 3 binary strings are returned from urllib
        """
        def assign_attribute_value(*args, **kwargs):
            attribute_uri = args[0].split('/')[-1]
            if attribute_uri == 'id':
                return b'my-instance'
            elif attribute_uri == 'project-id':
                return b'my-project'
            elif attribute_uri == 'zone':
                return b'us-east1'

        http_request_mock.side_effect = assign_attribute_value
        GcpMetadataConfig.inited = False
        GcpMetadataConfig.is_running = False
        gcp_metadata_config.gcp_metadata_map = {}

        self.assertTrue(GcpMetadataConfig.is_running_on_gcp())

        labels_list = GcpMetadataConfig().get_gce_metadata()

        self.assertEquals(len(labels_list), 3)

        expected_labels = {
            'instance_id': 'my-instance',
            'project_id': 'my-project',
            'zone': 'us-east1'
        }

        self.assertEquals(labels_list, expected_labels)
    def test_gcp_not_running(self, http_request_mock):
        http_request_mock.return_value = None
        GcpMetadataConfig.inited = False
        GcpMetadataConfig.is_running = False
        gcp_metadata_config.gcp_metadata_map = {}

        self.assertFalse(GcpMetadataConfig.is_running_on_gcp())

        self.assertEquals(len(GcpMetadataConfig().get_gce_metadata()), 0)
        self.assertEquals(len(GcpMetadataConfig().get_gke_metadata()), 0)
Esempio n. 4
0
def is_gce_environment():
    """A virtual machine instance hosted in Google Compute Engine (GCE)."""
    return GcpMetadataConfig.is_running_on_gcp()
 def get_resource_labels(self):
     gcp_config = GcpMetadataConfig()
     return gcp_config.get_gke_metadata()