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'