File: k8s_attributes.h

package info (click to toggle)
opentelemetry-cpp 1.23.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 11,372 kB
  • sloc: cpp: 96,239; sh: 1,766; makefile: 36; python: 31
file content (680 lines) | stat: -rw-r--r-- 25,853 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
/*
 * Copyright The OpenTelemetry Authors
 * SPDX-License-Identifier: Apache-2.0
 */

/*
 * DO NOT EDIT, this is an Auto-generated file from:
 * buildscripts/semantic-convention/templates/registry/semantic_attributes-h.j2
 */

#pragma once

#include "opentelemetry/common/macros.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace semconv
{
namespace k8s
{

/**
  The name of the cluster.
 */
static constexpr const char *kK8sClusterName = "k8s.cluster.name";

/**
  A pseudo-ID for the cluster, set to the UID of the @code kube-system @endcode namespace.
  <p>
  K8s doesn't have support for obtaining a cluster ID. If this is ever
  added, we will recommend collecting the @code k8s.cluster.uid @endcode through the
  official APIs. In the meantime, we are able to use the @code uid @endcode of the
  @code kube-system @endcode namespace as a proxy for cluster ID. Read on for the
  rationale.
  <p>
  Every object created in a K8s cluster is assigned a distinct UID. The
  @code kube-system @endcode namespace is used by Kubernetes itself and will exist
  for the lifetime of the cluster. Using the @code uid @endcode of the @code kube-system @endcode
  namespace is a reasonable proxy for the K8s ClusterID as it will only
  change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are
  UUIDs as standardized by
  <a href="https://www.itu.int/ITU-T/studygroups/com17/oid.html">ISO/IEC 9834-8 and ITU-T X.667</a>.
  Which states:
  <blockquote>
  If generated according to one of the mechanisms defined in Rec.
  ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be
  different from all other UUIDs generated before 3603 A.D., or is
  extremely likely to be different (depending on the mechanism chosen).</blockquote>
  <p>
  Therefore, UIDs between clusters should be extremely unlikely to
  conflict.
 */
static constexpr const char *kK8sClusterUid = "k8s.cluster.uid";

/**
  The name of the Container from Pod specification, must be unique within a Pod. Container runtime
  usually uses different globally unique name (@code container.name @endcode).
 */
static constexpr const char *kK8sContainerName = "k8s.container.name";

/**
  Number of times the container was restarted. This attribute can be used to identify a particular
  container (running or stopped) within a container spec.
 */
static constexpr const char *kK8sContainerRestartCount = "k8s.container.restart_count";

/**
  Last terminated reason of the Container.
 */
static constexpr const char *kK8sContainerStatusLastTerminatedReason =
    "k8s.container.status.last_terminated_reason";

/**
  The reason for the container state. Corresponds to the @code reason @endcode field of the: <a
  href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core">K8s
  ContainerStateWaiting</a> or <a
  href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core">K8s
  ContainerStateTerminated</a>
 */
static constexpr const char *kK8sContainerStatusReason = "k8s.container.status.reason";

/**
  The state of the container. <a
  href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core">K8s
  ContainerState</a>
 */
static constexpr const char *kK8sContainerStatusState = "k8s.container.status.state";

/**
  The cronjob annotation placed on the CronJob, the @code <key> @endcode being the annotation name,
  the value being the annotation value. <p> Examples: <ul> <li>An annotation @code retries @endcode
  with value @code 4 @endcode SHOULD be recorded as the
  @code k8s.cronjob.annotation.retries @endcode attribute with value @code "4" @endcode.</li>
    <li>An annotation @code data @endcode with empty string value SHOULD be recorded as
  the @code k8s.cronjob.annotation.data @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sCronjobAnnotation = "k8s.cronjob.annotation";

/**
  The label placed on the CronJob, the @code <key> @endcode being the label name, the value being
  the label value. <p> Examples: <ul> <li>A label @code type @endcode with value @code weekly
  @endcode SHOULD be recorded as the
  @code k8s.cronjob.label.type @endcode attribute with value @code "weekly" @endcode.</li>
    <li>A label @code automated @endcode with empty string value SHOULD be recorded as
  the @code k8s.cronjob.label.automated @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sCronjobLabel = "k8s.cronjob.label";

/**
  The name of the CronJob.
 */
static constexpr const char *kK8sCronjobName = "k8s.cronjob.name";

/**
  The UID of the CronJob.
 */
static constexpr const char *kK8sCronjobUid = "k8s.cronjob.uid";

/**
  The annotation placed on the DaemonSet, the @code <key> @endcode being the annotation name, the
  value being the annotation value, even if the value is empty. <p> Examples: <ul> <li>A label @code
  replicas @endcode with value @code 1 @endcode SHOULD be recorded as the @code
  k8s.daemonset.annotation.replicas @endcode attribute with value @code "1" @endcode.</li> <li>A
  label @code data @endcode with empty string value SHOULD be recorded as the @code
  k8s.daemonset.annotation.data @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sDaemonsetAnnotation = "k8s.daemonset.annotation";

/**
  The label placed on the DaemonSet, the @code <key> @endcode being the label name, the value being
  the label value, even if the value is empty. <p> Examples: <ul> <li>A label @code app @endcode
  with value @code guestbook @endcode SHOULD be recorded as the @code k8s.daemonset.label.app
  @endcode attribute with value @code "guestbook" @endcode.</li> <li>A label @code data @endcode
  with empty string value SHOULD be recorded as the @code k8s.daemonset.label.injected @endcode
  attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sDaemonsetLabel = "k8s.daemonset.label";

/**
  The name of the DaemonSet.
 */
static constexpr const char *kK8sDaemonsetName = "k8s.daemonset.name";

/**
  The UID of the DaemonSet.
 */
static constexpr const char *kK8sDaemonsetUid = "k8s.daemonset.uid";

/**
  The annotation placed on the Deployment, the @code <key> @endcode being the annotation name, the
  value being the annotation value, even if the value is empty. <p> Examples: <ul> <li>A label @code
  replicas @endcode with value @code 1 @endcode SHOULD be recorded as the @code
  k8s.deployment.annotation.replicas @endcode attribute with value @code "1" @endcode.</li> <li>A
  label @code data @endcode with empty string value SHOULD be recorded as the @code
  k8s.deployment.annotation.data @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sDeploymentAnnotation = "k8s.deployment.annotation";

/**
  The label placed on the Deployment, the @code <key> @endcode being the label name, the value being
  the label value, even if the value is empty. <p> Examples: <ul> <li>A label @code replicas
  @endcode with value @code 0 @endcode SHOULD be recorded as the @code k8s.deployment.label.app
  @endcode attribute with value @code "guestbook" @endcode.</li> <li>A label @code injected @endcode
  with empty string value SHOULD be recorded as the @code k8s.deployment.label.injected @endcode
  attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sDeploymentLabel = "k8s.deployment.label";

/**
  The name of the Deployment.
 */
static constexpr const char *kK8sDeploymentName = "k8s.deployment.name";

/**
  The UID of the Deployment.
 */
static constexpr const char *kK8sDeploymentUid = "k8s.deployment.uid";

/**
  The type of metric source for the horizontal pod autoscaler.
  <p>
  This attribute reflects the @code type @endcode field of spec.metrics[] in the HPA.
 */
static constexpr const char *kK8sHpaMetricType = "k8s.hpa.metric.type";

/**
  The name of the horizontal pod autoscaler.
 */
static constexpr const char *kK8sHpaName = "k8s.hpa.name";

/**
  The API version of the target resource to scale for the HorizontalPodAutoscaler.
  <p>
  This maps to the @code apiVersion @endcode field in the @code scaleTargetRef @endcode of the HPA
  spec.
 */
static constexpr const char *kK8sHpaScaletargetrefApiVersion = "k8s.hpa.scaletargetref.api_version";

/**
  The kind of the target resource to scale for the HorizontalPodAutoscaler.
  <p>
  This maps to the @code kind @endcode field in the @code scaleTargetRef @endcode of the HPA spec.
 */
static constexpr const char *kK8sHpaScaletargetrefKind = "k8s.hpa.scaletargetref.kind";

/**
  The name of the target resource to scale for the HorizontalPodAutoscaler.
  <p>
  This maps to the @code name @endcode field in the @code scaleTargetRef @endcode of the HPA spec.
 */
static constexpr const char *kK8sHpaScaletargetrefName = "k8s.hpa.scaletargetref.name";

/**
  The UID of the horizontal pod autoscaler.
 */
static constexpr const char *kK8sHpaUid = "k8s.hpa.uid";

/**
  The size (identifier) of the K8s huge page.
 */
static constexpr const char *kK8sHugepageSize = "k8s.hugepage.size";

/**
  The annotation placed on the Job, the @code <key> @endcode being the annotation name, the value
  being the annotation value, even if the value is empty. <p> Examples: <ul> <li>A label @code
  number @endcode with value @code 1 @endcode SHOULD be recorded as the @code
  k8s.job.annotation.number @endcode attribute with value @code "1" @endcode.</li> <li>A label @code
  data @endcode with empty string value SHOULD be recorded as the @code k8s.job.annotation.data
  @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sJobAnnotation = "k8s.job.annotation";

/**
  The label placed on the Job, the @code <key> @endcode being the label name, the value being the
  label value, even if the value is empty. <p> Examples: <ul> <li>A label @code jobtype @endcode
  with value @code ci @endcode SHOULD be recorded as the @code k8s.job.label.jobtype @endcode
  attribute with value @code "ci" @endcode.</li> <li>A label @code data @endcode with empty string
  value SHOULD be recorded as the @code k8s.job.label.automated @endcode attribute with value @code
  "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sJobLabel = "k8s.job.label";

/**
  The name of the Job.
 */
static constexpr const char *kK8sJobName = "k8s.job.name";

/**
  The UID of the Job.
 */
static constexpr const char *kK8sJobUid = "k8s.job.uid";

/**
  The annotation placed on the Namespace, the @code <key> @endcode being the annotation name, the
  value being the annotation value, even if the value is empty. <p> Examples: <ul> <li>A label @code
  ttl @endcode with value @code 0 @endcode SHOULD be recorded as the @code
  k8s.namespace.annotation.ttl @endcode attribute with value @code "0" @endcode.</li> <li>A label
  @code data @endcode with empty string value SHOULD be recorded as the @code
  k8s.namespace.annotation.data @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sNamespaceAnnotation = "k8s.namespace.annotation";

/**
  The label placed on the Namespace, the @code <key> @endcode being the label name, the value being
  the label value, even if the value is empty. <p> Examples: <ul> <li>A label @code
  kubernetes.io/metadata.name @endcode with value @code default @endcode SHOULD be recorded as the
  @code k8s.namespace.label.kubernetes.io/metadata.name @endcode attribute with value @code
  "default" @endcode.</li> <li>A label @code data @endcode with empty string value SHOULD be
  recorded as the @code k8s.namespace.label.data @endcode attribute with value @code ""
  @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sNamespaceLabel = "k8s.namespace.label";

/**
  The name of the namespace that the pod is running in.
 */
static constexpr const char *kK8sNamespaceName = "k8s.namespace.name";

/**
  The phase of the K8s namespace.
  <p>
  This attribute aligns with the @code phase @endcode field of the
  <a
  href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core">K8s
  NamespaceStatus</a>
 */
static constexpr const char *kK8sNamespacePhase = "k8s.namespace.phase";

/**
  The annotation placed on the Node, the @code <key> @endcode being the annotation name, the value
  being the annotation value, even if the value is empty. <p> Examples: <ul> <li>An annotation @code
  node.alpha.kubernetes.io/ttl @endcode with value @code 0 @endcode SHOULD be recorded as the @code
  k8s.node.annotation.node.alpha.kubernetes.io/ttl @endcode attribute with value @code "0"
  @endcode.</li> <li>An annotation @code data @endcode with empty string value SHOULD be recorded as
  the @code k8s.node.annotation.data @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sNodeAnnotation = "k8s.node.annotation";

/**
  The status of the condition, one of True, False, Unknown.
  <p>
  This attribute aligns with the @code status @endcode field of the
  <a
  href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core">NodeCondition</a>
 */
static constexpr const char *kK8sNodeConditionStatus = "k8s.node.condition.status";

/**
  The condition type of a K8s Node.
  <p>
  K8s Node conditions as described
  by <a href="https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition">K8s
  documentation</a>. <p> This attribute aligns with the @code type @endcode field of the <a
  href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core">NodeCondition</a>
  <p>
  The set of possible values is not limited to those listed here. Managed Kubernetes environments,
  or custom controllers MAY introduce additional node condition types.
  When this occurs, the exact value as reported by the Kubernetes API SHOULD be used.
 */
static constexpr const char *kK8sNodeConditionType = "k8s.node.condition.type";

/**
  The label placed on the Node, the @code <key> @endcode being the label name, the value being the
  label value, even if the value is empty. <p> Examples: <ul> <li>A label @code kubernetes.io/arch
  @endcode with value @code arm64 @endcode SHOULD be recorded as the @code
  k8s.node.label.kubernetes.io/arch @endcode attribute with value @code "arm64" @endcode.</li> <li>A
  label @code data @endcode with empty string value SHOULD be recorded as the @code
  k8s.node.label.data @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sNodeLabel = "k8s.node.label";

/**
  The name of the Node.
 */
static constexpr const char *kK8sNodeName = "k8s.node.name";

/**
  The UID of the Node.
 */
static constexpr const char *kK8sNodeUid = "k8s.node.uid";

/**
  The annotation placed on the Pod, the @code <key> @endcode being the annotation name, the value
  being the annotation value. <p> Examples: <ul> <li>An annotation @code
  kubernetes.io/enforce-mountable-secrets @endcode with value @code true @endcode SHOULD be recorded
  as the @code k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets @endcode attribute with
  value @code "true" @endcode.</li> <li>An annotation @code mycompany.io/arch @endcode with value
  @code x64 @endcode SHOULD be recorded as the @code k8s.pod.annotation.mycompany.io/arch @endcode
  attribute with value @code "x64" @endcode.</li> <li>An annotation @code data @endcode with empty
  string value SHOULD be recorded as the @code k8s.pod.annotation.data @endcode attribute with value
  @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sPodAnnotation = "k8s.pod.annotation";

/**
  The label placed on the Pod, the @code <key> @endcode being the label name, the value being the
  label value. <p> Examples: <ul> <li>A label @code app @endcode with value @code my-app @endcode
  SHOULD be recorded as the @code k8s.pod.label.app @endcode attribute with value @code "my-app"
  @endcode.</li> <li>A label @code mycompany.io/arch @endcode with value @code x64 @endcode SHOULD
  be recorded as the @code k8s.pod.label.mycompany.io/arch @endcode attribute with value @code "x64"
  @endcode.</li> <li>A label @code data @endcode with empty string value SHOULD be recorded as the
  @code k8s.pod.label.data @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sPodLabel = "k8s.pod.label";

/**
  Deprecated, use @code k8s.pod.label @endcode instead.

  @deprecated
  {"note": "Replaced by @code k8s.pod.label @endcode.", "reason": "renamed", "renamed_to":
  "k8s.pod.label"}
 */
OPENTELEMETRY_DEPRECATED static constexpr const char *kK8sPodLabels = "k8s.pod.labels";

/**
  The name of the Pod.
 */
static constexpr const char *kK8sPodName = "k8s.pod.name";

/**
  The UID of the Pod.
 */
static constexpr const char *kK8sPodUid = "k8s.pod.uid";

/**
  The annotation placed on the ReplicaSet, the @code <key> @endcode being the annotation name, the
  value being the annotation value, even if the value is empty. <p> Examples: <ul> <li>A label @code
  replicas @endcode with value @code 0 @endcode SHOULD be recorded as the @code
  k8s.replicaset.annotation.replicas @endcode attribute with value @code "0" @endcode.</li> <li>A
  label @code data @endcode with empty string value SHOULD be recorded as the @code
  k8s.replicaset.annotation.data @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sReplicasetAnnotation = "k8s.replicaset.annotation";

/**
  The label placed on the ReplicaSet, the @code <key> @endcode being the label name, the value being
  the label value, even if the value is empty. <p> Examples: <ul> <li>A label @code app @endcode
  with value @code guestbook @endcode SHOULD be recorded as the @code k8s.replicaset.label.app
  @endcode attribute with value @code "guestbook" @endcode.</li> <li>A label @code injected @endcode
  with empty string value SHOULD be recorded as the @code k8s.replicaset.label.injected @endcode
  attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sReplicasetLabel = "k8s.replicaset.label";

/**
  The name of the ReplicaSet.
 */
static constexpr const char *kK8sReplicasetName = "k8s.replicaset.name";

/**
  The UID of the ReplicaSet.
 */
static constexpr const char *kK8sReplicasetUid = "k8s.replicaset.uid";

/**
  The name of the replication controller.
 */
static constexpr const char *kK8sReplicationcontrollerName = "k8s.replicationcontroller.name";

/**
  The UID of the replication controller.
 */
static constexpr const char *kK8sReplicationcontrollerUid = "k8s.replicationcontroller.uid";

/**
  The name of the resource quota.
 */
static constexpr const char *kK8sResourcequotaName = "k8s.resourcequota.name";

/**
  The name of the K8s resource a resource quota defines.
  <p>
  The value for this attribute can be either the full @code count/<resource>[.<group>] @endcode
  string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just
  the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for
  object count quotas. See <a
  href="https://kubernetes.io/docs/concepts/policy/resource-quotas/#object-count-quota">Kubernetes
  Resource Quotas documentation</a> for more details.
 */
static constexpr const char *kK8sResourcequotaResourceName = "k8s.resourcequota.resource_name";

/**
  The UID of the resource quota.
 */
static constexpr const char *kK8sResourcequotaUid = "k8s.resourcequota.uid";

/**
  The annotation placed on the StatefulSet, the @code <key> @endcode being the annotation name, the
  value being the annotation value, even if the value is empty. <p> Examples: <ul> <li>A label @code
  replicas @endcode with value @code 1 @endcode SHOULD be recorded as the @code
  k8s.statefulset.annotation.replicas @endcode attribute with value @code "1" @endcode.</li> <li>A
  label @code data @endcode with empty string value SHOULD be recorded as the @code
  k8s.statefulset.annotation.data @endcode attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sStatefulsetAnnotation = "k8s.statefulset.annotation";

/**
  The label placed on the StatefulSet, the @code <key> @endcode being the label name, the value
  being the label value, even if the value is empty. <p> Examples: <ul> <li>A label @code replicas
  @endcode with value @code 0 @endcode SHOULD be recorded as the @code k8s.statefulset.label.app
  @endcode attribute with value @code "guestbook" @endcode.</li> <li>A label @code injected @endcode
  with empty string value SHOULD be recorded as the @code k8s.statefulset.label.injected @endcode
  attribute with value @code "" @endcode.</li>
  </ul>
 */
static constexpr const char *kK8sStatefulsetLabel = "k8s.statefulset.label";

/**
  The name of the StatefulSet.
 */
static constexpr const char *kK8sStatefulsetName = "k8s.statefulset.name";

/**
  The UID of the StatefulSet.
 */
static constexpr const char *kK8sStatefulsetUid = "k8s.statefulset.uid";

/**
  The name of K8s <a
  href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io">StorageClass</a>
  object.
 */
static constexpr const char *kK8sStorageclassName = "k8s.storageclass.name";

/**
  The name of the K8s volume.
 */
static constexpr const char *kK8sVolumeName = "k8s.volume.name";

/**
  The type of the K8s volume.
 */
static constexpr const char *kK8sVolumeType = "k8s.volume.type";

namespace K8sContainerStatusReasonValues
{
/**
  The container is being created.
 */
static constexpr const char *kContainerCreating = "ContainerCreating";

/**
  The container is in a crash loop back off state.
 */
static constexpr const char *kCrashLoopBackOff = "CrashLoopBackOff";

/**
  There was an error creating the container configuration.
 */
static constexpr const char *kCreateContainerConfigError = "CreateContainerConfigError";

/**
  There was an error pulling the container image.
 */
static constexpr const char *kErrImagePull = "ErrImagePull";

/**
  The container image pull is in back off state.
 */
static constexpr const char *kImagePullBackOff = "ImagePullBackOff";

/**
  The container was killed due to out of memory.
 */
static constexpr const char *kOomKilled = "OOMKilled";

/**
  The container has completed execution.
 */
static constexpr const char *kCompleted = "Completed";

/**
  There was an error with the container.
 */
static constexpr const char *kError = "Error";

/**
  The container cannot run.
 */
static constexpr const char *kContainerCannotRun = "ContainerCannotRun";

}  // namespace K8sContainerStatusReasonValues

namespace K8sContainerStatusStateValues
{
/**
  The container has terminated.
 */
static constexpr const char *kTerminated = "terminated";

/**
  The container is running.
 */
static constexpr const char *kRunning = "running";

/**
  The container is waiting.
 */
static constexpr const char *kWaiting = "waiting";

}  // namespace K8sContainerStatusStateValues

namespace K8sNamespacePhaseValues
{
/**
  Active namespace phase as described by <a
  href="https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase">K8s API</a>
 */
static constexpr const char *kActive = "active";

/**
  Terminating namespace phase as described by <a
  href="https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase">K8s API</a>
 */
static constexpr const char *kTerminating = "terminating";

}  // namespace K8sNamespacePhaseValues

namespace K8sNodeConditionStatusValues
{

static constexpr const char *kConditionTrue = "true";

static constexpr const char *kConditionFalse = "false";

static constexpr const char *kConditionUnknown = "unknown";

}  // namespace K8sNodeConditionStatusValues

namespace K8sNodeConditionTypeValues
{
/**
  The node is healthy and ready to accept pods
 */
static constexpr const char *kReady = "Ready";

/**
  Pressure exists on the disk size—that is, if the disk capacity is low
 */
static constexpr const char *kDiskPressure = "DiskPressure";

/**
  Pressure exists on the node memory—that is, if the node memory is low
 */
static constexpr const char *kMemoryPressure = "MemoryPressure";

/**
  Pressure exists on the processes—that is, if there are too many processes on the node
 */
static constexpr const char *kPidPressure = "PIDPressure";

/**
  The network for the node is not correctly configured
 */
static constexpr const char *kNetworkUnavailable = "NetworkUnavailable";

}  // namespace K8sNodeConditionTypeValues

namespace K8sVolumeTypeValues
{
/**
  A <a
  href="https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim">persistentVolumeClaim</a>
  volume
 */
static constexpr const char *kPersistentVolumeClaim = "persistentVolumeClaim";

/**
  A <a
  href="https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap">configMap</a>
  volume
 */
static constexpr const char *kConfigMap = "configMap";

/**
  A <a
  href="https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi">downwardAPI</a>
  volume
 */
static constexpr const char *kDownwardApi = "downwardAPI";

/**
  An <a href="https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir">emptyDir</a>
  volume
 */
static constexpr const char *kEmptyDir = "emptyDir";

/**
  A <a href="https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret">secret</a>
  volume
 */
static constexpr const char *kSecret = "secret";

/**
  A <a href="https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local">local</a> volume
 */
static constexpr const char *kLocal = "local";

}  // namespace K8sVolumeTypeValues

}  // namespace k8s
}  // namespace semconv
OPENTELEMETRY_END_NAMESPACE