Skip to content

Commit

Permalink
fix schema migration after rebase
Browse files Browse the repository at this point in the history
  • Loading branch information
gjcolombo committed Jun 4, 2024
1 parent e315211 commit afc2069
Show file tree
Hide file tree
Showing 23 changed files with 114 additions and 71 deletions.
2 changes: 1 addition & 1 deletion nexus/db-model/src/schema_versions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use std::collections::BTreeMap;
///
/// This must be updated when you change the database schema. Refer to
/// schema/crdb/README.adoc in the root of this repository for details.
pub const SCHEMA_VERSION: SemverVersion = SemverVersion::new(68, 0, 0);
pub const SCHEMA_VERSION: SemverVersion = SemverVersion::new(69, 0, 0);

/// List of all past database schema versions, in *reverse* order
///
Expand Down
8 changes: 4 additions & 4 deletions nexus/tests/integration_tests/schema.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1229,7 +1229,7 @@ fn after_37_0_1(client: &Client) -> BoxFuture<'_, ()> {
})
}

fn before_68_0_0(client: &Client) -> BoxFuture<'_, ()> {
fn before_69_0_0(client: &Client) -> BoxFuture<'_, ()> {
Box::pin(async move {
client
.batch_execute(&format!(
Expand Down Expand Up @@ -1270,7 +1270,7 @@ fn before_68_0_0(client: &Client) -> BoxFuture<'_, ()> {
})
}

fn after_68_0_0(client: &Client) -> BoxFuture<'_, ()> {
fn after_69_0_0(client: &Client) -> BoxFuture<'_, ()> {
Box::pin(async {
let rows = client
.query("SELECT state FROM instance ORDER BY id", &[])
Expand Down Expand Up @@ -1338,8 +1338,8 @@ fn get_migration_checks() -> BTreeMap<SemverVersion, DataMigrationFns> {
DataMigrationFns { before: None, after: after_37_0_1 },
);
map.insert(
SemverVersion(semver::Version::parse("68.0.0").unwrap()),
DataMigrationFns { before: Some(before_68_0_0), after: after_68_0_0 },
SemverVersion(semver::Version::parse("69.0.0").unwrap()),
DataMigrationFns { before: Some(before_69_0_0), after: after_69_0_0 },
);

map
Expand Down
2 changes: 1 addition & 1 deletion schema/crdb/dbinit.sql
Original file line number Diff line number Diff line change
Expand Up @@ -4050,7 +4050,7 @@ INSERT INTO omicron.public.db_metadata (
version,
target_version
) VALUES
(TRUE, NOW(), NOW(), '68.0.0', NULL)
(TRUE, NOW(), NOW(), '69.0.0', NULL)
ON CONFLICT DO NOTHING;

COMMIT;
8 changes: 1 addition & 7 deletions schema/crdb/separate-instance-and-vmm-states/up02.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1 @@
CREATE TYPE IF NOT EXISTS omicron.public.instance_state_v2 AS ENUM (
'creating',
'no_vmm',
'vmm',
'failed',
'destroyed'
);
DROP VIEW IF EXISTS omicron.public.v2p_mapping_view;
8 changes: 7 additions & 1 deletion schema/crdb/separate-instance-and-vmm-states/up03.sql
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
ALTER TABLE omicron.public.instance ADD COLUMN IF NOT EXISTS downlevel_state omicron.public.instance_state;
CREATE TYPE IF NOT EXISTS omicron.public.instance_state_v2 AS ENUM (
'creating',
'no_vmm',
'vmm',
'failed',
'destroyed'
);
3 changes: 1 addition & 2 deletions schema/crdb/separate-instance-and-vmm-states/up04.sql
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
SET LOCAL disallow_full_table_scans = off;
UPDATE omicron.public.instance SET downlevel_state = state;
ALTER TABLE omicron.public.instance ADD COLUMN IF NOT EXISTS downlevel_state omicron.public.instance_state;
3 changes: 2 additions & 1 deletion schema/crdb/separate-instance-and-vmm-states/up05.sql
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
ALTER TABLE omicron.public.instance DROP COLUMN IF EXISTS state;
SET LOCAL disallow_full_table_scans = off;
UPDATE omicron.public.instance SET downlevel_state = state;
2 changes: 1 addition & 1 deletion schema/crdb/separate-instance-and-vmm-states/up06.sql
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ALTER TABLE omicron.public.instance ADD COLUMN IF NOT EXISTS state omicron.public.instance_state_v2;
ALTER TABLE omicron.public.instance DROP COLUMN IF EXISTS state;
9 changes: 1 addition & 8 deletions schema/crdb/separate-instance-and-vmm-states/up07.sql
Original file line number Diff line number Diff line change
@@ -1,8 +1 @@
SET LOCAL disallow_full_table_scans = off;
UPDATE omicron.public.instance SET state = CASE
WHEN downlevel_state = 'creating' THEN 'creating'
WHEN downlevel_state = 'failed' THEN 'failed'
WHEN downlevel_state = 'destroyed' THEN 'destroyed'
WHEN active_propolis_id IS NOT NULL THEN 'vmm'
ELSE 'no_vmm'
END;
ALTER TABLE omicron.public.instance ADD COLUMN IF NOT EXISTS state omicron.public.instance_state_v2;
9 changes: 8 additions & 1 deletion schema/crdb/separate-instance-and-vmm-states/up08.sql
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
ALTER TABLE omicron.public.instance ALTER COLUMN state SET NOT NULL;
SET LOCAL disallow_full_table_scans = off;
UPDATE omicron.public.instance SET state = CASE
WHEN downlevel_state = 'creating' THEN 'creating'
WHEN downlevel_state = 'failed' THEN 'failed'
WHEN downlevel_state = 'destroyed' THEN 'destroyed'
WHEN active_propolis_id IS NOT NULL THEN 'vmm'
ELSE 'no_vmm'
END;
2 changes: 1 addition & 1 deletion schema/crdb/separate-instance-and-vmm-states/up09.sql
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ALTER TABLE omicron.public.instance DROP COLUMN IF EXISTS downlevel_state;
ALTER TABLE omicron.public.instance ALTER COLUMN state SET NOT NULL;
11 changes: 1 addition & 10 deletions schema/crdb/separate-instance-and-vmm-states/up10.sql
Original file line number Diff line number Diff line change
@@ -1,10 +1 @@
CREATE TYPE IF NOT EXISTS omicron.public.vmm_state AS ENUM (
'starting',
'running',
'stopping',
'stopped',
'rebooting',
'migrating',
'failed',
'destroyed'
);
ALTER TABLE omicron.public.instance DROP COLUMN IF EXISTS downlevel_state;
11 changes: 10 additions & 1 deletion schema/crdb/separate-instance-and-vmm-states/up11.sql
Original file line number Diff line number Diff line change
@@ -1 +1,10 @@
ALTER TABLE omicron.public.vmm ADD COLUMN IF NOT EXISTS downlevel_state omicron.public.instance_state;
CREATE TYPE IF NOT EXISTS omicron.public.vmm_state AS ENUM (
'starting',
'running',
'stopping',
'stopped',
'rebooting',
'migrating',
'failed',
'destroyed'
);
3 changes: 1 addition & 2 deletions schema/crdb/separate-instance-and-vmm-states/up12.sql
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
SET LOCAL disallow_full_table_scans = off;
UPDATE omicron.public.vmm SET downlevel_state = state;
ALTER TABLE omicron.public.vmm ADD COLUMN IF NOT EXISTS downlevel_state omicron.public.instance_state;
3 changes: 2 additions & 1 deletion schema/crdb/separate-instance-and-vmm-states/up13.sql
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
ALTER TABLE omicron.public.vmm DROP COLUMN IF EXISTS state;
SET LOCAL disallow_full_table_scans = off;
UPDATE omicron.public.vmm SET downlevel_state = state;
2 changes: 1 addition & 1 deletion schema/crdb/separate-instance-and-vmm-states/up14.sql
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ALTER TABLE omicron.public.vmm ADD COLUMN IF NOT EXISTS state omicron.public.vmm_state;
ALTER TABLE omicron.public.vmm DROP COLUMN IF EXISTS state;
3 changes: 1 addition & 2 deletions schema/crdb/separate-instance-and-vmm-states/up15.sql
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
SET LOCAL disallow_full_table_scans = off;
UPDATE omicron.public.vmm SET state = downlevel_state::text::vmm_state;
ALTER TABLE omicron.public.vmm ADD COLUMN IF NOT EXISTS state omicron.public.vmm_state;
3 changes: 2 additions & 1 deletion schema/crdb/separate-instance-and-vmm-states/up16.sql
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
ALTER TABLE omicron.public.vmm ALTER COLUMN state SET NOT NULL;
SET LOCAL disallow_full_table_scans = off;
UPDATE omicron.public.vmm SET state = downlevel_state::text::vmm_state;
2 changes: 1 addition & 1 deletion schema/crdb/separate-instance-and-vmm-states/up17.sql
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ALTER TABLE omicron.public.vmm DROP COLUMN IF EXISTS downlevel_state;
ALTER TABLE omicron.public.vmm ALTER COLUMN state SET NOT NULL;
24 changes: 1 addition & 23 deletions schema/crdb/separate-instance-and-vmm-states/up18.sql
Original file line number Diff line number Diff line change
@@ -1,23 +1 @@
CREATE OR REPLACE VIEW omicron.public.sled_instance
AS SELECT
instance.id,
instance.name,
silo.name as silo_name,
project.name as project_name,
vmm.sled_id as active_sled_id,
instance.time_created,
instance.time_modified,
instance.migration_id,
instance.ncpus,
instance.memory,
vmm.state
FROM
omicron.public.instance AS instance
JOIN omicron.public.project AS project ON
instance.project_id = project.id
JOIN omicron.public.silo AS silo ON
project.silo_id = silo.id
JOIN omicron.public.vmm AS vmm ON
instance.active_propolis_id = vmm.id
WHERE
instance.time_deleted IS NULL AND vmm.time_deleted IS NULL;
ALTER TABLE omicron.public.vmm DROP COLUMN IF EXISTS downlevel_state;
24 changes: 23 additions & 1 deletion schema/crdb/separate-instance-and-vmm-states/up19.sql
Original file line number Diff line number Diff line change
@@ -1 +1,23 @@
DROP TYPE IF EXISTS omicron.public.instance_state;
CREATE OR REPLACE VIEW omicron.public.sled_instance
AS SELECT
instance.id,
instance.name,
silo.name as silo_name,
project.name as project_name,
vmm.sled_id as active_sled_id,
instance.time_created,
instance.time_modified,
instance.migration_id,
instance.ncpus,
instance.memory,
vmm.state
FROM
omicron.public.instance AS instance
JOIN omicron.public.project AS project ON
instance.project_id = project.id
JOIN omicron.public.silo AS silo ON
project.silo_id = silo.id
JOIN omicron.public.vmm AS vmm ON
instance.active_propolis_id = vmm.id
WHERE
instance.time_deleted IS NULL AND vmm.time_deleted IS NULL;
1 change: 1 addition & 0 deletions schema/crdb/separate-instance-and-vmm-states/up20.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DROP TYPE IF EXISTS omicron.public.instance_state;
42 changes: 42 additions & 0 deletions schema/crdb/separate-instance-and-vmm-states/up21.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
CREATE VIEW IF NOT EXISTS omicron.public.v2p_mapping_view
AS
WITH VmV2pMappings AS (
SELECT
n.id as nic_id,
s.id as sled_id,
s.ip as sled_ip,
v.vni,
n.mac,
n.ip
FROM omicron.public.network_interface n
JOIN omicron.public.vpc_subnet vs ON vs.id = n.subnet_id
JOIN omicron.public.vpc v ON v.id = n.vpc_id
JOIN omicron.public.vmm vmm ON n.parent_id = vmm.instance_id
JOIN omicron.public.sled s ON vmm.sled_id = s.id
WHERE n.time_deleted IS NULL
AND n.kind = 'instance'
AND (vmm.state = 'running' OR vmm.state = 'starting')
AND s.sled_policy = 'in_service'
AND s.sled_state = 'active'
),
ProbeV2pMapping AS (
SELECT
n.id as nic_id,
s.id as sled_id,
s.ip as sled_ip,
v.vni,
n.mac,
n.ip
FROM omicron.public.network_interface n
JOIN omicron.public.vpc_subnet vs ON vs.id = n.subnet_id
JOIN omicron.public.vpc v ON v.id = n.vpc_id
JOIN omicron.public.probe p ON n.parent_id = p.id
JOIN omicron.public.sled s ON p.sled = s.id
WHERE n.time_deleted IS NULL
AND n.kind = 'probe'
AND s.sled_policy = 'in_service'
AND s.sled_state = 'active'
)
SELECT nic_id, sled_id, sled_ip, vni, mac, ip FROM VmV2pMappings
UNION
SELECT nic_id, sled_id, sled_ip, vni, mac, ip FROM ProbeV2pMapping;

0 comments on commit afc2069

Please sign in to comment.