export function mapOtelResourceToMonitoredResource()

in packages/opentelemetry-resource-util/src/index.ts [231:296]


export function mapOtelResourceToMonitoredResource(
  resource: IResource
): MonitoredResource;
/**
 * @deprecated This overload is deprecated, do not pass the includeUnsupportedResources boolean
 * parameter. It will be removed in the next major version release.
 *
 * @param resource the OTel Resource
 * @returns the corresponding GCM MonitoredResource
 */
export function mapOtelResourceToMonitoredResource(
  resource: IResource,
  includeUnsupportedResources: boolean | undefined
): MonitoredResource;
export function mapOtelResourceToMonitoredResource(
  resource: IResource,
  includeUnsupportedResources = false
): MonitoredResource {
  const attrs = resource.attributes;
  const platform = attrs[SEMRESATTRS_CLOUD_PLATFORM];

  let mr: MonitoredResource;
  if (platform === CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE) {
    mr = createMonitoredResource(GCE_INSTANCE, attrs);
  } else if (platform === CLOUDPLATFORMVALUES_GCP_APP_ENGINE) {
    mr = createMonitoredResource(GAE_INSTANCE, attrs);
  } else if (platform === CLOUDPLATFORMVALUES_AWS_EC2) {
    mr = createMonitoredResource(AWS_EC2_INSTANCE, attrs);
  }
  // Cloud Run and Cloud Functions are not writeable for custom metrics yet
  else if (
    includeUnsupportedResources &&
    platform === CLOUDPLATFORMVALUES_GCP_CLOUD_RUN
  ) {
    mr = createMonitoredResource(CLOUD_RUN_REVISION, attrs);
  } else if (
    includeUnsupportedResources &&
    platform === CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS
  ) {
    mr = createMonitoredResource(CLOUD_FUNCTION, attrs);
  } else if (SEMRESATTRS_K8S_CLUSTER_NAME in attrs) {
    // if k8s.cluster.name is set, pattern match for various k8s resources.
    // this will also match non-cloud k8s platforms like minikube.
    if (SEMRESATTRS_K8S_CONTAINER_NAME in attrs) {
      mr = createMonitoredResource(K8S_CONTAINER, attrs);
    } else if (SEMRESATTRS_K8S_POD_NAME in attrs) {
      mr = createMonitoredResource(K8S_POD, attrs);
    } else if (SEMRESATTRS_K8S_NODE_NAME in attrs) {
      mr = createMonitoredResource(K8S_NODE, attrs);
    } else {
      mr = createMonitoredResource(K8S_CLUSTER, attrs);
    }
  } else if (
    (SEMRESATTRS_SERVICE_NAME in attrs || SEMRESATTRS_FAAS_NAME in attrs) &&
    (SEMRESATTRS_SERVICE_INSTANCE_ID in attrs ||
      SEMRESATTRS_FAAS_INSTANCE in attrs)
  ) {
    // fallback to generic_task
    mr = createMonitoredResource(GENERIC_TASK, attrs);
  } else {
    // If not possible, finally fallback to generic_node
    mr = createMonitoredResource(GENERIC_NODE, attrs);
  }

  return mr;
}