@opensoha/contracts 0.1.14 → 0.1.15
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/auth/catalog_generated.go +2 -2
- package/auth/permission-catalog.json +105 -1
- package/compat/json-schema-ecosystem-0.1.0.json +1 -1
- package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
- package/fixtures/openapi/AISkillsSettingsEnvelope/invalid/missing-registry.json +3 -0
- package/fixtures/openapi/AISkillsSettingsEnvelope/valid/registry.json +13 -0
- package/fixtures/openapi/AlertEventStreamSignal/invalid/missing-observed-at.json +4 -0
- package/fixtures/openapi/AlertEventStreamSignal/valid/changed.json +9 -0
- package/fixtures/openapi/ComputeOverviewEnvelope/valid/partial.json +6 -0
- package/fixtures/openapi/ComputeTaskListEnvelope/invalid/progress-overflow.json +21 -0
- package/fixtures/openapi/ComputeTaskListEnvelope/valid/running.json +15 -0
- package/fixtures/openapi/ComputeTaskStreamEvent/invalid/missing-observed-at.json +3 -0
- package/fixtures/openapi/ComputeTaskStreamEvent/valid/snapshot.json +27 -0
- package/fixtures/openapi/KubernetesResourceGraphEnvelope/invalid/edge-without-target.json +16 -0
- package/fixtures/openapi/KubernetesResourceGraphEnvelope/valid/deployment.json +53 -0
- package/fixtures/openapi/KubernetesResourceSearchEnvelope/invalid/missing-resource.json +10 -0
- package/fixtures/openapi/KubernetesResourceSearchEnvelope/valid/mixed.json +29 -0
- package/fixtures/openapi/KubernetesResourceStreamEvent/invalid/missing-observed-at.json +5 -0
- package/fixtures/openapi/KubernetesResourceStreamEvent/valid/modified.json +18 -0
- package/fixtures/openapi/KubernetesSecurityPostureEnvelope/invalid/finding-without-severity.json +24 -0
- package/fixtures/openapi/KubernetesSecurityPostureEnvelope/valid/kubescape.json +34 -0
- package/fixtures/openapi/KubernetesService/invalid/node-port-out-of-range.json +14 -0
- package/fixtures/openapi/KubernetesService/valid/port-mappings.json +22 -0
- package/fixtures/openapi/KubernetesServiceDetail/invalid/empty-target-port.json +13 -0
- package/fixtures/openapi/KubernetesServiceDetail/valid/port-mappings.json +22 -0
- package/fixtures/openapi/OperationalPlanEnvelope/invalid/kubernetes-owner-without-manager.json +29 -0
- package/fixtures/openapi/OperationalPlanEnvelope/valid/kubernetes-resource-update.json +30 -0
- package/fixtures/openapi/WorkbenchAgentRunListEnvelope/invalid/callback-token.json +17 -0
- package/fixtures/openapi/WorkbenchAgentRunListEnvelope/valid/session-scoped.json +17 -0
- package/fixtures/openapi/WorkbenchSessionEnvelope/invalid/missing-owner.json +8 -0
- package/fixtures/openapi/WorkbenchSessionEnvelope/valid/current.json +17 -0
- package/gen/go/sohaapi/client.go +1 -1
- package/gen/go/sohaapi/types.go +1716 -59
- package/gen/go/sohaapi/types_test.go +40 -0
- package/gen/ts/sohaapi/index.ts +12848 -9909
- package/openapi/soha-api.json +11328 -5927
- package/openapi/soha-api.yaml +11106 -8649
- package/openapi/spec_generated.go +3 -3
- package/package.json +1 -1
- package/resource/models.go +197 -0
|
@@ -6,8 +6,8 @@ import _ "embed"
|
|
|
6
6
|
|
|
7
7
|
const (
|
|
8
8
|
PermissionCatalogVersion = "2.0.0"
|
|
9
|
-
PermissionCatalogContentSHA256 = "
|
|
10
|
-
PermissionCatalogSHA256 = "
|
|
9
|
+
PermissionCatalogContentSHA256 = "58321138575c22b20933cf2c1db2742b741a123bb8f6a2983bb436e84be4e58a"
|
|
10
|
+
PermissionCatalogSHA256 = "38ac1a2e7087ff4831e8f6390b804e32f918b49b9af3165fdf2df286d64fe3c8"
|
|
11
11
|
)
|
|
12
12
|
|
|
13
13
|
//go:embed permission-catalog.json
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "authorization.opensoha.io/v1",
|
|
3
3
|
"catalogVersion": "2.0.0",
|
|
4
|
-
"contentHash": "sha256:
|
|
4
|
+
"contentHash": "sha256:58321138575c22b20933cf2c1db2742b741a123bb8f6a2983bb436e84be4e58a",
|
|
5
5
|
"permissions": [
|
|
6
6
|
{
|
|
7
7
|
"key": "access.directory.create",
|
|
@@ -943,6 +943,70 @@
|
|
|
943
943
|
"status": "active",
|
|
944
944
|
"assignable": true
|
|
945
945
|
},
|
|
946
|
+
{
|
|
947
|
+
"key": "ai.data-sources.create",
|
|
948
|
+
"domain": "ai",
|
|
949
|
+
"resource": "data-sources",
|
|
950
|
+
"action": "create",
|
|
951
|
+
"displayName": "创建 AI 数据源",
|
|
952
|
+
"riskLevel": "mutate",
|
|
953
|
+
"scopeKinds": [
|
|
954
|
+
"tenant",
|
|
955
|
+
"workspace",
|
|
956
|
+
"resource"
|
|
957
|
+
],
|
|
958
|
+
"approvalPolicy": "never",
|
|
959
|
+
"status": "active",
|
|
960
|
+
"assignable": true
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
"key": "ai.data-sources.update",
|
|
964
|
+
"domain": "ai",
|
|
965
|
+
"resource": "data-sources",
|
|
966
|
+
"action": "update",
|
|
967
|
+
"displayName": "修改 AI 数据源",
|
|
968
|
+
"riskLevel": "mutate",
|
|
969
|
+
"scopeKinds": [
|
|
970
|
+
"tenant",
|
|
971
|
+
"workspace",
|
|
972
|
+
"resource"
|
|
973
|
+
],
|
|
974
|
+
"approvalPolicy": "never",
|
|
975
|
+
"status": "active",
|
|
976
|
+
"assignable": true
|
|
977
|
+
},
|
|
978
|
+
{
|
|
979
|
+
"key": "ai.data-sources.validate",
|
|
980
|
+
"domain": "ai",
|
|
981
|
+
"resource": "data-sources",
|
|
982
|
+
"action": "validate",
|
|
983
|
+
"displayName": "校验 AI 数据源",
|
|
984
|
+
"riskLevel": "mutate",
|
|
985
|
+
"scopeKinds": [
|
|
986
|
+
"tenant",
|
|
987
|
+
"workspace",
|
|
988
|
+
"resource"
|
|
989
|
+
],
|
|
990
|
+
"approvalPolicy": "never",
|
|
991
|
+
"status": "active",
|
|
992
|
+
"assignable": true
|
|
993
|
+
},
|
|
994
|
+
{
|
|
995
|
+
"key": "ai.data-sources.view",
|
|
996
|
+
"domain": "ai",
|
|
997
|
+
"resource": "data-sources",
|
|
998
|
+
"action": "view",
|
|
999
|
+
"displayName": "查看 AI 数据源",
|
|
1000
|
+
"riskLevel": "read",
|
|
1001
|
+
"scopeKinds": [
|
|
1002
|
+
"tenant",
|
|
1003
|
+
"workspace",
|
|
1004
|
+
"resource"
|
|
1005
|
+
],
|
|
1006
|
+
"approvalPolicy": "never",
|
|
1007
|
+
"status": "active",
|
|
1008
|
+
"assignable": true
|
|
1009
|
+
},
|
|
946
1010
|
{
|
|
947
1011
|
"key": "ai.environments.create",
|
|
948
1012
|
"domain": "ai",
|
|
@@ -5456,6 +5520,26 @@
|
|
|
5456
5520
|
"status": "active",
|
|
5457
5521
|
"assignable": true
|
|
5458
5522
|
},
|
|
5523
|
+
{
|
|
5524
|
+
"key": "platform.access-control.access-reviews.execute",
|
|
5525
|
+
"domain": "platform",
|
|
5526
|
+
"resource": "access-control.access-reviews",
|
|
5527
|
+
"action": "execute",
|
|
5528
|
+
"displayName": "执行 Kubernetes 有效权限检查",
|
|
5529
|
+
"riskLevel": "read",
|
|
5530
|
+
"scopeKinds": [
|
|
5531
|
+
"workspace",
|
|
5532
|
+
"cluster",
|
|
5533
|
+
"namespace",
|
|
5534
|
+
"resource"
|
|
5535
|
+
],
|
|
5536
|
+
"approvalPolicy": "never",
|
|
5537
|
+
"status": "active",
|
|
5538
|
+
"assignable": true,
|
|
5539
|
+
"legacyAliases": [
|
|
5540
|
+
"platform.access-control.view"
|
|
5541
|
+
]
|
|
5542
|
+
},
|
|
5459
5543
|
{
|
|
5460
5544
|
"key": "platform.access-control.cluster-role-bindings.create",
|
|
5461
5545
|
"domain": "platform",
|
|
@@ -5897,6 +5981,7 @@
|
|
|
5897
5981
|
"status": "legacy",
|
|
5898
5982
|
"assignable": false,
|
|
5899
5983
|
"replacedBy": [
|
|
5984
|
+
"platform.access-control.access-reviews.execute",
|
|
5900
5985
|
"platform.access-control.cluster-role-bindings.view",
|
|
5901
5986
|
"platform.access-control.cluster-roles.view",
|
|
5902
5987
|
"platform.access-control.role-bindings.view",
|
|
@@ -7266,6 +7351,25 @@
|
|
|
7266
7351
|
"delete"
|
|
7267
7352
|
]
|
|
7268
7353
|
},
|
|
7354
|
+
{
|
|
7355
|
+
"key": "platform.helm.releases.rollback",
|
|
7356
|
+
"domain": "platform",
|
|
7357
|
+
"resource": "helm.releases",
|
|
7358
|
+
"action": "rollback",
|
|
7359
|
+
"displayName": "回滚 Kubernetes HelmRelease",
|
|
7360
|
+
"riskLevel": "high",
|
|
7361
|
+
"scopeKinds": [
|
|
7362
|
+
"cluster",
|
|
7363
|
+
"namespace",
|
|
7364
|
+
"resource"
|
|
7365
|
+
],
|
|
7366
|
+
"approvalPolicy": "eligible",
|
|
7367
|
+
"status": "active",
|
|
7368
|
+
"assignable": true,
|
|
7369
|
+
"legacyCapabilities": [
|
|
7370
|
+
"rollback"
|
|
7371
|
+
]
|
|
7372
|
+
},
|
|
7269
7373
|
{
|
|
7270
7374
|
"key": "platform.helm.releases.update",
|
|
7271
7375
|
"domain": "platform",
|
|
@@ -27,6 +27,12 @@
|
|
|
27
27
|
"checkedAt": "2026-07-14T02:00:00Z"
|
|
28
28
|
}
|
|
29
29
|
],
|
|
30
|
+
"generatedAt": "2026-07-14T02:00:01Z",
|
|
31
|
+
"freshness": {
|
|
32
|
+
"status": "fresh",
|
|
33
|
+
"observedAt": "2026-07-14T02:00:00Z",
|
|
34
|
+
"maxAgeSeconds": 120
|
|
35
|
+
},
|
|
30
36
|
"partial": true,
|
|
31
37
|
"warnings": [{ "code": "runtime_section_unavailable" }]
|
|
32
38
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"items": [
|
|
3
|
+
{
|
|
4
|
+
"id": "virtualization:task-1",
|
|
5
|
+
"domain": "virtualization",
|
|
6
|
+
"sourceType": "virtualization_task",
|
|
7
|
+
"sourceId": "task-1",
|
|
8
|
+
"kind": "vm.create",
|
|
9
|
+
"category": "lifecycle",
|
|
10
|
+
"normalizedStatus": "running",
|
|
11
|
+
"rawStatus": "running",
|
|
12
|
+
"resources": [],
|
|
13
|
+
"attemptCount": 1,
|
|
14
|
+
"cancelable": true,
|
|
15
|
+
"retryable": false,
|
|
16
|
+
"availableActions": ["cancel"],
|
|
17
|
+
"progress": 1.5,
|
|
18
|
+
"createdAt": "2026-07-14T02:00:00Z"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -23,6 +23,21 @@
|
|
|
23
23
|
"cancelable": true,
|
|
24
24
|
"retryable": false,
|
|
25
25
|
"availableActions": ["logs", "cancel"],
|
|
26
|
+
"progress": 0.65,
|
|
27
|
+
"heartbeat": {
|
|
28
|
+
"status": "fresh",
|
|
29
|
+
"observedAt": "2026-07-14T02:00:08Z",
|
|
30
|
+
"timeoutSeconds": 30
|
|
31
|
+
},
|
|
32
|
+
"result": {
|
|
33
|
+
"status": "accepted",
|
|
34
|
+
"summary": "Provider accepted the VM create request."
|
|
35
|
+
},
|
|
36
|
+
"verification": {
|
|
37
|
+
"status": "pending",
|
|
38
|
+
"summary": "Waiting for the VM to become observable."
|
|
39
|
+
},
|
|
40
|
+
"auditRef": "audit-virtualization-task-1",
|
|
26
41
|
"createdAt": "2026-07-14T02:00:00Z",
|
|
27
42
|
"startedAt": "2026-07-14T02:00:01Z"
|
|
28
43
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "snapshot",
|
|
3
|
+
"observedAt": "2026-07-14T02:00:08Z",
|
|
4
|
+
"sequence": 1,
|
|
5
|
+
"task": {
|
|
6
|
+
"id": "virtualization:task-1",
|
|
7
|
+
"domain": "virtualization",
|
|
8
|
+
"sourceType": "virtualization_task",
|
|
9
|
+
"sourceId": "task-1",
|
|
10
|
+
"kind": "vm.create",
|
|
11
|
+
"category": "lifecycle",
|
|
12
|
+
"normalizedStatus": "running",
|
|
13
|
+
"rawStatus": "running",
|
|
14
|
+
"resources": [],
|
|
15
|
+
"attemptCount": 1,
|
|
16
|
+
"cancelable": true,
|
|
17
|
+
"retryable": false,
|
|
18
|
+
"availableActions": ["logs", "cancel"],
|
|
19
|
+
"progress": 0.65,
|
|
20
|
+
"heartbeat": {
|
|
21
|
+
"status": "fresh",
|
|
22
|
+
"observedAt": "2026-07-14T02:00:08Z",
|
|
23
|
+
"timeoutSeconds": 30
|
|
24
|
+
},
|
|
25
|
+
"createdAt": "2026-07-14T02:00:00Z"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"clusterId": "cluster-a",
|
|
4
|
+
"namespace": "team-a",
|
|
5
|
+
"generatedAt": "2026-08-23T08:00:00Z",
|
|
6
|
+
"rootId": "apps/v1:Deployment:team-a/api",
|
|
7
|
+
"nodes": [
|
|
8
|
+
{
|
|
9
|
+
"id": "apps/v1:Deployment:team-a/api",
|
|
10
|
+
"resource": {
|
|
11
|
+
"clusterId": "cluster-a",
|
|
12
|
+
"apiVersion": "apps/v1",
|
|
13
|
+
"kind": "Deployment",
|
|
14
|
+
"name": "api",
|
|
15
|
+
"namespace": "team-a",
|
|
16
|
+
"scopeMode": "namespace"
|
|
17
|
+
},
|
|
18
|
+
"status": "healthy"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "v1:Pod:team-a/api-1",
|
|
22
|
+
"resource": {
|
|
23
|
+
"clusterId": "cluster-a",
|
|
24
|
+
"apiVersion": "v1",
|
|
25
|
+
"kind": "Pod",
|
|
26
|
+
"name": "api-1",
|
|
27
|
+
"namespace": "team-a",
|
|
28
|
+
"scopeMode": "namespace"
|
|
29
|
+
},
|
|
30
|
+
"status": "Running"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"edges": [
|
|
34
|
+
{
|
|
35
|
+
"id": "owns:deployment-api:pod-api-1",
|
|
36
|
+
"sourceId": "apps/v1:Deployment:team-a/api",
|
|
37
|
+
"targetId": "v1:Pod:team-a/api-1",
|
|
38
|
+
"relation": "owns"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"evidence": [
|
|
42
|
+
{
|
|
43
|
+
"id": "event/team-a/api-1-scheduled",
|
|
44
|
+
"type": "kubernetes-event",
|
|
45
|
+
"severity": "info",
|
|
46
|
+
"summary": "Pod scheduled",
|
|
47
|
+
"observedAt": "2026-08-23T07:59:58Z",
|
|
48
|
+
"resourceId": "v1:Pod:team-a/api-1"
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"warnings": []
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"items": [
|
|
4
|
+
{
|
|
5
|
+
"resource": {
|
|
6
|
+
"clusterId": "cluster-a",
|
|
7
|
+
"apiVersion": "v1",
|
|
8
|
+
"kind": "Pod",
|
|
9
|
+
"name": "api-7c8d9f",
|
|
10
|
+
"namespace": "production",
|
|
11
|
+
"scopeMode": "namespace",
|
|
12
|
+
"uid": "pod-uid"
|
|
13
|
+
},
|
|
14
|
+
"status": "Running"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"resource": {
|
|
18
|
+
"clusterId": "cluster-a",
|
|
19
|
+
"apiVersion": "v1",
|
|
20
|
+
"kind": "Node",
|
|
21
|
+
"name": "worker-1",
|
|
22
|
+
"scopeMode": "cluster"
|
|
23
|
+
},
|
|
24
|
+
"status": "Ready"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"truncated": false
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "modified",
|
|
3
|
+
"clusterId": "cluster-a",
|
|
4
|
+
"observedAt": "2026-08-23T08:00:00Z",
|
|
5
|
+
"source": "informer",
|
|
6
|
+
"resourceVersion": "42",
|
|
7
|
+
"cacheStatus": "live",
|
|
8
|
+
"resyncRequired": false,
|
|
9
|
+
"resource": {
|
|
10
|
+
"clusterId": "cluster-a",
|
|
11
|
+
"apiVersion": "v1",
|
|
12
|
+
"kind": "Pod",
|
|
13
|
+
"name": "api-1",
|
|
14
|
+
"namespace": "team-a",
|
|
15
|
+
"scopeMode": "namespace",
|
|
16
|
+
"uid": "pod-uid"
|
|
17
|
+
}
|
|
18
|
+
}
|
package/fixtures/openapi/KubernetesSecurityPostureEnvelope/invalid/finding-without-severity.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"clusterId": "cluster-a",
|
|
4
|
+
"provider": "kubescape",
|
|
5
|
+
"status": "available",
|
|
6
|
+
"generatedAt": "2026-08-23T08:00:00Z",
|
|
7
|
+
"counts": {
|
|
8
|
+
"critical": 0,
|
|
9
|
+
"high": 1,
|
|
10
|
+
"medium": 0,
|
|
11
|
+
"low": 0,
|
|
12
|
+
"unknown": 0
|
|
13
|
+
},
|
|
14
|
+
"findings": [
|
|
15
|
+
{
|
|
16
|
+
"id": "broken",
|
|
17
|
+
"category": "configuration",
|
|
18
|
+
"title": "Missing severity",
|
|
19
|
+
"status": "failed"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"warnings": []
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"clusterId": "cluster-a",
|
|
4
|
+
"provider": "kubescape",
|
|
5
|
+
"status": "available",
|
|
6
|
+
"generatedAt": "2026-08-23T08:00:00Z",
|
|
7
|
+
"counts": {
|
|
8
|
+
"critical": 1,
|
|
9
|
+
"high": 2,
|
|
10
|
+
"medium": 3,
|
|
11
|
+
"low": 4,
|
|
12
|
+
"unknown": 0
|
|
13
|
+
},
|
|
14
|
+
"findings": [
|
|
15
|
+
{
|
|
16
|
+
"id": "configuration:C-001:team-a:Deployment:api",
|
|
17
|
+
"category": "configuration",
|
|
18
|
+
"severity": "high",
|
|
19
|
+
"title": "Privileged container",
|
|
20
|
+
"status": "failed",
|
|
21
|
+
"controlId": "C-001",
|
|
22
|
+
"resource": {
|
|
23
|
+
"clusterId": "cluster-a",
|
|
24
|
+
"apiVersion": "apps/v1",
|
|
25
|
+
"kind": "Deployment",
|
|
26
|
+
"name": "api",
|
|
27
|
+
"namespace": "team-a",
|
|
28
|
+
"scopeMode": "namespace"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"warnings": []
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "web",
|
|
3
|
+
"namespace": "default",
|
|
4
|
+
"type": "NodePort",
|
|
5
|
+
"ageSeconds": 0,
|
|
6
|
+
"ports": ["http:80/tcp (nodePort:30001)"],
|
|
7
|
+
"portMappings": [
|
|
8
|
+
{
|
|
9
|
+
"name": "http",
|
|
10
|
+
"protocol": "TCP",
|
|
11
|
+
"targetPort": "8080",
|
|
12
|
+
"port": 80,
|
|
13
|
+
"nodePort": 30001
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "metrics",
|
|
17
|
+
"protocol": "TCP",
|
|
18
|
+
"targetPort": "metrics",
|
|
19
|
+
"port": 9090
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "web",
|
|
3
|
+
"namespace": "default",
|
|
4
|
+
"type": "ClusterIP",
|
|
5
|
+
"clusterIp": "10.43.0.10",
|
|
6
|
+
"ageSeconds": 60,
|
|
7
|
+
"ports": ["http:80/tcp"],
|
|
8
|
+
"portMappings": [
|
|
9
|
+
{
|
|
10
|
+
"name": "http",
|
|
11
|
+
"protocol": "TCP",
|
|
12
|
+
"targetPort": "http",
|
|
13
|
+
"port": 80
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"endpoints": [
|
|
17
|
+
{
|
|
18
|
+
"address": "10.42.0.10",
|
|
19
|
+
"ready": true
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
package/fixtures/openapi/OperationalPlanEnvelope/invalid/kubernetes-owner-without-manager.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"capability": "k8s.resources.update",
|
|
4
|
+
"target": "cluster-a/team-a/Deployment/api",
|
|
5
|
+
"ready": false,
|
|
6
|
+
"riskLevel": "mutate",
|
|
7
|
+
"requiresApproval": false,
|
|
8
|
+
"changes": [
|
|
9
|
+
{
|
|
10
|
+
"action": "apply",
|
|
11
|
+
"resource": "Deployment/api",
|
|
12
|
+
"summary": "apply the reviewed manifest"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"warnings": [],
|
|
16
|
+
"kubernetesResourceUpdate": {
|
|
17
|
+
"fieldManager": "opensoha-resource-edit/v1",
|
|
18
|
+
"changedFields": ["/spec/replicas"],
|
|
19
|
+
"owners": [
|
|
20
|
+
{
|
|
21
|
+
"operation": "Apply",
|
|
22
|
+
"apiVersion": "apps/v1",
|
|
23
|
+
"fields": ["/spec/template"]
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"conflicts": []
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"capability": "k8s.resources.update",
|
|
4
|
+
"target": "cluster-a/team-a/Deployment/api",
|
|
5
|
+
"ready": true,
|
|
6
|
+
"riskLevel": "mutate",
|
|
7
|
+
"requiresApproval": false,
|
|
8
|
+
"changes": [
|
|
9
|
+
{
|
|
10
|
+
"action": "apply",
|
|
11
|
+
"resource": "Deployment/api",
|
|
12
|
+
"summary": "apply the reviewed manifest"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"warnings": [],
|
|
16
|
+
"kubernetesResourceUpdate": {
|
|
17
|
+
"fieldManager": "opensoha-resource-edit/v1",
|
|
18
|
+
"changedFields": ["/spec/replicas"],
|
|
19
|
+
"owners": [
|
|
20
|
+
{
|
|
21
|
+
"manager": "helm",
|
|
22
|
+
"operation": "Apply",
|
|
23
|
+
"apiVersion": "apps/v1",
|
|
24
|
+
"fields": ["/spec/template"]
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"conflicts": []
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"items": [
|
|
3
|
+
{
|
|
4
|
+
"id": "run-1",
|
|
5
|
+
"providerId": "external-agent",
|
|
6
|
+
"providerKind": "general",
|
|
7
|
+
"capabilityId": "root-cause-analysis",
|
|
8
|
+
"createdBy": "user-1",
|
|
9
|
+
"status": "running",
|
|
10
|
+
"callbackToken": "must-not-cross-the-user-api-boundary",
|
|
11
|
+
"timeoutSeconds": 600,
|
|
12
|
+
"queuedAt": "2026-08-19T08:00:00Z",
|
|
13
|
+
"createdAt": "2026-08-19T08:00:00Z",
|
|
14
|
+
"updatedAt": "2026-08-19T08:01:00Z"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"items": [
|
|
3
|
+
{
|
|
4
|
+
"id": "run-1",
|
|
5
|
+
"providerId": "external-agent",
|
|
6
|
+
"providerKind": "general",
|
|
7
|
+
"capabilityId": "root-cause-analysis",
|
|
8
|
+
"sessionId": "session-1",
|
|
9
|
+
"createdBy": "user-1",
|
|
10
|
+
"status": "running",
|
|
11
|
+
"timeoutSeconds": 600,
|
|
12
|
+
"queuedAt": "2026-08-19T08:00:00Z",
|
|
13
|
+
"createdAt": "2026-08-19T08:00:00Z",
|
|
14
|
+
"updatedAt": "2026-08-19T08:01:00Z"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|