@scoutflo/topology-contracts 0.7.27 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/dist/src/correlation/connectionContractV1.d.ts +48 -100
- package/dist/src/correlation/connectionContractV1.js +3 -75
- package/dist/src/correlation/connectionContractV1.js.map +1 -1
- package/dist/src/correlation/contracts/authoring.d.ts +1 -1
- package/dist/src/correlation/contracts/authoring.js +5 -16
- package/dist/src/correlation/contracts/authoring.js.map +1 -1
- package/dist/src/correlation/contracts/families/index.d.ts +31 -39
- package/dist/src/correlation/contracts/families/integrations/index.d.ts +31 -39
- package/dist/src/correlation/contracts/families/integrations/index.js +36 -39
- package/dist/src/correlation/contracts/families/integrations/index.js.map +1 -1
- package/dist/src/correlation/contracts/registry.d.ts +31 -39
- package/dist/test/contracts.test.js +43 -59
- package/dist/test/contracts.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -480,7 +480,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
480
480
|
} | {
|
|
481
481
|
readonly key: "k8s_workload_sends_metrics_to_prometheus_compatible";
|
|
482
482
|
readonly version: "v1";
|
|
483
|
-
readonly status: "
|
|
483
|
+
readonly status: "active";
|
|
484
484
|
readonly family: "integrations";
|
|
485
485
|
readonly source_endpoint: {
|
|
486
486
|
readonly entity_type: "resource";
|
|
@@ -495,7 +495,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
495
495
|
};
|
|
496
496
|
readonly relation_class: "associative";
|
|
497
497
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
498
|
-
readonly evidence_level: "
|
|
498
|
+
readonly evidence_level: "implemented";
|
|
499
499
|
readonly provider_family: "prometheus_compatible";
|
|
500
500
|
readonly provider_category: "observability";
|
|
501
501
|
readonly claim_layers: {
|
|
@@ -504,12 +504,12 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
504
504
|
readonly diagnostic: readonly ["release", "version", "commit_sha"];
|
|
505
505
|
readonly contract_scoped_identity: readonly [];
|
|
506
506
|
};
|
|
507
|
-
readonly notes: readonly ["
|
|
507
|
+
readonly notes: readonly ["Ratified and implemented Connection Contract V1 active key; also covers Mimir and VictoriaMetrics via helper mapping."];
|
|
508
508
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
509
509
|
} | {
|
|
510
510
|
readonly key: "service_sends_metrics_to_prometheus_compatible";
|
|
511
511
|
readonly version: "v1";
|
|
512
|
-
readonly status: "
|
|
512
|
+
readonly status: "experimental";
|
|
513
513
|
readonly family: "integrations";
|
|
514
514
|
readonly source_endpoint: {
|
|
515
515
|
readonly entity_type: "service";
|
|
@@ -523,15 +523,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
523
523
|
};
|
|
524
524
|
readonly relation_class: "associative";
|
|
525
525
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
526
|
-
readonly evidence_level: "
|
|
526
|
+
readonly evidence_level: "pre_prod_validation";
|
|
527
527
|
readonly provider_family: "prometheus_compatible";
|
|
528
528
|
readonly provider_category: "observability";
|
|
529
|
-
readonly notes: readonly ["Canonical Prometheus-compatible binding uses the Scoutflo service endpoint; Kubernetes workload identity remains supporting evidence."];
|
|
530
529
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
531
530
|
} | {
|
|
532
531
|
readonly key: "workload_reports_errors_to_sentry";
|
|
533
532
|
readonly version: "v1";
|
|
534
|
-
readonly status: "
|
|
533
|
+
readonly status: "active";
|
|
535
534
|
readonly family: "integrations";
|
|
536
535
|
readonly source_endpoint: {
|
|
537
536
|
readonly entity_type: "resource";
|
|
@@ -546,7 +545,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
546
545
|
};
|
|
547
546
|
readonly relation_class: "associative";
|
|
548
547
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
549
|
-
readonly evidence_level: "
|
|
548
|
+
readonly evidence_level: "implemented";
|
|
550
549
|
readonly provider_family: "sentry";
|
|
551
550
|
readonly provider_category: "observability";
|
|
552
551
|
readonly claim_layers: {
|
|
@@ -555,12 +554,12 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
555
554
|
readonly scope: readonly ["cluster", "environment"];
|
|
556
555
|
readonly diagnostic: readonly ["release", "version", "commit_sha"];
|
|
557
556
|
};
|
|
558
|
-
readonly notes: readonly ["
|
|
557
|
+
readonly notes: readonly ["Ratified and implemented Connection Contract V1 active key."];
|
|
559
558
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
560
559
|
} | {
|
|
561
560
|
readonly key: "service_reports_errors_to_sentry";
|
|
562
561
|
readonly version: "v1";
|
|
563
|
-
readonly status: "
|
|
562
|
+
readonly status: "experimental";
|
|
564
563
|
readonly family: "integrations";
|
|
565
564
|
readonly source_endpoint: {
|
|
566
565
|
readonly entity_type: "service";
|
|
@@ -574,21 +573,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
574
573
|
};
|
|
575
574
|
readonly relation_class: "associative";
|
|
576
575
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
577
|
-
readonly evidence_level: "
|
|
576
|
+
readonly evidence_level: "pre_prod_validation";
|
|
578
577
|
readonly provider_family: "sentry";
|
|
579
578
|
readonly provider_category: "observability";
|
|
580
|
-
readonly claim_layers: {
|
|
581
|
-
readonly contract_scoped_identity: readonly ["project"];
|
|
582
|
-
readonly identity: readonly ["service", "workload", "namespace", "app", "pod", "container"];
|
|
583
|
-
readonly scope: readonly ["cluster", "environment"];
|
|
584
|
-
readonly diagnostic: readonly ["release", "version", "commit_sha"];
|
|
585
|
-
};
|
|
586
|
-
readonly notes: readonly ["Canonical Sentry binding uses the Scoutflo service endpoint; Kubernetes workload identity remains supporting evidence."];
|
|
587
579
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
588
580
|
} | {
|
|
589
581
|
readonly key: "k8s_workload_sends_logs_to_loki";
|
|
590
582
|
readonly version: "v1";
|
|
591
|
-
readonly status: "
|
|
583
|
+
readonly status: "active";
|
|
592
584
|
readonly family: "integrations";
|
|
593
585
|
readonly source_endpoint: {
|
|
594
586
|
readonly entity_type: "resource";
|
|
@@ -603,14 +595,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
603
595
|
};
|
|
604
596
|
readonly relation_class: "associative";
|
|
605
597
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
606
|
-
readonly evidence_level: "
|
|
598
|
+
readonly evidence_level: "implemented";
|
|
607
599
|
readonly provider_family: "loki";
|
|
608
600
|
readonly provider_category: "logging";
|
|
609
601
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
610
602
|
} | {
|
|
611
603
|
readonly key: "k8s_workload_sends_logs_to_elk";
|
|
612
604
|
readonly version: "v1";
|
|
613
|
-
readonly status: "
|
|
605
|
+
readonly status: "active";
|
|
614
606
|
readonly family: "integrations";
|
|
615
607
|
readonly source_endpoint: {
|
|
616
608
|
readonly entity_type: "resource";
|
|
@@ -625,14 +617,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
625
617
|
};
|
|
626
618
|
readonly relation_class: "associative";
|
|
627
619
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
628
|
-
readonly evidence_level: "
|
|
620
|
+
readonly evidence_level: "implemented";
|
|
629
621
|
readonly provider_family: "elk";
|
|
630
622
|
readonly provider_category: "logging";
|
|
631
623
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
632
624
|
} | {
|
|
633
625
|
readonly key: "k8s_workload_sends_logs_to_victorialogs";
|
|
634
626
|
readonly version: "v1";
|
|
635
|
-
readonly status: "
|
|
627
|
+
readonly status: "active";
|
|
636
628
|
readonly family: "integrations";
|
|
637
629
|
readonly source_endpoint: {
|
|
638
630
|
readonly entity_type: "resource";
|
|
@@ -647,14 +639,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
647
639
|
};
|
|
648
640
|
readonly relation_class: "associative";
|
|
649
641
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
650
|
-
readonly evidence_level: "
|
|
642
|
+
readonly evidence_level: "implemented";
|
|
651
643
|
readonly provider_family: "victorialogs";
|
|
652
644
|
readonly provider_category: "logging";
|
|
653
645
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
654
646
|
} | {
|
|
655
647
|
readonly key: "service_sends_logs_to_logging_provider";
|
|
656
648
|
readonly version: "v1";
|
|
657
|
-
readonly status: "
|
|
649
|
+
readonly status: "experimental";
|
|
658
650
|
readonly family: "integrations";
|
|
659
651
|
readonly source_endpoint: {
|
|
660
652
|
readonly entity_type: "service";
|
|
@@ -668,14 +660,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
668
660
|
};
|
|
669
661
|
readonly relation_class: "associative";
|
|
670
662
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
671
|
-
readonly evidence_level: "
|
|
663
|
+
readonly evidence_level: "pre_prod_validation";
|
|
672
664
|
readonly provider_family: "logging_provider";
|
|
673
665
|
readonly provider_category: "logging";
|
|
674
666
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
675
667
|
} | {
|
|
676
668
|
readonly key: "k8s_workload_sends_traces_to_tempo";
|
|
677
669
|
readonly version: "v1";
|
|
678
|
-
readonly status: "
|
|
670
|
+
readonly status: "active";
|
|
679
671
|
readonly family: "integrations";
|
|
680
672
|
readonly source_endpoint: {
|
|
681
673
|
readonly entity_type: "resource";
|
|
@@ -690,14 +682,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
690
682
|
};
|
|
691
683
|
readonly relation_class: "associative";
|
|
692
684
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
693
|
-
readonly evidence_level: "
|
|
685
|
+
readonly evidence_level: "implemented";
|
|
694
686
|
readonly provider_family: "tempo";
|
|
695
687
|
readonly provider_category: "tracing";
|
|
696
688
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
697
689
|
} | {
|
|
698
690
|
readonly key: "k8s_workload_sends_traces_to_victoriatraces";
|
|
699
691
|
readonly version: "v1";
|
|
700
|
-
readonly status: "
|
|
692
|
+
readonly status: "active";
|
|
701
693
|
readonly family: "integrations";
|
|
702
694
|
readonly source_endpoint: {
|
|
703
695
|
readonly entity_type: "resource";
|
|
@@ -712,14 +704,14 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
712
704
|
};
|
|
713
705
|
readonly relation_class: "associative";
|
|
714
706
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
715
|
-
readonly evidence_level: "
|
|
707
|
+
readonly evidence_level: "implemented";
|
|
716
708
|
readonly provider_family: "victoriatraces";
|
|
717
709
|
readonly provider_category: "tracing";
|
|
718
710
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
719
711
|
} | {
|
|
720
712
|
readonly key: "service_sends_traces_to_tracing_provider";
|
|
721
713
|
readonly version: "v1";
|
|
722
|
-
readonly status: "
|
|
714
|
+
readonly status: "experimental";
|
|
723
715
|
readonly family: "integrations";
|
|
724
716
|
readonly source_endpoint: {
|
|
725
717
|
readonly entity_type: "service";
|
|
@@ -733,7 +725,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
733
725
|
};
|
|
734
726
|
readonly relation_class: "associative";
|
|
735
727
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
736
|
-
readonly evidence_level: "
|
|
728
|
+
readonly evidence_level: "pre_prod_validation";
|
|
737
729
|
readonly provider_family: "tracing_provider";
|
|
738
730
|
readonly provider_category: "tracing";
|
|
739
731
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
@@ -763,7 +755,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
763
755
|
} | {
|
|
764
756
|
readonly key: "service_monitored_by_observability_provider";
|
|
765
757
|
readonly version: "v1";
|
|
766
|
-
readonly status: "
|
|
758
|
+
readonly status: "experimental";
|
|
767
759
|
readonly family: "integrations";
|
|
768
760
|
readonly source_endpoint: {
|
|
769
761
|
readonly entity_type: "service";
|
|
@@ -777,15 +769,15 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
777
769
|
};
|
|
778
770
|
readonly relation_class: "associative";
|
|
779
771
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
780
|
-
readonly evidence_level: "
|
|
772
|
+
readonly evidence_level: "pre_prod_validation";
|
|
781
773
|
readonly provider_family: "multi_signal_observability";
|
|
782
774
|
readonly provider_category: "observability";
|
|
783
|
-
readonly notes: readonly ["
|
|
775
|
+
readonly notes: readonly ["Experimental umbrella for Datadog/Grafana/Groundcover-style providers; do not ratify from capability declarations alone."];
|
|
784
776
|
readonly guardrails: readonly ["Capabilities do not create edges; contracts need source evidence and Gateway-owned validation before emission.", "Provider-specific query hints, IDs, URLs, and setup details remain in source_attributes.", "Candidate, experimental, and reserved entries are not production-ratified contracts."];
|
|
785
777
|
} | {
|
|
786
778
|
readonly key: "k8s_workload_monitored_by_datadog";
|
|
787
779
|
readonly version: "v1";
|
|
788
|
-
readonly status: "
|
|
780
|
+
readonly status: "active";
|
|
789
781
|
readonly family: "integrations";
|
|
790
782
|
readonly source_endpoint: {
|
|
791
783
|
readonly entity_type: "resource";
|
|
@@ -800,7 +792,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
800
792
|
};
|
|
801
793
|
readonly relation_class: "associative";
|
|
802
794
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
803
|
-
readonly evidence_level: "
|
|
795
|
+
readonly evidence_level: "implemented";
|
|
804
796
|
readonly provider_family: "datadog";
|
|
805
797
|
readonly provider_category: "observability";
|
|
806
798
|
readonly notes: readonly ["Active after Gateway runtime verification proved bounded provider API evidence can normalize to canonical workload/service signals."];
|
|
@@ -808,7 +800,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
808
800
|
} | {
|
|
809
801
|
readonly key: "k8s_workload_monitored_by_grafana";
|
|
810
802
|
readonly version: "v1";
|
|
811
|
-
readonly status: "
|
|
803
|
+
readonly status: "active";
|
|
812
804
|
readonly family: "integrations";
|
|
813
805
|
readonly source_endpoint: {
|
|
814
806
|
readonly entity_type: "resource";
|
|
@@ -823,7 +815,7 @@ export declare const CONNECTION_CONTRACT_REGISTRY: ({
|
|
|
823
815
|
};
|
|
824
816
|
readonly relation_class: "associative";
|
|
825
817
|
readonly attribute_schema_key: "relationship.observability_binding.v1";
|
|
826
|
-
readonly evidence_level: "
|
|
818
|
+
readonly evidence_level: "implemented";
|
|
827
819
|
readonly provider_family: "grafana";
|
|
828
820
|
readonly provider_category: "observability";
|
|
829
821
|
readonly notes: readonly ["Active for canonical observability evidence only; Gateway still requires strong source/provider claim overlap before emitting relationships."];
|
|
@@ -104,7 +104,7 @@ const src_1 = require("../src");
|
|
|
104
104
|
strict_1.default.equal(endpoint.resource_type, src_1.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_DEPLOYMENT);
|
|
105
105
|
strict_1.default.equal(src_1.topologyCorrelationRelationClassSchema.parse('associative'), 'associative');
|
|
106
106
|
strict_1.default.equal(src_1.topologyCorrelationContractFamilySchema.parse('observability.metrics'), 'observability.metrics');
|
|
107
|
-
strict_1.default.equal(src_1.topologyCorrelationContractKeySchema.parse(ref.correlation_contract_key), 'k8s_workload_sends_metrics_to_prometheus_compatible'
|
|
107
|
+
strict_1.default.equal(src_1.topologyCorrelationContractKeySchema.parse(ref.correlation_contract_key), 'k8s_workload_sends_metrics_to_prometheus_compatible');
|
|
108
108
|
});
|
|
109
109
|
(0, node_test_1.default)('exports observed service call relationship contracts', () => {
|
|
110
110
|
strict_1.default.equal(src_1.OBSERVED_SERVICE_CALLS_SERVICE_CONTRACT_KEY, 'observed_service_calls_service');
|
|
@@ -226,9 +226,7 @@ const src_1 = require("../src");
|
|
|
226
226
|
'observed_service_calls_service',
|
|
227
227
|
'observed_service_bidirectional_calls_service',
|
|
228
228
|
'k8s_workload_sends_metrics_to_prometheus_compatible',
|
|
229
|
-
'service_sends_metrics_to_prometheus_compatible',
|
|
230
229
|
'workload_reports_errors_to_sentry',
|
|
231
|
-
'service_reports_errors_to_sentry',
|
|
232
230
|
'k8s_workload_sends_logs_to_loki',
|
|
233
231
|
'k8s_workload_sends_logs_to_elk',
|
|
234
232
|
'k8s_workload_sends_logs_to_victorialogs',
|
|
@@ -236,14 +234,10 @@ const src_1 = require("../src");
|
|
|
236
234
|
'k8s_workload_sends_traces_to_victoriatraces',
|
|
237
235
|
'k8s_workload_monitored_by_datadog',
|
|
238
236
|
'k8s_workload_monitored_by_grafana',
|
|
239
|
-
'service_sends_logs_to_logging_provider',
|
|
240
|
-
'service_sends_traces_to_tracing_provider',
|
|
241
|
-
'service_monitored_by_observability_provider',
|
|
242
237
|
]);
|
|
243
238
|
strict_1.default.equal(src_1.connectionContractV1KeySchema.parse(src_1.K8S_WORKLOAD_PART_OF_NAMESPACE_CONTRACT_KEY), src_1.K8S_WORKLOAD_PART_OF_NAMESPACE_CONTRACT_KEY);
|
|
244
239
|
strict_1.default.equal(src_1.connectionContractV1KeySchema.parse(src_1.K8S_WORKLOAD_SENDS_METRICS_TO_PROMETHEUS_COMPATIBLE_CONTRACT_KEY), src_1.K8S_WORKLOAD_SENDS_METRICS_TO_PROMETHEUS_COMPATIBLE_CONTRACT_KEY);
|
|
245
240
|
strict_1.default.equal(src_1.connectionContractV1KeySchema.parse(src_1.WORKLOAD_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY), src_1.WORKLOAD_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY);
|
|
246
|
-
strict_1.default.equal(src_1.connectionContractV1KeySchema.parse(src_1.SERVICE_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY), src_1.SERVICE_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY);
|
|
247
241
|
strict_1.default.throws(() => src_1.connectionContractV1KeySchema.parse('pagerduty_service_alerts_workload'));
|
|
248
242
|
strict_1.default.deepEqual([...src_1.CONNECTION_CONTRACT_V1_REFS], [
|
|
249
243
|
{
|
|
@@ -310,18 +304,10 @@ const src_1 = require("../src");
|
|
|
310
304
|
correlation_contract_key: 'k8s_workload_sends_metrics_to_prometheus_compatible',
|
|
311
305
|
correlation_contract_version: 'v1',
|
|
312
306
|
},
|
|
313
|
-
{
|
|
314
|
-
correlation_contract_key: 'service_sends_metrics_to_prometheus_compatible',
|
|
315
|
-
correlation_contract_version: 'v1',
|
|
316
|
-
},
|
|
317
307
|
{
|
|
318
308
|
correlation_contract_key: 'workload_reports_errors_to_sentry',
|
|
319
309
|
correlation_contract_version: 'v1',
|
|
320
310
|
},
|
|
321
|
-
{
|
|
322
|
-
correlation_contract_key: 'service_reports_errors_to_sentry',
|
|
323
|
-
correlation_contract_version: 'v1',
|
|
324
|
-
},
|
|
325
311
|
{
|
|
326
312
|
correlation_contract_key: 'k8s_workload_sends_logs_to_loki',
|
|
327
313
|
correlation_contract_version: 'v1',
|
|
@@ -350,18 +336,6 @@ const src_1 = require("../src");
|
|
|
350
336
|
correlation_contract_key: 'k8s_workload_monitored_by_grafana',
|
|
351
337
|
correlation_contract_version: 'v1',
|
|
352
338
|
},
|
|
353
|
-
{
|
|
354
|
-
correlation_contract_key: 'service_sends_logs_to_logging_provider',
|
|
355
|
-
correlation_contract_version: 'v1',
|
|
356
|
-
},
|
|
357
|
-
{
|
|
358
|
-
correlation_contract_key: 'service_sends_traces_to_tracing_provider',
|
|
359
|
-
correlation_contract_version: 'v1',
|
|
360
|
-
},
|
|
361
|
-
{
|
|
362
|
-
correlation_contract_key: 'service_monitored_by_observability_provider',
|
|
363
|
-
correlation_contract_version: 'v1',
|
|
364
|
-
},
|
|
365
339
|
]);
|
|
366
340
|
strict_1.default.deepEqual(src_1.connectionContractV1RefSchema.parse(src_1.K8S_WORKLOAD_PART_OF_NAMESPACE_CONTRACT_REF), src_1.K8S_WORKLOAD_PART_OF_NAMESPACE_CONTRACT_REF);
|
|
367
341
|
strict_1.default.throws(() => src_1.connectionContractV1RefSchema.parse({
|
|
@@ -430,7 +404,7 @@ const src_1 = require("../src");
|
|
|
430
404
|
diagnostic: ['release', 'version', 'commit_sha'],
|
|
431
405
|
contract_scoped_identity: [],
|
|
432
406
|
});
|
|
433
|
-
const sentry = (0, src_1.getConnectionContract)(src_1.
|
|
407
|
+
const sentry = (0, src_1.getConnectionContract)(src_1.WORKLOAD_REPORTS_ERRORS_TO_SENTRY_CONTRACT_KEY, src_1.CONNECTION_CONTRACT_VERSION_V1);
|
|
434
408
|
strict_1.default.deepEqual(sentry?.claim_layers, {
|
|
435
409
|
identity: ['service', 'workload', 'namespace', 'app', 'pod', 'container'],
|
|
436
410
|
scope: ['cluster', 'environment'],
|
|
@@ -457,14 +431,9 @@ const src_1 = require("../src");
|
|
|
457
431
|
});
|
|
458
432
|
strict_1.default.deepEqual((0, src_1.sentryContractForProvider)(' SENTRY '), {
|
|
459
433
|
attribute_schema_key: 'relationship.observability_binding.v1',
|
|
460
|
-
correlation_contract_key: '
|
|
434
|
+
correlation_contract_key: 'workload_reports_errors_to_sentry',
|
|
461
435
|
correlation_contract_version: 'v1',
|
|
462
436
|
});
|
|
463
|
-
strict_1.default.equal((0, src_1.serviceObservabilityContractForProvider)(' Prometheus ')?.correlation_contract_key, 'service_sends_metrics_to_prometheus_compatible');
|
|
464
|
-
strict_1.default.equal((0, src_1.serviceObservabilityContractForProvider)('victorialogs')?.correlation_contract_key, 'service_sends_logs_to_logging_provider');
|
|
465
|
-
strict_1.default.equal((0, src_1.serviceObservabilityContractForProvider)('tempo')?.correlation_contract_key, 'service_sends_traces_to_tracing_provider');
|
|
466
|
-
strict_1.default.equal((0, src_1.serviceObservabilityContractForProvider)('datadog')?.correlation_contract_key, 'service_monitored_by_observability_provider');
|
|
467
|
-
strict_1.default.equal((0, src_1.serviceObservabilityContractForProvider)('sentry'), undefined);
|
|
468
437
|
for (const provider of ['datadog', 'grafana', 'loki', 'tempo', 'pagerduty', 'zenduty']) {
|
|
469
438
|
strict_1.default.equal((0, src_1.prometheusCompatibleContractForProvider)(provider), undefined);
|
|
470
439
|
strict_1.default.equal((0, src_1.sentryContractForProvider)(provider), undefined);
|
|
@@ -488,8 +457,12 @@ const src_1 = require("../src");
|
|
|
488
457
|
strict_1.default.equal((0, src_1.argocdCandidateForTarget)({ provider: 'github', sourceType: 'github_account' }), undefined);
|
|
489
458
|
});
|
|
490
459
|
(0, node_test_1.default)('exports manual relationship authoring contracts from active SDK registry', () => {
|
|
491
|
-
const
|
|
492
|
-
from: {
|
|
460
|
+
const workloadToPrometheus = (0, src_1.resolveAuthorableRelationshipContract)({
|
|
461
|
+
from: {
|
|
462
|
+
entity_type: 'resource',
|
|
463
|
+
resource_type: src_1.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_DEPLOYMENT,
|
|
464
|
+
provider: src_1.TOPOLOGY_PROVIDER.K8S,
|
|
465
|
+
},
|
|
493
466
|
relation: src_1.TOPOLOGY_RELATION_TYPE.SENDS_METRICS_TO,
|
|
494
467
|
to: {
|
|
495
468
|
entity_type: 'resource',
|
|
@@ -497,20 +470,24 @@ const src_1 = require("../src");
|
|
|
497
470
|
provider: src_1.TOPOLOGY_PROVIDER.PROMETHEUS,
|
|
498
471
|
},
|
|
499
472
|
});
|
|
500
|
-
strict_1.default.equal(
|
|
501
|
-
strict_1.default.equal(
|
|
502
|
-
strict_1.default.deepEqual((0, src_1.relationshipAuthoringRequiredAttributeKeys)(
|
|
473
|
+
strict_1.default.equal(workloadToPrometheus?.attribute_schema_key, 'relationship.observability_binding.v1');
|
|
474
|
+
strict_1.default.equal(workloadToPrometheus?.correlation_contract_key, src_1.K8S_WORKLOAD_SENDS_METRICS_TO_PROMETHEUS_COMPATIBLE_CONTRACT_KEY);
|
|
475
|
+
strict_1.default.deepEqual((0, src_1.relationshipAuthoringRequiredAttributeKeys)(workloadToPrometheus?.attribute_schema_key || ''), [
|
|
503
476
|
'relationship_kind',
|
|
504
477
|
'observed_service_id',
|
|
505
478
|
'signal_type',
|
|
506
479
|
'basis',
|
|
507
480
|
'from_role',
|
|
508
481
|
'to_role',
|
|
482
|
+
'cluster_id',
|
|
483
|
+
'namespace',
|
|
484
|
+
'workload_name',
|
|
485
|
+
'workload_type',
|
|
509
486
|
]);
|
|
510
|
-
strict_1.default.deepEqual((0, src_1.defaultRelationshipAuthoringAttributes)(
|
|
487
|
+
strict_1.default.deepEqual((0, src_1.defaultRelationshipAuthoringAttributes)(workloadToPrometheus), {
|
|
511
488
|
relationship_kind: 'observability_binding',
|
|
512
489
|
basis: 'manual_mapping',
|
|
513
|
-
from_role: '
|
|
490
|
+
from_role: 'workload',
|
|
514
491
|
to_role: 'observability_tool',
|
|
515
492
|
signal_type: 'metrics',
|
|
516
493
|
});
|
|
@@ -579,11 +556,15 @@ const src_1 = require("../src");
|
|
|
579
556
|
'service_deployed_as_k8s_workload/v1',
|
|
580
557
|
'observed_service_calls_service/v1',
|
|
581
558
|
'observed_service_bidirectional_calls_service/v1',
|
|
582
|
-
'
|
|
583
|
-
'
|
|
584
|
-
'
|
|
585
|
-
'
|
|
586
|
-
'
|
|
559
|
+
'k8s_workload_sends_metrics_to_prometheus_compatible/v1',
|
|
560
|
+
'workload_reports_errors_to_sentry/v1',
|
|
561
|
+
'k8s_workload_sends_logs_to_loki/v1',
|
|
562
|
+
'k8s_workload_sends_logs_to_elk/v1',
|
|
563
|
+
'k8s_workload_sends_logs_to_victorialogs/v1',
|
|
564
|
+
'k8s_workload_sends_traces_to_tempo/v1',
|
|
565
|
+
'k8s_workload_sends_traces_to_victoriatraces/v1',
|
|
566
|
+
'k8s_workload_monitored_by_datadog/v1',
|
|
567
|
+
'k8s_workload_monitored_by_grafana/v1',
|
|
587
568
|
]);
|
|
588
569
|
strict_1.default.deepEqual(src_1.ACTIVE_CONNECTION_CONTRACT_REFS, activeCompositeKeys.map((key) => {
|
|
589
570
|
const [correlation_contract_key, correlation_contract_version] = key.split('/');
|
|
@@ -591,18 +572,17 @@ const src_1 = require("../src");
|
|
|
591
572
|
}));
|
|
592
573
|
strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_part_of_namespace', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
|
|
593
574
|
strict_1.default.equal((0, src_1.getConnectionContract)('aws_vpc_part_of_account', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
|
|
594
|
-
strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_logs_to_logging_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.
|
|
595
|
-
strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_metrics_to_prometheus_compatible', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.
|
|
596
|
-
strict_1.default.equal((0, src_1.getConnectionContract)('service_reports_errors_to_sentry', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.
|
|
597
|
-
strict_1.default.equal((0, src_1.getConnectionContract)('
|
|
598
|
-
strict_1.default.equal((0, src_1.getConnectionContract)('
|
|
599
|
-
strict_1.default.equal((0, src_1.getConnectionContract)('service_monitored_by_observability_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
|
|
575
|
+
strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_logs_to_logging_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
|
|
576
|
+
strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_metrics_to_prometheus_compatible', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
|
|
577
|
+
strict_1.default.equal((0, src_1.getConnectionContract)('service_reports_errors_to_sentry', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
|
|
578
|
+
strict_1.default.equal((0, src_1.getConnectionContract)('service_sends_traces_to_tracing_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
|
|
579
|
+
strict_1.default.equal((0, src_1.getConnectionContract)('service_monitored_by_observability_provider', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
|
|
600
580
|
strict_1.default.equal((0, src_1.getConnectionContract)('github_account_owns_repository', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.RESERVED);
|
|
601
581
|
strict_1.default.equal((0, src_1.getConnectionContract)('argocd_app_deploys_to_k8s_workload', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
|
|
602
582
|
strict_1.default.equal((0, src_1.getConnectionContract)('argocd_app_sources_github_repository', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
|
|
603
583
|
strict_1.default.equal((0, src_1.getConnectionContract)('argocd_app_deploys_to_k8s_service', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
|
|
604
|
-
strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_datadog', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.
|
|
605
|
-
strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_grafana', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.
|
|
584
|
+
strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_datadog', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
|
|
585
|
+
strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_grafana', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.ACTIVE);
|
|
606
586
|
strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_groundcover', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.EXPERIMENTAL);
|
|
607
587
|
strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_pagerduty_alerting', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
|
|
608
588
|
strict_1.default.equal((0, src_1.getConnectionContract)('k8s_workload_monitored_by_zenduty_alerting', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
|
|
@@ -619,7 +599,7 @@ const src_1 = require("../src");
|
|
|
619
599
|
strict_1.default.equal((0, src_1.getConnectionContract)('pagerduty_service_alerts_workload', 'v1'), undefined);
|
|
620
600
|
strict_1.default.equal((0, src_1.getConnectionContract)('service_uses_jira', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
|
|
621
601
|
strict_1.default.equal((0, src_1.getConnectionContract)('service_uses_jsm', 'v1')?.status, src_1.CONNECTION_CONTRACT_STATUS.CANDIDATE);
|
|
622
|
-
const
|
|
602
|
+
const activeObservabilityKeys = [
|
|
623
603
|
'k8s_workload_sends_logs_to_loki',
|
|
624
604
|
'k8s_workload_sends_logs_to_elk',
|
|
625
605
|
'k8s_workload_sends_logs_to_victorialogs',
|
|
@@ -628,13 +608,13 @@ const src_1 = require("../src");
|
|
|
628
608
|
'k8s_workload_monitored_by_datadog',
|
|
629
609
|
'k8s_workload_monitored_by_grafana',
|
|
630
610
|
];
|
|
631
|
-
strict_1.default.deepEqual(
|
|
611
|
+
strict_1.default.deepEqual(activeObservabilityKeys.map((key) => (0, src_1.getConnectionContract)(key, 'v1')?.status), activeObservabilityKeys.map(() => src_1.CONNECTION_CONTRACT_STATUS.ACTIVE));
|
|
632
612
|
const observabilityBindingKeys = [
|
|
633
613
|
'k8s_workload_sends_metrics_to_prometheus_compatible',
|
|
634
614
|
'workload_reports_errors_to_sentry',
|
|
635
|
-
|
|
636
|
-
...legacyWorkloadObservabilityKeys,
|
|
615
|
+
...activeObservabilityKeys,
|
|
637
616
|
'service_sends_metrics_to_prometheus_compatible',
|
|
617
|
+
'service_reports_errors_to_sentry',
|
|
638
618
|
'service_sends_logs_to_logging_provider',
|
|
639
619
|
'service_sends_traces_to_tracing_provider',
|
|
640
620
|
'k8s_workload_monitored_by_observability_provider',
|
|
@@ -662,8 +642,12 @@ const src_1 = require("../src");
|
|
|
662
642
|
'argocd_app_sources_github_repository',
|
|
663
643
|
'argocd_app_deploys_to_k8s_service',
|
|
664
644
|
'argocd_app_deploys_to_k8s_workload',
|
|
665
|
-
'
|
|
645
|
+
'service_sends_metrics_to_prometheus_compatible',
|
|
646
|
+
'service_reports_errors_to_sentry',
|
|
647
|
+
'service_sends_logs_to_logging_provider',
|
|
648
|
+
'service_sends_traces_to_tracing_provider',
|
|
666
649
|
'k8s_workload_monitored_by_observability_provider',
|
|
650
|
+
'service_monitored_by_observability_provider',
|
|
667
651
|
'k8s_workload_monitored_by_groundcover',
|
|
668
652
|
'k8s_workload_monitored_by_pagerduty_alerting',
|
|
669
653
|
'k8s_workload_monitored_by_zenduty_alerting',
|