Пример #1
0
def get_instance():
    """Get a resource based on the application environment.

    Returns a `Resource` configured for the current environment, or None if the
    environment is unknown or unsupported.

    :rtype: :class:`opencensus.common.resource.Resource` or None
    :return: A `Resource` configured for the current environment.
    """
    resources = []
    env_resource = resource.get_from_env()
    if env_resource is not None:
        resources.append(env_resource)

    if k8s_utils.is_k8s_environment():
        resources.append(resource.Resource(
            _K8S_CONTAINER, k8s_utils.get_k8s_metadata()))

    if is_gce_environment():
        resources.append(resource.Resource(
            _GCE_INSTANCE,
            gcp_metadata_config.GcpMetadataConfig().get_gce_metadata()))
    elif is_aws_environment():
        resources.append(resource.Resource(
            _AWS_EC2_INSTANCE,
            (aws_identity_doc_utils.AwsIdentityDocumentUtils()
             .get_aws_metadata())))

    if not resources:
        return None
    return resource.merge_resources(resources)
Пример #2
0
    def test_merge_resource(self):
        with self.assertRaises(ValueError):
            resource_module.merge_resources(None)
        with self.assertRaises(ValueError):
            resource_module.merge_resources([])

        r1 = Resource(None, {'lk1': 'lv11'})
        r2 = Resource('t2', {'lk1': 'lv12', 'lk2': 'lv22'})
        r3 = Resource('t3', {'lk2': 'lv23', 'lk3': 'lv33'})

        merged = resource_module.merge_resources([r1, r2, r3])
        self.assertEqual(merged.type, 't2')
        self.assertDictEqual(merged.labels, {
            'lk1': 'lv11',
            'lk2': 'lv22',
            'lk3': 'lv33'
        })
Пример #3
0
    def test_merge_resource_no_type(self):
        r1 = Resource(None)
        r2 = Resource(None)

        merged = resource_module.merge_resources([r1, r2])
        self.assertEqual(merged.type, None)