@cobaltcore-dev/aurora 2.1.1 → 2.2.0
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/README.md +31 -25
- package/dist/client/AuroraApp.d.ts +9 -2
- package/dist/client/context/AppConfigContext.d.ts +44 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.js +41221 -845
- package/dist/client/index.js.map +1 -1
- package/dist/client/trpcClient.d.ts +314 -0
- package/dist/client/utils/appConfigGating.d.ts +21 -0
- package/dist/server/index.d.ts +694 -3
- package/dist/server/index.js +1748 -722
- package/package.json +3 -3
- package/dist/client/AuthProvider-CVSAwW9f.mjs +0 -83
- package/dist/client/AuthProvider-CVSAwW9f.mjs.map +0 -1
- package/dist/client/ContentHeader-fKKZVu-o.mjs +0 -116
- package/dist/client/ContentHeader-fKKZVu-o.mjs.map +0 -1
- package/dist/client/DeleteFlavorModal-C4nAi7gY.mjs +0 -724
- package/dist/client/DeleteFlavorModal-C4nAi7gY.mjs.map +0 -1
- package/dist/client/DynamicBreadcrumbContext-CVcUQFou.mjs +0 -26
- package/dist/client/DynamicBreadcrumbContext-CVcUQFou.mjs.map +0 -1
- package/dist/client/FiltersInput-Becwxo_J.mjs +0 -85
- package/dist/client/FiltersInput-Becwxo_J.mjs.map +0 -1
- package/dist/client/FloatingIpActionModals-Cq10WljB.mjs +0 -466
- package/dist/client/FloatingIpActionModals-Cq10WljB.mjs.map +0 -1
- package/dist/client/RouteIdLevelDefaultError-DPF_x2tG.mjs +0 -26
- package/dist/client/RouteIdLevelDefaultError-DPF_x2tG.mjs.map +0 -1
- package/dist/client/Slot-CWb612-_.mjs +0 -28
- package/dist/client/Slot-CWb612-_.mjs.map +0 -1
- package/dist/client/SortInput-4g7nSTHW.mjs +0 -34
- package/dist/client/SortInput-4g7nSTHW.mjs.map +0 -1
- package/dist/client/StorageNotFound-B-zVinVD.mjs +0 -30
- package/dist/client/StorageNotFound-B-zVinVD.mjs.map +0 -1
- package/dist/client/TwoColumnDescriptionList-DKS42RKa.mjs +0 -28
- package/dist/client/TwoColumnDescriptionList-DKS42RKa.mjs.map +0 -1
- package/dist/client/_-CAsCx-Ay.mjs +0 -6
- package/dist/client/_-CAsCx-Ay.mjs.map +0 -1
- package/dist/client/_auth-SrDjHL6j.mjs +0 -12
- package/dist/client/_auth-SrDjHL6j.mjs.map +0 -1
- package/dist/client/_flavorId-BPvssEzn.mjs +0 -277
- package/dist/client/_flavorId-BPvssEzn.mjs.map +0 -1
- package/dist/client/_flavorId-CFUBcU-l.mjs +0 -27
- package/dist/client/_flavorId-CFUBcU-l.mjs.map +0 -1
- package/dist/client/_flavorId-CZcIp0Ih.mjs +0 -22
- package/dist/client/_flavorId-CZcIp0Ih.mjs.map +0 -1
- package/dist/client/_floatingIpId-B8r64AL9.mjs +0 -196
- package/dist/client/_floatingIpId-B8r64AL9.mjs.map +0 -1
- package/dist/client/_floatingIpId-lEobpOER.mjs +0 -26
- package/dist/client/_floatingIpId-lEobpOER.mjs.map +0 -1
- package/dist/client/_imageId-BAezmV0Y.mjs +0 -526
- package/dist/client/_imageId-BAezmV0Y.mjs.map +0 -1
- package/dist/client/_imageId-D-jqz3e3.mjs +0 -40
- package/dist/client/_imageId-D-jqz3e3.mjs.map +0 -1
- package/dist/client/_imageId-gMdrdnVt.mjs +0 -22
- package/dist/client/_imageId-gMdrdnVt.mjs.map +0 -1
- package/dist/client/_projectId-BYccdAtX.mjs +0 -77
- package/dist/client/_projectId-BYccdAtX.mjs.map +0 -1
- package/dist/client/_projectId-CBjZC1tv.mjs +0 -283
- package/dist/client/_projectId-CBjZC1tv.mjs.map +0 -1
- package/dist/client/_projectId-CLEa1zgw.mjs +0 -30
- package/dist/client/_projectId-CLEa1zgw.mjs.map +0 -1
- package/dist/client/_projectId-D3VOH5lN.mjs +0 -94
- package/dist/client/_projectId-D3VOH5lN.mjs.map +0 -1
- package/dist/client/_securityGroupId-BwgZnoiR.mjs +0 -29
- package/dist/client/_securityGroupId-BwgZnoiR.mjs.map +0 -1
- package/dist/client/_securityGroupId-Cz2NUHdB.mjs +0 -1819
- package/dist/client/_securityGroupId-Cz2NUHdB.mjs.map +0 -1
- package/dist/client/_serviceType-DS8DxsrP.mjs +0 -20
- package/dist/client/_serviceType-DS8DxsrP.mjs.map +0 -1
- package/dist/client/_serviceType-M8d9rOT6.mjs +0 -6
- package/dist/client/_serviceType-M8d9rOT6.mjs.map +0 -1
- package/dist/client/_storageType-BNpP1A2N.mjs +0 -13
- package/dist/client/_storageType-BNpP1A2N.mjs.map +0 -1
- package/dist/client/_storageType-BxSGKhAI.mjs +0 -15
- package/dist/client/_storageType-BxSGKhAI.mjs.map +0 -1
- package/dist/client/_storageType-DZYCmiLt.mjs +0 -30
- package/dist/client/_storageType-DZYCmiLt.mjs.map +0 -1
- package/dist/client/_storageType-UqAMP-8d.mjs +0 -859
- package/dist/client/_storageType-UqAMP-8d.mjs.map +0 -1
- package/dist/client/_storageType-u51_7OwJ.mjs +0 -7
- package/dist/client/_storageType-u51_7OwJ.mjs.map +0 -1
- package/dist/client/about-BmQTyLWc.mjs +0 -92
- package/dist/client/about-BmQTyLWc.mjs.map +0 -1
- package/dist/client/assets/__mocks__/svgMock.d.ts +0 -3
- package/dist/client/aurora-CIml-f2f.mjs +0 -19
- package/dist/client/aurora-CIml-f2f.mjs.map +0 -1
- package/dist/client/build-WuxXRAqf.mjs +0 -14530
- package/dist/client/build-WuxXRAqf.mjs.map +0 -1
- package/dist/client/cn-DM4Cy3jv.mjs +0 -10
- package/dist/client/cn-DM4Cy3jv.mjs.map +0 -1
- package/dist/client/flavors-CJVSNz6R.mjs +0 -15
- package/dist/client/flavors-CJVSNz6R.mjs.map +0 -1
- package/dist/client/flavors-CflJDIEH.mjs +0 -667
- package/dist/client/flavors-CflJDIEH.mjs.map +0 -1
- package/dist/client/flavors-DWMZ6TuJ.mjs +0 -8
- package/dist/client/flavors-DWMZ6TuJ.mjs.map +0 -1
- package/dist/client/floatingips-Cz9k80cc.mjs +0 -8
- package/dist/client/floatingips-Cz9k80cc.mjs.map +0 -1
- package/dist/client/floatingips-DXnRlLvV.mjs +0 -551
- package/dist/client/floatingips-DXnRlLvV.mjs.map +0 -1
- package/dist/client/floatingips-HRbuLxiN.mjs +0 -22
- package/dist/client/floatingips-HRbuLxiN.mjs.map +0 -1
- package/dist/client/floatingips-nN1kQmsu.mjs +0 -14
- package/dist/client/floatingips-nN1kQmsu.mjs.map +0 -1
- package/dist/client/formatBytes-CZv_XyCY.mjs +0 -38
- package/dist/client/formatBytes-CZv_XyCY.mjs.map +0 -1
- package/dist/client/helpers-1PpYf-fC.mjs +0 -6
- package/dist/client/helpers-1PpYf-fC.mjs.map +0 -1
- package/dist/client/hooks-D0yKIumu.mjs +0 -22
- package/dist/client/hooks-D0yKIumu.mjs.map +0 -1
- package/dist/client/imageHelpers-DBhL2ebL.mjs +0 -1272
- package/dist/client/imageHelpers-DBhL2ebL.mjs.map +0 -1
- package/dist/client/images-BsylWUiH.mjs +0 -2011
- package/dist/client/images-BsylWUiH.mjs.map +0 -1
- package/dist/client/images-NBf2bV43.mjs +0 -8
- package/dist/client/images-NBf2bV43.mjs.map +0 -1
- package/dist/client/images-zQq1nSVv.mjs +0 -15
- package/dist/client/images-zQq1nSVv.mjs.map +0 -1
- package/dist/client/md-kvaGCNAK.mjs +0 -336
- package/dist/client/md-kvaGCNAK.mjs.map +0 -1
- package/dist/client/network-DuZm76BZ.mjs +0 -8
- package/dist/client/network-DuZm76BZ.mjs.map +0 -1
- package/dist/client/objects-BudUAfWY.mjs +0 -12909
- package/dist/client/objects-BudUAfWY.mjs.map +0 -1
- package/dist/client/objects-Dc7sKUr8.mjs +0 -67
- package/dist/client/objects-Dc7sKUr8.mjs.map +0 -1
- package/dist/client/objects-Dw7oeTq2.mjs +0 -80
- package/dist/client/objects-Dw7oeTq2.mjs.map +0 -1
- package/dist/client/objects-_g7nGIn5.mjs +0 -25
- package/dist/client/objects-_g7nGIn5.mjs.map +0 -1
- package/dist/client/objects-eBxvY6_n.mjs +0 -78
- package/dist/client/objects-eBxvY6_n.mjs.map +0 -1
- package/dist/client/projects-yiK0HGSA.mjs +0 -7
- package/dist/client/projects-yiK0HGSA.mjs.map +0 -1
- package/dist/client/routeInfo-DP3v74Wg.mjs +0 -19
- package/dist/client/routeInfo-DP3v74Wg.mjs.map +0 -1
- package/dist/client/routes-CJj7SR_K.mjs +0 -10
- package/dist/client/routes-CJj7SR_K.mjs.map +0 -1
- package/dist/client/routes-xofA3ksU.mjs +0 -110
- package/dist/client/routes-xofA3ksU.mjs.map +0 -1
- package/dist/client/securitygroups-CSmsBzUb.mjs +0 -581
- package/dist/client/securitygroups-CSmsBzUb.mjs.map +0 -1
- package/dist/client/securitygroups-CtKne8UQ.mjs +0 -8
- package/dist/client/securitygroups-CtKne8UQ.mjs.map +0 -1
- package/dist/client/securitygroups-T7kaNFEp.mjs +0 -15
- package/dist/client/securitygroups-T7kaNFEp.mjs.map +0 -1
- package/dist/client/securitygroups-WLB1_IM6.mjs +0 -22
- package/dist/client/securitygroups-WLB1_IM6.mjs.map +0 -1
- package/dist/client/securitygroups-o0IXZM6S.mjs +0 -14
- package/dist/client/securitygroups-o0IXZM6S.mjs.map +0 -1
- package/dist/client/serviceCatalog-B3lKWC9V.mjs +0 -6
- package/dist/client/serviceCatalog-B3lKWC9V.mjs.map +0 -1
- package/dist/client/services-D1PbooD1.mjs +0 -6
- package/dist/client/services-D1PbooD1.mjs.map +0 -1
- package/dist/client/services-DEMVtFyn.mjs +0 -9
- package/dist/client/services-DEMVtFyn.mjs.map +0 -1
- package/dist/client/storageProviders-CJ5rOh13.mjs +0 -15
- package/dist/client/storageProviders-CJ5rOh13.mjs.map +0 -1
- package/dist/client/trpcClient-D7gpR7YG.mjs +0 -71
- package/dist/client/trpcClient-D7gpR7YG.mjs.map +0 -1
- package/dist/client/useBreadcrumbs-ha3IlaxX.mjs +0 -54
- package/dist/client/useBreadcrumbs-ha3IlaxX.mjs.map +0 -1
- package/dist/client/useErrorTranslation-Dc0eE8Zt.mjs +0 -83
- package/dist/client/useErrorTranslation-Dc0eE8Zt.mjs.map +0 -1
- package/dist/client/useModal-DCs1OJh7.mjs +0 -12
- package/dist/client/useModal-DCs1OJh7.mjs.map +0 -1
- package/dist/client/useModalTracking-BYd37pXm.mjs +0 -37
- package/dist/client/useModalTracking-BYd37pXm.mjs.map +0 -1
- package/dist/client/useProjectId-DBc5lpoU.mjs +0 -11
- package/dist/client/useProjectId-DBc5lpoU.mjs.map +0 -1
- package/dist/client/useSecurityGroupPermissions--hK4aR8Y.mjs +0 -294
- package/dist/client/useSecurityGroupPermissions--hK4aR8Y.mjs.map +0 -1
- package/dist/client/useSetBreadcrumb-tn7lBaQV.mjs +0 -19
- package/dist/client/useSetBreadcrumb-tn7lBaQV.mjs.map +0 -1
- package/dist/client/utils/trpcErrors.d.ts +0 -13
package/dist/server/index.d.ts
CHANGED
|
@@ -2,13 +2,13 @@ import * as fastify from 'fastify';
|
|
|
2
2
|
import { FastifyInstance, FastifyRequest, FastifyReply } from 'fastify';
|
|
3
3
|
import * as _trpc_server from '@trpc/server';
|
|
4
4
|
import { AnyRouter } from '@trpc/server';
|
|
5
|
+
import * as zod from 'zod';
|
|
6
|
+
import { z, ZodTypeAny, output } from 'zod';
|
|
5
7
|
import * as _cobaltcore_dev_signal_openstack from '@cobaltcore-dev/signal-openstack';
|
|
6
8
|
import { SignalOpenstackSessionType } from '@cobaltcore-dev/signal-openstack';
|
|
7
9
|
import * as _cobaltcore_dev_signal_openstack_dist_types_client from '@cobaltcore-dev/signal-openstack/dist/types/client';
|
|
8
10
|
import * as fastify_types_type_provider from 'fastify/types/type-provider';
|
|
9
11
|
import * as http from 'http';
|
|
10
|
-
import * as zod from 'zod';
|
|
11
|
-
import { z, ZodTypeAny, output } from 'zod';
|
|
12
12
|
import * as _trpc_server_http from '@trpc/server/http';
|
|
13
13
|
|
|
14
14
|
declare module "fastify" {
|
|
@@ -17,6 +17,133 @@ declare module "fastify" {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Canonical list of the UI extension points a consumer can register components for.
|
|
22
|
+
*
|
|
23
|
+
* Declared as a runtime array (rather than a bare type) so it can drive both the
|
|
24
|
+
* {@link SlotName} type and runtime validation (see `auroraAppConfigSchema`). Kept in this
|
|
25
|
+
* JSX-free module so the server build can consume it; a compile-time guard in
|
|
26
|
+
* `client/AuroraApp.tsx` keeps it in lockstep with the keys of the `Slots` type.
|
|
27
|
+
*/
|
|
28
|
+
declare const SLOT_NAMES: readonly ["logo", "login", "pageFooter", "sideNavBanner", "serviceBadge", "servicePageActions", "projectsBanner", "serviceBanner"];
|
|
29
|
+
/** Names of the UI extension points a consumer can register components for. */
|
|
30
|
+
type SlotName = (typeof SLOT_NAMES)[number];
|
|
31
|
+
/**
|
|
32
|
+
* An open, consumer-typed bag of flags/values. Aurora never introspects its contents.
|
|
33
|
+
* Consumers narrow this via the generic parameters on {@link AuroraAppConfig}.
|
|
34
|
+
*/
|
|
35
|
+
type FeatureBag = Record<string, unknown>;
|
|
36
|
+
/**
|
|
37
|
+
* Per-slot runtime data bag, e.g. `{ text: "Maintenance tonight" }` for a banner slot.
|
|
38
|
+
* Carried in {@link AppConfigBase.slotSettings}; it never affects whether a slot renders.
|
|
39
|
+
*/
|
|
40
|
+
type SlotConfigEntry = Record<string, unknown>;
|
|
41
|
+
/**
|
|
42
|
+
* Map of service key to that service's settings bag. Supplied by the consumer via the
|
|
43
|
+
* `TServices` generic to get precise, typo-checked per-service settings. Each entry is the
|
|
44
|
+
* settings object itself (a flat bag), symmetric with {@link SlotConfigEntry}.
|
|
45
|
+
*/
|
|
46
|
+
type ServiceFeatureMap = Record<string, FeatureBag>;
|
|
47
|
+
/**
|
|
48
|
+
* Visibility rule for one dimension (services or slots). The base layer declares the
|
|
49
|
+
* posture explicitly:
|
|
50
|
+
* - `allowlist`: nothing shows unless its key is in `allow`.
|
|
51
|
+
* - `denylist`: everything shows unless its key is in `deny`.
|
|
52
|
+
*
|
|
53
|
+
* Omit the rule entirely for default-open (every service/slot shows). Because posture is a
|
|
54
|
+
* discriminated union on `mode`, only the list that posture makes meaningful is accepted,
|
|
55
|
+
* so an `allow` and a `deny` list can never be present at the same time. Switching posture
|
|
56
|
+
* is a one-field edit: change `mode` and rename the list.
|
|
57
|
+
*/
|
|
58
|
+
type Visibility<TKey extends string = string> = {
|
|
59
|
+
mode: "allowlist";
|
|
60
|
+
allow: TKey[];
|
|
61
|
+
} | {
|
|
62
|
+
mode: "denylist";
|
|
63
|
+
deny: TKey[];
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Membership change a domain override applies on top of the base layer's visibility.
|
|
67
|
+
* `enable` makes a key visible for the domain, `disable` hides it, regardless of the base
|
|
68
|
+
* posture. Overrides carry no `mode`, so they can never flip the posture the base pinned.
|
|
69
|
+
* When a key is in both, `disable` wins.
|
|
70
|
+
*/
|
|
71
|
+
interface VisibilityDelta<TKey extends string = string> {
|
|
72
|
+
enable?: TKey[];
|
|
73
|
+
disable?: TKey[];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The base configuration layer. The resolved result shares this shape (overrides folded in
|
|
77
|
+
* and stripped out). Visibility and settings are independent axes: `services`/`slots` decide
|
|
78
|
+
* what renders, while `serviceSettings`/`slotSettings`/`features` carry data and never gate.
|
|
79
|
+
*/
|
|
80
|
+
interface AppConfigBase<TServices extends ServiceFeatureMap = ServiceFeatureMap, TFeatures extends FeatureBag = FeatureBag> {
|
|
81
|
+
/** Which services render. Omit for default-open (all catalog services). */
|
|
82
|
+
services?: Visibility<Extract<keyof TServices, string>>;
|
|
83
|
+
/** Which slots render. Omit for default-open (all registered slots). */
|
|
84
|
+
slots?: Visibility<SlotName>;
|
|
85
|
+
/** Per-service settings bags, independent of visibility. Deep-merged across overrides. */
|
|
86
|
+
serviceSettings?: {
|
|
87
|
+
[K in keyof TServices]?: TServices[K];
|
|
88
|
+
};
|
|
89
|
+
/** Per-slot data bags (e.g. banner text), independent of visibility. Deep-merged across overrides. */
|
|
90
|
+
slotSettings?: Partial<Record<SlotName, SlotConfigEntry>>;
|
|
91
|
+
/** App-wide, consumer-typed feature flags. Deep-merged across overrides. */
|
|
92
|
+
features?: TFeatures;
|
|
93
|
+
}
|
|
94
|
+
/** A base layer applies to every domain; an override applies only to matching domains. */
|
|
95
|
+
interface DomainOverride<TServices extends ServiceFeatureMap = ServiceFeatureMap, TFeatures extends FeatureBag = FeatureBag> {
|
|
96
|
+
/** Human-readable label. Used only for logging and debugging. */
|
|
97
|
+
name?: string;
|
|
98
|
+
/**
|
|
99
|
+
* Matched against the user's home domain name. A string is compiled to a RegExp;
|
|
100
|
+
* a RegExp literal is preferred because it is validated at compile time.
|
|
101
|
+
*/
|
|
102
|
+
domain: string | RegExp;
|
|
103
|
+
/** Enable/disable services for this domain. Cannot change the base posture. */
|
|
104
|
+
services?: VisibilityDelta<Extract<keyof TServices, string>>;
|
|
105
|
+
/** Enable/disable slots for this domain. Cannot change the base posture. */
|
|
106
|
+
slots?: VisibilityDelta<SlotName>;
|
|
107
|
+
serviceSettings?: {
|
|
108
|
+
[K in keyof TServices]?: TServices[K];
|
|
109
|
+
};
|
|
110
|
+
slotSettings?: Partial<Record<SlotName, SlotConfigEntry>>;
|
|
111
|
+
features?: TFeatures;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The full domain configuration a consumer passes to `createServer`.
|
|
115
|
+
*
|
|
116
|
+
* The top-level fields form the base layer that applies to every domain. `overrides` are
|
|
117
|
+
* applied on top for domains whose name matches, in array order, with later matches winning.
|
|
118
|
+
* `services`/`slots` fold each override's enable/disable deltas onto the base-pinned posture;
|
|
119
|
+
* `serviceSettings`/`slotSettings`/`features` deep-merge per key.
|
|
120
|
+
*
|
|
121
|
+
* Everything is optional: with no config at all, the resolved result is empty and Aurora
|
|
122
|
+
* behaves in its default-open state (all implemented services, all registered slots).
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* const config: AuroraAppConfig = {
|
|
127
|
+
* services: { mode: "allowlist", allow: ["ceph-containers", "images"] },
|
|
128
|
+
* slots: { mode: "denylist", deny: ["projectsBanner"] },
|
|
129
|
+
* serviceSettings: { images: { showAdvancedOptions: true } },
|
|
130
|
+
* features: { termsAndConditionsUrl: "https://example.com/terms" },
|
|
131
|
+
* overrides: [
|
|
132
|
+
* { name: "acme", domain: /^acme-/, services: { enable: ["flavors"], disable: ["images"] } },
|
|
133
|
+
* ],
|
|
134
|
+
* }
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
interface AuroraAppConfig<TServices extends ServiceFeatureMap = ServiceFeatureMap, TFeatures extends FeatureBag = FeatureBag> extends AppConfigBase<TServices, TFeatures> {
|
|
138
|
+
overrides?: DomainOverride<TServices, TFeatures>[];
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* The merged result for a single domain: a base layer with the overrides already applied and
|
|
142
|
+
* stripped out. This is what the BFF returns to the client and what custom BFF procedures
|
|
143
|
+
* read from `ctx.appConfig`. It never contains `overrides` or a RegExp, so it is wire-safe.
|
|
144
|
+
*/
|
|
145
|
+
type ResolvedAppConfig<TServices extends ServiceFeatureMap = ServiceFeatureMap, TFeatures extends FeatureBag = FeatureBag> = AppConfigBase<TServices, TFeatures>;
|
|
146
|
+
|
|
20
147
|
interface AuroraServerConfig {
|
|
21
148
|
bffEndpoint?: string;
|
|
22
149
|
viteRoot?: string;
|
|
@@ -85,10 +212,128 @@ interface AuroraServerConfig {
|
|
|
85
212
|
* ```
|
|
86
213
|
*/
|
|
87
214
|
routers?: AnyRouter[];
|
|
215
|
+
/**
|
|
216
|
+
* Optional per-domain configuration. When provided, the BFF resolves it for the
|
|
217
|
+
* logged-in user's home domain and exposes the merged result via the `appConfig.get`
|
|
218
|
+
* procedure and on `ctx.appConfig` for custom procedures. When omitted, Aurora stays
|
|
219
|
+
* in its default-open state (all implemented services, all registered slots).
|
|
220
|
+
*/
|
|
221
|
+
appConfig?: AuroraAppConfig;
|
|
88
222
|
}
|
|
89
223
|
|
|
90
224
|
declare function createServer(config: AuroraServerConfig): Promise<FastifyInstance>;
|
|
91
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Resolve a consumer's domain configuration for one domain.
|
|
228
|
+
*
|
|
229
|
+
* Starts from the base layer (the config's top-level fields), then applies every override
|
|
230
|
+
* whose `domain` matches `domainName`, in array order. For each override: `services` and
|
|
231
|
+
* `slots` deltas fold onto the base-pinned posture (see {@link foldVisibility}); and
|
|
232
|
+
* `serviceSettings`, `slotSettings`, `features` deep-merge per key. When `domainName` is
|
|
233
|
+
* undefined (e.g. an unauthenticated request, where no domain is known yet) no override
|
|
234
|
+
* matches and only the base layer is returned.
|
|
235
|
+
*
|
|
236
|
+
* The returned object never contains `overrides` or any RegExp, so it is safe to send over
|
|
237
|
+
* the wire to the client.
|
|
238
|
+
*/
|
|
239
|
+
declare function resolveAppConfig<TServices extends ServiceFeatureMap = ServiceFeatureMap, TFeatures extends FeatureBag = FeatureBag>(config: AuroraAppConfig<TServices, TFeatures>, domainName?: string): ResolvedAppConfig<TServices, TFeatures>;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Builds a Zod schema for the {@link AuroraAppConfig} envelope, for validating configuration
|
|
243
|
+
* loaded at runtime from an external source (e.g. a Kubernetes ConfigMap mounted as YAML).
|
|
244
|
+
*
|
|
245
|
+
* The envelope (service/slot visibility, settings maps, overrides, domain matchers) is owned
|
|
246
|
+
* and validated by Aurora. The consumer-specific `features` bag is validated by the schema
|
|
247
|
+
* passed in `featuresSchema`; when omitted it is accepted as an open record. Per-service
|
|
248
|
+
* `features` are always accepted as an open record (consumers validate those themselves).
|
|
249
|
+
*
|
|
250
|
+
* Visibility is a discriminated union on `mode`, so `allowlist` accepts only an `allow` list
|
|
251
|
+
* and `denylist` only a `deny` list; the two can never coexist. `domain` is validated as a
|
|
252
|
+
* string (YAML cannot express a RegExp) and checked to be a compilable regular expression.
|
|
253
|
+
* Unknown keys are rejected so a typo in a ConfigMap fails fast at boot.
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* ```ts
|
|
257
|
+
* const sciFeatures = z.object({ termsAndConditionsUrl: z.string().optional() })
|
|
258
|
+
* const schema = auroraAppConfigSchema(sciFeatures)
|
|
259
|
+
* const appConfig = schema.parse(parsedYaml)
|
|
260
|
+
* ```
|
|
261
|
+
*/
|
|
262
|
+
declare function auroraAppConfigSchema(featuresSchema?: z.ZodType): z.ZodObject<{
|
|
263
|
+
overrides: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
264
|
+
name: z.ZodOptional<z.ZodString>;
|
|
265
|
+
domain: z.ZodString;
|
|
266
|
+
services: z.ZodOptional<z.ZodObject<{
|
|
267
|
+
enable: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
268
|
+
disable: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
269
|
+
}, z.core.$strict>>;
|
|
270
|
+
slots: z.ZodOptional<z.ZodObject<{
|
|
271
|
+
enable: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
272
|
+
logo: "logo";
|
|
273
|
+
login: "login";
|
|
274
|
+
pageFooter: "pageFooter";
|
|
275
|
+
sideNavBanner: "sideNavBanner";
|
|
276
|
+
serviceBadge: "serviceBadge";
|
|
277
|
+
servicePageActions: "servicePageActions";
|
|
278
|
+
projectsBanner: "projectsBanner";
|
|
279
|
+
serviceBanner: "serviceBanner";
|
|
280
|
+
}>>>;
|
|
281
|
+
disable: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
282
|
+
logo: "logo";
|
|
283
|
+
login: "login";
|
|
284
|
+
pageFooter: "pageFooter";
|
|
285
|
+
sideNavBanner: "sideNavBanner";
|
|
286
|
+
serviceBadge: "serviceBadge";
|
|
287
|
+
servicePageActions: "servicePageActions";
|
|
288
|
+
projectsBanner: "projectsBanner";
|
|
289
|
+
serviceBanner: "serviceBanner";
|
|
290
|
+
}>>>;
|
|
291
|
+
}, z.core.$strict>>;
|
|
292
|
+
serviceSettings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
293
|
+
slotSettings: z.ZodOptional<z.ZodObject<{
|
|
294
|
+
[x: string]: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
295
|
+
}, z.core.$strict>>;
|
|
296
|
+
features: z.ZodOptional<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
297
|
+
}, z.core.$strict>>>;
|
|
298
|
+
services: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
299
|
+
mode: z.ZodLiteral<"allowlist">;
|
|
300
|
+
allow: z.ZodArray<z.ZodString>;
|
|
301
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
302
|
+
mode: z.ZodLiteral<"denylist">;
|
|
303
|
+
deny: z.ZodArray<z.ZodString>;
|
|
304
|
+
}, z.core.$strict>], "mode">>;
|
|
305
|
+
slots: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
306
|
+
mode: z.ZodLiteral<"allowlist">;
|
|
307
|
+
allow: z.ZodArray<z.ZodEnum<{
|
|
308
|
+
logo: "logo";
|
|
309
|
+
login: "login";
|
|
310
|
+
pageFooter: "pageFooter";
|
|
311
|
+
sideNavBanner: "sideNavBanner";
|
|
312
|
+
serviceBadge: "serviceBadge";
|
|
313
|
+
servicePageActions: "servicePageActions";
|
|
314
|
+
projectsBanner: "projectsBanner";
|
|
315
|
+
serviceBanner: "serviceBanner";
|
|
316
|
+
}>>;
|
|
317
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
318
|
+
mode: z.ZodLiteral<"denylist">;
|
|
319
|
+
deny: z.ZodArray<z.ZodEnum<{
|
|
320
|
+
logo: "logo";
|
|
321
|
+
login: "login";
|
|
322
|
+
pageFooter: "pageFooter";
|
|
323
|
+
sideNavBanner: "sideNavBanner";
|
|
324
|
+
serviceBadge: "serviceBadge";
|
|
325
|
+
servicePageActions: "servicePageActions";
|
|
326
|
+
projectsBanner: "projectsBanner";
|
|
327
|
+
serviceBanner: "serviceBanner";
|
|
328
|
+
}>>;
|
|
329
|
+
}, z.core.$strict>], "mode">>;
|
|
330
|
+
serviceSettings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
331
|
+
slotSettings: z.ZodOptional<z.ZodObject<{
|
|
332
|
+
[x: string]: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
333
|
+
}, z.core.$strict>>;
|
|
334
|
+
features: z.ZodOptional<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
335
|
+
}, z.core.$strict>;
|
|
336
|
+
|
|
92
337
|
interface AuroraContext {
|
|
93
338
|
validateSession: () => boolean;
|
|
94
339
|
openstack?: Awaited<SignalOpenstackSessionType>;
|
|
@@ -113,6 +358,12 @@ interface AuroraPortalContext extends AuroraContext {
|
|
|
113
358
|
cephRegion?: string;
|
|
114
359
|
/** Parsed list of image metadata keys excluded from the UI */
|
|
115
360
|
imageMetadataExcludedProperties: string[];
|
|
361
|
+
/**
|
|
362
|
+
* Per-domain configuration resolved for the current user's home domain. Undefined when
|
|
363
|
+
* the consumer supplied no `appConfig`. For unauthenticated requests this holds the
|
|
364
|
+
* base layer only (no domain is known yet).
|
|
365
|
+
*/
|
|
366
|
+
appConfig?: ResolvedAppConfig;
|
|
116
367
|
createSession: (params: {
|
|
117
368
|
user: string;
|
|
118
369
|
password: string;
|
|
@@ -148,6 +399,7 @@ declare const protectedProcedure: _trpc_server.TRPCProcedureBuilder<AuroraPortal
|
|
|
148
399
|
}) => Promise<Awaited<_cobaltcore_dev_signal_openstack.SignalOpenstackSessionType | null>>;
|
|
149
400
|
identityEndpoint: string;
|
|
150
401
|
cephRegion: string | undefined;
|
|
402
|
+
appConfig: ResolvedAppConfig | undefined;
|
|
151
403
|
terminateSession: () => Promise<void>;
|
|
152
404
|
validateSession: () => boolean;
|
|
153
405
|
openstack: {
|
|
@@ -322,6 +574,7 @@ declare const projectScopedProcedure: _trpc_server.TRPCProcedureBuilder<AuroraPo
|
|
|
322
574
|
}) => Promise<Awaited<_cobaltcore_dev_signal_openstack.SignalOpenstackSessionType | null>>;
|
|
323
575
|
identityEndpoint: string;
|
|
324
576
|
cephRegion: string | undefined;
|
|
577
|
+
appConfig: ResolvedAppConfig | undefined;
|
|
325
578
|
terminateSession: () => Promise<void>;
|
|
326
579
|
validateSession: () => boolean;
|
|
327
580
|
openstack: {
|
|
@@ -498,6 +751,7 @@ declare const domainScopedProcedure: _trpc_server.TRPCProcedureBuilder<AuroraPor
|
|
|
498
751
|
}) => Promise<Awaited<_cobaltcore_dev_signal_openstack.SignalOpenstackSessionType | null>>;
|
|
499
752
|
identityEndpoint: string;
|
|
500
753
|
cephRegion: string | undefined;
|
|
754
|
+
appConfig: ResolvedAppConfig | undefined;
|
|
501
755
|
terminateSession: () => Promise<void>;
|
|
502
756
|
validateSession: () => boolean;
|
|
503
757
|
openstack: {
|
|
@@ -653,12 +907,148 @@ interface ListVersionsOutput {
|
|
|
653
907
|
maxKeys?: number;
|
|
654
908
|
}
|
|
655
909
|
|
|
910
|
+
declare const ExternalFixedIpSchema: z.ZodObject<{
|
|
911
|
+
subnet_id: z.ZodString;
|
|
912
|
+
ip_address: z.ZodString;
|
|
913
|
+
}, z.core.$strip>;
|
|
914
|
+
declare const ExternalGatewayInfoSchema: z.ZodObject<{
|
|
915
|
+
network_id: z.ZodString;
|
|
916
|
+
enable_snat: z.ZodOptional<z.ZodBoolean>;
|
|
917
|
+
external_fixed_ips: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
918
|
+
subnet_id: z.ZodString;
|
|
919
|
+
ip_address: z.ZodString;
|
|
920
|
+
}, z.core.$strip>>>;
|
|
921
|
+
qos_policy_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
922
|
+
}, z.core.$strip>;
|
|
923
|
+
declare const RouterSchema: z.ZodObject<{
|
|
924
|
+
id: z.ZodString;
|
|
925
|
+
name: z.ZodDefault<z.ZodString>;
|
|
926
|
+
description: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
927
|
+
status: z.ZodString;
|
|
928
|
+
admin_state_up: z.ZodBoolean;
|
|
929
|
+
external_gateway_info: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
930
|
+
network_id: z.ZodString;
|
|
931
|
+
enable_snat: z.ZodOptional<z.ZodBoolean>;
|
|
932
|
+
external_fixed_ips: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
933
|
+
subnet_id: z.ZodString;
|
|
934
|
+
ip_address: z.ZodString;
|
|
935
|
+
}, z.core.$strip>>>;
|
|
936
|
+
qos_policy_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
937
|
+
}, z.core.$strip>>>;
|
|
938
|
+
routes: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
939
|
+
destination: z.ZodString;
|
|
940
|
+
nexthop: z.ZodString;
|
|
941
|
+
}, z.core.$strip>>>>;
|
|
942
|
+
distributed: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
943
|
+
ha: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
944
|
+
enable_ndp_proxy: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
945
|
+
enable_default_route_bfd: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
946
|
+
enable_default_route_ecmp: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
947
|
+
availability_zone_hints: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
948
|
+
availability_zones: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
949
|
+
flavor_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
950
|
+
project_id: z.ZodString;
|
|
951
|
+
tenant_id: z.ZodOptional<z.ZodString>;
|
|
952
|
+
revision_number: z.ZodOptional<z.ZodNumber>;
|
|
953
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
954
|
+
created_at: z.ZodOptional<z.core.$ZodBranded<z.ZodString, "ISO8601Timestamp", "out">>;
|
|
955
|
+
updated_at: z.ZodOptional<z.core.$ZodBranded<z.ZodString, "ISO8601Timestamp", "out">>;
|
|
956
|
+
}, z.core.$strip>;
|
|
957
|
+
declare const RouterPortSchema: z.ZodObject<{
|
|
958
|
+
id: z.ZodString;
|
|
959
|
+
name: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
960
|
+
network_id: z.ZodString;
|
|
961
|
+
device_owner: z.ZodString;
|
|
962
|
+
status: z.ZodEnum<{
|
|
963
|
+
DOWN: "DOWN";
|
|
964
|
+
ACTIVE: "ACTIVE";
|
|
965
|
+
BUILD: "BUILD";
|
|
966
|
+
ERROR: "ERROR";
|
|
967
|
+
}>;
|
|
968
|
+
admin_state_up: z.ZodOptional<z.ZodBoolean>;
|
|
969
|
+
mac_address: z.ZodOptional<z.ZodString>;
|
|
970
|
+
fixed_ips: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
971
|
+
subnet_id: z.ZodString;
|
|
972
|
+
ip_address: z.ZodString;
|
|
973
|
+
}, z.core.$strip>>>>;
|
|
974
|
+
}, z.core.$strip>;
|
|
975
|
+
type Router = z.infer<typeof RouterSchema>;
|
|
976
|
+
type ExternalGatewayInfo = z.infer<typeof ExternalGatewayInfoSchema>;
|
|
977
|
+
type RouterPort = z.infer<typeof RouterPortSchema>;
|
|
978
|
+
type ExternalFixedIp = z.infer<typeof ExternalFixedIpSchema>;
|
|
979
|
+
/**
|
|
980
|
+
* Router as returned by `list`: the external gateway is enriched with the external network name
|
|
981
|
+
* and the subnet names of its fixed IPs, and the router's private networks are added.
|
|
982
|
+
* Names are undefined when they can't be resolved.
|
|
983
|
+
*/
|
|
984
|
+
type RouterListItem = Omit<Router, "external_gateway_info"> & {
|
|
985
|
+
external_gateway_info?: (Omit<ExternalGatewayInfo, "external_fixed_ips"> & {
|
|
986
|
+
network_name?: string;
|
|
987
|
+
external_fixed_ips?: Array<ExternalFixedIp & {
|
|
988
|
+
subnet_name?: string;
|
|
989
|
+
}>;
|
|
990
|
+
}) | null;
|
|
991
|
+
/**
|
|
992
|
+
* Internal (private) networks the router is attached to via interfaces, deduplicated.
|
|
993
|
+
* `[]` = no interfaces, `undefined` = interfaces could not be resolved.
|
|
994
|
+
*/
|
|
995
|
+
private_networks?: RouterPrivateNetwork[];
|
|
996
|
+
};
|
|
997
|
+
/** Router as returned by `getById`: external gateway enriched with network and subnet names. */
|
|
998
|
+
type RouterDetails = Omit<RouterListItem, "private_networks">;
|
|
999
|
+
/** A private network attached to a router via an interface port. */
|
|
1000
|
+
interface RouterPrivateNetwork {
|
|
1001
|
+
network_id: string;
|
|
1002
|
+
network_name?: string;
|
|
1003
|
+
}
|
|
1004
|
+
/** Router interface as returned to the UI: a port enriched with network name and subnet name/CIDR */
|
|
1005
|
+
interface RouterInterface {
|
|
1006
|
+
port_id: string;
|
|
1007
|
+
port_name: string;
|
|
1008
|
+
network_id: string;
|
|
1009
|
+
/** Undefined when the network name can't be resolved */
|
|
1010
|
+
network_name?: string;
|
|
1011
|
+
device_owner: string;
|
|
1012
|
+
status: RouterPort["status"];
|
|
1013
|
+
admin_state_up?: boolean;
|
|
1014
|
+
mac_address?: string;
|
|
1015
|
+
fixed_ips: Array<{
|
|
1016
|
+
subnet_id: string;
|
|
1017
|
+
subnet_name?: string;
|
|
1018
|
+
subnet_cidr?: string;
|
|
1019
|
+
ip_address: string;
|
|
1020
|
+
}>;
|
|
1021
|
+
}
|
|
1022
|
+
/** Which router-related Neutron extensions are enabled — drives conditional UI sections */
|
|
1023
|
+
interface RouterExtensionFlags {
|
|
1024
|
+
dvr: boolean;
|
|
1025
|
+
l3Ha: boolean;
|
|
1026
|
+
extraRoute: boolean;
|
|
1027
|
+
extGwMode: boolean;
|
|
1028
|
+
ndpProxy: boolean;
|
|
1029
|
+
externalGatewayMultihoming: boolean;
|
|
1030
|
+
availabilityZone: boolean;
|
|
1031
|
+
}
|
|
1032
|
+
|
|
656
1033
|
declare const buildBaseRouter: (policyDir: string) => _trpc_server.TRPCBuiltRouter<{
|
|
657
1034
|
ctx: AuroraPortalContext;
|
|
658
1035
|
meta: object;
|
|
659
1036
|
errorShape: _trpc_server.TRPCDefaultErrorShape;
|
|
660
1037
|
transformer: false;
|
|
661
1038
|
}, _trpc_server.TRPCDecorateCreateRouterOptions<{
|
|
1039
|
+
appConfig: _trpc_server.TRPCBuiltRouter<{
|
|
1040
|
+
ctx: AuroraPortalContext;
|
|
1041
|
+
meta: object;
|
|
1042
|
+
errorShape: _trpc_server.TRPCDefaultErrorShape;
|
|
1043
|
+
transformer: false;
|
|
1044
|
+
}, _trpc_server.TRPCDecorateCreateRouterOptions<{
|
|
1045
|
+
get: _trpc_server.TRPCQueryProcedure<{
|
|
1046
|
+
input: void;
|
|
1047
|
+
output: ResolvedAppConfig;
|
|
1048
|
+
meta: object;
|
|
1049
|
+
}>;
|
|
1050
|
+
}>>;
|
|
1051
|
+
}> & _trpc_server.TRPCDecorateCreateRouterOptions<{
|
|
662
1052
|
network: _trpc_server.TRPCBuiltRouter<{
|
|
663
1053
|
ctx: AuroraPortalContext;
|
|
664
1054
|
meta: object;
|
|
@@ -1237,6 +1627,292 @@ declare const buildBaseRouter: (policyDir: string) => _trpc_server.TRPCBuiltRout
|
|
|
1237
1627
|
meta: object;
|
|
1238
1628
|
}>;
|
|
1239
1629
|
};
|
|
1630
|
+
routers: {
|
|
1631
|
+
list: _trpc_server.TRPCQueryProcedure<{
|
|
1632
|
+
input: {
|
|
1633
|
+
project_id: string;
|
|
1634
|
+
name?: string | undefined;
|
|
1635
|
+
description?: string | undefined;
|
|
1636
|
+
admin_state_up?: boolean | undefined;
|
|
1637
|
+
sort_key?: "id" | "name" | "project_id" | "status" | "tenant_id" | "admin_state_up" | "flavor_id" | undefined;
|
|
1638
|
+
sort_dir?: "asc" | "desc" | undefined;
|
|
1639
|
+
tags?: string | undefined;
|
|
1640
|
+
tags_any?: string | undefined;
|
|
1641
|
+
not_tags?: string | undefined;
|
|
1642
|
+
not_tags_any?: string | undefined;
|
|
1643
|
+
searchTerm?: string | undefined;
|
|
1644
|
+
status?: string | undefined;
|
|
1645
|
+
has_gateway?: boolean | undefined;
|
|
1646
|
+
};
|
|
1647
|
+
output: RouterListItem[];
|
|
1648
|
+
meta: object;
|
|
1649
|
+
}>;
|
|
1650
|
+
getById: _trpc_server.TRPCQueryProcedure<{
|
|
1651
|
+
input: {
|
|
1652
|
+
project_id: string;
|
|
1653
|
+
router_id: string;
|
|
1654
|
+
};
|
|
1655
|
+
output: RouterDetails;
|
|
1656
|
+
meta: object;
|
|
1657
|
+
}>;
|
|
1658
|
+
create: _trpc_server.TRPCMutationProcedure<{
|
|
1659
|
+
input: {
|
|
1660
|
+
project_id: string;
|
|
1661
|
+
name: string;
|
|
1662
|
+
description?: string | undefined;
|
|
1663
|
+
admin_state_up?: boolean | undefined;
|
|
1664
|
+
external_gateway_info?: {
|
|
1665
|
+
network_id: string;
|
|
1666
|
+
enable_snat?: boolean | undefined;
|
|
1667
|
+
external_fixed_ips?: {
|
|
1668
|
+
subnet_id?: string | undefined;
|
|
1669
|
+
ip_address?: string | undefined;
|
|
1670
|
+
}[] | undefined;
|
|
1671
|
+
} | undefined;
|
|
1672
|
+
distributed?: boolean | undefined;
|
|
1673
|
+
ha?: boolean | undefined;
|
|
1674
|
+
availability_zone_hints?: string[] | undefined;
|
|
1675
|
+
enable_ndp_proxy?: boolean | undefined;
|
|
1676
|
+
};
|
|
1677
|
+
output: {
|
|
1678
|
+
id: string;
|
|
1679
|
+
name: string;
|
|
1680
|
+
description: string;
|
|
1681
|
+
status: string;
|
|
1682
|
+
admin_state_up: boolean;
|
|
1683
|
+
routes: {
|
|
1684
|
+
destination: string;
|
|
1685
|
+
nexthop: string;
|
|
1686
|
+
}[];
|
|
1687
|
+
project_id: string;
|
|
1688
|
+
external_gateway_info?: {
|
|
1689
|
+
network_id: string;
|
|
1690
|
+
enable_snat?: boolean | undefined;
|
|
1691
|
+
external_fixed_ips?: {
|
|
1692
|
+
subnet_id: string;
|
|
1693
|
+
ip_address: string;
|
|
1694
|
+
}[] | undefined;
|
|
1695
|
+
qos_policy_id?: string | null | undefined;
|
|
1696
|
+
} | null | undefined;
|
|
1697
|
+
distributed?: boolean | null | undefined;
|
|
1698
|
+
ha?: boolean | null | undefined;
|
|
1699
|
+
enable_ndp_proxy?: boolean | null | undefined;
|
|
1700
|
+
enable_default_route_bfd?: boolean | null | undefined;
|
|
1701
|
+
enable_default_route_ecmp?: boolean | null | undefined;
|
|
1702
|
+
availability_zone_hints?: string[] | undefined;
|
|
1703
|
+
availability_zones?: string[] | undefined;
|
|
1704
|
+
flavor_id?: string | null | undefined;
|
|
1705
|
+
tenant_id?: string | undefined;
|
|
1706
|
+
revision_number?: number | undefined;
|
|
1707
|
+
tags?: string[] | undefined;
|
|
1708
|
+
created_at?: (string & zod.$brand<"ISO8601Timestamp">) | undefined;
|
|
1709
|
+
updated_at?: (string & zod.$brand<"ISO8601Timestamp">) | undefined;
|
|
1710
|
+
};
|
|
1711
|
+
meta: object;
|
|
1712
|
+
}>;
|
|
1713
|
+
update: _trpc_server.TRPCMutationProcedure<{
|
|
1714
|
+
input: {
|
|
1715
|
+
project_id: string;
|
|
1716
|
+
router_id: string;
|
|
1717
|
+
name?: string | undefined;
|
|
1718
|
+
description?: string | undefined;
|
|
1719
|
+
admin_state_up?: boolean | undefined;
|
|
1720
|
+
routes?: {
|
|
1721
|
+
destination: string;
|
|
1722
|
+
nexthop: string;
|
|
1723
|
+
}[] | undefined;
|
|
1724
|
+
distributed?: boolean | undefined;
|
|
1725
|
+
ha?: boolean | undefined;
|
|
1726
|
+
enable_ndp_proxy?: boolean | undefined;
|
|
1727
|
+
};
|
|
1728
|
+
output: {
|
|
1729
|
+
id: string;
|
|
1730
|
+
name: string;
|
|
1731
|
+
description: string;
|
|
1732
|
+
status: string;
|
|
1733
|
+
admin_state_up: boolean;
|
|
1734
|
+
routes: {
|
|
1735
|
+
destination: string;
|
|
1736
|
+
nexthop: string;
|
|
1737
|
+
}[];
|
|
1738
|
+
project_id: string;
|
|
1739
|
+
external_gateway_info?: {
|
|
1740
|
+
network_id: string;
|
|
1741
|
+
enable_snat?: boolean | undefined;
|
|
1742
|
+
external_fixed_ips?: {
|
|
1743
|
+
subnet_id: string;
|
|
1744
|
+
ip_address: string;
|
|
1745
|
+
}[] | undefined;
|
|
1746
|
+
qos_policy_id?: string | null | undefined;
|
|
1747
|
+
} | null | undefined;
|
|
1748
|
+
distributed?: boolean | null | undefined;
|
|
1749
|
+
ha?: boolean | null | undefined;
|
|
1750
|
+
enable_ndp_proxy?: boolean | null | undefined;
|
|
1751
|
+
enable_default_route_bfd?: boolean | null | undefined;
|
|
1752
|
+
enable_default_route_ecmp?: boolean | null | undefined;
|
|
1753
|
+
availability_zone_hints?: string[] | undefined;
|
|
1754
|
+
availability_zones?: string[] | undefined;
|
|
1755
|
+
flavor_id?: string | null | undefined;
|
|
1756
|
+
tenant_id?: string | undefined;
|
|
1757
|
+
revision_number?: number | undefined;
|
|
1758
|
+
tags?: string[] | undefined;
|
|
1759
|
+
created_at?: (string & zod.$brand<"ISO8601Timestamp">) | undefined;
|
|
1760
|
+
updated_at?: (string & zod.$brand<"ISO8601Timestamp">) | undefined;
|
|
1761
|
+
};
|
|
1762
|
+
meta: object;
|
|
1763
|
+
}>;
|
|
1764
|
+
setGateway: _trpc_server.TRPCMutationProcedure<{
|
|
1765
|
+
input: {
|
|
1766
|
+
project_id: string;
|
|
1767
|
+
router_id: string;
|
|
1768
|
+
external_gateway_info: {
|
|
1769
|
+
network_id: string;
|
|
1770
|
+
enable_snat?: boolean | undefined;
|
|
1771
|
+
external_fixed_ips?: {
|
|
1772
|
+
subnet_id?: string | undefined;
|
|
1773
|
+
ip_address?: string | undefined;
|
|
1774
|
+
}[] | undefined;
|
|
1775
|
+
};
|
|
1776
|
+
};
|
|
1777
|
+
output: {
|
|
1778
|
+
id: string;
|
|
1779
|
+
name: string;
|
|
1780
|
+
description: string;
|
|
1781
|
+
status: string;
|
|
1782
|
+
admin_state_up: boolean;
|
|
1783
|
+
routes: {
|
|
1784
|
+
destination: string;
|
|
1785
|
+
nexthop: string;
|
|
1786
|
+
}[];
|
|
1787
|
+
project_id: string;
|
|
1788
|
+
external_gateway_info?: {
|
|
1789
|
+
network_id: string;
|
|
1790
|
+
enable_snat?: boolean | undefined;
|
|
1791
|
+
external_fixed_ips?: {
|
|
1792
|
+
subnet_id: string;
|
|
1793
|
+
ip_address: string;
|
|
1794
|
+
}[] | undefined;
|
|
1795
|
+
qos_policy_id?: string | null | undefined;
|
|
1796
|
+
} | null | undefined;
|
|
1797
|
+
distributed?: boolean | null | undefined;
|
|
1798
|
+
ha?: boolean | null | undefined;
|
|
1799
|
+
enable_ndp_proxy?: boolean | null | undefined;
|
|
1800
|
+
enable_default_route_bfd?: boolean | null | undefined;
|
|
1801
|
+
enable_default_route_ecmp?: boolean | null | undefined;
|
|
1802
|
+
availability_zone_hints?: string[] | undefined;
|
|
1803
|
+
availability_zones?: string[] | undefined;
|
|
1804
|
+
flavor_id?: string | null | undefined;
|
|
1805
|
+
tenant_id?: string | undefined;
|
|
1806
|
+
revision_number?: number | undefined;
|
|
1807
|
+
tags?: string[] | undefined;
|
|
1808
|
+
created_at?: (string & zod.$brand<"ISO8601Timestamp">) | undefined;
|
|
1809
|
+
updated_at?: (string & zod.$brand<"ISO8601Timestamp">) | undefined;
|
|
1810
|
+
};
|
|
1811
|
+
meta: object;
|
|
1812
|
+
}>;
|
|
1813
|
+
clearGateway: _trpc_server.TRPCMutationProcedure<{
|
|
1814
|
+
input: {
|
|
1815
|
+
project_id: string;
|
|
1816
|
+
router_id: string;
|
|
1817
|
+
};
|
|
1818
|
+
output: {
|
|
1819
|
+
id: string;
|
|
1820
|
+
name: string;
|
|
1821
|
+
description: string;
|
|
1822
|
+
status: string;
|
|
1823
|
+
admin_state_up: boolean;
|
|
1824
|
+
routes: {
|
|
1825
|
+
destination: string;
|
|
1826
|
+
nexthop: string;
|
|
1827
|
+
}[];
|
|
1828
|
+
project_id: string;
|
|
1829
|
+
external_gateway_info?: {
|
|
1830
|
+
network_id: string;
|
|
1831
|
+
enable_snat?: boolean | undefined;
|
|
1832
|
+
external_fixed_ips?: {
|
|
1833
|
+
subnet_id: string;
|
|
1834
|
+
ip_address: string;
|
|
1835
|
+
}[] | undefined;
|
|
1836
|
+
qos_policy_id?: string | null | undefined;
|
|
1837
|
+
} | null | undefined;
|
|
1838
|
+
distributed?: boolean | null | undefined;
|
|
1839
|
+
ha?: boolean | null | undefined;
|
|
1840
|
+
enable_ndp_proxy?: boolean | null | undefined;
|
|
1841
|
+
enable_default_route_bfd?: boolean | null | undefined;
|
|
1842
|
+
enable_default_route_ecmp?: boolean | null | undefined;
|
|
1843
|
+
availability_zone_hints?: string[] | undefined;
|
|
1844
|
+
availability_zones?: string[] | undefined;
|
|
1845
|
+
flavor_id?: string | null | undefined;
|
|
1846
|
+
tenant_id?: string | undefined;
|
|
1847
|
+
revision_number?: number | undefined;
|
|
1848
|
+
tags?: string[] | undefined;
|
|
1849
|
+
created_at?: (string & zod.$brand<"ISO8601Timestamp">) | undefined;
|
|
1850
|
+
updated_at?: (string & zod.$brand<"ISO8601Timestamp">) | undefined;
|
|
1851
|
+
};
|
|
1852
|
+
meta: object;
|
|
1853
|
+
}>;
|
|
1854
|
+
addInterface: _trpc_server.TRPCMutationProcedure<{
|
|
1855
|
+
input: {
|
|
1856
|
+
project_id: string;
|
|
1857
|
+
router_id: string;
|
|
1858
|
+
subnet_id?: string | undefined;
|
|
1859
|
+
port_id?: string | undefined;
|
|
1860
|
+
};
|
|
1861
|
+
output: {
|
|
1862
|
+
id: string;
|
|
1863
|
+
port_id: string;
|
|
1864
|
+
subnet_id?: string | undefined;
|
|
1865
|
+
subnet_ids?: string[] | undefined;
|
|
1866
|
+
network_id?: string | undefined;
|
|
1867
|
+
project_id?: string | undefined;
|
|
1868
|
+
tenant_id?: string | undefined;
|
|
1869
|
+
tags?: string[] | undefined;
|
|
1870
|
+
};
|
|
1871
|
+
meta: object;
|
|
1872
|
+
}>;
|
|
1873
|
+
removeInterface: _trpc_server.TRPCMutationProcedure<{
|
|
1874
|
+
input: {
|
|
1875
|
+
project_id: string;
|
|
1876
|
+
router_id: string;
|
|
1877
|
+
subnet_id?: string | undefined;
|
|
1878
|
+
port_id?: string | undefined;
|
|
1879
|
+
};
|
|
1880
|
+
output: {
|
|
1881
|
+
id: string;
|
|
1882
|
+
port_id: string;
|
|
1883
|
+
subnet_id?: string | undefined;
|
|
1884
|
+
subnet_ids?: string[] | undefined;
|
|
1885
|
+
network_id?: string | undefined;
|
|
1886
|
+
project_id?: string | undefined;
|
|
1887
|
+
tenant_id?: string | undefined;
|
|
1888
|
+
tags?: string[] | undefined;
|
|
1889
|
+
};
|
|
1890
|
+
meta: object;
|
|
1891
|
+
}>;
|
|
1892
|
+
delete: _trpc_server.TRPCMutationProcedure<{
|
|
1893
|
+
input: {
|
|
1894
|
+
project_id: string;
|
|
1895
|
+
router_id: string;
|
|
1896
|
+
};
|
|
1897
|
+
output: boolean;
|
|
1898
|
+
meta: object;
|
|
1899
|
+
}>;
|
|
1900
|
+
listInterfaces: _trpc_server.TRPCQueryProcedure<{
|
|
1901
|
+
input: {
|
|
1902
|
+
project_id: string;
|
|
1903
|
+
router_id: string;
|
|
1904
|
+
};
|
|
1905
|
+
output: RouterInterface[];
|
|
1906
|
+
meta: object;
|
|
1907
|
+
}>;
|
|
1908
|
+
listExtensions: _trpc_server.TRPCQueryProcedure<{
|
|
1909
|
+
input: {
|
|
1910
|
+
project_id: string;
|
|
1911
|
+
};
|
|
1912
|
+
output: RouterExtensionFlags;
|
|
1913
|
+
meta: object;
|
|
1914
|
+
}>;
|
|
1915
|
+
};
|
|
1240
1916
|
}>>;
|
|
1241
1917
|
}> & _trpc_server.TRPCDecorateCreateRouterOptions<{
|
|
1242
1918
|
project: _trpc_server.TRPCBuiltRouter<{
|
|
@@ -1877,6 +2553,19 @@ declare const buildBaseRouter: (policyDir: string) => _trpc_server.TRPCBuiltRout
|
|
|
1877
2553
|
input: {
|
|
1878
2554
|
project_id: string;
|
|
1879
2555
|
};
|
|
2556
|
+
output: {
|
|
2557
|
+
id: string;
|
|
2558
|
+
access: string;
|
|
2559
|
+
user_id: string;
|
|
2560
|
+
project_id: string;
|
|
2561
|
+
};
|
|
2562
|
+
meta: object;
|
|
2563
|
+
}>;
|
|
2564
|
+
reveal: _trpc_server.TRPCMutationProcedure<{
|
|
2565
|
+
input: {
|
|
2566
|
+
project_id: string;
|
|
2567
|
+
credentialId: string;
|
|
2568
|
+
};
|
|
1880
2569
|
output: {
|
|
1881
2570
|
id: string;
|
|
1882
2571
|
access: string;
|
|
@@ -1909,6 +2598,8 @@ declare const buildBaseRouter: (policyDir: string) => _trpc_server.TRPCBuiltRout
|
|
|
1909
2598
|
};
|
|
1910
2599
|
output: {
|
|
1911
2600
|
hasCredentials: boolean;
|
|
2601
|
+
endpoint: string;
|
|
2602
|
+
region: string;
|
|
1912
2603
|
};
|
|
1913
2604
|
meta: object;
|
|
1914
2605
|
}>;
|
|
@@ -3736,4 +4427,4 @@ declare function validateOpenstackService(service: unknown, serviceName: string)
|
|
|
3736
4427
|
*/
|
|
3737
4428
|
declare const parseOrThrow: <S extends ZodTypeAny>(schema: S, data: unknown, context: string) => output<S>;
|
|
3738
4429
|
|
|
3739
|
-
export { type AuroraRouter, type AuroraRouterWithCustom, type AuroraServerConfig, auroraRouter, createServer, domainScopedInputSchema, domainScopedProcedure, parseOrThrow, projectScopedInputSchema, projectScopedProcedure, protectedProcedure, publicProcedure, validateOpenstackService };
|
|
4430
|
+
export { type AppConfigBase, type AuroraAppConfig, type AuroraRouter, type AuroraRouterWithCustom, type AuroraServerConfig, type DomainOverride, type FeatureBag, type ResolvedAppConfig, SLOT_NAMES, type ServiceFeatureMap, type SlotConfigEntry, type SlotName, type Visibility, type VisibilityDelta, auroraAppConfigSchema, auroraRouter, createServer, domainScopedInputSchema, domainScopedProcedure, parseOrThrow, projectScopedInputSchema, projectScopedProcedure, protectedProcedure, publicProcedure, resolveAppConfig, validateOpenstackService };
|