diff --git a/app/forms/disk-create.tsx b/app/forms/disk-create.tsx index c08699dc6..f274c1c98 100644 --- a/app/forms/disk-create.tsx +++ b/app/forms/disk-create.tsx @@ -5,6 +5,13 @@ * * Copyright Oxide Computer Company */ +// Read-only disk creation is disabled pending a propolis fix. To re-enable: +// 1. Uncomment CheckboxField import and JSX in this file +// 2. Uncomment CheckboxField JSX in app/forms/instance-create.tsx +// 3. Use `values.bootDiskReadOnly` instead of hardcoded `false` in instance-create.tsx getBootDisk +// 4. Use `source.readOnly` instead of hardcoded `false` in the onSubmit handler below +// 5. Unskip e2e tests in test/e2e/disks.e2e.ts and test/e2e/instance-create.e2e.ts +// https://github.com/oxidecomputer/console/issues/3071 import { useQuery } from '@tanstack/react-query' import { filesize } from 'filesize' import { useMemo } from 'react' @@ -23,7 +30,7 @@ import { type Image, } from '@oxide/api' -import { CheckboxField } from '~/components/form/fields/CheckboxField' +// import { CheckboxField } from '~/components/form/fields/CheckboxField' // re-enable with #3071 import { DescriptionField } from '~/components/form/fields/DescriptionField' import { DiskSizeField } from '~/components/form/fields/DiskSizeField' import { toImageComboboxItem } from '~/components/form/fields/ImageSelectField' @@ -172,14 +179,14 @@ export function CreateDiskSideModalForm({ // image ID is validated by the form: it's required when the // field is present (i.e., when image type is selected) imageId: source.imageId!, - readOnly: source.readOnly, + readOnly: false, })) .with({ type: 'snapshot' }, (source) => ({ type: 'snapshot' as const, // snapshot ID is validated by the form: it's required when // the field is present (i.e., when snapshot type is selected) snapshotId: source.snapshotId!, - readOnly: source.readOnly, + readOnly: false, })) .exhaustive(), })) @@ -370,22 +377,28 @@ const DiskSourceField = ({ } }} /> + {/* Read-only disk creation disabled pending propolis fix + https://github.com/oxidecomputer/console/issues/3071
Make disk read-only
+ */} )} {diskSource.type === 'snapshot' && ( <> + {/* Read-only disk creation disabled pending propolis fix + https://github.com/oxidecomputer/console/issues/3071
Make disk read-only
+ */} )} diff --git a/app/forms/instance-create.tsx b/app/forms/instance-create.tsx index 84bfb5bcc..e77293002 100644 --- a/app/forms/instance-create.tsx +++ b/app/forms/instance-create.tsx @@ -115,7 +115,7 @@ const getBootDiskAttachment = ( diskSource: { type: 'image', imageId: source, - readOnly: values.bootDiskReadOnly, + readOnly: false, }, }, } @@ -398,6 +398,8 @@ export default function CreateInstanceForm() { } }} /> + {/* Read-only disk creation disabled pending propolis fix + https://github.com/oxidecomputer/console/issues/3071
Make disk read-only + */} ) diff --git a/test/e2e/disks.e2e.ts b/test/e2e/disks.e2e.ts index 913c4ee66..4353845b3 100644 --- a/test/e2e/disks.e2e.ts +++ b/test/e2e/disks.e2e.ts @@ -238,7 +238,9 @@ test('Create local disk with size > 1023 GiB', async ({ page }) => { }) }) -test('Create disk from snapshot with read-only', async ({ page }) => { +// Read-only disk creation disabled pending propolis fix +// https://github.com/oxidecomputer/console/issues/3071 +test.skip('Create disk from snapshot with read-only', async ({ page }) => { await page.goto('/projects/mock-project/disks-new') await page.getByRole('textbox', { name: 'Name' }).fill('a-new-disk') await page.getByRole('radio', { name: 'Snapshot' }).click() @@ -259,7 +261,9 @@ test('Create disk from snapshot with read-only', async ({ page }) => { await expect(modal.getByLabel('e6c58826-62fb-4205-820e-620407cd04e7')).toBeVisible() }) -test('Create disk from image with read-only', async ({ page }) => { +// Read-only disk creation disabled pending propolis fix +// https://github.com/oxidecomputer/console/issues/3071 +test.skip('Create disk from image with read-only', async ({ page }) => { await page.goto('/projects/mock-project/disks-new') await page.getByRole('textbox', { name: 'Name' }).fill('a-new-disk') await page.getByRole('radio', { name: 'Image' }).click() diff --git a/test/e2e/instance-create.e2e.ts b/test/e2e/instance-create.e2e.ts index 484b08798..ebdbcb632 100644 --- a/test/e2e/instance-create.e2e.ts +++ b/test/e2e/instance-create.e2e.ts @@ -1195,7 +1195,9 @@ test('floating IPs are filtered by NIC IP version', async ({ page }) => { await expect(page.getByText('to attach a floating IP')).toBeVisible() }) -test('can create instance with read-only boot disk', async ({ page }) => { +// Read-only disk creation disabled pending propolis fix +// https://github.com/oxidecomputer/console/issues/3071 +test.skip('can create instance with read-only boot disk', async ({ page }) => { await page.goto('/projects/mock-project/instances-new') const instanceName = 'readonly-boot-instance'