# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://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.

spans:
{{- contains .spans }}
- traceid: {{ notEmpty .traceid }}
  segmentid: {{ notEmpty .segmentid }}
  spanid: {{ .spanid }}
  parentspanid: {{ .parentspanid }}
  refs: []
  servicecode: e2e-service-consumer
  serviceinstancename: consumer1
  starttime: {{ gt .starttime 0 }}
  endtime: {{ gt .endtime 0 }}
  endpointname: /artist
  type: Entry
  peer: {{ notEmpty .peer }}
  component: FastAPI
  iserror: false
  layer: Http
  tags:
    {{- contains .tags }}
    - key: http.method
      value: POST
    - key: http.url
      value: {{ notEmpty .value }}
    - key: http.status_code
      value: "200"
    {{- end }}
  logs: []
- traceid: {{ notEmpty .traceid }}
  segmentid: {{ notEmpty .segmentid }}
  spanid: {{ .spanid }}
  parentspanid: {{ .parentspanid }}
  refs: []
  servicecode: e2e-service-consumer
  serviceinstancename: consumer1
  starttime: {{ gt .starttime 0 }}
  endtime: {{ gt .endtime 0 }}
  endpointname: /artist
  type: Exit
  peer: provider:9090
  component: AioHttp
  iserror: false
  layer: Http
  tags:
    {{- contains .tags }}
    - key: http.method
      value: POST
    - key: http.url
      value: http://provider:9090/artist
    - key: http.status_code
      value: "200"
    {{- end }}
  logs: []
- traceid: {{ notEmpty .traceid }}
  segmentid: {{ notEmpty .segmentid }}
  spanid: {{ .spanid }}
  parentspanid: {{ .parentspanid }}
  refs:
    {{- contains .refs }}
    - traceid: {{ notEmpty .traceid }}
      parentsegmentid: {{ .parentsegmentid }}
      parentspanid: {{ .parentspanid }}
      type: CROSS_PROCESS
    {{- end }}
  servicecode: e2e-service-provider
  serviceinstancename: provider1
  starttime: {{ gt .starttime 0 }}
  endtime: {{ gt .endtime 0 }}
  endpointname: /artist
  type: Entry
  peer: {{ notEmpty .peer }}
  component: FastAPI
  iserror: false
  layer: Http
  tags:
    {{- contains .tags }}
    - key: http.method
      value: POST
    - key: http.url
      # Change OAP side e2e from url -> http.url # why is oap e2e passing?? todo check with custom e2e build
      value: http://provider:9090/artist
    - key: http.status_code
      # Change OAP side e2e from status.code -> http.status_code
      value: "200"
    {{- end }}
  logs: []
{{- end }}
