@camunda/ccma-shared-types 0.4.0 → 0.5.1
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/dist/_tests/constants/failoverRegionPairs.const.spec.d.ts +1 -0
- package/dist/_tests/search/compiler.spec.d.ts +1 -0
- package/dist/_tests/search/parser.spec.d.ts +1 -0
- package/dist/_tests/search/registry.spec.d.ts +1 -0
- package/dist/_tests/types/ClusterPlanFields.type.spec.d.ts +1 -0
- package/dist/_tests/utils/failoverKeyPolicy.utils.spec.d.ts +1 -0
- package/dist/constants/failoverRegionPairs.const.d.ts +8 -1
- package/dist/constants/failoverRegionPairs.const.js +9 -4
- package/dist/constants/failoverRegionPairs.const.js.map +2 -2
- package/dist/constants/misc.const.d.ts +0 -55
- package/dist/constants/misc.const.js +0 -82
- package/dist/constants/misc.const.js.map +2 -2
- package/dist/dtos/Backup.dto.d.ts +5 -0
- package/dist/dtos/ClusterPlan.dto.d.ts +5 -0
- package/dist/dtos/ClusterPlanType.dto.d.ts +6 -0
- package/dist/dtos/CommonCluster.dto.d.ts +18 -0
- package/dist/dtos/ControlV2.dto.d.ts +62 -14
- package/dist/dtos/K8sContext.dto.d.ts +6 -0
- package/dist/dtos/Organization.dto.d.ts +2 -0
- package/dist/dtos/Organization.dto.js.map +1 -1
- package/dist/dtos/ReleaseTrainSanity.dto.d.ts +51 -0
- package/dist/dtos/ReleaseTrainSanity.dto.js +1 -0
- package/dist/dtos/ReleaseTrainSanity.dto.js.map +7 -0
- package/dist/dtos/SalesPlan.dto.d.ts +11 -0
- package/dist/dtos/SalesPlan.dto.js +14 -0
- package/dist/dtos/SalesPlan.dto.js.map +2 -2
- package/dist/enums/OrganizationRole.enum.d.ts +1 -0
- package/dist/enums/OrganizationRole.enum.js +7 -0
- package/dist/enums/OrganizationRole.enum.js.map +2 -2
- package/dist/enums/SystemAuditEntity.enum.d.ts +7 -2
- package/dist/enums/SystemAuditEntity.enum.js +5 -0
- package/dist/enums/SystemAuditEntity.enum.js.map +2 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +48 -2
- package/dist/index.js.map +2 -2
- package/dist/permissions/combo.js +3 -0
- package/dist/permissions/combo.js.map +2 -2
- package/dist/permissions/console.permissions.d.ts +2 -0
- package/dist/permissions/console.permissions.js +7 -0
- package/dist/permissions/console.permissions.js.map +2 -2
- package/dist/search/ast.d.ts +52 -0
- package/dist/search/ast.js +18 -0
- package/dist/search/ast.js.map +7 -0
- package/dist/search/cluster-search-fields.d.ts +11 -0
- package/dist/search/cluster-search-fields.js +136 -0
- package/dist/search/cluster-search-fields.js.map +7 -0
- package/dist/search/compiler.d.ts +48 -0
- package/dist/search/compiler.js +217 -0
- package/dist/search/compiler.js.map +7 -0
- package/dist/search/fields.d.ts +24 -0
- package/dist/search/fields.js +5 -0
- package/dist/search/fields.js.map +7 -0
- package/dist/search/index.d.ts +6 -0
- package/dist/search/index.js +33 -0
- package/dist/search/index.js.map +7 -0
- package/dist/search/organization-search-fields.d.ts +9 -0
- package/dist/search/organization-search-fields.js +50 -0
- package/dist/search/organization-search-fields.js.map +7 -0
- package/dist/search/parser.d.ts +7 -0
- package/dist/search/parser.js +324 -0
- package/dist/search/parser.js.map +7 -0
- package/dist/types/ClusterModification.type.d.ts +1 -0
- package/dist/types/ClusterPlanFields.type.d.ts +24 -0
- package/dist/types/ClusterPlanFields.type.js +591 -0
- package/dist/types/ClusterPlanFields.type.js.map +7 -0
- package/dist/types/ClusterPlanModification.type.d.ts +3 -0
- package/dist/types/EnterpriseIncludingValueMetrics.type.d.ts +1 -0
- package/dist/types/HdpTenantUsage.type.d.ts +4 -0
- package/dist/types/HdpTenantUsage.type.js +1 -0
- package/dist/types/HdpTenantUsage.type.js.map +7 -0
- package/dist/utils/enterpriseTerm.utils.d.ts +78 -0
- package/dist/utils/enterpriseTerm.utils.js +69 -0
- package/dist/utils/enterpriseTerm.utils.js.map +7 -0
- package/dist/utils/enterpriseTerm.utils.spec.d.ts +1 -0
- package/dist/utils/failoverKeyPolicy.utils.d.ts +26 -0
- package/dist/utils/failoverKeyPolicy.utils.js +15 -0
- package/dist/utils/failoverKeyPolicy.utils.js.map +7 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -4,8 +4,15 @@
|
|
|
4
4
|
* one of these reverse-region pairs — cluster creation must be supported in
|
|
5
5
|
* both directions. Both directions of each pair are listed.
|
|
6
6
|
*
|
|
7
|
+
* This is the base set, enabled on every stage.
|
|
8
|
+
*
|
|
7
9
|
* Shared between console-backend (FailoverRouter guard) and c4 (hiding the
|
|
8
10
|
* failover action for unsupported pairs).
|
|
9
11
|
*/
|
|
10
12
|
export declare const SUPPORTED_FAILOVER_REGION_PAIRS: ReadonlySet<string>;
|
|
11
|
-
|
|
13
|
+
/**
|
|
14
|
+
* `stage` mirrors the featureflags `onlyDev` gate: the EU test pairs unlock only
|
|
15
|
+
* on 'local'/'dev'. Omitting stage (or passing any non-dev stage) allows the
|
|
16
|
+
* base set only, so prod never sees the dev pairs.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isSupportedFailoverRegionPair(regionA: string | undefined, regionB: string | undefined, stage?: string): boolean;
|
|
@@ -4,11 +4,16 @@ const SUPPORTED_FAILOVER_REGION_PAIRS = /* @__PURE__ */ new Set([
|
|
|
4
4
|
"us-east-2:us-east-1",
|
|
5
5
|
"us-east-1:us-east-2"
|
|
6
6
|
]);
|
|
7
|
-
|
|
7
|
+
const DEV_FAILOVER_REGION_PAIRS = /* @__PURE__ */ new Set([
|
|
8
|
+
"eu-west-1:eu-west-2",
|
|
9
|
+
"eu-west-2:eu-west-1"
|
|
10
|
+
]);
|
|
11
|
+
function isSupportedFailoverRegionPair(regionA, regionB, stage) {
|
|
8
12
|
if (!regionA || !regionB) return false;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
const pair = `${regionA.toLowerCase()}:${regionB.toLowerCase()}`;
|
|
14
|
+
if (SUPPORTED_FAILOVER_REGION_PAIRS.has(pair)) return true;
|
|
15
|
+
const isDev = stage === "local" || stage === "dev";
|
|
16
|
+
return isDev && DEV_FAILOVER_REGION_PAIRS.has(pair);
|
|
12
17
|
}
|
|
13
18
|
export {
|
|
14
19
|
SUPPORTED_FAILOVER_REGION_PAIRS,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/constants/failoverRegionPairs.const.ts"],
|
|
4
|
-
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\n/**\n * Region pairs supported for cross-region failover (#9120). Failover is only\n * offered for dual-region clusters whose primary and secondary regions form\n * one of these reverse-region pairs \u2014 cluster creation must be supported in\n * both directions. Both directions of each pair are listed.\n *\n * Shared between console-backend (FailoverRouter guard) and c4 (hiding the\n * failover action for unsupported pairs).\n */\nexport const SUPPORTED_FAILOVER_REGION_PAIRS: ReadonlySet<string> = new Set([\n 'us-east-2:us-west-2',\n 'us-west-2:us-east-2',\n 'us-east-2:us-east-1',\n 'us-east-1:us-east-2',\n])\n\nexport function isSupportedFailoverRegionPair(\n regionA: string | undefined,\n regionB: string | undefined,\n): boolean {\n if (!regionA || !regionB) return false\n
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\n/**\n * Region pairs supported for cross-region failover (#9120). Failover is only\n * offered for dual-region clusters whose primary and secondary regions form\n * one of these reverse-region pairs \u2014 cluster creation must be supported in\n * both directions. Both directions of each pair are listed.\n *\n * This is the base set, enabled on every stage.\n *\n * Shared between console-backend (FailoverRouter guard) and c4 (hiding the\n * failover action for unsupported pairs).\n */\nexport const SUPPORTED_FAILOVER_REGION_PAIRS: ReadonlySet<string> = new Set([\n 'us-east-2:us-west-2',\n 'us-west-2:us-east-2',\n 'us-east-2:us-east-1',\n 'us-east-1:us-east-2',\n])\n\n// Dev-only test pairs: EU failover validation on dev/local before prod rollout.\nconst DEV_FAILOVER_REGION_PAIRS: ReadonlySet<string> = new Set([\n 'eu-west-1:eu-west-2',\n 'eu-west-2:eu-west-1',\n])\n\n/**\n * `stage` mirrors the featureflags `onlyDev` gate: the EU test pairs unlock only\n * on 'local'/'dev'. Omitting stage (or passing any non-dev stage) allows the\n * base set only, so prod never sees the dev pairs.\n */\nexport function isSupportedFailoverRegionPair(\n regionA: string | undefined,\n regionB: string | undefined,\n stage?: string,\n): boolean {\n if (!regionA || !regionB) return false\n const pair = `${regionA.toLowerCase()}:${regionB.toLowerCase()}`\n if (SUPPORTED_FAILOVER_REGION_PAIRS.has(pair)) return true\n const isDev = stage === 'local' || stage === 'dev'\n return isDev && DEV_FAILOVER_REGION_PAIRS.has(pair)\n}\n"],
|
|
5
|
+
"mappings": "AAiBO,MAAM,kCAAuD,oBAAI,IAAI;AAAA,EAC1E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,MAAM,4BAAiD,oBAAI,IAAI;AAAA,EAC7D;AAAA,EACA;AACF,CAAC;AAOM,SAAS,8BACd,SACA,SACA,OACS;AACT,MAAI,CAAC,WAAW,CAAC,QAAS,QAAO;AACjC,QAAM,OAAO,GAAG,QAAQ,YAAY,CAAC,IAAI,QAAQ,YAAY,CAAC;AAC9D,MAAI,gCAAgC,IAAI,IAAI,EAAG,QAAO;AACtD,QAAM,QAAQ,UAAU,WAAW,UAAU;AAC7C,SAAO,SAAS,0BAA0B,IAAI,IAAI;AACpD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -23,58 +23,3 @@ export declare const MAX_HARDWARE_PACKAGE_COUNT = 4;
|
|
|
23
23
|
* where the exporter starts honoring the filters) — this is the product rollout gate.
|
|
24
24
|
*/
|
|
25
25
|
export declare const OPTIMIZE_FILTERING_MIN_VERSION = "8.10.0-alpha1";
|
|
26
|
-
export declare const SENTRY: {
|
|
27
|
-
dsn: {
|
|
28
|
-
trial: string;
|
|
29
|
-
console: {
|
|
30
|
-
frontend: string;
|
|
31
|
-
backend: string;
|
|
32
|
-
};
|
|
33
|
-
accounts: {
|
|
34
|
-
frontend: string;
|
|
35
|
-
backend: string;
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
applicationKey: {
|
|
39
|
-
console: string;
|
|
40
|
-
accounts: string;
|
|
41
|
-
};
|
|
42
|
-
enabled: string[];
|
|
43
|
-
ignoreTransactions: string[];
|
|
44
|
-
ignoreErrors: string[];
|
|
45
|
-
config: {
|
|
46
|
-
tracesSampleRate: {
|
|
47
|
-
frontend: {
|
|
48
|
-
accounts: number[];
|
|
49
|
-
console: number[];
|
|
50
|
-
};
|
|
51
|
-
backend: {
|
|
52
|
-
accounts: number[];
|
|
53
|
-
console: number[];
|
|
54
|
-
};
|
|
55
|
-
};
|
|
56
|
-
replaysSessionSampleRate: {
|
|
57
|
-
frontend: {
|
|
58
|
-
accounts: number[];
|
|
59
|
-
console: number[];
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
replaysOnErrorSampleRate: {
|
|
63
|
-
frontend: {
|
|
64
|
-
accounts: number[];
|
|
65
|
-
console: number[];
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
profilesSampleRate: {
|
|
69
|
-
backend: {
|
|
70
|
-
accounts: number[];
|
|
71
|
-
console: number[];
|
|
72
|
-
};
|
|
73
|
-
frontend: {
|
|
74
|
-
accounts: number[];
|
|
75
|
-
console: number[];
|
|
76
|
-
};
|
|
77
|
-
};
|
|
78
|
-
};
|
|
79
|
-
configWeight: (env: string, values: number[]) => number;
|
|
80
|
-
};
|
|
@@ -19,87 +19,6 @@ const MINIMUM_EYEPAIRS = {
|
|
|
19
19
|
};
|
|
20
20
|
const MAX_HARDWARE_PACKAGE_COUNT = 4;
|
|
21
21
|
const OPTIMIZE_FILTERING_MIN_VERSION = "8.10.0-alpha1";
|
|
22
|
-
const SENTRY = {
|
|
23
|
-
dsn: {
|
|
24
|
-
trial: "https://a91625f8d3e1b34690588504ed020e14@o4507463051378688.ingest.de.sentry.io/4507463055376464",
|
|
25
|
-
console: {
|
|
26
|
-
frontend: "https://bbf8e6b13f91f7a49ab0b7f079ae8cc0@o132036.ingest.us.sentry.io/4507537062494208",
|
|
27
|
-
backend: "https://43de708d3ad0199f8c23975a3fd43aa0@o132036.ingest.us.sentry.io/4507537080188928"
|
|
28
|
-
},
|
|
29
|
-
accounts: {
|
|
30
|
-
frontend: "https://49c5d54e4d05418feb80cd4085fa32bd@o132036.ingest.us.sentry.io/4507537094541312",
|
|
31
|
-
backend: "https://d120a5f0acbf132b1edf58008c674164@o132036.ingest.us.sentry.io/4507537100505088"
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
applicationKey: {
|
|
35
|
-
console: "ccma-console-frontend-0xDEADBEEF",
|
|
36
|
-
accounts: "ccma-accounts-frontend-0xDEADBEEF"
|
|
37
|
-
},
|
|
38
|
-
enabled: ["dev", "int", "prod"],
|
|
39
|
-
ignoreTransactions: ["/events", "/assets", "/metrics"],
|
|
40
|
-
ignoreErrors: [
|
|
41
|
-
"No activity within 120000 milliseconds. No response received. Reconnecting.",
|
|
42
|
-
"network error",
|
|
43
|
-
"Load failed",
|
|
44
|
-
"Non-Error promise rejection captured with value: Could not clear consent from root domain.",
|
|
45
|
-
"NetworkError when attempting to fetch resource.",
|
|
46
|
-
"The initialization timeout of 3000ms has been hit before the network request has completed.",
|
|
47
|
-
"Non-Error promise rejection captured with value: Object Not Found Matching Id:3, MethodName:update, ParamCount:4",
|
|
48
|
-
"Non-Error promise rejection captured with value: Object Not Found Matching Id:3, MethodName:simulateEvent, ParamCount:1",
|
|
49
|
-
`Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.`,
|
|
50
|
-
`Failed to execute 'createPolicy' on 'TrustedTypePolicyFactory': Policy with name "default" already exists.`,
|
|
51
|
-
// SSE errors after reload
|
|
52
|
-
`TypeError: Error in input stream`,
|
|
53
|
-
`TypeError: Failed to fetch`,
|
|
54
|
-
`that is not 200. Aborting the connection.`,
|
|
55
|
-
`chars received. Reconnecting.`
|
|
56
|
-
],
|
|
57
|
-
// value pair: [preprod, prod]
|
|
58
|
-
config: {
|
|
59
|
-
tracesSampleRate: {
|
|
60
|
-
frontend: {
|
|
61
|
-
accounts: [0.1, 5e-3],
|
|
62
|
-
console: [0.2, 0.01]
|
|
63
|
-
},
|
|
64
|
-
backend: {
|
|
65
|
-
accounts: [0.1, 5e-3],
|
|
66
|
-
console: [2e-4, 5e-4]
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
replaysSessionSampleRate: {
|
|
70
|
-
frontend: {
|
|
71
|
-
accounts: [5e-3, 1e-3],
|
|
72
|
-
console: [5e-3, 1e-3]
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
replaysOnErrorSampleRate: {
|
|
76
|
-
frontend: {
|
|
77
|
-
accounts: [5e-3, 1e-3],
|
|
78
|
-
console: [5e-3, 1e-3]
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
profilesSampleRate: {
|
|
82
|
-
backend: {
|
|
83
|
-
accounts: [1e-3, 2e-4],
|
|
84
|
-
console: [1e-3, 2e-4]
|
|
85
|
-
},
|
|
86
|
-
frontend: {
|
|
87
|
-
accounts: [1e-3, 2e-4],
|
|
88
|
-
console: [1e-3, 2e-4]
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
configWeight: (env, values) => {
|
|
93
|
-
if (values && values.length === 2) {
|
|
94
|
-
if (env === "prod") {
|
|
95
|
-
return values[1];
|
|
96
|
-
} else {
|
|
97
|
-
return values[0];
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return 0.1;
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
22
|
export {
|
|
104
23
|
CONSOLE_API_USER_ID,
|
|
105
24
|
FIRSTNAME_LASTNAME_MAX_LENGTH,
|
|
@@ -110,7 +29,6 @@ export {
|
|
|
110
29
|
NAMES_OF_ENTERPRISE_SALESPLANS_WITH_SLEEPING_CLUSTERS,
|
|
111
30
|
OPTIMIZE_FILTERING_MIN_VERSION,
|
|
112
31
|
SECRETS_MAX_LENGTH,
|
|
113
|
-
SENTRY,
|
|
114
32
|
STARTING_PRICE_PER_MONTH_IN_EURO,
|
|
115
33
|
TEMPORARY_CLUSTER_NAME
|
|
116
34
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/constants/misc.const.ts"],
|
|
4
|
-
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nexport const CONSOLE_API_USER_ID = 'console-api'\nexport const TEMPORARY_CLUSTER_NAME = 'Get Started'\nexport type Stage = 'local' | 'dev' | 'int' | 'prod'\nexport const HOTBACKUP_MIN_CREATE_PERIOD = 1000 * 60 * 60 * 0.25 // 15 minutes\n\nexport const SECRETS_MAX_LENGTH = 4096\nexport const FIRSTNAME_LASTNAME_MAX_LENGTH = 255\n\nexport const STARTING_PRICE_PER_MONTH_IN_EURO = 99\n\nexport const MAX_LENGTH_CLUSTER_NAME = 50\n\nexport const NAMES_OF_ENTERPRISE_SALESPLANS_WITH_SLEEPING_CLUSTERS = [\n 'CELP with sleeping clusters',\n 'Camunda Partner',\n]\n\nexport const MINIMUM_EYEPAIRS = {\n CLUSTER_DELETION: 3,\n CLUSTER_GENERATION_UPDATE: 2,\n CLUSTER_PLAN_UPDATE: 2,\n CLUSTER_PLAN_TYPE_UPDATE: 2,\n CLUSTER_PLAN_MODIFICATION: 1,\n CLUSTER_MODIFICATION: 1,\n}\n\nexport const MAX_HARDWARE_PACKAGE_COUNT = 4\n\n/**\n * Minimum cluster (zeebe) version for the Optimize data-filters feature. Shared by\n * the c4 settings tile, the new-cluster default, and CRD spec generation so the gate\n * stays consistent. Stricter than the operator's own gate (Camunda >= 8.9.0-alpha1,\n * where the exporter starts honoring the filters) \u2014 this is the product rollout gate.\n */\nexport const OPTIMIZE_FILTERING_MIN_VERSION = '8.10.0-alpha1'\n
|
|
5
|
-
"mappings": "AAMO,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAE/B,MAAM,8BAA8B,MAAO,KAAK,KAAK;AAErD,MAAM,qBAAqB;AAC3B,MAAM,gCAAgC;AAEtC,MAAM,mCAAmC;AAEzC,MAAM,0BAA0B;AAEhC,MAAM,wDAAwD;AAAA,EACnE;AAAA,EACA;AACF;AAEO,MAAM,mBAAmB;AAAA,EAC9B,kBAAkB;AAAA,EAClB,2BAA2B;AAAA,EAC3B,qBAAqB;AAAA,EACrB,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,sBAAsB;AACxB;AAEO,MAAM,6BAA6B;AAQnC,MAAM,iCAAiC;
|
|
4
|
+
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nexport const CONSOLE_API_USER_ID = 'console-api'\nexport const TEMPORARY_CLUSTER_NAME = 'Get Started'\nexport type Stage = 'local' | 'dev' | 'int' | 'prod'\nexport const HOTBACKUP_MIN_CREATE_PERIOD = 1000 * 60 * 60 * 0.25 // 15 minutes\n\nexport const SECRETS_MAX_LENGTH = 4096\nexport const FIRSTNAME_LASTNAME_MAX_LENGTH = 255\n\nexport const STARTING_PRICE_PER_MONTH_IN_EURO = 99\n\nexport const MAX_LENGTH_CLUSTER_NAME = 50\n\nexport const NAMES_OF_ENTERPRISE_SALESPLANS_WITH_SLEEPING_CLUSTERS = [\n 'CELP with sleeping clusters',\n 'Camunda Partner',\n]\n\nexport const MINIMUM_EYEPAIRS = {\n CLUSTER_DELETION: 3,\n CLUSTER_GENERATION_UPDATE: 2,\n CLUSTER_PLAN_UPDATE: 2,\n CLUSTER_PLAN_TYPE_UPDATE: 2,\n CLUSTER_PLAN_MODIFICATION: 1,\n CLUSTER_MODIFICATION: 1,\n}\n\nexport const MAX_HARDWARE_PACKAGE_COUNT = 4\n\n/**\n * Minimum cluster (zeebe) version for the Optimize data-filters feature. Shared by\n * the c4 settings tile, the new-cluster default, and CRD spec generation so the gate\n * stays consistent. Stricter than the operator's own gate (Camunda >= 8.9.0-alpha1,\n * where the exporter starts honoring the filters) \u2014 this is the product rollout gate.\n */\nexport const OPTIMIZE_FILTERING_MIN_VERSION = '8.10.0-alpha1'\n"],
|
|
5
|
+
"mappings": "AAMO,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAE/B,MAAM,8BAA8B,MAAO,KAAK,KAAK;AAErD,MAAM,qBAAqB;AAC3B,MAAM,gCAAgC;AAEtC,MAAM,mCAAmC;AAEzC,MAAM,0BAA0B;AAEhC,MAAM,wDAAwD;AAAA,EACnE;AAAA,EACA;AACF;AAEO,MAAM,mBAAmB;AAAA,EAC9B,kBAAkB;AAAA,EAClB,2BAA2B;AAAA,EAC3B,qBAAqB;AAAA,EACrB,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,sBAAsB;AACxB;AAEO,MAAM,6BAA6B;AAQnC,MAAM,iCAAiC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -18,4 +18,9 @@ export interface BackupDto {
|
|
|
18
18
|
* backup has no `generationUuid` at all (legacy backups).
|
|
19
19
|
*/
|
|
20
20
|
generationName?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Link to the incident Slack channel, from the `incident-link` annotation
|
|
23
|
+
* on the Backup CR. Only set on internal (incident) backups.
|
|
24
|
+
*/
|
|
25
|
+
incidentLink?: string;
|
|
21
26
|
}
|
|
@@ -7,4 +7,9 @@ export interface ClusterPlanDto {
|
|
|
7
7
|
createdBy?: string;
|
|
8
8
|
createdByName?: string;
|
|
9
9
|
performanceExpectations?: string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Number of clusters on this plan. Populated by the list endpoint
|
|
12
|
+
* (`GET api/plans`); absent on responses that don't compute it.
|
|
13
|
+
*/
|
|
14
|
+
clusterCount?: number;
|
|
10
15
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ClusterPlanTypeCategory } from '../types/ClusterPlanTypeCategory.type.js';
|
|
2
2
|
import type { ClusterPlanDto } from './ClusterPlan.dto.js';
|
|
3
|
+
import type { ClusterLimits } from './SalesPlan.dto.js';
|
|
3
4
|
export interface ClusterPlanTypeDto {
|
|
4
5
|
uuid: string;
|
|
5
6
|
name: string;
|
|
@@ -12,4 +13,9 @@ export interface ClusterPlanTypeDto {
|
|
|
12
13
|
availabilityClass?: string;
|
|
13
14
|
deprecated?: boolean;
|
|
14
15
|
category: ClusterPlanTypeCategory;
|
|
16
|
+
/**
|
|
17
|
+
* Per-component data-retention overrides, set via the Set Limits action.
|
|
18
|
+
* Returned by the plan-type endpoints (the entity column is `@Expose`d).
|
|
19
|
+
*/
|
|
20
|
+
limits?: ClusterLimits;
|
|
15
21
|
}
|
|
@@ -75,7 +75,12 @@ export interface CommonClusterDto {
|
|
|
75
75
|
connectorsUrl?: string;
|
|
76
76
|
conditions?: Array<{
|
|
77
77
|
type: string;
|
|
78
|
+
/** k8s condition status: 'True' | 'False' | 'Unknown'. Present on the wire
|
|
79
|
+
* (the operator sets it); consumers use it to tell an active condition from
|
|
80
|
+
* a resolved one rather than relying on presence/absence alone. */
|
|
81
|
+
status?: string;
|
|
78
82
|
reason?: string;
|
|
83
|
+
message?: string;
|
|
79
84
|
lastTransitionTime?: string;
|
|
80
85
|
}>;
|
|
81
86
|
updateClusterStatus?: {
|
|
@@ -105,6 +110,17 @@ export interface CommonClusterDto {
|
|
|
105
110
|
* completed. Failover is only offered when this is true.
|
|
106
111
|
*/
|
|
107
112
|
secondaryBucketSyncCompleted?: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* True once this cluster's reservation slot has been transferred to a
|
|
115
|
+
* failover cluster. It remains visible but can never be resumed again.
|
|
116
|
+
*/
|
|
117
|
+
isFailoverSource?: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Stable durable identity shared by both halves of a failover pair. Used to
|
|
120
|
+
* pair a failover cluster with its source, and to derive the pre-staged
|
|
121
|
+
* `clone-backup-<stableId>` IAM role ARN.
|
|
122
|
+
*/
|
|
123
|
+
stableId?: string;
|
|
108
124
|
encryption?: string;
|
|
109
125
|
primaryEncryptionKeyId?: string | null;
|
|
110
126
|
secondaryEncryptionKeyId?: string | null;
|
|
@@ -138,6 +154,8 @@ export interface CommonClusterDto {
|
|
|
138
154
|
planType: ClusterPlanTypeDto;
|
|
139
155
|
numberOfAllocatedHwPackages?: number;
|
|
140
156
|
restoreInProgress?: boolean;
|
|
157
|
+
restoreFailed?: boolean;
|
|
158
|
+
failedRestoreId?: string;
|
|
141
159
|
overrideEnvVars?: {
|
|
142
160
|
zeebeBroker: string | undefined;
|
|
143
161
|
zeebeGateway: string | undefined;
|
|
@@ -39,17 +39,28 @@ export interface OrgListItemV2Dto {
|
|
|
39
39
|
created: string;
|
|
40
40
|
internal: boolean;
|
|
41
41
|
salesPlanType?: SalesPlanType;
|
|
42
|
+
/** Concrete plan name (`SalesPlan.name`), distinct from the tier `salesPlanType`. */
|
|
43
|
+
salesPlanName?: string;
|
|
42
44
|
salesForceId?: string;
|
|
43
|
-
/** Batched per page (spec §9.4 B3); absent if the count lookup failed. */
|
|
44
|
-
clusterCount?: number;
|
|
45
45
|
}
|
|
46
46
|
export interface ListOrganizationsV2Params extends CursorParams {
|
|
47
47
|
q?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Lucene-style query over the org fields (see `ORGANIZATION_SEARCH_FIELDS`).
|
|
50
|
+
* ANDed with `q`/`filter` server-side; a bare term behaves like `q`.
|
|
51
|
+
*/
|
|
52
|
+
query?: string;
|
|
48
53
|
sort?: 'name' | 'created' | 'internal';
|
|
49
54
|
order?: 'asc' | 'desc';
|
|
50
55
|
filter?: {
|
|
51
56
|
internal?: boolean;
|
|
52
|
-
|
|
57
|
+
/** Sales plan tiers (`SalesPlanType`); multi-select, matched with `IN (...)`. */
|
|
58
|
+
salesPlanTypes?: SalesPlanType[];
|
|
59
|
+
/**
|
|
60
|
+
* Concrete plan names (`SalesPlan.name`, distinct from the tier); backs the
|
|
61
|
+
* "Sales plan name" filter. Multi-select, matched with `IN (...)`.
|
|
62
|
+
*/
|
|
63
|
+
salesPlanNames?: string[];
|
|
53
64
|
/** ISO-8601 lower bound on `created` (age-bucket filters). */
|
|
54
65
|
createdAfter?: string;
|
|
55
66
|
/** ISO-8601 upper bound on `created` (age-bucket filters). */
|
|
@@ -87,7 +98,10 @@ export interface ClusterListItemV2Dto {
|
|
|
87
98
|
orgName: string;
|
|
88
99
|
/** Normalized server-side; augmented on the fly from the K8s watcher (§9.4 B1). */
|
|
89
100
|
status: string;
|
|
90
|
-
|
|
101
|
+
/** Plan type name (`ClusterPlanType.name`). Backs the "Plan type" column. */
|
|
102
|
+
planTypeName: string;
|
|
103
|
+
/** Concrete plan name (`ClusterPlan.name`). Backs the "Plan" column. */
|
|
104
|
+
planName?: string;
|
|
91
105
|
generation: string;
|
|
92
106
|
region: string;
|
|
93
107
|
/** Display-only; not a sort/filter key (§9.4 B2). */
|
|
@@ -104,18 +118,52 @@ export interface ClusterListItemV2Dto {
|
|
|
104
118
|
export type ClusterDetailV2Dto = ClusterListItemV2Dto;
|
|
105
119
|
export interface ListClustersV2Params extends CursorParams {
|
|
106
120
|
q?: string;
|
|
107
|
-
|
|
121
|
+
/**
|
|
122
|
+
* Lucene-style query over the cluster fields (see `CLUSTER_SEARCH_FIELDS`).
|
|
123
|
+
* ANDed with `q`/`filter` server-side; a bare term behaves like `q`.
|
|
124
|
+
*/
|
|
125
|
+
query?: string;
|
|
126
|
+
/**
|
|
127
|
+
* Server-side sort key. Beyond `name`/`created`, the clusters list also sorts
|
|
128
|
+
* by the DB-backed columns behind these list columns (the values are the
|
|
129
|
+
* frontend column `key`s, mapped to SQL expressions in the controller):
|
|
130
|
+
* `orgName` (owner id), `autoUpdate`, `planName`, `planTypeName`, `generation`,
|
|
131
|
+
* `channel`. `status`/`region` are intentionally excluded — they're computed
|
|
132
|
+
* from live K8s state / context config, not SQL columns.
|
|
133
|
+
*/
|
|
134
|
+
sort?: 'name' | 'created' | 'orgName' | 'autoUpdate' | 'planName' | 'planTypeName' | 'generation' | 'channel';
|
|
108
135
|
order?: 'asc' | 'desc';
|
|
109
136
|
filter?: {
|
|
110
137
|
status?: string;
|
|
111
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* Cluster plan TYPE name (maps to `planType.name`; legacy single-value
|
|
140
|
+
* param, still used by the plan-type detail page's cluster-distribution
|
|
141
|
+
* read — kept alongside `planTypeNames` rather than replaced).
|
|
142
|
+
*/
|
|
112
143
|
plan?: string;
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
144
|
+
/**
|
|
145
|
+
* Restrict to these plan TYPE names (`planType.name`); the Control
|
|
146
|
+
* clusters list's multi-select "Plan type" filter.
|
|
147
|
+
*/
|
|
148
|
+
planTypeNames?: string[];
|
|
149
|
+
/**
|
|
150
|
+
* Restrict to these concrete plan names (`plan.name`, the `ClusterPlan`
|
|
151
|
+
* entity — NOT the plan type); backs the Control clusters list's "Plan"
|
|
152
|
+
* filter, whose dropdown is sourced from `ClusterPlan` via
|
|
153
|
+
* `/clusters/parameters`. Corrected in #9325 (second pass): a prior fix
|
|
154
|
+
* on this branch mistakenly repointed this at `planType.name` to match a
|
|
155
|
+
* dropdown that was, at the time, wrongly sourced from `ClusterPlanType`
|
|
156
|
+
* — but the dropdown was the actual bug. Both the dropdown and this query
|
|
157
|
+
* now consistently reference `ClusterPlan`. Distinct from `planTypeNames`
|
|
158
|
+
* above, which is the separate "Plan type" filter over `ClusterPlanType`.
|
|
159
|
+
*/
|
|
160
|
+
planNames?: string[];
|
|
161
|
+
/** Restrict to these generation names (`generation.name`). */
|
|
162
|
+
generationNames?: string[];
|
|
163
|
+
/** Restrict to these region names (resolved via the k8s-context config). */
|
|
164
|
+
regions?: string[];
|
|
165
|
+
/** Restrict to these cloud providers (resolved via the k8s-context config). */
|
|
166
|
+
providers?: string[];
|
|
119
167
|
/** Exact k8s context uuid. */
|
|
120
168
|
k8sContext?: string;
|
|
121
169
|
orgId?: string;
|
|
@@ -134,8 +182,8 @@ export interface ListClustersV2Params extends CursorParams {
|
|
|
134
182
|
* "8.7" matches zeebe 8.7.x).
|
|
135
183
|
*/
|
|
136
184
|
minorVersion?: string;
|
|
137
|
-
/**
|
|
138
|
-
|
|
185
|
+
/** Restrict to these release channel names. */
|
|
186
|
+
channels?: string[];
|
|
139
187
|
/** ISO-8601 lower bound on `created` (e.g. "created in the last 7 days"). */
|
|
140
188
|
createdAfter?: string;
|
|
141
189
|
};
|
|
@@ -33,6 +33,12 @@ export interface K8sContext {
|
|
|
33
33
|
project_id?: string;
|
|
34
34
|
project_name?: string;
|
|
35
35
|
tsuga_cluster_id?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Number of clusters on this context. Set by `GET api/admin/k8sContexts` only
|
|
38
|
+
* when queried with `withClusterCounts` (requires the `multiCluster.admin`
|
|
39
|
+
* permission); absent otherwise.
|
|
40
|
+
*/
|
|
41
|
+
clusterCount?: number;
|
|
36
42
|
}
|
|
37
43
|
export interface K8sConfig {
|
|
38
44
|
kubernetes_context: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/dtos/Organization.dto.ts"],
|
|
4
|
-
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { OrganizationPermissions } from '../types/OrganizationPermission.type.js'\nimport type { SalesPlanType } from '../types/SalesPlanType.type.js'\nimport type { OrganizationToSalesPlanDto } from './OrganizationToSalesPlan.dto.js'\n\nexport type LicensingModelType = 'legacy' | '2025'\n\nexport const VALID_LICENSING_MODELS: readonly LicensingModelType[] = [\n 'legacy',\n '2025',\n] as const\n\nexport const LICENSING_MODEL_DISPLAY_NAMES: Record<LicensingModelType, string> =\n {\n legacy: 'Legacy (PI, DI, TU)',\n '2025': '2025 (PI+Tenant)',\n } as const\n\nexport interface OrganizationMetadata {\n clickedRequestPaidPlan?: boolean\n salesForceId?: string\n enterpriseDevOnly?: boolean\n awsOnly?: boolean\n licensingModel?: LicensingModelType\n autoJoin?: AutoJoinAssignment\n llm?: {\n tenantKey: string\n teamId: string\n created: number\n }\n}\n\nexport interface AutoJoinAssignment {\n departments: Array<{ hibobId: string; roles: string[] }>\n divisions: Array<{ hibobId: string; roles: string[] }>\n subdivisions: Array<{ hibobId: string; roles: string[] }>\n}\nexport interface OrganizationDto {\n uuid: string\n name: string\n organizationToSalesPlan?: OrganizationToSalesPlanDto\n permissions?: OrganizationPermissions\n metadata?: OrganizationMetadata\n created: Date\n internal: boolean\n}\n\nexport interface OrgOwner {\n owner: string\n email: string\n first: string\n last: string\n}\n\nexport interface OrgWithNameAndSalesPlan {\n uuid: string\n name: string | undefined\n salesPlanName: string | undefined\n salesPlanUuid: string | undefined\n salesPlanType: SalesPlanType | undefined\n}\n"],
|
|
4
|
+
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { OrganizationPermissions } from '../types/OrganizationPermission.type.js'\nimport type { SalesPlanType } from '../types/SalesPlanType.type.js'\nimport type { OrganizationToSalesPlanDto } from './OrganizationToSalesPlan.dto.js'\n\nexport type LicensingModelType = 'legacy' | '2025'\n\nexport const VALID_LICENSING_MODELS: readonly LicensingModelType[] = [\n 'legacy',\n '2025',\n] as const\n\nexport const LICENSING_MODEL_DISPLAY_NAMES: Record<LicensingModelType, string> =\n {\n legacy: 'Legacy (PI, DI, TU)',\n '2025': '2025 (PI+Tenant)',\n } as const\n\nexport interface OrganizationMetadata {\n clickedRequestPaidPlan?: boolean\n salesForceId?: string\n enterpriseDevOnly?: boolean\n awsOnly?: boolean\n licensingModel?: LicensingModelType\n autoJoin?: AutoJoinAssignment\n llm?: {\n tenantKey: string\n teamId: string\n created: number\n /** Epoch ms of the last key rotation \u2014 set when the tenant key is regenerated. */\n updated?: number\n }\n}\n\nexport interface AutoJoinAssignment {\n departments: Array<{ hibobId: string; roles: string[] }>\n divisions: Array<{ hibobId: string; roles: string[] }>\n subdivisions: Array<{ hibobId: string; roles: string[] }>\n}\nexport interface OrganizationDto {\n uuid: string\n name: string\n organizationToSalesPlan?: OrganizationToSalesPlanDto\n permissions?: OrganizationPermissions\n metadata?: OrganizationMetadata\n created: Date\n internal: boolean\n}\n\nexport interface OrgOwner {\n owner: string\n email: string\n first: string\n last: string\n}\n\nexport interface OrgWithNameAndSalesPlan {\n uuid: string\n name: string | undefined\n salesPlanName: string | undefined\n salesPlanUuid: string | undefined\n salesPlanType: SalesPlanType | undefined\n}\n"],
|
|
5
5
|
"mappings": "AAYO,MAAM,yBAAwD;AAAA,EACnE;AAAA,EACA;AACF;AAEO,MAAM,gCACX;AAAA,EACE,QAAQ;AAAA,EACR,QAAQ;AACV;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export type SanitySeverity = 'error' | 'warning';
|
|
2
|
+
/**
|
|
3
|
+
* Machine-applicable fix proposal attached to a violation. Edge fixes mutate
|
|
4
|
+
* `generationUuid`'s upgradeableFrom list; `edgeUuid` is the entry to
|
|
5
|
+
* add/remove. Names ride along for human-readable review UI.
|
|
6
|
+
*/
|
|
7
|
+
export type SanityFix = {
|
|
8
|
+
type: 'remove-upgrade-edge';
|
|
9
|
+
generationUuid: string;
|
|
10
|
+
generationName: string;
|
|
11
|
+
edgeUuid: string;
|
|
12
|
+
edgeName: string;
|
|
13
|
+
} | {
|
|
14
|
+
type: 'add-upgrade-edge';
|
|
15
|
+
generationUuid: string;
|
|
16
|
+
generationName: string;
|
|
17
|
+
edgeUuid: string;
|
|
18
|
+
edgeName: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: 'delete-generation';
|
|
21
|
+
generationUuid: string;
|
|
22
|
+
generationName: string;
|
|
23
|
+
/** When set, the delete must not be offered as selectable (e.g. clusters still run it). */
|
|
24
|
+
blockedReason?: string;
|
|
25
|
+
};
|
|
26
|
+
export interface SanityViolation {
|
|
27
|
+
ruleId: string;
|
|
28
|
+
severity: SanitySeverity;
|
|
29
|
+
message: string;
|
|
30
|
+
generationUuid?: string;
|
|
31
|
+
generationName?: string;
|
|
32
|
+
details?: Record<string, unknown>;
|
|
33
|
+
fix?: SanityFix;
|
|
34
|
+
}
|
|
35
|
+
export interface SanityRuleInfo {
|
|
36
|
+
id: string;
|
|
37
|
+
title: string;
|
|
38
|
+
severity: SanitySeverity;
|
|
39
|
+
}
|
|
40
|
+
export interface ReleaseTrainSanityReport {
|
|
41
|
+
/** ISO 8601 timestamp of when the check ran. */
|
|
42
|
+
checkedAt: string;
|
|
43
|
+
summary: {
|
|
44
|
+
errors: number;
|
|
45
|
+
warnings: number;
|
|
46
|
+
rules: number;
|
|
47
|
+
};
|
|
48
|
+
/** The rules that ran, in order. */
|
|
49
|
+
rules: SanityRuleInfo[];
|
|
50
|
+
violations: SanityViolation[];
|
|
51
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=ReleaseTrainSanity.dto.js.map
|
|
@@ -27,6 +27,17 @@ export interface ClusterLimits {
|
|
|
27
27
|
export interface Limits extends ClusterLimits {
|
|
28
28
|
maxMembers?: number;
|
|
29
29
|
hotBackup?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Overrides the operator's default retained count (3) for manual (on-demand)
|
|
32
|
+
* hot backups (ZeebeCluster spec.backup.retainedCount).
|
|
33
|
+
*/
|
|
34
|
+
hotBackupManualRetainedCount?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Overrides the operator's default retained count (3) for scheduled hot
|
|
37
|
+
* backups (BackupSchedule spec.successfulBackupsHistoryLimit /
|
|
38
|
+
* failedBackupsHistoryLimit).
|
|
39
|
+
*/
|
|
40
|
+
hotBackupScheduledRetainedCount?: number;
|
|
30
41
|
ipWhiteList?: boolean;
|
|
31
42
|
secureConnectivity?: boolean;
|
|
32
43
|
failover?: boolean;
|
|
@@ -71,6 +71,20 @@ function allSalesPlanLimits() {
|
|
|
71
71
|
description: "used to activate the hot backup functionality in organizations. default = not active",
|
|
72
72
|
isClusterBasedLimit: false
|
|
73
73
|
},
|
|
74
|
+
{
|
|
75
|
+
key: "hotBackupManualRetainedCount",
|
|
76
|
+
type: "number",
|
|
77
|
+
description: "overrides how many manual (on-demand) hot backups the operator retains before deleting the oldest. default = 3",
|
|
78
|
+
isClusterBasedLimit: false,
|
|
79
|
+
validate: (input) => Number.isInteger(input) && input >= 1
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
key: "hotBackupScheduledRetainedCount",
|
|
83
|
+
type: "number",
|
|
84
|
+
description: "overrides how many scheduled hot backups the operator retains before deleting the oldest. default = 3",
|
|
85
|
+
isClusterBasedLimit: false,
|
|
86
|
+
validate: (input) => Number.isInteger(input) && input >= 1
|
|
87
|
+
},
|
|
74
88
|
{
|
|
75
89
|
key: "ipWhiteList",
|
|
76
90
|
type: "boolean",
|