setCreating(true)}
- />
- )
-
- return (
- <>
-
-
- {creating && setCreating(false)} />}
- {editing && (
- setEditing(null)} />
- )}
-
-
- >
- )
-}
diff --git a/app/pages/project/networking/VpcPage/tabs/VpcSystemRoutesTab.tsx b/app/pages/project/networking/VpcPage/tabs/VpcSystemRoutesTab.tsx
deleted file mode 100644
index 98a94b1dd5..0000000000
--- a/app/pages/project/networking/VpcPage/tabs/VpcSystemRoutesTab.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, you can obtain one at https://mozilla.org/MPL/2.0/.
- *
- * Copyright Oxide Computer Company
- */
-import { TypeValueCell, useQueryTable } from '@oxide/table'
-import { EmptyMessage } from '@oxide/ui'
-
-import { useVpcSelector } from 'app/hooks'
-
-const EmptyState = () => (
- {}}
- />
-)
-
-export const VpcSystemRoutesTab = () => {
- const vpcSelector = useVpcSelector()
- const { Table, Column } = useQueryTable('vpcRouterRouteList', {
- query: { ...vpcSelector, router: 'system' },
- })
-
- return (
- }>
-
-
-
-
-
- )
-}
diff --git a/libs/api-mocks/msw/db.ts b/libs/api-mocks/msw/db.ts
index afbe2eec9a..480aa56098 100644
--- a/libs/api-mocks/msw/db.ts
+++ b/libs/api-mocks/msw/db.ts
@@ -100,30 +100,6 @@ export const lookup = {
return vpc
},
- vpcRouter({ router: id, ...vpcSelector }: PP.VpcRouter): Json {
- if (!id) throw notFoundErr
-
- if (isUuid(id)) return lookupById(db.vpcRouters, id)
-
- const vpc = lookup.vpc(vpcSelector)
- const router = db.vpcRouters.find((s) => s.vpc_id === vpc.id && s.name === id)
- if (!router) throw notFoundErr
-
- return router
- },
- vpcRouterRoute({ route: id, ...routerSelector }: PP.RouterRoute): Json {
- if (!id) throw notFoundErr
-
- if (isUuid(id)) return lookupById(db.vpcRouterRoutes, id)
-
- const router = lookup.vpcRouter(routerSelector)
- const route = db.vpcRouterRoutes.find(
- (s) => s.vpc_router_id === router.id && s.name === id
- )
- if (!route) throw notFoundErr
-
- return route
- },
vpcSubnet({ subnet: id, ...vpcSelector }: PP.VpcSubnet): Json {
if (!id) throw notFoundErr
@@ -224,8 +200,6 @@ const initDb = {
sshKeys: [...mock.sshKeys],
users: [...mock.users],
vpcFirewallRules: [...mock.defaultFirewallRules],
- vpcRouterRoutes: [mock.vpcRouterRoute],
- vpcRouters: [mock.vpcRouter],
vpcs: [mock.vpc],
vpcSubnets: [mock.vpcSubnet],
}
diff --git a/libs/api-mocks/msw/handlers.ts b/libs/api-mocks/msw/handlers.ts
index fafbe6827c..ccdce18d38 100644
--- a/libs/api-mocks/msw/handlers.ts
+++ b/libs/api-mocks/msw/handlers.ts
@@ -670,14 +670,6 @@ export const handlers = makeHandlers({
db.vpcSubnets = db.vpcSubnets.filter((s) => s.vpc_id !== vpc.id)
db.vpcFirewallRules = db.vpcFirewallRules.filter((r) => r.vpc_id !== vpc.id)
- const routersToRemove = db.vpcRouters
- .filter((r) => r.vpc_id === vpc.id)
- .map((r) => r.id)
- db.vpcRouterRoutes = db.vpcRouterRoutes.filter(
- (r) => !routersToRemove.includes(r.vpc_router_id)
- )
- db.vpcRouters = db.vpcRouters.filter((r) => r.vpc_id !== vpc.id)
-
return 204
},
vpcFirewallRulesView({ query }) {
@@ -704,87 +696,6 @@ export const handlers = makeHandlers({
return { rules: sortBy(rules, (r) => r.name) }
},
- vpcRouterList({ query }) {
- const vpc = lookup.vpc(query)
- const routers = db.vpcRouters.filter((r) => r.vpc_id === vpc.id)
- return paginated(query, routers)
- },
- vpcRouterCreate({ body, query }) {
- const vpc = lookup.vpc(query)
- errIfExists(db.vpcRouters, { vpc_id: vpc.id, name: body.name })
-
- const newRouter: Json = {
- id: uuid(),
- vpc_id: vpc.id,
- kind: 'custom',
- ...body,
- ...getTimestamps(),
- }
- db.vpcRouters.push(newRouter)
- return json(newRouter, { status: 201 })
- },
- vpcRouterView: ({ path, query }) => lookup.vpcRouter({ ...path, ...query }),
- vpcRouterUpdate({ body, path, query }) {
- const router = lookup.vpcRouter({ ...path, ...query })
-
- if (body.name) {
- router.name = body.name
- }
- if (typeof body.description === 'string') {
- router.description = body.description
- }
-
- return router
- },
- vpcRouterDelete({ path, query }) {
- const router = lookup.vpcRouter({ ...path, ...query })
-
- // TODO: Are there routers that can't be deleted?
- db.vpcRouters = db.vpcRouters.filter((r) => r.id !== router.id)
-
- return 204
- },
- vpcRouterRouteList({ query }) {
- const router = lookup.vpcRouter(query)
- const routers = db.vpcRouterRoutes.filter((s) => s.vpc_router_id === router.id)
- return paginated(query, routers)
- },
- vpcRouterRouteCreate({ body, query }) {
- const router = lookup.vpcRouter(query)
-
- errIfExists(db.vpcRouterRoutes, { vpc_router_id: router.id, name: body.name })
-
- const newRoute: Json = {
- id: uuid(),
- vpc_router_id: router.id,
- kind: 'custom',
- ...body,
- ...getTimestamps(),
- }
- return json(newRoute, { status: 201 })
- },
- vpcRouterRouteView: ({ path, query }) => lookup.vpcRouterRoute({ ...path, ...query }),
- vpcRouterRouteUpdate({ body, path, query }) {
- const route = lookup.vpcRouterRoute({ ...path, ...query })
- if (route.kind !== 'custom') {
- throw 'Only custom routes may be modified'
- }
- if (body.name) {
- route.name = body.name
- }
- if (typeof body.description === 'string') {
- route.description = body.description
- }
- return route
- },
- vpcRouterRouteDelete({ path, query }) {
- const route = lookup.vpcRouterRoute({ ...path, ...query })
- if (route.kind !== 'custom') {
- throw 'Only custom routes may be modified'
- }
- db.vpcRouterRoutes = db.vpcRouterRoutes.filter((r) => r.id !== route.id)
- return 204
- },
vpcSubnetList({ query }) {
const vpc = lookup.vpc(query)
const subnets = db.vpcSubnets.filter((s) => s.vpc_id === vpc.id)
@@ -1036,6 +947,7 @@ export const handlers = makeHandlers({
siloMetric: handleMetrics,
// Misc endpoints we're not using yet in the console
+ addSledToInitializedRack: NotImplemented,
certificateCreate: NotImplemented,
certificateDelete: NotImplemented,
certificateList: NotImplemented,
@@ -1091,9 +1003,11 @@ export const handlers = makeHandlers({
siloPolicyView: NotImplemented,
siloUserList: NotImplemented,
siloUserView: NotImplemented,
+ sledSetProvisionState: NotImplemented,
switchList: NotImplemented,
switchView: NotImplemented,
systemPolicyUpdate: NotImplemented,
+ uninitializedSledList: NotImplemented,
userBuiltinList: NotImplemented,
userBuiltinView: NotImplemented,
})
diff --git a/libs/api-mocks/sled.ts b/libs/api-mocks/sled.ts
index e26e96c590..a5f85e2af5 100644
--- a/libs/api-mocks/sled.ts
+++ b/libs/api-mocks/sled.ts
@@ -14,6 +14,7 @@ export const sled: Json = {
time_created: new Date(2021, 0, 1).toISOString(),
time_modified: new Date(2021, 0, 2).toISOString(),
rack_id: '6fbafcc7-1626-4785-be65-e212f8ad66d0',
+ provision_state: 'provisionable',
baseboard: {
part: '913-0000008',
serial: 'BRM02222867',
diff --git a/libs/api-mocks/vpc.ts b/libs/api-mocks/vpc.ts
index 1c610108fe..605e6f99ff 100644
--- a/libs/api-mocks/vpc.ts
+++ b/libs/api-mocks/vpc.ts
@@ -5,9 +5,8 @@
*
* Copyright Oxide Computer Company
*/
-import type { RouterRoute } from 'libs/api/__generated__/Api'
-import type { Vpc, VpcFirewallRule, VpcRouter, VpcSubnet } from '@oxide/api'
+import type { Vpc, VpcFirewallRule, VpcSubnet } from '@oxide/api'
import type { Json } from './json-type'
import { project } from './project'
@@ -119,25 +118,3 @@ export const defaultFirewallRules: Json = [
vpc_id: vpc.id,
},
]
-
-export const vpcRouter: Json = {
- description: 'a vpc router',
- id: systemRouterId,
- kind: 'system',
- name: 'system',
- time_created,
- time_modified,
- vpc_id: vpc.id,
-}
-
-export const vpcRouterRoute: Json = {
- description: 'a vpc router route',
- id: '3784f74a-728e-4ee6-950d-2167b1072e29',
- name: 'system',
- kind: 'default',
- target: { type: 'instance', value: 'an-instance' },
- destination: { type: 'vpc', value: 'a-vpc' },
- time_created,
- time_modified,
- vpc_router_id: vpcRouter.id,
-}
diff --git a/libs/api/__generated__/Api.ts b/libs/api/__generated__/Api.ts
index cda8c71784..ff66451245 100644
--- a/libs/api/__generated__/Api.ts
+++ b/libs/api/__generated__/Api.ts
@@ -268,7 +268,7 @@ export type BgpImportedRouteIpv4 = {
/**
* A BGP peer configuration for an interface. Includes the set of announcements that will be advertised to the peer identified by `addr`. The `bgp_config` parameter is a reference to global BGP parameters. The `interface_name` indicates what interface the peer should be contacted on.
*/
-export type BgpPeerConfig = {
+export type BgpPeer = {
/** The address of the host to peer with. */
addr: string
/** The set of announcements advertised by the peer. */
@@ -289,6 +289,8 @@ export type BgpPeerConfig = {
keepalive: number
}
+export type BgpPeerConfig = { peers: BgpPeer[] }
+
/**
* The current state of a BGP peer.
*/
@@ -735,6 +737,40 @@ export type Histogramfloat = { bins: Binfloat[]; nSamples: number; startTime: Da
*/
export type Histogramdouble = { bins: Bindouble[]; nSamples: number; startTime: Date }
+/**
+ * The type of an individual datum of a metric.
+ */
+export type DatumType =
+ | 'bool'
+ | 'i8'
+ | 'u8'
+ | 'i16'
+ | 'u16'
+ | 'i32'
+ | 'u32'
+ | 'i64'
+ | 'u64'
+ | 'f32'
+ | 'f64'
+ | 'string'
+ | 'bytes'
+ | 'cumulative_i64'
+ | 'cumulative_u64'
+ | 'cumulative_f32'
+ | 'cumulative_f64'
+ | 'histogram_i8'
+ | 'histogram_u8'
+ | 'histogram_i16'
+ | 'histogram_u16'
+ | 'histogram_i32'
+ | 'histogram_u32'
+ | 'histogram_i64'
+ | 'histogram_u64'
+ | 'histogram_f32'
+ | 'histogram_f64'
+
+export type MissingDatum = { datumType: DatumType; startTime?: Date }
+
/**
* A `Datum` is a single sampled data point from a metric.
*/
@@ -766,6 +802,7 @@ export type Datum =
| { datum: Histogramuint64; type: 'histogram_u64' }
| { datum: Histogramfloat; type: 'histogram_f32' }
| { datum: Histogramdouble; type: 'histogram_f64' }
+ | { datum: MissingDatum; type: 'missing' }
export type DerEncodedKeyPair = {
/** request signing private key (base64 encoded der file) */
@@ -1432,6 +1469,8 @@ export type LinkSpeed =
* Switch link configuration.
*/
export type LinkConfig = {
+ /** Whether or not to set autonegotiation */
+ autoneg: boolean
/** The forward error correction mode of the link. */
fec: LinkFec
/** The link-layer discovery protocol (LLDP) configuration for the link. */
@@ -1673,111 +1712,6 @@ export type RouteConfig = {
routes: Route[]
}
-/**
- * A `RouteDestination` is used to match traffic with a routing rule, on the destination of that traffic.
- *
- * When traffic is to be sent to a destination that is within a given `RouteDestination`, the corresponding `RouterRoute` applies, and traffic will be forward to the `RouteTarget` for that rule.
- */
-export type RouteDestination =
- /** Route applies to traffic destined for a specific IP address */
- | { type: 'ip'; value: string }
- /** Route applies to traffic destined for a specific IP subnet */
- | { type: 'ip_net'; value: IpNet }
- /** Route applies to traffic destined for the given VPC. */
- | { type: 'vpc'; value: Name }
- /** Route applies to traffic */
- | { type: 'subnet'; value: Name }
-
-/**
- * A `RouteTarget` describes the possible locations that traffic matching a route destination can be sent.
- */
-export type RouteTarget =
- /** Forward traffic to a particular IP address. */
- | { type: 'ip'; value: string }
- /** Forward traffic to a VPC */
- | { type: 'vpc'; value: Name }
- /** Forward traffic to a VPC Subnet */
- | { type: 'subnet'; value: Name }
- /** Forward traffic to a specific instance */
- | { type: 'instance'; value: Name }
- /** Forward traffic to an internet gateway */
- | { type: 'internet_gateway'; value: Name }
-
-/**
- * The kind of a `RouterRoute`
- *
- * The kind determines certain attributes such as if the route is modifiable and describes how or where the route was created.
- */
-export type RouterRouteKind =
- /** Determines the default destination of traffic, such as whether it goes to the internet or not.
-
-`Destination: An Internet Gateway` `Modifiable: true` */
- | 'default'
- /** Automatically added for each VPC Subnet in the VPC
-
-`Destination: A VPC Subnet` `Modifiable: false` */
- | 'vpc_subnet'
- /** Automatically added when VPC peering is established
-
-`Destination: A different VPC` `Modifiable: false` */
- | 'vpc_peering'
- /** Created by a user; see `RouteTarget`
-
-`Destination: User defined` `Modifiable: true` */
- | 'custom'
-
-/**
- * A route defines a rule that governs where traffic should be sent based on its destination.
- */
-export type RouterRoute = {
- /** human-readable free-form text about a resource */
- description: string
- destination: RouteDestination
- /** unique, immutable, system-controlled identifier for each resource */
- id: string
- /** Describes the kind of router. Set at creation. `read-only` */
- kind: RouterRouteKind
- /** unique, mutable, user-controlled identifier for each resource */
- name: Name
- target: RouteTarget
- /** timestamp when this resource was created */
- timeCreated: Date
- /** timestamp when this resource was last modified */
- timeModified: Date
- /** The ID of the VPC Router to which the route belongs */
- vpcRouterId: string
-}
-
-/**
- * Create-time parameters for a `RouterRoute`
- */
-export type RouterRouteCreate = {
- description: string
- destination: RouteDestination
- name: Name
- target: RouteTarget
-}
-
-/**
- * A single page of results
- */
-export type RouterRouteResultsPage = {
- /** list of items on this page of results */
- items: RouterRoute[]
- /** token used to fetch the next page of results (if any) */
- nextPage?: string
-}
-
-/**
- * Updateable properties of a `RouterRoute`
- */
-export type RouterRouteUpdate = {
- description?: string
- destination: RouteDestination
- name?: Name
- target: RouteTarget
-}
-
/**
* Identity-related metadata that's included in nearly all public API objects
*/
@@ -1920,6 +1854,21 @@ export type SiloRolePolicy = {
roleAssignments: SiloRoleRoleAssignment[]
}
+/**
+ * The provision state of a sled.
+ *
+ * This controls whether new resources are going to be provisioned on this sled.
+ */
+export type SledProvisionState =
+ /** New resources will be provisioned on this sled. */
+ | 'provisionable'
+ /** New resources will not be provisioned on this sled. However, existing resources will continue to be on this sled unless manually migrated off. */
+ | 'non_provisionable'
+ /** This is a state that isn't known yet.
+
+This is defined to avoid API breakage. */
+ | 'unknown'
+
/**
* An operator's view of a Sled.
*/
@@ -1927,6 +1876,8 @@ export type Sled = {
baseboard: Baseboard
/** unique, immutable, system-controlled identifier for each resource */
id: string
+ /** The provision state of the sled. */
+ provisionState: SledProvisionState
/** The rack to which this Sled is currently attached */
rackId: string
/** timestamp when this resource was created */
@@ -1969,6 +1920,24 @@ export type SledInstanceResultsPage = {
nextPage?: string
}
+/**
+ * Parameters for `sled_set_provision_state`.
+ */
+export type SledProvisionStateParams = {
+ /** The provision state. */
+ state: SledProvisionState
+}
+
+/**
+ * Response to `sled_set_provision_state`.
+ */
+export type SledProvisionStateResponse = {
+ /** The new provision state. */
+ newState: SledProvisionState
+ /** The old provision state. */
+ oldState: SledProvisionState
+}
+
/**
* A single page of results
*/
@@ -2314,6 +2283,11 @@ export type SwitchResultsPage = {
nextPage?: string
}
+/**
+ * A sled that has not been added to an initialized rack yet
+ */
+export type UninitializedSled = { baseboard: Baseboard; cubby: number; rackId: string }
+
/**
* View of a User
*/
@@ -2556,47 +2530,6 @@ export type VpcResultsPage = {
nextPage?: string
}
-export type VpcRouterKind = 'system' | 'custom'
-
-/**
- * A VPC router defines a series of rules that indicate where traffic should be sent depending on its destination.
- */
-export type VpcRouter = {
- /** human-readable free-form text about a resource */
- description: string
- /** unique, immutable, system-controlled identifier for each resource */
- id: string
- kind: VpcRouterKind
- /** unique, mutable, user-controlled identifier for each resource */
- name: Name
- /** timestamp when this resource was created */
- timeCreated: Date
- /** timestamp when this resource was last modified */
- timeModified: Date
- /** The VPC to which the router belongs. */
- vpcId: string
-}
-
-/**
- * Create-time parameters for a `VpcRouter`
- */
-export type VpcRouterCreate = { description: string; name: Name }
-
-/**
- * A single page of results
- */
-export type VpcRouterResultsPage = {
- /** list of items on this page of results */
- items: VpcRouter[]
- /** token used to fetch the next page of results (if any) */
- nextPage?: string
-}
-
-/**
- * Updateable properties of a `VpcRouter`
- */
-export type VpcRouterUpdate = { description?: string; name?: Name }
-
/**
* A VPC subnet represents a logical grouping for instances that allows network traffic between them, within a IPv4 subnetwork or optionall an IPv6 subnetwork.
*/
@@ -3156,6 +3089,10 @@ export interface SledInstanceListQueryParams {
sortBy?: IdSortMode
}
+export interface SledSetProvisionStatePathParams {
+ sledId: string
+}
+
export interface NetworkingSwitchPortListQueryParams {
limit?: number
pageToken?: string
@@ -3427,91 +3364,6 @@ export interface VpcFirewallRulesUpdateQueryParams {
vpc: NameOrId
}
-export interface VpcRouterRouteListQueryParams {
- limit?: number
- pageToken?: string
- project?: NameOrId
- router?: NameOrId
- sortBy?: NameOrIdSortMode
- vpc?: NameOrId
-}
-
-export interface VpcRouterRouteCreateQueryParams {
- project?: NameOrId
- router: NameOrId
- vpc?: NameOrId
-}
-
-export interface VpcRouterRouteViewPathParams {
- route: NameOrId
-}
-
-export interface VpcRouterRouteViewQueryParams {
- project?: NameOrId
- router: NameOrId
- vpc?: NameOrId
-}
-
-export interface VpcRouterRouteUpdatePathParams {
- route: NameOrId
-}
-
-export interface VpcRouterRouteUpdateQueryParams {
- project?: NameOrId
- router?: NameOrId
- vpc?: NameOrId
-}
-
-export interface VpcRouterRouteDeletePathParams {
- route: NameOrId
-}
-
-export interface VpcRouterRouteDeleteQueryParams {
- project?: NameOrId
- router?: NameOrId
- vpc?: NameOrId
-}
-
-export interface VpcRouterListQueryParams {
- limit?: number
- pageToken?: string
- project?: NameOrId
- sortBy?: NameOrIdSortMode
- vpc?: NameOrId
-}
-
-export interface VpcRouterCreateQueryParams {
- project?: NameOrId
- vpc: NameOrId
-}
-
-export interface VpcRouterViewPathParams {
- router: NameOrId
-}
-
-export interface VpcRouterViewQueryParams {
- project?: NameOrId
- vpc?: NameOrId
-}
-
-export interface VpcRouterUpdatePathParams {
- router: NameOrId
-}
-
-export interface VpcRouterUpdateQueryParams {
- project?: NameOrId
- vpc?: NameOrId
-}
-
-export interface VpcRouterDeletePathParams {
- router: NameOrId
-}
-
-export interface VpcRouterDeleteQueryParams {
- project?: NameOrId
- vpc?: NameOrId
-}
-
export interface VpcSubnetListQueryParams {
limit?: number
pageToken?: string
@@ -3621,6 +3473,7 @@ export type ApiListMethods = Pick<
| 'sledInstanceList'
| 'networkingSwitchPortList'
| 'switchList'
+ | 'uninitializedSledList'
| 'siloIdentityProviderList'
| 'ipPoolList'
| 'ipPoolRangeList'
@@ -3636,8 +3489,6 @@ export type ApiListMethods = Pick<
| 'siloUserList'
| 'userBuiltinList'
| 'userList'
- | 'vpcRouterRouteList'
- | 'vpcRouterList'
| 'vpcSubnetList'
| 'vpcList'
>
@@ -4755,6 +4606,20 @@ export class Api extends HttpClient {
...params,
})
},
+ /**
+ * Add a sled to an initialized rack
+ */
+ addSledToInitializedRack: (
+ { body }: { body: UninitializedSled },
+ params: FetchParams = {}
+ ) => {
+ return this.request({
+ path: `/v1/system/hardware/sleds`,
+ method: 'POST',
+ body,
+ ...params,
+ })
+ },
/**
* Fetch a sled
*/
@@ -4799,6 +4664,23 @@ export class Api extends HttpClient {
...params,
})
},
+ /**
+ * Set the sled's provision state.
+ */
+ sledSetProvisionState: (
+ {
+ path,
+ body,
+ }: { path: SledSetProvisionStatePathParams; body: SledProvisionStateParams },
+ params: FetchParams = {}
+ ) => {
+ return this.request({
+ path: `/v1/system/hardware/sleds/${path.sledId}/provision-state`,
+ method: 'PUT',
+ body,
+ ...params,
+ })
+ },
/**
* List switch ports
*/
@@ -4880,6 +4762,16 @@ export class Api extends HttpClient {
...params,
})
},
+ /**
+ * List uninitialized sleds in a given rack
+ */
+ uninitializedSledList: (_: EmptyObj, params: FetchParams = {}) => {
+ return this.request({
+ path: `/v1/system/hardware/uninitialized-sleds`,
+ method: 'GET',
+ ...params,
+ })
+ },
/**
* List a silo's IdP's name
*/
@@ -5222,7 +5114,7 @@ export class Api extends HttpClient {
})
},
/**
- * Get BGP configurations.
+ * List BGP configurations
*/
networkingBgpConfigList: (
{ query = {} }: { query?: NetworkingBgpConfigListQueryParams },
@@ -5236,7 +5128,7 @@ export class Api extends HttpClient {
})
},
/**
- * Create a new BGP configuration.
+ * Create a new BGP configuration
*/
networkingBgpConfigCreate: (
{ body }: { body: BgpConfigCreate },
@@ -5250,7 +5142,7 @@ export class Api extends HttpClient {
})
},
/**
- * Delete a BGP configuration.
+ * Delete a BGP configuration
*/
networkingBgpConfigDelete: (
{ query }: { query?: NetworkingBgpConfigDeleteQueryParams },
@@ -5264,7 +5156,7 @@ export class Api extends HttpClient {
})
},
/**
- * Get originated routes for a given BGP configuration.
+ * Get originated routes for a BGP configuration
*/
networkingBgpAnnounceSetList: (
{ query }: { query?: NetworkingBgpAnnounceSetListQueryParams },
@@ -5278,7 +5170,7 @@ export class Api extends HttpClient {
})
},
/**
- * Create a new BGP announce set.
+ * Create a new BGP announce set
*/
networkingBgpAnnounceSetCreate: (
{ body }: { body: BgpAnnounceSetCreate },
@@ -5292,7 +5184,7 @@ export class Api extends HttpClient {
})
},
/**
- * Delete a BGP announce set.
+ * Delete a BGP announce set
*/
networkingBgpAnnounceSetDelete: (
{ query }: { query?: NetworkingBgpAnnounceSetDeleteQueryParams },
@@ -5306,7 +5198,7 @@ export class Api extends HttpClient {
})
},
/**
- * Get imported IPv4 BGP routes.
+ * Get imported IPv4 BGP routes
*/
networkingBgpImportedRoutesIpv4: (
{ query }: { query?: NetworkingBgpImportedRoutesIpv4QueryParams },
@@ -5330,7 +5222,7 @@ export class Api extends HttpClient {
})
},
/**
- * Get loopback addresses, optionally filtering by id
+ * List loopback addresses
*/
networkingLoopbackAddressList: (
{ query = {} }: { query?: NetworkingLoopbackAddressListQueryParams },
@@ -5643,178 +5535,6 @@ export class Api extends HttpClient {
...params,
})
},
- /**
- * List routes
- */
- vpcRouterRouteList: (
- { query = {} }: { query?: VpcRouterRouteListQueryParams },
- params: FetchParams = {}
- ) => {
- return this.request({
- path: `/v1/vpc-router-routes`,
- method: 'GET',
- query,
- ...params,
- })
- },
- /**
- * Create a router
- */
- vpcRouterRouteCreate: (
- { query, body }: { query?: VpcRouterRouteCreateQueryParams; body: RouterRouteCreate },
- params: FetchParams = {}
- ) => {
- return this.request({
- path: `/v1/vpc-router-routes`,
- method: 'POST',
- body,
- query,
- ...params,
- })
- },
- /**
- * Fetch a route
- */
- vpcRouterRouteView: (
- {
- path,
- query,
- }: { path: VpcRouterRouteViewPathParams; query?: VpcRouterRouteViewQueryParams },
- params: FetchParams = {}
- ) => {
- return this.request({
- path: `/v1/vpc-router-routes/${path.route}`,
- method: 'GET',
- query,
- ...params,
- })
- },
- /**
- * Update a route
- */
- vpcRouterRouteUpdate: (
- {
- path,
- query = {},
- body,
- }: {
- path: VpcRouterRouteUpdatePathParams
- query?: VpcRouterRouteUpdateQueryParams
- body: RouterRouteUpdate
- },
- params: FetchParams = {}
- ) => {
- return this.request({
- path: `/v1/vpc-router-routes/${path.route}`,
- method: 'PUT',
- body,
- query,
- ...params,
- })
- },
- /**
- * Delete a route
- */
- vpcRouterRouteDelete: (
- {
- path,
- query = {},
- }: { path: VpcRouterRouteDeletePathParams; query?: VpcRouterRouteDeleteQueryParams },
- params: FetchParams = {}
- ) => {
- return this.request({
- path: `/v1/vpc-router-routes/${path.route}`,
- method: 'DELETE',
- query,
- ...params,
- })
- },
- /**
- * List routers
- */
- vpcRouterList: (
- { query = {} }: { query?: VpcRouterListQueryParams },
- params: FetchParams = {}
- ) => {
- return this.request({
- path: `/v1/vpc-routers`,
- method: 'GET',
- query,
- ...params,
- })
- },
- /**
- * Create a VPC router
- */
- vpcRouterCreate: (
- { query, body }: { query?: VpcRouterCreateQueryParams; body: VpcRouterCreate },
- params: FetchParams = {}
- ) => {
- return this.request({
- path: `/v1/vpc-routers`,
- method: 'POST',
- body,
- query,
- ...params,
- })
- },
- /**
- * Fetch a router
- */
- vpcRouterView: (
- {
- path,
- query = {},
- }: { path: VpcRouterViewPathParams; query?: VpcRouterViewQueryParams },
- params: FetchParams = {}
- ) => {
- return this.request({
- path: `/v1/vpc-routers/${path.router}`,
- method: 'GET',
- query,
- ...params,
- })
- },
- /**
- * Update a router
- */
- vpcRouterUpdate: (
- {
- path,
- query = {},
- body,
- }: {
- path: VpcRouterUpdatePathParams
- query?: VpcRouterUpdateQueryParams
- body: VpcRouterUpdate
- },
- params: FetchParams = {}
- ) => {
- return this.request({
- path: `/v1/vpc-routers/${path.router}`,
- method: 'PUT',
- body,
- query,
- ...params,
- })
- },
- /**
- * Delete a router
- */
- vpcRouterDelete: (
- {
- path,
- query = {},
- }: { path: VpcRouterDeletePathParams; query?: VpcRouterDeleteQueryParams },
- params: FetchParams = {}
- ) => {
- return this.request({
- path: `/v1/vpc-routers/${path.router}`,
- method: 'DELETE',
- query,
- ...params,
- })
- },
/**
* List subnets
*/
diff --git a/libs/api/__generated__/OMICRON_VERSION b/libs/api/__generated__/OMICRON_VERSION
index 3214f9b1bb..b49fa25c92 100644
--- a/libs/api/__generated__/OMICRON_VERSION
+++ b/libs/api/__generated__/OMICRON_VERSION
@@ -1,2 +1,2 @@
# generated file. do not update manually. see docs/update-pinned-api.md
-51b6b160c4913ee77685ab95dbfc50047d5503fe
+9b666e73dec06f2a645a714cdfbb21d63a2f3504
diff --git a/libs/api/__generated__/msw-handlers.ts b/libs/api/__generated__/msw-handlers.ts
index dace34bcf3..93a87adb24 100644
--- a/libs/api/__generated__/msw-handlers.ts
+++ b/libs/api/__generated__/msw-handlers.ts
@@ -529,6 +529,12 @@ export interface MSWHandlers {
req: Request
cookies: Record
}) => Promisable>
+ /** `POST /v1/system/hardware/sleds` */
+ addSledToInitializedRack: (params: {
+ body: Json
+ req: Request
+ cookies: Record
+ }) => Promisable
/** `GET /v1/system/hardware/sleds/:sledId` */
sledView: (params: {
path: Api.SledViewPathParams
@@ -549,6 +555,13 @@ export interface MSWHandlers {
req: Request
cookies: Record
}) => Promisable>
+ /** `PUT /v1/system/hardware/sleds/:sledId/provision-state` */
+ sledSetProvisionState: (params: {
+ path: Api.SledSetProvisionStatePathParams
+ body: Json
+ req: Request
+ cookies: Record
+ }) => Promisable>
/** `GET /v1/system/hardware/switch-port` */
networkingSwitchPortList: (params: {
query: Api.NetworkingSwitchPortListQueryParams
@@ -582,6 +595,11 @@ export interface MSWHandlers {
req: Request
cookies: Record
}) => Promisable>
+ /** `GET /v1/system/hardware/uninitialized-sleds` */
+ uninitializedSledList: (params: {
+ req: Request
+ cookies: Record
+ }) => Promisable
/** `GET /v1/system/identity-providers` */
siloIdentityProviderList: (params: {
query: Api.SiloIdentityProviderListQueryParams
@@ -924,76 +942,6 @@ export interface MSWHandlers {
req: Request
cookies: Record
}) => Promisable>
- /** `GET /v1/vpc-router-routes` */
- vpcRouterRouteList: (params: {
- query: Api.VpcRouterRouteListQueryParams
- req: Request
- cookies: Record
- }) => Promisable>
- /** `POST /v1/vpc-router-routes` */
- vpcRouterRouteCreate: (params: {
- query: Api.VpcRouterRouteCreateQueryParams
- body: Json
- req: Request
- cookies: Record
- }) => Promisable>
- /** `GET /v1/vpc-router-routes/:route` */
- vpcRouterRouteView: (params: {
- path: Api.VpcRouterRouteViewPathParams
- query: Api.VpcRouterRouteViewQueryParams
- req: Request
- cookies: Record
- }) => Promisable>
- /** `PUT /v1/vpc-router-routes/:route` */
- vpcRouterRouteUpdate: (params: {
- path: Api.VpcRouterRouteUpdatePathParams
- query: Api.VpcRouterRouteUpdateQueryParams
- body: Json
- req: Request
- cookies: Record
- }) => Promisable>
- /** `DELETE /v1/vpc-router-routes/:route` */
- vpcRouterRouteDelete: (params: {
- path: Api.VpcRouterRouteDeletePathParams
- query: Api.VpcRouterRouteDeleteQueryParams
- req: Request
- cookies: Record
- }) => Promisable
- /** `GET /v1/vpc-routers` */
- vpcRouterList: (params: {
- query: Api.VpcRouterListQueryParams
- req: Request
- cookies: Record
- }) => Promisable>
- /** `POST /v1/vpc-routers` */
- vpcRouterCreate: (params: {
- query: Api.VpcRouterCreateQueryParams
- body: Json
- req: Request
- cookies: Record
- }) => Promisable>
- /** `GET /v1/vpc-routers/:router` */
- vpcRouterView: (params: {
- path: Api.VpcRouterViewPathParams
- query: Api.VpcRouterViewQueryParams
- req: Request
- cookies: Record
- }) => Promisable>
- /** `PUT /v1/vpc-routers/:router` */
- vpcRouterUpdate: (params: {
- path: Api.VpcRouterUpdatePathParams
- query: Api.VpcRouterUpdateQueryParams
- body: Json
- req: Request
- cookies: Record
- }) => Promisable>
- /** `DELETE /v1/vpc-routers/:router` */
- vpcRouterDelete: (params: {
- path: Api.VpcRouterDeletePathParams
- query: Api.VpcRouterDeleteQueryParams
- req: Request
- cookies: Record
- }) => Promisable
/** `GET /v1/vpc-subnets` */
vpcSubnetList: (params: {
query: Api.VpcSubnetListQueryParams
@@ -1509,6 +1457,10 @@ export function makeHandlers(handlers: MSWHandlers): HttpHandler[] {
'/v1/system/hardware/sleds',
handler(handlers['sledList'], schema.SledListParams, null)
),
+ http.post(
+ '/v1/system/hardware/sleds',
+ handler(handlers['addSledToInitializedRack'], null, schema.UninitializedSled)
+ ),
http.get(
'/v1/system/hardware/sleds/:sledId',
handler(handlers['sledView'], schema.SledViewParams, null)
@@ -1521,6 +1473,14 @@ export function makeHandlers(handlers: MSWHandlers): HttpHandler[] {
'/v1/system/hardware/sleds/:sledId/instances',
handler(handlers['sledInstanceList'], schema.SledInstanceListParams, null)
),
+ http.put(
+ '/v1/system/hardware/sleds/:sledId/provision-state',
+ handler(
+ handlers['sledSetProvisionState'],
+ schema.SledSetProvisionStateParams,
+ schema.SledProvisionStateParams
+ )
+ ),
http.get(
'/v1/system/hardware/switch-port',
handler(
@@ -1553,6 +1513,10 @@ export function makeHandlers(handlers: MSWHandlers): HttpHandler[] {
'/v1/system/hardware/switches/:switchId',
handler(handlers['switchView'], schema.SwitchViewParams, null)
),
+ http.get(
+ '/v1/system/hardware/uninitialized-sleds',
+ handler(handlers['uninitializedSledList'], null, null)
+ ),
http.get(
'/v1/system/identity-providers',
handler(
@@ -1852,62 +1816,6 @@ export function makeHandlers(handlers: MSWHandlers): HttpHandler[] {
schema.VpcFirewallRuleUpdateParams
)
),
- http.get(
- '/v1/vpc-router-routes',
- handler(handlers['vpcRouterRouteList'], schema.VpcRouterRouteListParams, null)
- ),
- http.post(
- '/v1/vpc-router-routes',
- handler(
- handlers['vpcRouterRouteCreate'],
- schema.VpcRouterRouteCreateParams,
- schema.RouterRouteCreate
- )
- ),
- http.get(
- '/v1/vpc-router-routes/:route',
- handler(handlers['vpcRouterRouteView'], schema.VpcRouterRouteViewParams, null)
- ),
- http.put(
- '/v1/vpc-router-routes/:route',
- handler(
- handlers['vpcRouterRouteUpdate'],
- schema.VpcRouterRouteUpdateParams,
- schema.RouterRouteUpdate
- )
- ),
- http.delete(
- '/v1/vpc-router-routes/:route',
- handler(handlers['vpcRouterRouteDelete'], schema.VpcRouterRouteDeleteParams, null)
- ),
- http.get(
- '/v1/vpc-routers',
- handler(handlers['vpcRouterList'], schema.VpcRouterListParams, null)
- ),
- http.post(
- '/v1/vpc-routers',
- handler(
- handlers['vpcRouterCreate'],
- schema.VpcRouterCreateParams,
- schema.VpcRouterCreate
- )
- ),
- http.get(
- '/v1/vpc-routers/:router',
- handler(handlers['vpcRouterView'], schema.VpcRouterViewParams, null)
- ),
- http.put(
- '/v1/vpc-routers/:router',
- handler(
- handlers['vpcRouterUpdate'],
- schema.VpcRouterUpdateParams,
- schema.VpcRouterUpdate
- )
- ),
- http.delete(
- '/v1/vpc-routers/:router',
- handler(handlers['vpcRouterDelete'], schema.VpcRouterDeleteParams, null)
- ),
http.get(
'/v1/vpc-subnets',
handler(handlers['vpcSubnetList'], schema.VpcSubnetListParams, null)
diff --git a/libs/api/__generated__/validate.ts b/libs/api/__generated__/validate.ts
index cc47cfd499..75d7c7190c 100644
--- a/libs/api/__generated__/validate.ts
+++ b/libs/api/__generated__/validate.ts
@@ -285,7 +285,7 @@ export const BgpImportedRouteIpv4 = z.preprocess(
/**
* A BGP peer configuration for an interface. Includes the set of announcements that will be advertised to the peer identified by `addr`. The `bgp_config` parameter is a reference to global BGP parameters. The `interface_name` indicates what interface the peer should be contacted on.
*/
-export const BgpPeerConfig = z.preprocess(
+export const BgpPeer = z.preprocess(
processResponseBody,
z.object({
addr: z.string().ip(),
@@ -300,6 +300,11 @@ export const BgpPeerConfig = z.preprocess(
})
)
+export const BgpPeerConfig = z.preprocess(
+ processResponseBody,
+ z.object({ peers: BgpPeer.array() })
+)
+
/**
* The current state of a BGP peer.
*/
@@ -844,6 +849,47 @@ export const Histogramdouble = z.preprocess(
})
)
+/**
+ * The type of an individual datum of a metric.
+ */
+export const DatumType = z.preprocess(
+ processResponseBody,
+ z.enum([
+ 'bool',
+ 'i8',
+ 'u8',
+ 'i16',
+ 'u16',
+ 'i32',
+ 'u32',
+ 'i64',
+ 'u64',
+ 'f32',
+ 'f64',
+ 'string',
+ 'bytes',
+ 'cumulative_i64',
+ 'cumulative_u64',
+ 'cumulative_f32',
+ 'cumulative_f64',
+ 'histogram_i8',
+ 'histogram_u8',
+ 'histogram_i16',
+ 'histogram_u16',
+ 'histogram_i32',
+ 'histogram_u32',
+ 'histogram_i64',
+ 'histogram_u64',
+ 'histogram_f32',
+ 'histogram_f64',
+ ])
+)
+
+export const MissingDatum = z.preprocess(
+ processResponseBody,
+ z.object({ datumType: DatumType, startTime: z.coerce.date().optional() })
+)
+
/**
* A `Datum` is a single sampled data point from a metric.
*/
@@ -877,6 +923,7 @@ export const Datum = z.preprocess(
z.object({ datum: Histogramuint64, type: z.enum(['histogram_u64']) }),
z.object({ datum: Histogramfloat, type: z.enum(['histogram_f32']) }),
z.object({ datum: Histogramdouble, type: z.enum(['histogram_f64']) }),
+ z.object({ datum: MissingDatum, type: z.enum(['missing']) }),
])
)
@@ -1513,6 +1560,7 @@ export const LinkSpeed = z.preprocess(
export const LinkConfig = z.preprocess(
processResponseBody,
z.object({
+ autoneg: SafeBoolean,
fec: LinkFec,
lldp: LldpServiceConfig,
mtu: z.number().min(0).max(65535),
@@ -1752,97 +1800,6 @@ export const RouteConfig = z.preprocess(
z.object({ routes: Route.array() })
)
-/**
- * A `RouteDestination` is used to match traffic with a routing rule, on the destination of that traffic.
- *
- * When traffic is to be sent to a destination that is within a given `RouteDestination`, the corresponding `RouterRoute` applies, and traffic will be forward to the `RouteTarget` for that rule.
- */
-export const RouteDestination = z.preprocess(
- processResponseBody,
- z.union([
- z.object({ type: z.enum(['ip']), value: z.string().ip() }),
- z.object({ type: z.enum(['ip_net']), value: IpNet }),
- z.object({ type: z.enum(['vpc']), value: Name }),
- z.object({ type: z.enum(['subnet']), value: Name }),
- ])
-)
-
-/**
- * A `RouteTarget` describes the possible locations that traffic matching a route destination can be sent.
- */
-export const RouteTarget = z.preprocess(
- processResponseBody,
- z.union([
- z.object({ type: z.enum(['ip']), value: z.string().ip() }),
- z.object({ type: z.enum(['vpc']), value: Name }),
- z.object({ type: z.enum(['subnet']), value: Name }),
- z.object({ type: z.enum(['instance']), value: Name }),
- z.object({ type: z.enum(['internet_gateway']), value: Name }),
- ])
-)
-
-/**
- * The kind of a `RouterRoute`
- *
- * The kind determines certain attributes such as if the route is modifiable and describes how or where the route was created.
- */
-export const RouterRouteKind = z.preprocess(
- processResponseBody,
- z.enum(['default', 'vpc_subnet', 'vpc_peering', 'custom'])
-)
-
-/**
- * A route defines a rule that governs where traffic should be sent based on its destination.
- */
-export const RouterRoute = z.preprocess(
- processResponseBody,
- z.object({
- description: z.string(),
- destination: RouteDestination,
- id: z.string().uuid(),
- kind: RouterRouteKind,
- name: Name,
- target: RouteTarget,
- timeCreated: z.coerce.date(),
- timeModified: z.coerce.date(),
- vpcRouterId: z.string().uuid(),
- })
-)
-
-/**
- * Create-time parameters for a `RouterRoute`
- */
-export const RouterRouteCreate = z.preprocess(
- processResponseBody,
- z.object({
- description: z.string(),
- destination: RouteDestination,
- name: Name,
- target: RouteTarget,
- })
-)
-
-/**
- * A single page of results
- */
-export const RouterRouteResultsPage = z.preprocess(
- processResponseBody,
- z.object({ items: RouterRoute.array(), nextPage: z.string().optional() })
-)
-
-/**
- * Updateable properties of a `RouterRoute`
- */
-export const RouterRouteUpdate = z.preprocess(
- processResponseBody,
- z.object({
- description: z.string().optional(),
- destination: RouteDestination,
- name: Name.optional(),
- target: RouteTarget,
- })
-)
-
/**
* Identity-related metadata that's included in nearly all public API objects
*/
@@ -1965,6 +1922,16 @@ export const SiloRolePolicy = z.preprocess(
z.object({ roleAssignments: SiloRoleRoleAssignment.array() })
)
+/**
+ * The provision state of a sled.
+ *
+ * This controls whether new resources are going to be provisioned on this sled.
+ */
+export const SledProvisionState = z.preprocess(
+ processResponseBody,
+ z.enum(['provisionable', 'non_provisionable', 'unknown'])
+)
+
/**
* An operator's view of a Sled.
*/
@@ -1973,6 +1940,7 @@ export const Sled = z.preprocess(
z.object({
baseboard: Baseboard,
id: z.string().uuid(),
+ provisionState: SledProvisionState,
rackId: z.string().uuid(),
timeCreated: z.coerce.date(),
timeModified: z.coerce.date(),
@@ -2009,6 +1977,22 @@ export const SledInstanceResultsPage = z.preprocess(
z.object({ items: SledInstance.array(), nextPage: z.string().optional() })
)
+/**
+ * Parameters for `sled_set_provision_state`.
+ */
+export const SledProvisionStateParams = z.preprocess(
+ processResponseBody,
+ z.object({ state: SledProvisionState })
+)
+
+/**
+ * Response to `sled_set_provision_state`.
+ */
+export const SledProvisionStateResponse = z.preprocess(
+ processResponseBody,
+ z.object({ newState: SledProvisionState, oldState: SledProvisionState })
+)
+
/**
* A single page of results
*/
@@ -2304,6 +2288,18 @@ export const SwitchResultsPage = z.preprocess(
z.object({ items: Switch.array(), nextPage: z.string().optional() })
)
+/**
+ * A sled that has not been added to an initialized rack yet
+ */
+export const UninitializedSled = z.preprocess(
+ processResponseBody,
+ z.object({
+ baseboard: Baseboard,
+ cubby: z.number().min(0).max(65535),
+ rackId: z.string().uuid(),
+ })
+)
+
/**
* View of a User
*/
@@ -2543,48 +2539,6 @@ export const VpcResultsPage = z.preprocess(
z.object({ items: Vpc.array(), nextPage: z.string().optional() })
)
-export const VpcRouterKind = z.preprocess(processResponseBody, z.enum(['system', 'custom']))
-
-/**
- * A VPC router defines a series of rules that indicate where traffic should be sent depending on its destination.
- */
-export const VpcRouter = z.preprocess(
- processResponseBody,
- z.object({
- description: z.string(),
- id: z.string().uuid(),
- kind: VpcRouterKind,
- name: Name,
- timeCreated: z.coerce.date(),
- timeModified: z.coerce.date(),
- vpcId: z.string().uuid(),
- })
-)
-
-/**
- * Create-time parameters for a `VpcRouter`
- */
-export const VpcRouterCreate = z.preprocess(
- processResponseBody,
- z.object({ description: z.string(), name: Name })
-)
-
-/**
- * A single page of results
- */
-export const VpcRouterResultsPage = z.preprocess(
- processResponseBody,
- z.object({ items: VpcRouter.array(), nextPage: z.string().optional() })
-)
-
-/**
- * Updateable properties of a `VpcRouter`
- */
-export const VpcRouterUpdate = z.preprocess(
- processResponseBody,
- z.object({ description: z.string().optional(), name: Name.optional() })
-)
-
/**
* A VPC subnet represents a logical grouping for instances that allows network traffic between them, within a IPv4 subnetwork or optionall an IPv6 subnetwork.
*/
@@ -3521,6 +3475,14 @@ export const SledListParams = z.preprocess(
})
)
+export const AddSledToInitializedRackParams = z.preprocess(
+ processResponseBody,
+ z.object({
+ path: z.object({}),
+ query: z.object({}),
+ })
+)
+
export const SledViewParams = z.preprocess(
processResponseBody,
z.object({
@@ -3559,6 +3521,16 @@ export const SledInstanceListParams = z.preprocess(
})
)
+export const SledSetProvisionStateParams = z.preprocess(
+ processResponseBody,
+ z.object({
+ path: z.object({
+ sledId: z.string().uuid(),
+ }),
+ query: z.object({}),
+ })
+)
+
export const NetworkingSwitchPortListParams = z.preprocess(
processResponseBody,
z.object({
@@ -3620,6 +3592,14 @@ export const SwitchViewParams = z.preprocess(
})
)
+export const UninitializedSledListParams = z.preprocess(
+ processResponseBody,
+ z.object({
+ path: z.object({}),
+ query: z.object({}),
+ })
+)
+
export const SiloIdentityProviderListParams = z.preprocess(
processResponseBody,
z.object({
@@ -4198,139 +4178,6 @@ export const VpcFirewallRulesUpdateParams = z.preprocess(
})
)
-export const VpcRouterRouteListParams = z.preprocess(
- processResponseBody,
- z.object({
- path: z.object({}),
- query: z.object({
- limit: z.number().min(1).max(4294967295).optional(),
- pageToken: z.string().optional(),
- project: NameOrId.optional(),
- router: NameOrId.optional(),
- sortBy: NameOrIdSortMode.optional(),
- vpc: NameOrId.optional(),
- }),
- })
-)
-
-export const VpcRouterRouteCreateParams = z.preprocess(
- processResponseBody,
- z.object({
- path: z.object({}),
- query: z.object({
- project: NameOrId.optional(),
- router: NameOrId,
- vpc: NameOrId.optional(),
- }),
- })
-)
-
-export const VpcRouterRouteViewParams = z.preprocess(
- processResponseBody,
- z.object({
- path: z.object({
- route: NameOrId,
- }),
- query: z.object({
- project: NameOrId.optional(),
- router: NameOrId,
- vpc: NameOrId.optional(),
- }),
- })
-)
-
-export const VpcRouterRouteUpdateParams = z.preprocess(
- processResponseBody,
- z.object({
- path: z.object({
- route: NameOrId,
- }),
- query: z.object({
- project: NameOrId.optional(),
- router: NameOrId.optional(),
- vpc: NameOrId.optional(),
- }),
- })
-)
-
-export const VpcRouterRouteDeleteParams = z.preprocess(
- processResponseBody,
- z.object({
- path: z.object({
- route: NameOrId,
- }),
- query: z.object({
- project: NameOrId.optional(),
- router: NameOrId.optional(),
- vpc: NameOrId.optional(),
- }),
- })
-)
-
-export const VpcRouterListParams = z.preprocess(
- processResponseBody,
- z.object({
- path: z.object({}),
- query: z.object({
- limit: z.number().min(1).max(4294967295).optional(),
- pageToken: z.string().optional(),
- project: NameOrId.optional(),
- sortBy: NameOrIdSortMode.optional(),
- vpc: NameOrId.optional(),
- }),
- })
-)
-
-export const VpcRouterCreateParams = z.preprocess(
- processResponseBody,
- z.object({
- path: z.object({}),
- query: z.object({
- project: NameOrId.optional(),
- vpc: NameOrId,
- }),
- })
-)
-
-export const VpcRouterViewParams = z.preprocess(
- processResponseBody,
- z.object({
- path: z.object({
- router: NameOrId,
- }),
- query: z.object({
- project: NameOrId.optional(),
- vpc: NameOrId.optional(),
- }),
- })
-)
-
-export const VpcRouterUpdateParams = z.preprocess(
- processResponseBody,
- z.object({
- path: z.object({
- router: NameOrId,
- }),
- query: z.object({
- project: NameOrId.optional(),
- vpc: NameOrId.optional(),
- }),
- })
-)
-
-export const VpcRouterDeleteParams = z.preprocess(
- processResponseBody,
- z.object({
- path: z.object({
- router: NameOrId,
- }),
- query: z.object({
- project: NameOrId.optional(),
- vpc: NameOrId.optional(),
- }),
- })
-)
-
export const VpcSubnetListParams = z.preprocess(
processResponseBody,
z.object({
diff --git a/libs/api/path-params.ts b/libs/api/path-params.ts
index 833baf312a..9f561d1623 100644
--- a/libs/api/path-params.ts
+++ b/libs/api/path-params.ts
@@ -16,8 +16,6 @@ export type NetworkInterface = Merge
export type Snapshot = Merge
export type Vpc = Merge
export type VpcSubnet = Merge
-export type VpcRouter = Merge
-export type RouterRoute = Merge
export type Silo = { silo?: string }
export type IdentityProvider = Merge
export type SystemUpdate = { version: string }