Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import * as types from '@opentelemetry/types';
import { ReadableSpan } from '@opentelemetry/tracing';
import { hrTimeToMicroseconds } from '@opentelemetry/core';
import * as zipkinTypes from './types';
const ZIPKIN_SPAN_KIND_MAPPING = {
[types.SpanKind.CLIENT]: zipkinTypes.SpanKind.CLIENT,
[types.SpanKind.SERVER]: zipkinTypes.SpanKind.SERVER,
[types.SpanKind.CONSUMER]: zipkinTypes.SpanKind.CONSUMER,
[types.SpanKind.PRODUCER]: zipkinTypes.SpanKind.PRODUCER,
// When absent, the span is local.
[types.SpanKind.INTERNAL]: undefined,
};
export const statusCodeTagName = 'ot.status_code';
export const statusDescriptionTagName = 'ot.status_description';
/**
* Translate OpenTelemetry ReadableSpan to ZipkinSpan format
* @param span Span to be translated
*/
export function toZipkinSpan(
span: ReadableSpan,
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import * as types from '@opentelemetry/types';
import { ReadableSpan } from '@opentelemetry/tracing';
import { hrTimeToMicroseconds } from '@opentelemetry/core';
import * as zipkinTypes from './types';
const ZIPKIN_SPAN_KIND_MAPPING = {
[types.SpanKind.CLIENT]: zipkinTypes.SpanKind.CLIENT,
[types.SpanKind.SERVER]: zipkinTypes.SpanKind.SERVER,
[types.SpanKind.CONSUMER]: zipkinTypes.SpanKind.CONSUMER,
[types.SpanKind.PRODUCER]: zipkinTypes.SpanKind.PRODUCER,
// When absent, the span is local.
[types.SpanKind.INTERNAL]: undefined,
};
export const statusCodeTagName = 'ot.status_code';
export const statusDescriptionTagName = 'ot.status_description';
/**
* Translate OpenTelemetry ReadableSpan to ZipkinSpan format
* @param span Span to be translated
*/
export function toZipkinSpan(
span: ReadableSpan,
serviceName: string,
}
const traceFlags = samplingDecision
? TraceFlags.SAMPLED
: TraceFlags.UNSAMPLED;
const spanContext = { traceId, spanId, traceFlags, traceState };
const recordEvents = options.isRecording || false;
if (!recordEvents && !samplingDecision) {
this.logger.debug('Sampling is off, starting no recording span');
return new NoRecordingSpan(spanContext);
}
const span = new Span(
this,
name,
spanContext,
options.kind || types.SpanKind.INTERNAL,
parentContext ? parentContext.spanId : undefined,
options.links || [],
options.startTime
);
// Set default attributes
span.setAttributes(
Object.assign({}, this._defaultAttributes, options.attributes)
);
return span;
}