@controlplane/schema 1.0.5 → 1.0.7

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Control Plane
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Control Plane Corp. Schema
1
+ # Control Plane Corp. TypeScript Schema
2
2
 
3
3
  This is a collection of TypeScript interfaces designed to streamline and standardize the data structures used across projects that uses our [OpenAPI](https://console.cpln.io/openapi/core).
4
4
 
@@ -19,3 +19,4 @@ const example: Base = {
19
19
  // ... your data
20
20
  };
21
21
  ```
22
+
@@ -36,6 +36,9 @@ export interface RunCronWorkloadSpec {
36
36
  }
37
37
  export interface RunCronWorkloadStatus {
38
38
  replica?: string;
39
+ clusterIdByLocation?: {
40
+ [x: string]: string;
41
+ };
39
42
  minimumWorkloadVersion?: number;
40
43
  }
41
44
  export interface StopReplicaSpec {
@@ -44,6 +47,9 @@ export interface StopReplicaSpec {
44
47
  }
45
48
  export interface StopReplicaStatus {
46
49
  clusterId?: string;
50
+ clusterIdByLocation?: {
51
+ [x: string]: string;
52
+ };
47
53
  podCreatedByCommandLink?: string;
48
54
  podId: string;
49
55
  }
@@ -52,14 +58,18 @@ export interface ReplaceVolumeSpec {
52
58
  volumeIndex: number;
53
59
  }
54
60
  export interface RestoreVolumeSpec {
55
- location: string;
56
61
  volumeIndex: number;
62
+ location: string;
57
63
  snapshotName: string;
64
+ zone?: string;
58
65
  }
59
66
  export interface ReplaceVolumeStatus {
60
67
  stage: 'create-volume' | 'cleanup-after-volume-creation' | 'update-volume-set' | 'configure-storage-resources' | 'remove-finalizer' | 'shutdown-replica' | 'await-replica-termination' | 'cleanup-k8s' | 'fail' | 'revert' | 'cleanup-old-storage-device' | 'restart-replica';
61
68
  messages?: string[];
62
69
  clusterId?: string;
70
+ clusterIdByLocation?: {
71
+ [x: string]: string;
72
+ };
63
73
  inUseByWorkloadId?: string;
64
74
  storageDeviceIdToRemove?: string;
65
75
  newStorageDeviceId?: string;
@@ -82,6 +92,9 @@ export interface CreateVolumeSnapshotStatus {
82
92
  stage: 'create-snapshot' | 'update-volume-set' | 'cleanup-k8s' | 'revert';
83
93
  messages?: string[];
84
94
  clusterId?: string;
95
+ clusterIdByLocation?: {
96
+ [x: string]: string;
97
+ };
85
98
  newSnapshotId?: string;
86
99
  newSnapshotSize?: number;
87
100
  creationStartTime?: Date;
@@ -90,9 +103,13 @@ export interface ExpandVolumeSpec {
90
103
  location: string;
91
104
  volumeIndex: number;
92
105
  newStorageCapacity: number;
106
+ timeoutSeconds?: number;
93
107
  }
94
108
  export interface ExpandVolumeStatus {
95
109
  clusterId?: string;
110
+ clusterIdByLocation?: {
111
+ [x: string]: string;
112
+ };
96
113
  messages?: string[];
97
114
  stage: 'expand-volume' | 'delete-stateful-set' | 'await-replica-termination' | 'await-expansion-completed' | 'update-volume-set' | 'recreate-replica' | 'cleanup-k8s' | 'revert';
98
115
  replicaRestartedAt?: Date;
@@ -102,19 +119,52 @@ export interface DeleteVolumeSpec {
102
119
  location: string;
103
120
  volumeIndex: number;
104
121
  }
122
+ export interface DeleteOrphanedVolumeSpec {
123
+ location: string;
124
+ storageDeviceId: string;
125
+ volumeIndex: number;
126
+ newlyObservedStorageDeviceId?: string;
127
+ }
105
128
  export interface DeleteVolumeStatus {
106
129
  stage: 'update-volume-set' | 'delete-storage-resources' | 'shutdown-replica' | 'await-replica-termination' | 'fail' | 'cleanup-k8s';
107
130
  clusterId?: string;
131
+ clusterIdByLocation?: {
132
+ [x: string]: string;
133
+ };
108
134
  messages?: string[];
109
135
  inUseByWorkloadId?: string;
110
136
  storageDeviceIdToRemove?: string;
111
137
  }
138
+ export interface DeleteOrphanedVolumeStatus {
139
+ stage: 'delete-storage-resources' | 'cleanup-k8s' | 'update-volume-set' | 'fail';
140
+ clusterId?: string;
141
+ clusterIdByLocation?: {
142
+ [x: string]: string;
143
+ };
144
+ messages?: string[];
145
+ }
146
+ export interface DeleteOrphanedVolumeSnapshotSpec {
147
+ location: string;
148
+ snapshotId: string;
149
+ volumeIndex: number;
150
+ }
151
+ export interface DeleteOrphanedVolumeSnapshotStatus {
152
+ stage: 'delete-snapshot' | 'update-volume-set' | 'fail';
153
+ clusterId?: string;
154
+ clusterIdByLocation?: {
155
+ [x: string]: string;
156
+ };
157
+ messages?: string[];
158
+ }
112
159
  export interface SnapshotDeletionStatus {
113
160
  stage?: 'pending' | 'k8s-resources-created' | 'deleted';
114
161
  messages?: string[];
115
162
  }
116
163
  export interface DeleteCloudDevicesStatus {
117
164
  clusterId?: string;
165
+ clusterIdByLocation?: {
166
+ [x: string]: string;
167
+ };
118
168
  volume: {
119
169
  lifecycle?: 'creating' | 'unused' | 'unbound' | 'bound' | 'deleted' | 'repairing';
120
170
  storageDeviceId?: string;
@@ -149,6 +199,9 @@ export interface DeleteVolumeSnapshotSpec {
149
199
  }
150
200
  export interface DeleteVolumeSnapshotStatus {
151
201
  clusterId?: string;
202
+ clusterIdByLocation?: {
203
+ [x: string]: string;
204
+ };
152
205
  snapshot: {
153
206
  name: string;
154
207
  id?: string;
@@ -161,6 +214,7 @@ export interface DeleteVolumeSnapshotStatus {
161
214
  };
162
215
  stage: 'delete-snapshot' | 'update-volume-set';
163
216
  messages?: string[];
217
+ snapshotId?: string;
164
218
  }
165
219
  export interface Cluster {
166
220
  clusterId?: string;
@@ -184,6 +238,7 @@ export interface DeleteVolumeSetSpec {
184
238
  status?: VolumeSetStatus;
185
239
  gvc?: any;
186
240
  };
241
+ locations?: string[];
187
242
  }
188
243
  export interface DeleteVolumeSetLocationStatus {
189
244
  stage: 'delete-volumes' | 'delete-orphaned-volumes' | 'cleanup-filesystem' | 'complete';
@@ -194,16 +249,3 @@ export interface DeleteVolumeSetLocationStatus {
194
249
  export interface DeleteVolumeSetStatus {
195
250
  [x: string]: DeleteVolumeSetLocationStatus;
196
251
  }
197
- export interface DeleteOrphanedVolumeSpec {
198
- storageDeviceId: string;
199
- org: string;
200
- gvc: string;
201
- workloadName: string;
202
- volumeSetUri: string;
203
- driver: string;
204
- }
205
- export interface DeleteOrphanedVolumeStatus {
206
- clusterId?: string;
207
- stage?: 'create-deletion-records' | 'delete' | 'cleanup-k8s';
208
- messages?: string[];
209
- }
@@ -8,6 +8,7 @@ export interface Discovery {
8
8
  audit?: string;
9
9
  logs?: string;
10
10
  metrics?: string;
11
+ "metrics-ng"?: string;
11
12
  tracing?: string;
12
13
  byok?: string;
13
14
  metering?: string;
@@ -15,6 +16,7 @@ export interface Discovery {
15
16
  grafana?: string;
16
17
  "terraform-exporter"?: string;
17
18
  "k8s-crd-exporter"?: string;
19
+ mcp?: string;
18
20
  };
19
21
  firebase?: {
20
22
  apiKey?: string;
@@ -11,6 +11,8 @@ export interface Event {
11
11
  id?: string;
12
12
  created?: Date;
13
13
  kind?: string;
14
+ lastEventTime?: Date;
15
+ eventCount?: number;
14
16
  status: string;
15
17
  pinned?: boolean;
16
18
  context?: {
@@ -3,6 +3,7 @@ import { Tracing } from './tracing';
3
3
  import { EnvoyFilters } from './envoy';
4
4
  import { EnvVar } from './env';
5
5
  import { Name, Kind, Tags, Links } from './base';
6
+ import { Memory } from './workload';
6
7
  export interface GvcStatus {
7
8
  [x: string]: any;
8
9
  }
@@ -14,7 +15,7 @@ export interface GvcSpec {
14
15
  staticPlacement?: StaticPlacement;
15
16
  pullSecretLinks?: string[];
16
17
  domain?: string;
17
- endpointNamingFormat?: 'default' | 'org';
18
+ endpointNamingFormat?: 'default' | 'legacy' | 'org';
18
19
  tracing?: Tracing;
19
20
  sidecar?: {
20
21
  envoy?: EnvoyFilters;
@@ -34,6 +35,11 @@ export interface GvcSpec {
34
35
  };
35
36
  ipSet?: string;
36
37
  };
38
+ keda?: {
39
+ enabled?: boolean;
40
+ identityLink?: string;
41
+ secrets?: string[];
42
+ };
37
43
  }
38
44
  export interface Gvc {
39
45
  id?: string;
@@ -49,6 +55,22 @@ export interface Gvc {
49
55
  spec?: GvcSpec;
50
56
  status?: GvcStatus;
51
57
  }
58
+ export interface GvcLoadBalancerConfig {
59
+ minScale?: number;
60
+ maxScale?: number;
61
+ minCpu?: string;
62
+ minMemory?: string;
63
+ readinessProbe?: {
64
+ timeoutSeconds?: number;
65
+ failureThreshold?: number;
66
+ successThreshold?: number;
67
+ };
68
+ livenessProbe?: {
69
+ timeoutSeconds?: number;
70
+ failureThreshold?: number;
71
+ successThreshold?: number;
72
+ };
73
+ }
52
74
  export interface GvcConfig {
53
75
  clusters?: {
54
76
  [x: string]: {
@@ -61,11 +83,27 @@ export interface GvcConfig {
61
83
  clusterId?: string;
62
84
  };
63
85
  };
86
+ proxy?: {
87
+ minCpu?: number;
88
+ };
64
89
  loadBalancer?: {
65
90
  minScale?: number;
91
+ maxScale?: number;
92
+ minCpu?: string;
93
+ minMemory?: string;
94
+ readinessProbe?: {
95
+ timeoutSeconds?: number;
96
+ failureThreshold?: number;
97
+ successThreshold?: number;
98
+ };
99
+ livenessProbe?: {
100
+ timeoutSeconds?: number;
101
+ failureThreshold?: number;
102
+ successThreshold?: number;
103
+ };
66
104
  };
67
105
  thinProvision?: number;
68
- largeDiskSize?: string;
106
+ largeDiskSize?: Memory;
69
107
  capacityAI?: {
70
108
  memToCpuRatio?: number;
71
109
  };
@@ -9,10 +9,11 @@ import { EphemeralProvider } from './mk8sEphemeral';
9
9
  import { TritonProvider } from './mk8sTriton';
10
10
  import { AzureProvider } from './mk8sAzure';
11
11
  import { DigitalOceanProvider } from './mk8sDigitalOcean';
12
- import { NonCustomizableAddonConfig, AzureAddonConfig, MetricsAddonConfig, LogsAddonConfig, RegistryMirrorConfig, NvidiaAddonConfig, AwsEFSAddonConfig, AwsECRAddonConfig, AwsELBAddonConfig, AzureACRAddonConfig, DashboardAddonStatus, AwsWorkloadIdentityAddonStatus, MetricsAddonStatus, LogsAddonStatus, AwsTrustPolicyConfig } from './mk8sAddons';
12
+ import { GcpProvider } from './mk8sGcp';
13
+ import { NonCustomizableAddonConfig, AzureAddonConfig, MetricsAddonConfig, LogsAddonConfig, RegistryMirrorConfig, NvidiaAddonConfig, AwsEFSAddonConfig, AwsECRAddonConfig, AwsELBAddonConfig, AzureACRAddonConfig, ByokAddonConfig, DashboardAddonStatus, AwsWorkloadIdentityAddonStatus, MetricsAddonStatus, LogsAddonStatus, AwsTrustPolicyConfig } from './mk8sAddons';
13
14
  import { Name, Kind, Tags, Links } from './base';
14
15
  export interface Mk8sSpec {
15
- version: '1.26.0' | '1.26.4' | '1.27.3' | '1.28.2' | '1.28.4' | '1.29.7' | '1.30.3' | '1.31.5' | '1.32.1';
16
+ version: '1.26.0' | '1.26.4' | '1.27.3' | '1.28.2' | '1.28.4' | '1.29.7' | '1.30.3' | '1.31.5' | '1.31.13' | '1.32.1' | '1.32.9' | '1.33.5' | '1.34.2';
16
17
  firewall?: {
17
18
  sourceCIDR: string;
18
19
  description?: string;
@@ -29,9 +30,11 @@ export interface Mk8sSpec {
29
30
  triton?: TritonProvider;
30
31
  azure?: AzureProvider;
31
32
  digitalocean?: DigitalOceanProvider;
33
+ gcp?: GcpProvider;
32
34
  };
33
35
  addOns?: {
34
36
  dashboard?: NonCustomizableAddonConfig;
37
+ headlamp?: NonCustomizableAddonConfig;
35
38
  azureWorkloadIdentity?: AzureAddonConfig;
36
39
  awsWorkloadIdentity?: NonCustomizableAddonConfig;
37
40
  localPathStorage?: NonCustomizableAddonConfig;
@@ -44,6 +47,7 @@ export interface Mk8sSpec {
44
47
  awsELB?: AwsELBAddonConfig;
45
48
  azureACR?: AzureACRAddonConfig;
46
49
  sysbox?: NonCustomizableAddonConfig;
50
+ byok?: ByokAddonConfig;
47
51
  };
48
52
  }
49
53
  export interface Mk8sStatus {
@@ -52,6 +56,7 @@ export interface Mk8sStatus {
52
56
  homeLocation?: string;
53
57
  addOns?: {
54
58
  dashboard?: DashboardAddonStatus;
59
+ headlamp?: DashboardAddonStatus;
55
60
  awsWorkloadIdentity?: AwsWorkloadIdentityAddonStatus;
56
61
  metrics?: MetricsAddonStatus;
57
62
  logs?: LogsAddonStatus;
@@ -71,7 +76,7 @@ export interface Mk8sCluster {
71
76
  lastModified?: Date;
72
77
  links?: Links;
73
78
  spec: {
74
- version: '1.26.0' | '1.26.4' | '1.27.3' | '1.28.2' | '1.28.4' | '1.29.7' | '1.30.3' | '1.31.5' | '1.32.1';
79
+ version: '1.26.0' | '1.26.4' | '1.27.3' | '1.28.2' | '1.28.4' | '1.29.7' | '1.30.3' | '1.31.5' | '1.31.13' | '1.32.1' | '1.32.9' | '1.33.5' | '1.34.2';
75
80
  firewall?: {
76
81
  sourceCIDR: string;
77
82
  description?: string;
@@ -88,9 +93,11 @@ export interface Mk8sCluster {
88
93
  triton?: TritonProvider;
89
94
  azure?: AzureProvider;
90
95
  digitalocean?: DigitalOceanProvider;
96
+ gcp?: GcpProvider;
91
97
  };
92
98
  addOns?: {
93
99
  dashboard?: NonCustomizableAddonConfig;
100
+ headlamp?: NonCustomizableAddonConfig;
94
101
  azureWorkloadIdentity?: AzureAddonConfig;
95
102
  awsWorkloadIdentity?: NonCustomizableAddonConfig;
96
103
  localPathStorage?: NonCustomizableAddonConfig;
@@ -103,6 +110,7 @@ export interface Mk8sCluster {
103
110
  awsELB?: AwsELBAddonConfig;
104
111
  azureACR?: AzureACRAddonConfig;
105
112
  sysbox?: NonCustomizableAddonConfig;
113
+ byok?: ByokAddonConfig;
106
114
  };
107
115
  };
108
116
  alias?: string;
@@ -1,3 +1,4 @@
1
+ import { Cpu, Memory } from './workload';
1
2
  export type RegularExpression = string;
2
3
  export interface FlexibleAddonConfig {
3
4
  [x: string]: string;
@@ -77,3 +78,175 @@ export interface AwsELBAddonConfig {
77
78
  export interface AzureACRAddonConfig {
78
79
  clientId: string;
79
80
  }
81
+ export interface HttpHeaderValue {
82
+ values?: string[];
83
+ secrets?: string[];
84
+ files?: string[];
85
+ }
86
+ export interface ByokAddonConfig {
87
+ ignoreUpdates?: boolean;
88
+ location: string;
89
+ config?: {
90
+ actuator?: {
91
+ minCpu?: Cpu;
92
+ maxCpu?: Cpu;
93
+ minMemory?: Memory;
94
+ maxMemory?: Memory;
95
+ logLevel?: 'trace' | 'info' | 'error';
96
+ env?: {
97
+ [x: string]: string;
98
+ };
99
+ };
100
+ middlebox?: {
101
+ enabled?: boolean;
102
+ bandwidthAlertMbps?: number;
103
+ port?: number;
104
+ ip?: string;
105
+ };
106
+ common?: {
107
+ deploymentReplicas?: number;
108
+ pdb?: {
109
+ maxUnavailable?: number;
110
+ };
111
+ };
112
+ longhorn?: {
113
+ numberOfReplicas?: number;
114
+ replicas?: number;
115
+ isDefault?: boolean;
116
+ };
117
+ byok?: {
118
+ noDefaultStorageClasses?: boolean;
119
+ };
120
+ ingress?: {
121
+ cpu?: Cpu;
122
+ memory?: Memory;
123
+ targetPercent?: number;
124
+ };
125
+ istio?: {
126
+ istiod?: {
127
+ replicas?: number;
128
+ minCpu?: Cpu;
129
+ maxCpu?: Cpu;
130
+ minMemory?: Memory;
131
+ maxMemory?: Memory;
132
+ pdb?: number;
133
+ };
134
+ ingressgateway?: {
135
+ replicas?: number;
136
+ maxCpu?: Cpu;
137
+ maxMemory?: Memory;
138
+ };
139
+ sidecar?: {
140
+ minCpu?: Cpu;
141
+ minMemory?: Memory;
142
+ };
143
+ };
144
+ logSplitter?: {
145
+ minCpu?: Cpu;
146
+ maxCpu?: Cpu;
147
+ minMemory?: Memory;
148
+ maxMemory?: Memory;
149
+ memBufferSize?: string;
150
+ perPodRate?: number;
151
+ };
152
+ monitoring?: {
153
+ minMemory?: Memory;
154
+ maxMemory?: Memory;
155
+ kubeStateMetrics?: {
156
+ minMemory?: Memory;
157
+ };
158
+ prometheus?: {
159
+ main?: {
160
+ storage?: Memory;
161
+ };
162
+ };
163
+ remoteWrite?: {
164
+ basic_auth?: {
165
+ username?: string;
166
+ username_file?: string;
167
+ password?: string;
168
+ password_file?: string;
169
+ };
170
+ authorization?: {
171
+ type?: string;
172
+ credentials?: string;
173
+ credentials_file?: string;
174
+ };
175
+ oauth2?: {
176
+ [x: string]: any;
177
+ };
178
+ follow_redirects?: boolean;
179
+ enable_http2?: boolean;
180
+ tls_config?: {
181
+ [x: string]: any;
182
+ };
183
+ proxy_url?: string;
184
+ no_proxy?: string;
185
+ proxy_from_environment?: boolean;
186
+ proxy_connect_header?: {
187
+ [x: string]: string[];
188
+ };
189
+ http_headers?: {
190
+ [x: string]: HttpHeaderValue;
191
+ };
192
+ url?: string;
193
+ remote_timeout?: string;
194
+ headers?: {
195
+ [x: string]: string;
196
+ };
197
+ write_relabel_configs?: {
198
+ [x: string]: any;
199
+ }[];
200
+ name?: string;
201
+ send_exemplars?: boolean;
202
+ send_native_histograms?: boolean;
203
+ sigv4?: {
204
+ [x: string]: any;
205
+ };
206
+ azuread?: {
207
+ [x: string]: any;
208
+ };
209
+ google_iam?: {
210
+ [x: string]: any;
211
+ };
212
+ queue_config?: {
213
+ [x: string]: any;
214
+ };
215
+ }[];
216
+ externalLabels?: {
217
+ [x: string]: string;
218
+ };
219
+ };
220
+ redis?: {
221
+ minCpu?: Cpu;
222
+ maxCpu?: Cpu;
223
+ minMemory?: Memory;
224
+ maxMemory?: Memory;
225
+ storage?: Memory;
226
+ };
227
+ redisHa?: {
228
+ minCpu?: Cpu;
229
+ maxCpu?: Cpu;
230
+ minMemory?: Memory;
231
+ maxMemory?: Memory;
232
+ storage?: number;
233
+ };
234
+ redisSentinel?: {
235
+ minCpu?: Cpu;
236
+ maxCpu?: Cpu;
237
+ minMemory?: Memory;
238
+ maxMemory?: Memory;
239
+ storage?: number;
240
+ };
241
+ tempoAgent?: {
242
+ minCpu?: Cpu;
243
+ minMemory?: Memory;
244
+ };
245
+ internalDns?: {
246
+ minCpu?: Cpu;
247
+ maxCpu?: Cpu;
248
+ minMemory?: Memory;
249
+ maxMemory?: Memory;
250
+ };
251
+ };
252
+ }
@@ -21,7 +21,7 @@ export interface AzurePool {
21
21
  maxSize: number;
22
22
  }
23
23
  export interface AzureProvider {
24
- location: 'centralus' | 'eastus2' | 'eastus' | 'southcentralus';
24
+ location: string;
25
25
  subscriptionId: string;
26
26
  sdkSecretLink: string;
27
27
  resourceGroup: string;
@@ -11,10 +11,10 @@ export type Taints = Taint[];
11
11
  export type NodePoolName = string;
12
12
  export type SshPublicKey = string;
13
13
  export interface AutoscalerConfig {
14
- expander: ('random' | 'most-pods' | 'least-waste' | 'price')[];
15
- unneededTime: string;
16
- unreadyTime: string;
17
- utilizationThreshold: number;
14
+ expander?: ('random' | 'most-pods' | 'least-waste' | 'price')[];
15
+ unneededTime?: string;
16
+ unreadyTime?: string;
17
+ utilizationThreshold?: number;
18
18
  }
19
19
  export interface UnmanagedPool {
20
20
  name: string;
@@ -1,42 +1,53 @@
1
- import { Labels, Taints, AutoscalerConfig } from './mk8sCommon';
1
+ import { Labels, Taints, PreInstallScript, AutoscalerConfig } from './mk8sCommon';
2
2
  export interface Image {
3
- recommended?: 'ubuntu-2004-lts' | 'ubuntu-2204-lts' | 'ubuntu-2404-lts';
3
+ recommended?: 'ubuntu/jammy-22.04' | 'ubuntu/noble-24.04' | 'debian/bookworm-12' | 'debian/trixie-13' | 'google/cos-stable';
4
+ family?: {
5
+ project: string;
6
+ family: string;
7
+ };
4
8
  exact?: string;
5
9
  }
6
10
  export interface GcpPool {
7
11
  name: string;
8
12
  labels?: Labels;
9
13
  taints?: Taints;
10
- instanceType: string;
14
+ machineType: string;
15
+ assignPublicIP?: boolean;
16
+ zone: string;
11
17
  overrideImage?: Image;
12
18
  bootDiskSize: number;
13
19
  minSize: number;
14
20
  maxSize: number;
15
- subnetId: string;
16
- zones?: string[];
17
- targetShape?: 'ANY' | 'BALANCED' | 'CLOSEST_TO_HEALTHY';
18
- extraSecurityGroupIds?: string[];
21
+ preemptible?: boolean;
22
+ subnet: string;
23
+ localPersistentDisks?: number;
19
24
  }
20
25
  export interface GcpProvider {
21
- region: 'africa-south1' | 'asia-east1' | 'asia-east2' | 'asia-northeast1' | 'asia-northeast2' | 'asia-northeast3' | 'asia-south1' | 'asia-south2' | 'asia-southeast1' | 'asia-southeast2' | 'australia-southeast1' | 'australia-southeast2' | 'europe-central2' | 'europe-north1' | 'europe-southwest1' | 'europe-west1' | 'europe-west10' | 'europe-west12' | 'europe-west2' | 'europe-west3' | 'europe-west4' | 'europe-west6' | 'europe-west8' | 'europe-west9' | 'me-central1' | 'me-central2' | 'me-west1' | 'northamerica-northeast1' | 'northamerica-northeast2' | 'southamerica-east1' | 'southamerica-west1' | 'us-central1' | 'us-east1' | 'us-east4' | 'us-east5' | 'us-south1' | 'us-west1' | 'us-west2' | 'us-west3' | 'us-west4';
22
- gcpTags?: {
26
+ projectId: string;
27
+ region: string;
28
+ labels?: {
23
29
  [x: string]: string;
24
30
  };
25
- skipCreateRoles?: boolean;
31
+ tags?: string[];
32
+ metadata?: {
33
+ [x: string]: string;
34
+ };
35
+ network: string;
36
+ saKeyLink: string;
26
37
  networking?: {
27
38
  serviceNetwork?: '10.43.0.0/16' | '192.168.0.0/16';
28
39
  podNetwork?: 'vpc' | '10.42.0.0/16' | '172.16.0.0/15' | '172.18.0.0/15' | '172.20.0.0/15' | '172.22.0.0/15' | '172.24.0.0/15' | '172.26.0.0/15' | '172.28.0.0/15' | '172.30.0.0/15';
40
+ dnsForwarder?: string;
29
41
  };
30
- preInstallScript?: string;
42
+ preInstallScript?: PreInstallScript;
31
43
  image: {
32
- recommended?: 'ubuntu-2004-lts' | 'ubuntu-2204-lts' | 'ubuntu-2404-lts';
44
+ recommended?: 'ubuntu/jammy-22.04' | 'ubuntu/noble-24.04' | 'debian/bookworm-12' | 'debian/trixie-13' | 'google/cos-stable';
45
+ family?: {
46
+ project: string;
47
+ family: string;
48
+ };
33
49
  exact?: string;
34
50
  };
35
- deployServiceAccount: string;
36
- vpcId: string;
37
- projectId: string;
38
- keyPair?: string;
39
- diskEncryptionKey?: string;
40
51
  nodePools?: GcpPool[];
41
52
  autoscaler?: AutoscalerConfig;
42
53
  }
@@ -34,6 +34,7 @@ export interface Manual {
34
34
  }
35
35
  export interface LoadBalancerConfig {
36
36
  manual?: Manual;
37
+ none?: {};
37
38
  gateway?: {};
38
39
  }
39
40
  export interface SdcConnection {
@@ -1,4 +1,4 @@
1
- import { S3Logging, CoralogixLogging, DatadogLogging, LogzioLogging, ElasticLogging, CloudWatchLogging, FluentdLogging, StackdriverLogging, SyslogLogging } from './orgLogging';
1
+ import { S3Logging, CoralogixLogging, DatadogLogging, LogzioLogging, ElasticLogging, CloudWatchLogging, FluentdLogging, StackdriverLogging, SyslogLogging, OpenTelemetryLogging } from './orgLogging';
2
2
  import { Tracing } from './tracing';
3
3
  import { Kind, Tags, Links } from './base';
4
4
  export interface OrgStatus {
@@ -36,6 +36,7 @@ export interface OrgSpec {
36
36
  fluentd?: FluentdLogging;
37
37
  stackdriver?: StackdriverLogging;
38
38
  syslog?: SyslogLogging;
39
+ opentelemetry?: OpenTelemetryLogging;
39
40
  };
40
41
  extraLogging?: {
41
42
  s3?: S3Logging;
@@ -47,6 +48,7 @@ export interface OrgSpec {
47
48
  fluentd?: FluentdLogging;
48
49
  stackdriver?: StackdriverLogging;
49
50
  syslog?: SyslogLogging;
51
+ opentelemetry?: OpenTelemetryLogging;
50
52
  }[];
51
53
  tracing?: Tracing;
52
54
  sessionTimeoutSeconds?: number;
@@ -15,6 +15,13 @@ export interface DatadogLogging {
15
15
  host: 'http-intake.logs.datadoghq.com' | 'http-intake.logs.us3.datadoghq.com' | 'http-intake.logs.us5.datadoghq.com' | 'http-intake.logs.datadoghq.eu';
16
16
  credentials: string;
17
17
  }
18
+ export interface OpenTelemetryLogging {
19
+ endpoint: string;
20
+ headers?: {
21
+ [x: string]: string;
22
+ };
23
+ credentials?: string;
24
+ }
18
25
  export interface LogzioLogging {
19
26
  listenerHost: 'listener.logz.io' | 'listener-nl.logz.io';
20
27
  credentials: string;
@@ -63,11 +63,19 @@ export interface MountResources {
63
63
  minMemory?: string;
64
64
  maxMemory?: string;
65
65
  }
66
+ export interface CustomEncryptionRegion {
67
+ keyId?: string;
68
+ }
66
69
  export interface VolumeSetSpec {
67
70
  initialCapacity: number;
68
71
  performanceClass?: PerformanceClassName;
69
72
  storageClassSuffix?: string;
70
73
  fileSystemType?: FileSystemType;
74
+ customEncryption?: {
75
+ regions?: {
76
+ [x: string]: CustomEncryptionRegion;
77
+ };
78
+ };
71
79
  snapshots?: SnapshotSpec;
72
80
  autoscaling?: {
73
81
  maxCapacity?: number;
@@ -1,9 +1,11 @@
1
- import { Port } from './port';
1
+ import { Regex, Kind, Tags, Links } from './base';
2
2
  import { EnvVar } from './env';
3
3
  import { VolumeSpec } from './volumeSpec';
4
- import { Regex, Kind, Tags, Links } from './base';
5
4
  import { DefaultOptions, LocalOptions } from './workloadOptions';
6
- import { EnvoyFilters } from './envoy';
5
+ import { AccessLog } from './envoyAccessLog';
6
+ import { Cluster } from './envoyCluster';
7
+ import { ExcExtAuth, ExcludedRateLimit } from './envoyExcExtAuth';
8
+ import { HttpFilter } from './envoyHttp';
7
9
  export type Memory = string;
8
10
  export type Cpu = string;
9
11
  export interface HealthCheckSpec {
@@ -11,7 +13,7 @@ export interface HealthCheckSpec {
11
13
  command?: string[];
12
14
  };
13
15
  grpc?: {
14
- port?: Port;
16
+ port?: number;
15
17
  };
16
18
  tcpSocket?: {
17
19
  port?: number;
@@ -47,6 +49,7 @@ export interface RolloutOptionsStateful {
47
49
  }
48
50
  export interface SecurityOptions {
49
51
  filesystemGroupId?: number;
52
+ runAsUser?: number;
50
53
  }
51
54
  export interface GpuResource {
52
55
  nvidia?: {
@@ -66,6 +69,7 @@ export interface ContainerSpec {
66
69
  metrics?: {
67
70
  port: number;
68
71
  path: string;
72
+ dropMetrics?: Regex[];
69
73
  };
70
74
  port?: number;
71
75
  ports?: ({
@@ -78,7 +82,7 @@ export interface ContainerSpec {
78
82
  command?: string[];
79
83
  };
80
84
  grpc?: {
81
- port?: Port;
85
+ port?: number;
82
86
  };
83
87
  tcpSocket?: {
84
88
  port?: number;
@@ -103,7 +107,7 @@ export interface ContainerSpec {
103
107
  command?: string[];
104
108
  };
105
109
  grpc?: {
106
- port?: Port;
110
+ port?: number;
107
111
  };
108
112
  tcpSocket?: {
109
113
  port?: number;
@@ -191,9 +195,24 @@ export interface WorkloadStatus {
191
195
  canonicalEndpoint?: string;
192
196
  endpoint?: string;
193
197
  internalName?: string;
194
- healthCheck?: HealthCheckStatus;
198
+ replicaInternalNames?: string[];
199
+ healthCheck?: {
200
+ active: boolean;
201
+ success?: boolean;
202
+ code?: number;
203
+ message?: string;
204
+ failures?: number;
205
+ successes?: number;
206
+ lastChecked?: Date;
207
+ };
195
208
  currentReplicaCount?: number;
196
- resolvedImages?: ResolvedImages;
209
+ resolvedImages?: {
210
+ resolvedForVersion?: number;
211
+ resolvedAt?: Date;
212
+ errorMessages?: string[];
213
+ nextRetryAt?: Date;
214
+ images?: ResolvedImage[];
215
+ };
197
216
  loadBalancer?: LoadBalancerStatus[];
198
217
  [x: string]: any;
199
218
  }
@@ -225,7 +244,7 @@ export interface FirewallSpec {
225
244
  export type ScheduleType = string;
226
245
  export interface JobSpec {
227
246
  schedule: ScheduleType;
228
- concurrencyPolicy?: 'Forbid' | 'Replace';
247
+ concurrencyPolicy?: 'Forbid' | 'Replace' | 'Allow';
229
248
  historyLimit?: number;
230
249
  restartPolicy?: 'OnFailure' | 'Never';
231
250
  activeDeadlineSeconds?: number;
@@ -291,18 +310,27 @@ export interface WorkloadSpec {
291
310
  localOptions?: LocalOptions;
292
311
  job?: {
293
312
  schedule: ScheduleType;
294
- concurrencyPolicy?: 'Forbid' | 'Replace';
313
+ concurrencyPolicy?: 'Forbid' | 'Replace' | 'Allow';
295
314
  historyLimit?: number;
296
315
  restartPolicy?: 'OnFailure' | 'Never';
297
316
  activeDeadlineSeconds?: number;
298
317
  };
299
318
  sidecar?: {
300
- envoy?: EnvoyFilters;
319
+ envoy?: {
320
+ accessLog?: AccessLog[];
321
+ clusters?: Cluster[];
322
+ excludedExternalAuth?: ExcExtAuth[];
323
+ excludedRateLimit?: ExcludedRateLimit[];
324
+ http?: HttpFilter[];
325
+ network?: any[];
326
+ volumes?: VolumeSpec[];
327
+ };
301
328
  };
302
329
  supportDynamicTags?: boolean;
303
330
  rolloutOptions?: any;
304
331
  securityOptions?: {
305
332
  filesystemGroupId?: number;
333
+ runAsUser?: number;
306
334
  };
307
335
  loadBalancer?: {
308
336
  direct?: {
@@ -370,18 +398,27 @@ export interface Workload {
370
398
  localOptions?: LocalOptions;
371
399
  job?: {
372
400
  schedule: ScheduleType;
373
- concurrencyPolicy?: 'Forbid' | 'Replace';
401
+ concurrencyPolicy?: 'Forbid' | 'Replace' | 'Allow';
374
402
  historyLimit?: number;
375
403
  restartPolicy?: 'OnFailure' | 'Never';
376
404
  activeDeadlineSeconds?: number;
377
405
  };
378
406
  sidecar?: {
379
- envoy?: EnvoyFilters;
407
+ envoy?: {
408
+ accessLog?: AccessLog[];
409
+ clusters?: Cluster[];
410
+ excludedExternalAuth?: ExcExtAuth[];
411
+ excludedRateLimit?: ExcludedRateLimit[];
412
+ http?: HttpFilter[];
413
+ network?: any[];
414
+ volumes?: VolumeSpec[];
415
+ };
380
416
  };
381
417
  supportDynamicTags?: boolean;
382
418
  rolloutOptions?: any;
383
419
  securityOptions?: {
384
420
  filesystemGroupId?: number;
421
+ runAsUser?: number;
385
422
  };
386
423
  loadBalancer?: {
387
424
  direct?: {
@@ -410,7 +447,32 @@ export interface Workload {
410
447
  retryOn?: string[];
411
448
  };
412
449
  };
413
- status?: WorkloadStatus;
450
+ status?: {
451
+ parentId?: string;
452
+ canonicalEndpoint?: string;
453
+ endpoint?: string;
454
+ internalName?: string;
455
+ replicaInternalNames?: string[];
456
+ healthCheck?: {
457
+ active: boolean;
458
+ success?: boolean;
459
+ code?: number;
460
+ message?: string;
461
+ failures?: number;
462
+ successes?: number;
463
+ lastChecked?: Date;
464
+ };
465
+ currentReplicaCount?: number;
466
+ resolvedImages?: {
467
+ resolvedForVersion?: number;
468
+ resolvedAt?: Date;
469
+ errorMessages?: string[];
470
+ nextRetryAt?: Date;
471
+ images?: ResolvedImage[];
472
+ };
473
+ loadBalancer?: LoadBalancerStatus[];
474
+ [x: string]: any;
475
+ };
414
476
  }
415
477
  export interface PodZoneMap {
416
478
  [x: string]: string;
@@ -427,6 +489,9 @@ export interface WorkloadConfig {
427
489
  locationPodZoneMap?: {
428
490
  [x: string]: PodZoneMap;
429
491
  };
492
+ proxy?: {
493
+ minCpu?: number;
494
+ };
430
495
  subsets?: {
431
496
  enabled?: boolean;
432
497
  };
@@ -1,11 +1,14 @@
1
1
  export interface KedaTrigger {
2
2
  type: string;
3
3
  metadata?: {
4
- [x: string]: string;
4
+ [x: string]: string | any;
5
5
  };
6
6
  name?: string;
7
7
  useCachedMetrics?: boolean;
8
8
  metricType?: 'AverageValue' | 'Value' | 'Utilization';
9
+ authenticationRef?: {
10
+ name: string;
11
+ };
9
12
  }
10
13
  export interface DefaultOptions {
11
14
  autoscaling?: {
@@ -30,10 +33,19 @@ export interface DefaultOptions {
30
33
  formula?: string;
31
34
  };
32
35
  };
36
+ fallback?: {
37
+ failureThreshold: number;
38
+ replicas: number;
39
+ behavior?: 'static' | 'currentReplicas' | 'currentReplicasIfHigher' | 'currentReplicasIfLower';
40
+ };
41
+ pollingInterval?: number;
42
+ cooldownPeriod?: number;
43
+ initialCooldownPeriod?: number;
33
44
  };
34
45
  };
35
46
  timeoutSeconds?: number;
36
47
  capacityAI?: boolean;
48
+ capacityAIUpdateMinutes?: number;
37
49
  spot?: boolean;
38
50
  debug?: boolean;
39
51
  suspend?: boolean;
@@ -64,10 +76,19 @@ export type LocalOptions = ({
64
76
  formula?: string;
65
77
  };
66
78
  };
79
+ fallback?: {
80
+ failureThreshold: number;
81
+ replicas: number;
82
+ behavior?: 'static' | 'currentReplicas' | 'currentReplicasIfHigher' | 'currentReplicasIfLower';
83
+ };
84
+ pollingInterval?: number;
85
+ cooldownPeriod?: number;
86
+ initialCooldownPeriod?: number;
67
87
  };
68
88
  };
69
89
  timeoutSeconds?: number;
70
90
  capacityAI?: boolean;
91
+ capacityAIUpdateMinutes?: number;
71
92
  spot?: boolean;
72
93
  debug?: boolean;
73
94
  suspend?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@controlplane/schema",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "Control Plane Corporation Schema",
5
5
  "scripts": {
6
6
  "build": "tsc",