@opensoha/contracts 0.1.24 → 0.1.25

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.
Files changed (67) hide show
  1. package/auth/catalog_generated.go +2 -2
  2. package/auth/gateway_permissions_test.go +48 -0
  3. package/auth/permission-catalog.json +300 -1
  4. package/compat/consumer-revisions.json +1 -1
  5. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  6. package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
  7. package/fixtures/openapi/KubernetesAgentActionCheck/invalid/unproven-state.json +6 -0
  8. package/fixtures/openapi/KubernetesAgentActionCheck/valid/configured-denied.json +9 -0
  9. package/fixtures/openapi/KubernetesAgentActionProfile/invalid/wildcard.json +1 -0
  10. package/fixtures/openapi/KubernetesAgentActionProfile/valid/workbench.json +1 -0
  11. package/fixtures/openapi/KubernetesClusterRegistrationRequest/invalid/action-profile.json +3 -0
  12. package/fixtures/openapi/KubernetesClusterRegistrationRequest/valid/action-profile.json +5 -0
  13. package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/condition-status-boolean.json +17 -0
  14. package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/taint-effect-missing.json +16 -0
  15. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/legacy-fields-absent.json +11 -0
  16. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/no-taints.json +13 -0
  17. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/ready-cordoned-tainted.json +28 -0
  18. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/unknown-fields-null.json +13 -0
  19. package/fixtures/openapi/KubernetesTopologyCoverage/invalid/empty-as-success.json +5 -0
  20. package/fixtures/openapi/KubernetesTopologyCoverage/valid/not-installed.json +6 -0
  21. package/fixtures/openapi/KubernetesTopologyGraphEdge/invalid/negative-weight.json +8 -0
  22. package/fixtures/openapi/KubernetesTopologyGraphEdge/valid/zero-weight.json +20 -0
  23. package/fixtures/openapi/KubernetesTopologyGraphNode/invalid/fake-flow-kind.json +42 -0
  24. package/fixtures/openapi/KubernetesTopologyGraphNode/valid/rule.json +42 -0
  25. package/fixtures/openapi/KubernetesTopologySnapshot/invalid/raw-source-field.json +33 -0
  26. package/fixtures/openapi/KubernetesTopologySnapshot/valid/projected-source.json +32 -0
  27. package/fixtures/openapi/KubernetesTopologySnapshotRequest/invalid/arbitrary-gvr.json +8 -0
  28. package/fixtures/openapi/KubernetesTopologySnapshotRequest/valid/bounded-sources.json +11 -0
  29. package/fixtures/openapi/KubernetesTopologySourceQuery/invalid/cluster-namespace.json +4 -0
  30. package/fixtures/openapi/KubernetesTopologySourceQuery/valid/all-namespaces.json +4 -0
  31. package/fixtures/openapi/ResourceMonitoringPanel/invalid/unknown-quality.json +7 -0
  32. package/fixtures/openapi/ResourceMonitoringPanel/valid/not-collected.json +7 -0
  33. package/fixtures/openapi/ResourceMonitoringPoint/invalid/string-zero.json +4 -0
  34. package/fixtures/openapi/ResourceMonitoringPoint/valid/missing.json +4 -0
  35. package/fixtures/openapi/ResourceMonitoringPoint/valid/zero.json +4 -0
  36. package/fixtures/openapi/ResourceMonitoringView/invalid/raw-query.json +12 -0
  37. package/fixtures/openapi/ResourceMonitoringView/valid/unconfigured.json +12 -0
  38. package/gen/go/sohaapi/client.go +1 -1
  39. package/gen/go/sohaapi/kubernetes_monitoring_test.go +67 -0
  40. package/gen/go/sohaapi/types.go +1265 -228
  41. package/gen/ts/sohaapi/index.ts +1116 -1
  42. package/openapi/soha-api.json +2497 -302
  43. package/openapi/soha-api.yaml +732 -3
  44. package/openapi/spec_generated.go +3 -3
  45. package/openapi/spec_test.go +34 -0
  46. package/package.json +1 -1
  47. package/resource/agent_access.go +12 -0
  48. package/resource/agent_profiles.go +62 -0
  49. package/resource/agent_profiles_test.go +36 -0
  50. package/resource/kubernetes_kinds.go +73 -0
  51. package/resource/kubernetes_kinds_test.go +38 -0
  52. package/resource/models.go +23 -14
  53. package/resource/network_topology.go +166 -0
  54. package/resource/network_topology_projection.go +208 -0
  55. package/resource/network_topology_projection_test.go +53 -0
  56. package/resource/network_topology_test.go +51 -0
  57. package/resource/network_topology_validation.go +29 -0
  58. package/resource/node_drain.go +34 -0
  59. package/resource/resource_monitoring.go +99 -0
  60. package/resource/runtime/network_topology.go +232 -0
  61. package/resource/runtime/network_topology_test.go +62 -0
  62. package/resource/runtime/node_drain.go +124 -0
  63. package/resource/runtime/node_drain_test.go +95 -0
  64. package/resource/runtime/resource_edit.go +128 -0
  65. package/resource/runtime/resource_edit_test.go +183 -0
  66. package/resource/runtime/resource_monitoring.go +243 -0
  67. package/resource/runtime/resource_monitoring_test.go +88 -0
@@ -6,8 +6,8 @@ import _ "embed"
6
6
 
7
7
  const (
8
8
  PermissionCatalogVersion = "2.0.0"
9
- PermissionCatalogContentSHA256 = "b1a07eef4c26f91735b65ec18799e530271a47d0eed1de60f9a955d11208f9a2"
10
- PermissionCatalogSHA256 = "e89a89c109f4dca0ba3a5bea754df659aa8d9bf0298344e5f0b9c5cc7520a2d2"
9
+ PermissionCatalogContentSHA256 = "2d98b53189afa67c09a2917325e3b1b1b70aafe00d370bdabaef7d6b11ef493c"
10
+ PermissionCatalogSHA256 = "ae344007ad96fa0b24a0bf74121e1db762a1b904e58b8c8b53a8ac9168abea80"
11
11
  )
12
12
 
13
13
  //go:embed permission-catalog.json
@@ -0,0 +1,48 @@
1
+ package auth
2
+
3
+ import (
4
+ "encoding/json"
5
+ "slices"
6
+ "testing"
7
+ )
8
+
9
+ func TestGatewayRouteMutationPermissionsAreExplicit(t *testing.T) {
10
+ var catalog struct {
11
+ Permissions []struct {
12
+ Key string `json:"key"`
13
+ Resource string `json:"resource"`
14
+ Action string `json:"action"`
15
+ RiskLevel string `json:"riskLevel"`
16
+ ScopeKinds []string `json:"scopeKinds"`
17
+ ApprovalPolicy string `json:"approvalPolicy"`
18
+ LegacyAliases []string `json:"legacyAliases"`
19
+ }
20
+ }
21
+ if err := json.Unmarshal(PermissionCatalogJSON(), &catalog); err != nil {
22
+ t.Fatal(err)
23
+ }
24
+ for _, resource := range []string{"http-routes", "grpc-routes", "backend-tls-policies", "reference-grants"} {
25
+ for _, action := range []string{"create", "update", "delete"} {
26
+ key := "platform.network." + resource + "." + action
27
+ var index = -1
28
+ for i, permission := range catalog.Permissions {
29
+ if permission.Key == key {
30
+ index = i
31
+ break
32
+ }
33
+ }
34
+ if index < 0 {
35
+ t.Fatalf("missing %s", key)
36
+ }
37
+ p := catalog.Permissions[index]
38
+
39
+ risk, approval := "mutate", "never"
40
+ if action == "delete" {
41
+ risk, approval = "high", "eligible"
42
+ }
43
+ if p.Resource != "network."+resource || p.Action != action || p.RiskLevel != risk || p.ApprovalPolicy != approval || !slices.Contains(p.ScopeKinds, "namespace") || len(p.LegacyAliases) != 0 {
44
+ t.Fatalf("invalid explicit mutation permission: %+v", p)
45
+ }
46
+ }
47
+ }
48
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "authorization.opensoha.io/v1",
3
3
  "catalogVersion": "2.0.0",
4
- "contentHash": "sha256:b1a07eef4c26f91735b65ec18799e530271a47d0eed1de60f9a955d11208f9a2",
4
+ "contentHash": "sha256:2d98b53189afa67c09a2917325e3b1b1b70aafe00d370bdabaef7d6b11ef493c",
5
5
  "permissions": [
6
6
  {
7
7
  "key": "access.directory.create",
@@ -8504,6 +8504,54 @@
8504
8504
  "status": "active",
8505
8505
  "assignable": true
8506
8506
  },
8507
+ {
8508
+ "key": "platform.network.backend-tls-policies.create",
8509
+ "domain": "platform",
8510
+ "resource": "network.backend-tls-policies",
8511
+ "action": "create",
8512
+ "displayName": "创建 Kubernetes BackendTLSPolicy",
8513
+ "riskLevel": "mutate",
8514
+ "scopeKinds": [
8515
+ "cluster",
8516
+ "namespace",
8517
+ "resource"
8518
+ ],
8519
+ "approvalPolicy": "never",
8520
+ "status": "active",
8521
+ "assignable": true
8522
+ },
8523
+ {
8524
+ "key": "platform.network.backend-tls-policies.delete",
8525
+ "domain": "platform",
8526
+ "resource": "network.backend-tls-policies",
8527
+ "action": "delete",
8528
+ "displayName": "删除 Kubernetes BackendTLSPolicy",
8529
+ "riskLevel": "high",
8530
+ "scopeKinds": [
8531
+ "cluster",
8532
+ "namespace",
8533
+ "resource"
8534
+ ],
8535
+ "approvalPolicy": "eligible",
8536
+ "status": "active",
8537
+ "assignable": true
8538
+ },
8539
+ {
8540
+ "key": "platform.network.backend-tls-policies.update",
8541
+ "domain": "platform",
8542
+ "resource": "network.backend-tls-policies",
8543
+ "action": "update",
8544
+ "displayName": "修改 Kubernetes BackendTLSPolicy",
8545
+ "riskLevel": "mutate",
8546
+ "scopeKinds": [
8547
+ "cluster",
8548
+ "namespace",
8549
+ "resource"
8550
+ ],
8551
+ "approvalPolicy": "never",
8552
+ "status": "active",
8553
+ "assignable": true
8554
+ },
8507
8555
  {
8508
8556
  "key": "platform.network.backend-tls-policies.view",
8509
8557
  "domain": "platform",
@@ -8755,6 +8803,54 @@
8755
8803
  "platform.network.view"
8756
8804
  ]
8757
8805
  },
8806
+ {
8807
+ "key": "platform.network.grpc-routes.create",
8808
+ "domain": "platform",
8809
+ "resource": "network.grpc-routes",
8810
+ "action": "create",
8811
+ "displayName": "创建 Kubernetes GRPCRoute",
8812
+ "riskLevel": "mutate",
8813
+ "scopeKinds": [
8814
+ "cluster",
8815
+ "namespace",
8816
+ "resource"
8817
+ ],
8818
+ "approvalPolicy": "never",
8819
+ "status": "active",
8820
+ "assignable": true
8821
+ },
8822
+ {
8823
+ "key": "platform.network.grpc-routes.delete",
8824
+ "domain": "platform",
8825
+ "resource": "network.grpc-routes",
8826
+ "action": "delete",
8827
+ "displayName": "删除 Kubernetes GRPCRoute",
8828
+ "riskLevel": "high",
8829
+ "scopeKinds": [
8830
+ "cluster",
8831
+ "namespace",
8832
+ "resource"
8833
+ ],
8834
+ "approvalPolicy": "eligible",
8835
+ "status": "active",
8836
+ "assignable": true
8837
+ },
8838
+ {
8839
+ "key": "platform.network.grpc-routes.update",
8840
+ "domain": "platform",
8841
+ "resource": "network.grpc-routes",
8842
+ "action": "update",
8843
+ "displayName": "修改 Kubernetes GRPCRoute",
8844
+ "riskLevel": "mutate",
8845
+ "scopeKinds": [
8846
+ "cluster",
8847
+ "namespace",
8848
+ "resource"
8849
+ ],
8850
+ "approvalPolicy": "never",
8851
+ "status": "active",
8852
+ "assignable": true
8853
+ },
8758
8854
  {
8759
8855
  "key": "platform.network.grpc-routes.view",
8760
8856
  "domain": "platform",
@@ -8775,6 +8871,54 @@
8775
8871
  "platform.network.view"
8776
8872
  ]
8777
8873
  },
8874
+ {
8875
+ "key": "platform.network.http-routes.create",
8876
+ "domain": "platform",
8877
+ "resource": "network.http-routes",
8878
+ "action": "create",
8879
+ "displayName": "创建 Kubernetes HTTPRoute",
8880
+ "riskLevel": "mutate",
8881
+ "scopeKinds": [
8882
+ "cluster",
8883
+ "namespace",
8884
+ "resource"
8885
+ ],
8886
+ "approvalPolicy": "never",
8887
+ "status": "active",
8888
+ "assignable": true
8889
+ },
8890
+ {
8891
+ "key": "platform.network.http-routes.delete",
8892
+ "domain": "platform",
8893
+ "resource": "network.http-routes",
8894
+ "action": "delete",
8895
+ "displayName": "删除 Kubernetes HTTPRoute",
8896
+ "riskLevel": "high",
8897
+ "scopeKinds": [
8898
+ "cluster",
8899
+ "namespace",
8900
+ "resource"
8901
+ ],
8902
+ "approvalPolicy": "eligible",
8903
+ "status": "active",
8904
+ "assignable": true
8905
+ },
8906
+ {
8907
+ "key": "platform.network.http-routes.update",
8908
+ "domain": "platform",
8909
+ "resource": "network.http-routes",
8910
+ "action": "update",
8911
+ "displayName": "修改 Kubernetes HTTPRoute",
8912
+ "riskLevel": "mutate",
8913
+ "scopeKinds": [
8914
+ "cluster",
8915
+ "namespace",
8916
+ "resource"
8917
+ ],
8918
+ "approvalPolicy": "never",
8919
+ "status": "active",
8920
+ "assignable": true
8921
+ },
8778
8922
  {
8779
8923
  "key": "platform.network.http-routes.view",
8780
8924
  "domain": "platform",
@@ -9084,6 +9228,54 @@
9084
9228
  "platform.network.view"
9085
9229
  ]
9086
9230
  },
9231
+ {
9232
+ "key": "platform.network.reference-grants.create",
9233
+ "domain": "platform",
9234
+ "resource": "network.reference-grants",
9235
+ "action": "create",
9236
+ "displayName": "创建 Kubernetes ReferenceGrant",
9237
+ "riskLevel": "mutate",
9238
+ "scopeKinds": [
9239
+ "cluster",
9240
+ "namespace",
9241
+ "resource"
9242
+ ],
9243
+ "approvalPolicy": "never",
9244
+ "status": "active",
9245
+ "assignable": true
9246
+ },
9247
+ {
9248
+ "key": "platform.network.reference-grants.delete",
9249
+ "domain": "platform",
9250
+ "resource": "network.reference-grants",
9251
+ "action": "delete",
9252
+ "displayName": "删除 Kubernetes ReferenceGrant",
9253
+ "riskLevel": "high",
9254
+ "scopeKinds": [
9255
+ "cluster",
9256
+ "namespace",
9257
+ "resource"
9258
+ ],
9259
+ "approvalPolicy": "eligible",
9260
+ "status": "active",
9261
+ "assignable": true
9262
+ },
9263
+ {
9264
+ "key": "platform.network.reference-grants.update",
9265
+ "domain": "platform",
9266
+ "resource": "network.reference-grants",
9267
+ "action": "update",
9268
+ "displayName": "修改 Kubernetes ReferenceGrant",
9269
+ "riskLevel": "mutate",
9270
+ "scopeKinds": [
9271
+ "cluster",
9272
+ "namespace",
9273
+ "resource"
9274
+ ],
9275
+ "approvalPolicy": "never",
9276
+ "status": "active",
9277
+ "assignable": true
9278
+ },
9087
9279
  {
9088
9280
  "key": "platform.network.reference-grants.view",
9089
9281
  "domain": "platform",
@@ -9358,6 +9550,22 @@
9358
9550
  "enable"
9359
9551
  ]
9360
9552
  },
9553
+ {
9554
+ "key": "platform.pods.create",
9555
+ "domain": "platform",
9556
+ "resource": "pods",
9557
+ "action": "create",
9558
+ "displayName": "创建 Kubernetes Pod",
9559
+ "riskLevel": "mutate",
9560
+ "scopeKinds": [
9561
+ "cluster",
9562
+ "namespace",
9563
+ "resource"
9564
+ ],
9565
+ "approvalPolicy": "never",
9566
+ "status": "active",
9567
+ "assignable": true
9568
+ },
9361
9569
  {
9362
9570
  "key": "platform.pods.delete",
9363
9571
  "domain": "platform",
@@ -9537,6 +9745,81 @@
9537
9745
  "status": "active",
9538
9746
  "assignable": true
9539
9747
  },
9748
+ {
9749
+ "key": "platform.resource-monitoring.conntrack.view",
9750
+ "domain": "platform",
9751
+ "resource": "resource-monitoring.conntrack",
9752
+ "action": "view",
9753
+ "displayName": "查看资源监控连接跟踪",
9754
+ "riskLevel": "read",
9755
+ "scopeKinds": [
9756
+ "workspace",
9757
+ "cluster"
9758
+ ],
9759
+ "approvalPolicy": "never",
9760
+ "status": "active",
9761
+ "assignable": true
9762
+ },
9763
+ {
9764
+ "key": "platform.resource-monitoring.cpu.view",
9765
+ "domain": "platform",
9766
+ "resource": "resource-monitoring.cpu",
9767
+ "action": "view",
9768
+ "displayName": "查看资源监控CPU",
9769
+ "riskLevel": "read",
9770
+ "scopeKinds": [
9771
+ "workspace",
9772
+ "cluster"
9773
+ ],
9774
+ "approvalPolicy": "never",
9775
+ "status": "active",
9776
+ "assignable": true
9777
+ },
9778
+ {
9779
+ "key": "platform.resource-monitoring.memory.view",
9780
+ "domain": "platform",
9781
+ "resource": "resource-monitoring.memory",
9782
+ "action": "view",
9783
+ "displayName": "查看资源监控内存",
9784
+ "riskLevel": "read",
9785
+ "scopeKinds": [
9786
+ "workspace",
9787
+ "cluster"
9788
+ ],
9789
+ "approvalPolicy": "never",
9790
+ "status": "active",
9791
+ "assignable": true
9792
+ },
9793
+ {
9794
+ "key": "platform.resource-monitoring.overview.view",
9795
+ "domain": "platform",
9796
+ "resource": "resource-monitoring.overview",
9797
+ "action": "view",
9798
+ "displayName": "查看资源监控总览",
9799
+ "riskLevel": "read",
9800
+ "scopeKinds": [
9801
+ "workspace",
9802
+ "cluster"
9803
+ ],
9804
+ "approvalPolicy": "never",
9805
+ "status": "active",
9806
+ "assignable": true
9807
+ },
9808
+ {
9809
+ "key": "platform.resource-monitoring.pods.view",
9810
+ "domain": "platform",
9811
+ "resource": "resource-monitoring.pods",
9812
+ "action": "view",
9813
+ "displayName": "查看资源监控Pod 容量",
9814
+ "riskLevel": "read",
9815
+ "scopeKinds": [
9816
+ "workspace",
9817
+ "cluster"
9818
+ ],
9819
+ "approvalPolicy": "never",
9820
+ "status": "active",
9821
+ "assignable": true
9822
+ },
9540
9823
  {
9541
9824
  "key": "platform.storage.persistent-volume-claims.create",
9542
9825
  "domain": "platform",
@@ -10183,6 +10466,22 @@
10183
10466
  "create"
10184
10467
  ]
10185
10468
  },
10469
+ {
10470
+ "key": "platform.workloads.replication-controllers.delete",
10471
+ "domain": "platform",
10472
+ "resource": "workloads.replication-controllers",
10473
+ "action": "delete",
10474
+ "displayName": "删除 Kubernetes ReplicationController",
10475
+ "riskLevel": "high",
10476
+ "scopeKinds": [
10477
+ "cluster",
10478
+ "namespace",
10479
+ "resource"
10480
+ ],
10481
+ "approvalPolicy": "eligible",
10482
+ "status": "active",
10483
+ "assignable": true
10484
+ },
10186
10485
  {
10187
10486
  "key": "platform.workloads.replication-controllers.update",
10188
10487
  "domain": "platform",
@@ -1,5 +1,5 @@
1
1
  {
2
- "soha": "c29cc6294dd4b7cb69db1187d728c227475fdf7c",
2
+ "soha": "57bfa94873ff2825bccc6312842859011c1ec23a",
3
3
  "soha-web": "447cbe5358802ef40d86ac67b7b59c5afe9c846a",
4
4
  "soha-app": "0c3c76c373246f7d2218b48f68b89bf3097f777b",
5
5
  "soha-cli": "1c9b760c986a9c1a5148db55b72ab99d23edd7a3",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.24",
2
+ "version": "0.1.25",
3
3
  "schemas": {
4
4
  "plugins/plugin-manifest.schema.json": {
5
5
  "rootRequired": ["id", "name", "publisher", "type", "version"],
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.24",
2
+ "version": "0.1.25",
3
3
  "generatedFrom": "openapi/soha-api.yaml",
4
4
  "entries": [
5
5
  {
@@ -0,0 +1,6 @@
1
+ {
2
+ "action": "platform.nodes.drain",
3
+ "implementation": "supported",
4
+ "configured": "maybe",
5
+ "kubernetesRBAC": "allowed"
6
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "action": "platform.nodes.drain",
3
+ "implementation": "supported",
4
+ "configured": "denied",
5
+ "kubernetesRBAC": "unknown",
6
+ "scope": "cluster",
7
+ "checkedAt": "2026-10-19T01:30:00Z",
8
+ "reasonCode": "self_subject_access_review"
9
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "agentActionProfile": "all"
3
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "agent",
3
+ "connectionMode": "agent",
4
+ "agentActionProfile": "read-only"
5
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "name": "worker-a",
5
+ "status": "ready",
6
+ "unschedulable": true,
7
+ "podCount": 2,
8
+ "ageSeconds": 3600,
9
+ "conditions": [
10
+ {
11
+ "type": "Ready",
12
+ "status": true
13
+ }
14
+ ]
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "name": "worker-a",
5
+ "status": "ready",
6
+ "unschedulable": true,
7
+ "podCount": 2,
8
+ "ageSeconds": 3600,
9
+ "taints": [
10
+ {
11
+ "key": "maintenance"
12
+ }
13
+ ]
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "name": "worker-a",
5
+ "status": "ready",
6
+ "unschedulable": true,
7
+ "podCount": 2,
8
+ "ageSeconds": 3600
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "name": "worker-a",
5
+ "status": "ready",
6
+ "unschedulable": false,
7
+ "podCount": 2,
8
+ "ageSeconds": 3600,
9
+ "taints": [],
10
+ "conditions": []
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "name": "worker-a",
5
+ "status": "ready",
6
+ "unschedulable": true,
7
+ "podCount": 2,
8
+ "ageSeconds": 3600,
9
+ "taints": [
10
+ {
11
+ "key": "maintenance",
12
+ "value": "task113",
13
+ "effect": "NoSchedule"
14
+ }
15
+ ],
16
+ "conditions": [
17
+ {
18
+ "type": "Ready",
19
+ "status": "True"
20
+ },
21
+ {
22
+ "type": "DiskPressure",
23
+ "status": "True"
24
+ }
25
+ ]
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "name": "worker-a",
5
+ "status": "ready",
6
+ "unschedulable": true,
7
+ "podCount": 2,
8
+ "ageSeconds": 3600,
9
+ "taints": null,
10
+ "conditions": null
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "provider": "apisix",
3
+ "sourceId": "apisix.apisixroutes",
4
+ "state": "empty"
5
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "provider": "apisix",
3
+ "sourceId": "apisix.apisixroutes",
4
+ "state": "not_installed",
5
+ "reasonCode": "api_not_served"
6
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "id": "edge-1",
3
+ "source": "a",
4
+ "target": "b",
5
+ "relation": "weights",
6
+ "resolutionState": "resolved",
7
+ "weight": -1
8
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "edge-1",
3
+ "source": "rule:route-uid:0",
4
+ "target": "service-1",
5
+ "relation": "weights",
6
+ "resolutionState": "resolved",
7
+ "port": "http",
8
+ "weight": 0,
9
+ "totalWeight": 100,
10
+ "sourceRef": {
11
+ "clusterId": "cluster-a",
12
+ "apiVersion": "traefik.io/v1alpha1",
13
+ "kind": "IngressRoute",
14
+ "name": "api",
15
+ "namespace": "team-a",
16
+ "scopeMode": "namespace",
17
+ "uid": "route-uid",
18
+ "resourceVersion": "7"
19
+ }
20
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "id": "rule:route-uid:0",
3
+ "type": "live-traffic",
4
+ "label": "api /",
5
+ "provider": "traefik",
6
+ "protocol": "HTTP",
7
+ "resolutionState": "resolved",
8
+ "resource": {
9
+ "clusterId": "cluster-a",
10
+ "apiVersion": "traefik.io/v1alpha1",
11
+ "kind": "IngressRoute",
12
+ "name": "api",
13
+ "namespace": "team-a",
14
+ "scopeMode": "namespace",
15
+ "uid": "route-uid",
16
+ "resourceVersion": "7"
17
+ },
18
+ "rule": {
19
+ "index": 0,
20
+ "matchGroups": [
21
+ [
22
+ {
23
+ "type": "host",
24
+ "operator": "exact",
25
+ "value": "api.example.test"
26
+ },
27
+ {
28
+ "type": "path",
29
+ "operator": "prefix",
30
+ "value": "/"
31
+ }
32
+ ]
33
+ ],
34
+ "tlsMode": "terminate"
35
+ },
36
+ "properties": [
37
+ {
38
+ "name": "source",
39
+ "value": "configuration"
40
+ }
41
+ ]
42
+ }