@opensoha/contracts 0.1.24 → 0.1.26

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 (137) hide show
  1. package/COMPATIBILITY.md +24 -0
  2. package/README.md +1 -1
  3. package/agent/environment/export.go +1 -0
  4. package/agent/environment/protocol_test.go +1 -1
  5. package/agent/guest/protocol_test.go +2 -2
  6. package/auth/catalog_generated.go +2 -2
  7. package/auth/gateway_permissions_test.go +48 -0
  8. package/auth/permission-catalog.json +300 -1
  9. package/compat/consumer-revisions.json +1 -1
  10. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  11. package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
  12. package/delivery/document.schema.json +127 -9
  13. package/examples/relations_compat_test.go +18 -0
  14. package/fixtures/openapi/DeliveryDocument/invalid/migration-missing-guide-build-template.json +30 -0
  15. package/fixtures/openapi/DeliveryDocument/invalid/migration-missing-guide-deployment-template.json +30 -0
  16. package/fixtures/openapi/DeliveryDocument/invalid/migration-missing-guide-workflow-template.json +27 -0
  17. package/fixtures/openapi/DeliveryDocument/valid/migration-build-template.json +31 -0
  18. package/fixtures/openapi/DeliveryDocument/valid/migration-deployment-template.json +31 -0
  19. package/fixtures/openapi/DeliveryDocument/valid/migration-workflow-template.json +28 -0
  20. package/fixtures/openapi/DeliveryPlanInput/invalid/manual-plan.json +7 -0
  21. package/fixtures/openapi/DeliveryPlanInput/valid/manual-plan.json +6 -0
  22. package/fixtures/openapi/DeliveryTargetInput/invalid/candidate-on-runtime-deploy.json +9 -0
  23. package/fixtures/openapi/DeliveryTargetInput/invalid/config-update-missing-service.json +7 -0
  24. package/fixtures/openapi/DeliveryTargetInput/valid/template-configuration-only.json +8 -0
  25. package/fixtures/openapi/DeliveryTargetInput/valid/template-configuration-without-runtime-environment.json +1 -0
  26. package/fixtures/openapi/KubernetesAgentActionCheck/invalid/unproven-state.json +6 -0
  27. package/fixtures/openapi/KubernetesAgentActionCheck/valid/configured-denied.json +9 -0
  28. package/fixtures/openapi/KubernetesAgentActionProfile/invalid/wildcard.json +1 -0
  29. package/fixtures/openapi/KubernetesAgentActionProfile/valid/workbench.json +1 -0
  30. package/fixtures/openapi/KubernetesClusterRegistrationRequest/invalid/action-profile.json +3 -0
  31. package/fixtures/openapi/KubernetesClusterRegistrationRequest/valid/action-profile.json +5 -0
  32. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/invalid/source-with-spec.json +33 -0
  33. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/invalid/source-without-uid.json +29 -0
  34. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/valid/stable-source.json +30 -0
  35. package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/condition-status-boolean.json +17 -0
  36. package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/taint-effect-missing.json +16 -0
  37. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/legacy-fields-absent.json +11 -0
  38. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/no-taints.json +13 -0
  39. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/ready-cordoned-tainted.json +28 -0
  40. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/unknown-fields-null.json +13 -0
  41. package/fixtures/openapi/KubernetesPod/invalid/pod-uid.json +9 -0
  42. package/fixtures/openapi/KubernetesPod/valid/pod-uid.json +9 -0
  43. package/fixtures/openapi/KubernetesPodDetail/invalid/pod-uid.json +6 -0
  44. package/fixtures/openapi/KubernetesPodDetail/valid/pod-uid.json +6 -0
  45. package/fixtures/openapi/KubernetesServiceImportRequest/invalid/empty-source-uid.json +48 -0
  46. package/fixtures/openapi/KubernetesServiceImportRequest/valid/pinned-workloads-and-cr.json +48 -0
  47. package/fixtures/openapi/KubernetesTopologyCoverage/invalid/empty-as-success.json +5 -0
  48. package/fixtures/openapi/KubernetesTopologyCoverage/valid/not-installed.json +6 -0
  49. package/fixtures/openapi/KubernetesTopologyGraphEdge/invalid/negative-weight.json +8 -0
  50. package/fixtures/openapi/KubernetesTopologyGraphEdge/valid/zero-weight.json +20 -0
  51. package/fixtures/openapi/KubernetesTopologyGraphNode/invalid/fake-flow-kind.json +42 -0
  52. package/fixtures/openapi/KubernetesTopologyGraphNode/valid/rule.json +42 -0
  53. package/fixtures/openapi/KubernetesTopologySnapshot/invalid/raw-source-field.json +33 -0
  54. package/fixtures/openapi/KubernetesTopologySnapshot/valid/projected-source.json +32 -0
  55. package/fixtures/openapi/KubernetesTopologySnapshotRequest/invalid/arbitrary-gvr.json +8 -0
  56. package/fixtures/openapi/KubernetesTopologySnapshotRequest/valid/bounded-sources.json +11 -0
  57. package/fixtures/openapi/KubernetesTopologySourceQuery/invalid/cluster-namespace.json +4 -0
  58. package/fixtures/openapi/KubernetesTopologySourceQuery/valid/all-namespaces.json +4 -0
  59. package/fixtures/openapi/ManifestExecutionTaskPayload/invalid/initialization.json +7 -0
  60. package/fixtures/openapi/ManifestExecutionTaskPayload/valid/initialization.json +7 -0
  61. package/fixtures/openapi/ManifestRootResource/invalid/root.json +1 -0
  62. package/fixtures/openapi/ManifestRootResource/valid/root.json +1 -0
  63. package/fixtures/openapi/ResourceMonitoringPanel/invalid/unknown-quality.json +7 -0
  64. package/fixtures/openapi/ResourceMonitoringPanel/valid/not-collected.json +7 -0
  65. package/fixtures/openapi/ResourceMonitoringPoint/invalid/string-zero.json +4 -0
  66. package/fixtures/openapi/ResourceMonitoringPoint/valid/missing.json +4 -0
  67. package/fixtures/openapi/ResourceMonitoringPoint/valid/zero.json +4 -0
  68. package/fixtures/openapi/ResourceMonitoringView/invalid/raw-query.json +12 -0
  69. package/fixtures/openapi/ResourceMonitoringView/valid/unconfigured.json +12 -0
  70. package/fixtures/openapi/ResourceRelationConfig/invalid/executable-rule.json +17 -0
  71. package/fixtures/openapi/ResourceRelationConfig/valid/unknown-kind.json +13 -0
  72. package/fixtures/openapi/ServiceDeploymentTemplateInput/invalid/migration-missing-guide-valid-yaml.json +38 -0
  73. package/fixtures/openapi/ServiceDeploymentTemplateInput/valid/migration-valid-yaml.json +39 -0
  74. package/fixtures/openapi/TemplateMigrationAssessment/invalid/initialization.json +9 -0
  75. package/fixtures/openapi/TemplateMigrationAssessment/valid/initialization.json +9 -0
  76. package/fixtures/openapi/TemplateMigrationPolicy/invalid/blank-guide.json +5 -0
  77. package/fixtures/openapi/TemplateMigrationPolicy/invalid/missing-guide.json +4 -0
  78. package/fixtures/openapi/TemplateMigrationPolicy/invalid/unknown-escape-hatch.json +6 -0
  79. package/fixtures/openapi/TemplateMigrationPolicy/valid/legacy-safe.json +4 -0
  80. package/fixtures/openapi/TemplateMigrationPolicy/valid/ordered-data-change.json +5 -0
  81. package/fixtures/openapi/TemplateUpdateBatchInput/invalid/duplicate-candidates.json +11 -0
  82. package/fixtures/openapi/TemplateUpdateBatchInput/invalid/empty-identities.json +10 -0
  83. package/fixtures/openapi/TemplateUpdateBatchInput/valid/staged-adoption.json +10 -0
  84. package/fixtures/openapi/TemplateUpdatePolicyInput/invalid/unknown-mode.json +8 -0
  85. package/fixtures/openapi/TemplateUpdatePolicyInput/valid/explicit-automatic.json +8 -0
  86. package/fixtures/openapi/TemplateUpdatePreviewInput/invalid/empty-identities.json +10 -0
  87. package/fixtures/openapi/TemplateUpdatePreviewInput/invalid/empty-targets.json +6 -0
  88. package/fixtures/openapi/TemplateUpdatePreviewInput/valid/cross-version-manual.json +14 -0
  89. package/gen/go/sohaapi/client.go +1 -1
  90. package/gen/go/sohaapi/client_test.go +2 -2
  91. package/gen/go/sohaapi/import_source_compat_test.go +12 -0
  92. package/gen/go/sohaapi/kubernetes_monitoring_test.go +67 -0
  93. package/gen/go/sohaapi/types.go +2210 -387
  94. package/gen/ts/sohaapi/index.ts +1862 -5
  95. package/go.mod +2 -2
  96. package/helmrelease/delivery.go +4 -1
  97. package/helmrelease/initialization.go +10 -0
  98. package/helmrelease/runtime/delivery.go +40 -10
  99. package/helmrelease/runtime/delivery_test.go +4 -0
  100. package/helmrelease/runtime/initialization.go +186 -0
  101. package/helmrelease/runtime/initialization_test.go +203 -0
  102. package/openapi/soha-api.json +5514 -1179
  103. package/openapi/soha-api.yaml +1080 -11
  104. package/openapi/spec_generated.go +3 -3
  105. package/openapi/spec_test.go +76 -0
  106. package/package.json +1 -1
  107. package/resource/agent_access.go +12 -0
  108. package/resource/agent_profiles.go +62 -0
  109. package/resource/agent_profiles_test.go +36 -0
  110. package/resource/kubernetes_kinds.go +73 -0
  111. package/resource/kubernetes_kinds_test.go +38 -0
  112. package/resource/models.go +25 -14
  113. package/resource/network_topology.go +166 -0
  114. package/resource/network_topology_projection.go +208 -0
  115. package/resource/network_topology_projection_test.go +53 -0
  116. package/resource/network_topology_test.go +51 -0
  117. package/resource/network_topology_validation.go +29 -0
  118. package/resource/node_drain.go +34 -0
  119. package/resource/relations.go +225 -0
  120. package/resource/relations_test.go +47 -0
  121. package/resource/resource_monitoring.go +99 -0
  122. package/resource/root_cr.go +38 -0
  123. package/resource/runtime/argocd_integration_test.go +1 -1
  124. package/resource/runtime/initialization.go +66 -0
  125. package/resource/runtime/initialization_test.go +80 -0
  126. package/resource/runtime/network_topology.go +232 -0
  127. package/resource/runtime/network_topology_test.go +62 -0
  128. package/resource/runtime/node_drain.go +124 -0
  129. package/resource/runtime/node_drain_test.go +95 -0
  130. package/resource/runtime/relations.go +161 -0
  131. package/resource/runtime/relations_test.go +100 -0
  132. package/resource/runtime/resource_edit.go +128 -0
  133. package/resource/runtime/resource_edit_test.go +183 -0
  134. package/resource/runtime/resource_monitoring.go +243 -0
  135. package/resource/runtime/resource_monitoring_test.go +88 -0
  136. package/resource/runtime/root_cr.go +79 -0
  137. package/resource/runtime/root_cr_test.go +118 -0
package/COMPATIBILITY.md CHANGED
@@ -530,3 +530,27 @@ only synchronize their release-version metadata to satisfy their existing
530
530
  guards. Candidate matrices use the packed/local contracts source. Consumers
531
531
  must still pin the published version and validate the registry/proxy package
532
532
  before claiming released-version acceptance.
533
+
534
+
535
+ ## 0.1.26 delivery workbench contracts
536
+
537
+ This release candidate adds optional stable Kubernetes resource identities,
538
+ generic root-CR relationships and publication control, immutable template
539
+ versions/adoption previews, migration declarations, and create-only first-release
540
+ initialization. Existing request fields, operation IDs, action enums and client
541
+ methods remain compatible. Published version snapshots and fixed consumer
542
+ revisions are preserved.
543
+
544
+ Template adoption is configuration, not proof of deployment. Runtime baselines
545
+ require matching original resource UIDs and healthy execution/observation
546
+ receipts. Unknown existing deployments remain blocked; initialization cannot
547
+ adopt existing resources or replay uncertain writes. Migration guides are
548
+ review information and are not executed as scripts.
549
+
550
+ Core and Agent must implement the matching capability/provider protocols before
551
+ using root-CR or initialization tasks. Old runtimes must reject unsupported
552
+ protocols rather than interpret them as ordinary SSA or Helm updates. Publishing
553
+ this SDK alone does not enable the feature or validate a production deployment.
554
+ Consumers must pin the actually published npm/Go artifacts and validate the
555
+ released combination; local tarballs and provenance policy files do not prove
556
+ registry publication or an npm provenance attestation.
package/README.md CHANGED
@@ -118,7 +118,7 @@ calling code in the consumer until those APIs are promoted into the supported
118
118
  client surface. Redirect-oriented flows such as OIDC provider redirects should
119
119
  not use the JSON-only `doJSON` helper until a non-JSON client mode is added.
120
120
 
121
- The Go generator and generated DTO checks run with Go 1.27.2 in CI.
121
+ The Go generator and generated DTO checks run with Go 1.27.3 in CI.
122
122
 
123
123
  ## Validation
124
124
 
@@ -86,6 +86,7 @@ func (w *ExportWriter) Finish(request Request) (ExportResult, error) {
86
86
  if err := binary.Write(w.Writer, binary.BigEndian, uint32(0)); err != nil {
87
87
  return ExportResult{}, err
88
88
  }
89
+ // #nosec G115 -- ValidateFor bounds all three lease IDs to 128 runes and the remaining receipt fields are fixed or bounded.
89
90
  if err := binary.Write(w.Writer, binary.BigEndian, uint32(len(data))); err != nil {
90
91
  return ExportResult{}, err
91
92
  }
@@ -16,7 +16,7 @@ func TestRequestFixturesMatchRuntimeBoundary(t *testing.T) {
16
16
  }
17
17
  for _, file := range files {
18
18
  t.Run(kind+"/"+filepath.Base(file), func(t *testing.T) {
19
- data, err := os.ReadFile(file)
19
+ data, err := os.ReadFile(file) // #nosec G304 -- Glob is rooted in repository fixtures with fixed valid/invalid categories.
20
20
  if err != nil {
21
21
  t.Fatal(err)
22
22
  }
@@ -35,7 +35,7 @@ func TestSchemaFixtures(t *testing.T) {
35
35
  }
36
36
  for _, file := range files {
37
37
  t.Run(name+"/"+kind+"/"+filepath.Base(file), func(t *testing.T) {
38
- data, err := os.ReadFile(file)
38
+ data, err := os.ReadFile(file) // #nosec G304 -- Glob uses only the fixed repository fixture names and valid/invalid categories above.
39
39
  if err != nil {
40
40
  t.Fatal(err)
41
41
  }
@@ -50,7 +50,7 @@ func TestSchemaFixtures(t *testing.T) {
50
50
 
51
51
  func guestFixture[T any](t *testing.T, name string) T {
52
52
  t.Helper()
53
- data, err := os.ReadFile("../../fixtures/json-schema/personal-guest-" + name + "/valid/minimal.json")
53
+ data, err := os.ReadFile("../../fixtures/json-schema/personal-guest-" + name + "/valid/minimal.json") // #nosec G304 -- All callers pass constant test fixture names, never external input.
54
54
  if err != nil {
55
55
  t.Fatal(err)
56
56
  }
@@ -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.26",
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.26",
3
3
  "generatedFrom": "openapi/soha-api.yaml",
4
4
  "entries": [
5
5
  {