diff --git a/OMICRON_VERSION b/OMICRON_VERSION index f10bcfe606..106a8e6a7b 100644 --- a/OMICRON_VERSION +++ b/OMICRON_VERSION @@ -1 +1 @@ -a14e6bb877451f7307ced4b079c298855cb974dc +7e18e523687767bb8c75070945ac398a5b89d9fd diff --git a/app/api/__generated__/API_VERSION b/app/api/__generated__/API_VERSION index f397d6b63d..d5f572486a 100644 --- a/app/api/__generated__/API_VERSION +++ b/app/api/__generated__/API_VERSION @@ -1 +1 @@ -2026091100.0.0 +2026091500.0.0 diff --git a/app/api/__generated__/Api.ts b/app/api/__generated__/Api.ts index 5e1516ba16..a021b1bf49 100644 --- a/app/api/__generated__/Api.ts +++ b/app/api/__generated__/Api.ts @@ -4325,8 +4325,6 @@ export type SiloCreate = { Note that if configuring a SAML based identity provider, group_attribute_name must be set for users to be considered part of a group. See `SamlIdentityProviderCreate` for more information. */ adminGroupName?: string | null description: string - /** A non-discoverable silo can only be retrieved by ID - it will not be part of the "list all silos" output. */ - discoverable: boolean identityMode: SiloIdentityMode /** Mapping of which Fleet roles are conferred by each Silo role @@ -7740,7 +7738,7 @@ export class Api { * Pulled from info.version in the OpenAPI schema. Sent in the * `api-version` header on all requests. */ - apiVersion = '2026091100.0.0' + apiVersion = '2026091500.0.0' constructor({ host = '', baseParams = {}, token }: ApiConfig = {}) { this.host = host diff --git a/app/api/__generated__/OMICRON_VERSION b/app/api/__generated__/OMICRON_VERSION index 5c6066821e..48bd6a4e7e 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 -a14e6bb877451f7307ced4b079c298855cb974dc +7e18e523687767bb8c75070945ac398a5b89d9fd diff --git a/app/api/__generated__/validate.ts b/app/api/__generated__/validate.ts index 4bfa1c7d49..c7056c6c35 100644 --- a/app/api/__generated__/validate.ts +++ b/app/api/__generated__/validate.ts @@ -3940,7 +3940,6 @@ export const SiloCreate = z.preprocess( z.object({ adminGroupName: z.string().nullable().optional(), description: z.string(), - discoverable: SafeBoolean, identityMode: SiloIdentityMode, mappedFleetRoles: z.record(z.string(), FleetRole.array().refine(...uniqueItems)), name: Name, diff --git a/app/forms/silo-create.tsx b/app/forms/silo-create.tsx index 26bda1528d..734d5a82e8 100644 --- a/app/forms/silo-create.tsx +++ b/app/forms/silo-create.tsx @@ -39,7 +39,6 @@ export type SiloCreateFormValues = Omit & { const defaultValues: SiloCreateFormValues = { name: '', description: '', - discoverable: true, identityMode: 'saml_jit', adminGroupName: '', tlsCertificates: [], @@ -121,9 +120,6 @@ export default function CreateSiloSideModalForm() { } /> - - Discoverable - makeLinkCell((name) => pb.silo({ silo: name }))(info), }), colHelper.accessor('description', Columns.description), - colHelper.accessor('discoverable', { - cell: (info) => , - }), colHelper.accessor((silo) => silo.identityMode, { header: 'Identity mode', cell: (info) => {info.getValue().replace('_', ' ')}, diff --git a/app/table/cells/BooleanCell.tsx b/app/table/cells/BooleanCell.tsx deleted file mode 100644 index e02b1b4dd1..0000000000 --- a/app/table/cells/BooleanCell.tsx +++ /dev/null @@ -1,24 +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 - */ - -// there seems to be a bug in the linter. it doesn't want you to use the string -// "true" because it insists it's a boolean -import { Disabled12Icon, Success12Icon } from '@oxide/design-system/icons/react' - -export const BooleanCell = ({ isTrue }: { isTrue: boolean }) => - isTrue ? ( - - ) : ( - - ) diff --git a/mock-api/msw/handlers.ts b/mock-api/msw/handlers.ts index 2dc72a30a0..94c81d216e 100644 --- a/mock-api/msw/handlers.ts +++ b/mock-api/msw/handlers.ts @@ -1946,6 +1946,11 @@ export const handlers = makeHandlers({ id: uuid(), ...getTimestamps(), ...body, + // discoverable was removed from SiloCreate, but it's still on the Silo + // view. Silo creation through the API hardcodes discoverable: true in + // the DB model + // https://github.com/oxidecomputer/omicron/blob/71f52a3/nexus/db-queries/src/db/datastore/silo.rs#L164 + discoverable: true, mapped_fleet_roles: body.mapped_fleet_roles || {}, } db.silos.push(newSilo) diff --git a/mock-api/silo.ts b/mock-api/silo.ts index 7f02a0e15c..6734ce1dec 100644 --- a/mock-api/silo.ts +++ b/mock-api/silo.ts @@ -52,7 +52,7 @@ export const silos: Json = [ description: 'silo with v6-only default pool', time_created: new Date(2024, 0, 1).toISOString(), time_modified: new Date(2024, 0, 2).toISOString(), - discoverable: false, + discoverable: true, identity_mode: 'saml_jit', mapped_fleet_roles: {}, }, @@ -62,7 +62,7 @@ export const silos: Json = [ description: 'silo with no default pools', time_created: new Date(2024, 0, 3).toISOString(), time_modified: new Date(2024, 0, 4).toISOString(), - discoverable: false, + discoverable: true, identity_mode: 'saml_jit', mapped_fleet_roles: {}, }, @@ -72,7 +72,7 @@ export const silos: Json = [ description: 'silo with no IP pools', time_created: new Date(2024, 0, 11).toISOString(), time_modified: new Date(2024, 0, 12).toISOString(), - discoverable: false, + discoverable: true, identity_mode: 'saml_jit', mapped_fleet_roles: {}, }, diff --git a/test/e2e/silos.e2e.ts b/test/e2e/silos.e2e.ts index ca97146baf..ae46947f99 100644 --- a/test/e2e/silos.e2e.ts +++ b/test/e2e/silos.e2e.ts @@ -71,8 +71,6 @@ test('Create silo', async ({ page }) => { await expectRowVisible(table, { name: 'maze-war', 'Identity mode': 'saml jit', - // not easy to assert this until we can calculate accessible name instead of text content - // discoverable: 'true', }) await expect(page.getByText('Feb 28, 202312:00 AM')).toBeVisible() @@ -84,9 +82,6 @@ test('Create silo', async ({ page }) => { // fill out form await page.getByRole('textbox', { name: 'Name', exact: true }).fill('other-silo') await page.getByRole('textbox', { name: 'Description' }).fill('definitely a silo') - const discoverable = page.getByRole('checkbox', { name: 'Discoverable' }) - await expect(discoverable).toBeChecked() - await discoverable.click() await expect(page.getByRole('textbox', { name: 'Admin group name' })).toBeVisible() await page.getByRole('textbox', { name: 'Admin group name' }).fill('admins') await page.getByRole('checkbox', { name: 'Grant fleet admin' }).click() @@ -213,7 +208,6 @@ test('Create silo', async ({ page }) => { name: 'other-silo', description: 'definitely a silo', 'Identity mode': 'saml jit', - // discoverable: 'false', }) const otherSiloCell = page.getByRole('cell', { name: 'other-silo' }) await expect(otherSiloCell).toBeVisible()