diff --git a/OMICRON_VERSION b/OMICRON_VERSION index 320c787acd..a9d80c78a4 100644 --- a/OMICRON_VERSION +++ b/OMICRON_VERSION @@ -1 +1 @@ -c6d4c55ffece9faf167e2da5aee044341ffdc24e +eeeb429a5a4c3aeff484c50638255f4c4eadc9ba diff --git a/app/api/__generated__/Api.ts b/app/api/__generated__/Api.ts index 17202341fc..8286832a4b 100644 --- a/app/api/__generated__/Api.ts +++ b/app/api/__generated__/Api.ts @@ -2357,6 +2357,40 @@ export type LldpLinkConfig = { systemName?: string } +/** + * Information about LLDP advertisements from other network entities directly connected to a switch port. This structure contains both metadata about when and where the neighbor was seen, as well as the specific information the neighbor was advertising. + */ +export type LldpNeighbor = { + /** The LLDP chassis identifier advertised by the neighbor */ + chassisId: string + /** Initial sighting of this LldpNeighbor */ + firstSeen: Date + /** Most recent sighting of this LldpNeighbor */ + lastSeen: Date + /** The LLDP link description advertised by the neighbor */ + linkDescription?: string + /** The LLDP link name advertised by the neighbor */ + linkName: string + /** The port on which the neighbor was seen */ + localPort: string + /** The LLDP management IP(s) advertised by the neighbor */ + managementIp: IpNet[] + /** The LLDP system description advertised by the neighbor */ + systemDescription?: string + /** The LLDP system name advertised by the neighbor */ + systemName?: string +} + +/** + * A single page of results + */ +export type LldpNeighborResultsPage = { + /** list of items on this page of results */ + items: LldpNeighbor[] + /** token used to fetch the next page of results (if any) */ + nextPage?: string +} + /** * A loopback address is an address that is assigned to a rack switch but is not associated with any particular port. */ @@ -3347,6 +3381,47 @@ export type SshKeyResultsPage = { nextPage?: string } +export type TypedUuidForSupportBundleKind = string + +export type SupportBundleState = + /** Support Bundle still actively being collected. + +This is the initial state for a Support Bundle, and it will automatically transition to either "Failing" or "Active". + +If a user no longer wants to access a Support Bundle, they can request cancellation, which will transition to the "Destroying" state. */ + | 'collecting' + + /** Support Bundle is being destroyed. + +Once backing storage has been freed, this bundle is destroyed. */ + | 'destroying' + + /** Support Bundle was not created successfully, or was created and has lost backing storage. + +The record of the bundle still exists for readability, but the only valid operation on these bundles is to destroy them. */ + | 'failed' + + /** Support Bundle has been processed, and is ready for usage. */ + | 'active' + +export type SupportBundleInfo = { + id: TypedUuidForSupportBundleKind + reasonForCreation: string + reasonForFailure?: string + state: SupportBundleState + timeCreated: Date +} + +/** + * A single page of results + */ +export type SupportBundleInfoResultsPage = { + /** list of items on this page of results */ + items: SupportBundleInfo[] + /** token used to fetch the next page of results (if any) */ + nextPage?: string +} + /** * An operator's view of a Switch. */ @@ -4116,6 +4191,13 @@ export type NameOrIdSortMode = /** sort in increasing order of "id" */ | 'id_ascending' +/** + * Supported set of sort modes for scanning by id only. + * + * Currently, we only support scanning in ascending order. + */ +export type IdSortMode = 'id_ascending' + export type DiskMetricName = | 'activated' | 'flush' @@ -4129,13 +4211,6 @@ export type DiskMetricName = */ export type PaginationOrder = 'ascending' | 'descending' -/** - * Supported set of sort modes for scanning by id only. - * - * Currently, we only support scanning in ascending order. - */ -export type IdSortMode = 'id_ascending' - export type SystemMetricName = | 'virtual_disk_space_provisioned' | 'cpus_provisioned' @@ -4175,6 +4250,42 @@ export interface ProbeDeleteQueryParams { project: NameOrId } +export interface SupportBundleListQueryParams { + limit?: number + pageToken?: string + sortBy?: IdSortMode +} + +export interface SupportBundleViewPathParams { + supportBundle: string +} + +export interface SupportBundleDeletePathParams { + supportBundle: string +} + +export interface SupportBundleDownloadPathParams { + supportBundle: string +} + +export interface SupportBundleHeadPathParams { + supportBundle: string +} + +export interface SupportBundleDownloadFilePathParams { + file: string + supportBundle: string +} + +export interface SupportBundleHeadFilePathParams { + file: string + supportBundle: string +} + +export interface SupportBundleIndexPathParams { + supportBundle: string +} + export interface LoginSamlPathParams { providerName: Name siloName: Name @@ -4746,6 +4857,18 @@ export interface PhysicalDiskViewPathParams { diskId: string } +export interface NetworkingSwitchPortLldpNeighborsPathParams { + port: Name + rackId: string + switchLocation: Name +} + +export interface NetworkingSwitchPortLldpNeighborsQueryParams { + limit?: number + pageToken?: string + sortBy?: IdSortMode +} + export interface RackListQueryParams { limit?: number pageToken?: string @@ -4802,6 +4925,24 @@ export interface NetworkingSwitchPortListQueryParams { switchPortId?: string } +export interface NetworkingSwitchPortLldpConfigViewPathParams { + port: Name +} + +export interface NetworkingSwitchPortLldpConfigViewQueryParams { + rackId: string + switchLocation: Name +} + +export interface NetworkingSwitchPortLldpConfigUpdatePathParams { + port: Name +} + +export interface NetworkingSwitchPortLldpConfigUpdateQueryParams { + rackId: string + switchLocation: Name +} + export interface NetworkingSwitchPortApplySettingsPathParams { port: Name } @@ -5330,6 +5471,7 @@ export interface VpcDeleteQueryParams { export type ApiListMethods = Pick< InstanceType['methods'], | 'probeList' + | 'supportBundleList' | 'certificateList' | 'diskList' | 'diskMetricsList' @@ -5473,6 +5615,121 @@ export class Api extends HttpClient { ...params, }) }, + /** + * List all support bundles + */ + supportBundleList: ( + { query = {} }: { query?: SupportBundleListQueryParams }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/experimental/v1/system/support-bundles`, + method: 'GET', + query, + ...params, + }) + }, + /** + * Create a new support bundle + */ + supportBundleCreate: (_: EmptyObj, params: FetchParams = {}) => { + return this.request({ + path: `/experimental/v1/system/support-bundles`, + method: 'POST', + ...params, + }) + }, + /** + * View a support bundle + */ + supportBundleView: ( + { path }: { path: SupportBundleViewPathParams }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/experimental/v1/system/support-bundles/${path.supportBundle}`, + method: 'GET', + ...params, + }) + }, + /** + * Delete an existing support bundle + */ + supportBundleDelete: ( + { path }: { path: SupportBundleDeletePathParams }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/experimental/v1/system/support-bundles/${path.supportBundle}`, + method: 'DELETE', + ...params, + }) + }, + /** + * Download the contents of a support bundle + */ + supportBundleDownload: ( + { path }: { path: SupportBundleDownloadPathParams }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/experimental/v1/system/support-bundles/${path.supportBundle}/download`, + method: 'GET', + ...params, + }) + }, + /** + * Download the metadata of a support bundle + */ + supportBundleHead: ( + { path }: { path: SupportBundleHeadPathParams }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/experimental/v1/system/support-bundles/${path.supportBundle}/download`, + method: 'HEAD', + ...params, + }) + }, + /** + * Download a file within a support bundle + */ + supportBundleDownloadFile: ( + { path }: { path: SupportBundleDownloadFilePathParams }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/experimental/v1/system/support-bundles/${path.supportBundle}/download/${path.file}`, + method: 'GET', + ...params, + }) + }, + /** + * Download the metadata of a file within the support bundle + */ + supportBundleHeadFile: ( + { path }: { path: SupportBundleHeadFilePathParams }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/experimental/v1/system/support-bundles/${path.supportBundle}/download/${path.file}`, + method: 'HEAD', + ...params, + }) + }, + /** + * Download the index of a support bundle + */ + supportBundleIndex: ( + { path }: { path: SupportBundleIndexPathParams }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/experimental/v1/system/support-bundles/${path.supportBundle}/index`, + method: 'GET', + ...params, + }) + }, /** * Authenticate a user via SAML */ @@ -6868,6 +7125,26 @@ export class Api extends HttpClient { ...params, }) }, + /** + * Fetch the LLDP neighbors seen on a switch port + */ + networkingSwitchPortLldpNeighbors: ( + { + path, + query = {}, + }: { + path: NetworkingSwitchPortLldpNeighborsPathParams + query?: NetworkingSwitchPortLldpNeighborsQueryParams + }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/v1/system/hardware/rack-switch-port/${path.rackId}/${path.switchLocation}/${path.port}/lldp/neighbors`, + method: 'GET', + query, + ...params, + }) + }, /** * List racks */ @@ -7006,6 +7283,49 @@ export class Api extends HttpClient { ...params, }) }, + /** + * Fetch the LLDP configuration for a switch port + */ + networkingSwitchPortLldpConfigView: ( + { + path, + query, + }: { + path: NetworkingSwitchPortLldpConfigViewPathParams + query: NetworkingSwitchPortLldpConfigViewQueryParams + }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/v1/system/hardware/switch-port/${path.port}/lldp/config`, + method: 'GET', + query, + ...params, + }) + }, + /** + * Update the LLDP configuration for a switch port + */ + networkingSwitchPortLldpConfigUpdate: ( + { + path, + query, + body, + }: { + path: NetworkingSwitchPortLldpConfigUpdatePathParams + query: NetworkingSwitchPortLldpConfigUpdateQueryParams + body: LldpLinkConfig + }, + params: FetchParams = {} + ) => { + return this.request({ + path: `/v1/system/hardware/switch-port/${path.port}/lldp/config`, + method: 'POST', + body, + query, + ...params, + }) + }, /** * Apply switch port settings */ diff --git a/app/api/__generated__/OMICRON_VERSION b/app/api/__generated__/OMICRON_VERSION index 9d2e2424b8..4d019212a1 100644 --- a/app/api/__generated__/OMICRON_VERSION +++ b/app/api/__generated__/OMICRON_VERSION @@ -1,2 +1,2 @@ # generated file. do not update manually. see docs/update-pinned-api.md -c6d4c55ffece9faf167e2da5aee044341ffdc24e +eeeb429a5a4c3aeff484c50638255f4c4eadc9ba diff --git a/app/api/__generated__/msw-handlers.ts b/app/api/__generated__/msw-handlers.ts index 562acb0b53..1ffb97a241 100644 --- a/app/api/__generated__/msw-handlers.ts +++ b/app/api/__generated__/msw-handlers.ts @@ -88,6 +88,59 @@ export interface MSWHandlers { req: Request cookies: Record }) => Promisable + /** `GET /experimental/v1/system/support-bundles` */ + supportBundleList: (params: { + query: Api.SupportBundleListQueryParams + req: Request + cookies: Record + }) => Promisable> + /** `POST /experimental/v1/system/support-bundles` */ + supportBundleCreate: (params: { + req: Request + cookies: Record + }) => Promisable> + /** `GET /experimental/v1/system/support-bundles/:supportBundle` */ + supportBundleView: (params: { + path: Api.SupportBundleViewPathParams + req: Request + cookies: Record + }) => Promisable> + /** `DELETE /experimental/v1/system/support-bundles/:supportBundle` */ + supportBundleDelete: (params: { + path: Api.SupportBundleDeletePathParams + req: Request + cookies: Record + }) => Promisable + /** `GET /experimental/v1/system/support-bundles/:supportBundle/download` */ + supportBundleDownload: (params: { + path: Api.SupportBundleDownloadPathParams + req: Request + cookies: Record + }) => Promisable + /** `HEAD /experimental/v1/system/support-bundles/:supportBundle/download` */ + supportBundleHead: (params: { + path: Api.SupportBundleHeadPathParams + req: Request + cookies: Record + }) => Promisable + /** `GET /experimental/v1/system/support-bundles/:supportBundle/download/:file` */ + supportBundleDownloadFile: (params: { + path: Api.SupportBundleDownloadFilePathParams + req: Request + cookies: Record + }) => Promisable + /** `HEAD /experimental/v1/system/support-bundles/:supportBundle/download/:file` */ + supportBundleHeadFile: (params: { + path: Api.SupportBundleHeadFilePathParams + req: Request + cookies: Record + }) => Promisable + /** `GET /experimental/v1/system/support-bundles/:supportBundle/index` */ + supportBundleIndex: (params: { + path: Api.SupportBundleIndexPathParams + req: Request + cookies: Record + }) => Promisable /** `POST /login/:siloName/saml/:providerName` */ loginSaml: (params: { path: Api.LoginSamlPathParams @@ -674,6 +727,13 @@ export interface MSWHandlers { req: Request cookies: Record }) => Promisable> + /** `GET /v1/system/hardware/rack-switch-port/:rackId/:switchLocation/:port/lldp/neighbors` */ + networkingSwitchPortLldpNeighbors: (params: { + path: Api.NetworkingSwitchPortLldpNeighborsPathParams + query: Api.NetworkingSwitchPortLldpNeighborsQueryParams + req: Request + cookies: Record + }) => Promisable> /** `GET /v1/system/hardware/racks` */ rackList: (params: { query: Api.RackListQueryParams @@ -737,6 +797,21 @@ export interface MSWHandlers { req: Request cookies: Record }) => Promisable> + /** `GET /v1/system/hardware/switch-port/:port/lldp/config` */ + networkingSwitchPortLldpConfigView: (params: { + path: Api.NetworkingSwitchPortLldpConfigViewPathParams + query: Api.NetworkingSwitchPortLldpConfigViewQueryParams + req: Request + cookies: Record + }) => Promisable> + /** `POST /v1/system/hardware/switch-port/:port/lldp/config` */ + networkingSwitchPortLldpConfigUpdate: (params: { + path: Api.NetworkingSwitchPortLldpConfigUpdatePathParams + query: Api.NetworkingSwitchPortLldpConfigUpdateQueryParams + body: Json + req: Request + cookies: Record + }) => Promisable /** `POST /v1/system/hardware/switch-port/:port/settings` */ networkingSwitchPortApplySettings: (params: { path: Api.NetworkingSwitchPortApplySettingsPathParams @@ -1527,6 +1602,46 @@ export function makeHandlers(handlers: MSWHandlers): HttpHandler[] { '/experimental/v1/probes/:probe', handler(handlers['probeDelete'], schema.ProbeDeleteParams, null) ), + http.get( + '/experimental/v1/system/support-bundles', + handler(handlers['supportBundleList'], schema.SupportBundleListParams, null) + ), + http.post( + '/experimental/v1/system/support-bundles', + handler(handlers['supportBundleCreate'], null, null) + ), + http.get( + '/experimental/v1/system/support-bundles/:supportBundle', + handler(handlers['supportBundleView'], schema.SupportBundleViewParams, null) + ), + http.delete( + '/experimental/v1/system/support-bundles/:supportBundle', + handler(handlers['supportBundleDelete'], schema.SupportBundleDeleteParams, null) + ), + http.get( + '/experimental/v1/system/support-bundles/:supportBundle/download', + handler(handlers['supportBundleDownload'], schema.SupportBundleDownloadParams, null) + ), + http.head( + '/experimental/v1/system/support-bundles/:supportBundle/download', + handler(handlers['supportBundleHead'], schema.SupportBundleHeadParams, null) + ), + http.get( + '/experimental/v1/system/support-bundles/:supportBundle/download/:file', + handler( + handlers['supportBundleDownloadFile'], + schema.SupportBundleDownloadFileParams, + null + ) + ), + http.head( + '/experimental/v1/system/support-bundles/:supportBundle/download/:file', + handler(handlers['supportBundleHeadFile'], schema.SupportBundleHeadFileParams, null) + ), + http.get( + '/experimental/v1/system/support-bundles/:supportBundle/index', + handler(handlers['supportBundleIndex'], schema.SupportBundleIndexParams, null) + ), http.post( '/login/:siloName/saml/:providerName', handler(handlers['loginSaml'], schema.LoginSamlParams, null) @@ -1976,6 +2091,14 @@ export function makeHandlers(handlers: MSWHandlers): HttpHandler[] { '/v1/system/hardware/disks/:diskId', handler(handlers['physicalDiskView'], schema.PhysicalDiskViewParams, null) ), + http.get( + '/v1/system/hardware/rack-switch-port/:rackId/:switchLocation/:port/lldp/neighbors', + handler( + handlers['networkingSwitchPortLldpNeighbors'], + schema.NetworkingSwitchPortLldpNeighborsParams, + null + ) + ), http.get( '/v1/system/hardware/racks', handler(handlers['rackList'], schema.RackListParams, null) @@ -2024,6 +2147,22 @@ export function makeHandlers(handlers: MSWHandlers): HttpHandler[] { null ) ), + http.get( + '/v1/system/hardware/switch-port/:port/lldp/config', + handler( + handlers['networkingSwitchPortLldpConfigView'], + schema.NetworkingSwitchPortLldpConfigViewParams, + null + ) + ), + http.post( + '/v1/system/hardware/switch-port/:port/lldp/config', + handler( + handlers['networkingSwitchPortLldpConfigUpdate'], + schema.NetworkingSwitchPortLldpConfigUpdateParams, + schema.LldpLinkConfig + ) + ), http.post( '/v1/system/hardware/switch-port/:port/settings', handler( diff --git a/app/api/__generated__/validate.ts b/app/api/__generated__/validate.ts index 9ce8b42d35..f554d5b36b 100644 --- a/app/api/__generated__/validate.ts +++ b/app/api/__generated__/validate.ts @@ -2187,6 +2187,32 @@ export const LldpLinkConfig = z.preprocess( }) ) +/** + * Information about LLDP advertisements from other network entities directly connected to a switch port. This structure contains both metadata about when and where the neighbor was seen, as well as the specific information the neighbor was advertising. + */ +export const LldpNeighbor = z.preprocess( + processResponseBody, + z.object({ + chassisId: z.string(), + firstSeen: z.coerce.date(), + lastSeen: z.coerce.date(), + linkDescription: z.string().optional(), + linkName: z.string(), + localPort: z.string(), + managementIp: IpNet.array(), + systemDescription: z.string().optional(), + systemName: z.string().optional(), + }) +) + +/** + * A single page of results + */ +export const LldpNeighborResultsPage = z.preprocess( + processResponseBody, + z.object({ items: LldpNeighbor.array(), nextPage: z.string().optional() }) +) + /** * A loopback address is an address that is assigned to a rack switch but is not associated with any particular port. */ @@ -3095,6 +3121,35 @@ export const SshKeyResultsPage = z.preprocess( z.object({ items: SshKey.array(), nextPage: z.string().optional() }) ) +export const TypedUuidForSupportBundleKind = z.preprocess( + processResponseBody, + z.string().uuid() +) + +export const SupportBundleState = z.preprocess( + processResponseBody, + z.enum(['collecting', 'destroying', 'failed', 'active']) +) + +export const SupportBundleInfo = z.preprocess( + processResponseBody, + z.object({ + id: TypedUuidForSupportBundleKind, + reasonForCreation: z.string(), + reasonForFailure: z.string().optional(), + state: SupportBundleState, + timeCreated: z.coerce.date(), + }) +) + +/** + * A single page of results + */ +export const SupportBundleInfoResultsPage = z.preprocess( + processResponseBody, + z.object({ items: SupportBundleInfo.array(), nextPage: z.string().optional() }) +) + /** * An operator's view of a Switch. */ @@ -3810,6 +3865,13 @@ export const NameOrIdSortMode = z.preprocess( z.enum(['name_ascending', 'name_descending', 'id_ascending']) ) +/** + * Supported set of sort modes for scanning by id only. + * + * Currently, we only support scanning in ascending order. + */ +export const IdSortMode = z.preprocess(processResponseBody, z.enum(['id_ascending'])) + export const DiskMetricName = z.preprocess( processResponseBody, z.enum(['activated', 'flush', 'read', 'read_bytes', 'write', 'write_bytes']) @@ -3823,13 +3885,6 @@ export const PaginationOrder = z.preprocess( z.enum(['ascending', 'descending']) ) -/** - * Supported set of sort modes for scanning by id only. - * - * Currently, we only support scanning in ascending order. - */ -export const IdSortMode = z.preprocess(processResponseBody, z.enum(['id_ascending'])) - export const SystemMetricName = z.preprocess( processResponseBody, z.enum(['virtual_disk_space_provisioned', 'cpus_provisioned', 'ram_provisioned']) @@ -3913,6 +3968,98 @@ export const ProbeDeleteParams = z.preprocess( }) ) +export const SupportBundleListParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({}), + query: z.object({ + limit: z.number().min(1).max(4294967295).optional(), + pageToken: z.string().optional(), + sortBy: IdSortMode.optional(), + }), + }) +) + +export const SupportBundleCreateParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({}), + query: z.object({}), + }) +) + +export const SupportBundleViewParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({ + supportBundle: z.string().uuid(), + }), + query: z.object({}), + }) +) + +export const SupportBundleDeleteParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({ + supportBundle: z.string().uuid(), + }), + query: z.object({}), + }) +) + +export const SupportBundleDownloadParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({ + supportBundle: z.string().uuid(), + }), + query: z.object({}), + }) +) + +export const SupportBundleHeadParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({ + supportBundle: z.string().uuid(), + }), + query: z.object({}), + }) +) + +export const SupportBundleDownloadFileParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({ + file: z.string(), + supportBundle: z.string().uuid(), + }), + query: z.object({}), + }) +) + +export const SupportBundleHeadFileParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({ + file: z.string(), + supportBundle: z.string().uuid(), + }), + query: z.object({}), + }) +) + +export const SupportBundleIndexParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({ + supportBundle: z.string().uuid(), + }), + query: z.object({}), + }) +) + export const LoginSamlParams = z.preprocess( processResponseBody, z.object({ @@ -4946,6 +5093,22 @@ export const PhysicalDiskViewParams = z.preprocess( }) ) +export const NetworkingSwitchPortLldpNeighborsParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({ + port: Name, + rackId: z.string().uuid(), + switchLocation: Name, + }), + query: z.object({ + limit: z.number().min(1).max(4294967295).optional(), + pageToken: z.string().optional(), + sortBy: IdSortMode.optional(), + }), + }) +) + export const RackListParams = z.preprocess( processResponseBody, z.object({ @@ -5060,6 +5223,32 @@ export const NetworkingSwitchPortListParams = z.preprocess( }) ) +export const NetworkingSwitchPortLldpConfigViewParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({ + port: Name, + }), + query: z.object({ + rackId: z.string().uuid(), + switchLocation: Name, + }), + }) +) + +export const NetworkingSwitchPortLldpConfigUpdateParams = z.preprocess( + processResponseBody, + z.object({ + path: z.object({ + port: Name, + }), + query: z.object({ + rackId: z.string().uuid(), + switchLocation: Name, + }), + }) +) + export const NetworkingSwitchPortApplySettingsParams = z.preprocess( processResponseBody, z.object({ diff --git a/mock-api/msw/handlers.ts b/mock-api/msw/handlers.ts index 376ad49714..05c5dbfb91 100644 --- a/mock-api/msw/handlers.ts +++ b/mock-api/msw/handlers.ts @@ -1571,10 +1571,10 @@ export const handlers = makeHandlers({ networkingBfdDisable: NotImplemented, networkingBfdEnable: NotImplemented, networkingBfdStatus: NotImplemented, - networkingBgpAnnouncementList: NotImplemented, - networkingBgpAnnounceSetUpdate: NotImplemented, networkingBgpAnnounceSetDelete: NotImplemented, networkingBgpAnnounceSetList: NotImplemented, + networkingBgpAnnounceSetUpdate: NotImplemented, + networkingBgpAnnouncementList: NotImplemented, networkingBgpConfigCreate: NotImplemented, networkingBgpConfigDelete: NotImplemented, networkingBgpConfigList: NotImplemented, @@ -1588,10 +1588,13 @@ export const handlers = makeHandlers({ networkingSwitchPortApplySettings: NotImplemented, networkingSwitchPortClearSettings: NotImplemented, networkingSwitchPortList: NotImplemented, + networkingSwitchPortLldpConfigUpdate: NotImplemented, + networkingSwitchPortLldpConfigView: NotImplemented, + networkingSwitchPortLldpNeighbors: NotImplemented, networkingSwitchPortSettingsCreate: NotImplemented, networkingSwitchPortSettingsDelete: NotImplemented, - networkingSwitchPortSettingsView: NotImplemented, networkingSwitchPortSettingsList: NotImplemented, + networkingSwitchPortSettingsView: NotImplemented, networkingSwitchPortStatus: NotImplemented, physicalDiskView: NotImplemented, probeCreate: NotImplemented, @@ -1608,6 +1611,15 @@ export const handlers = makeHandlers({ sledAdd: NotImplemented, sledListUninitialized: NotImplemented, sledSetProvisionPolicy: NotImplemented, + supportBundleCreate: NotImplemented, + supportBundleDelete: NotImplemented, + supportBundleDownload: NotImplemented, + supportBundleDownloadFile: NotImplemented, + supportBundleHead: NotImplemented, + supportBundleHeadFile: NotImplemented, + supportBundleIndex: NotImplemented, + supportBundleList: NotImplemented, + supportBundleView: NotImplemented, switchView: NotImplemented, systemPolicyUpdate: NotImplemented, systemQuotasList: NotImplemented,