mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-31 04:23:40 +00:00
fix migration for alpha.10 (#2811)
* fix migration for alpha.10 * fix binds * don't commit if db model does not match * stronger guard * better guard
This commit is contained in:
2
core/Cargo.lock
generated
2
core/Cargo.lock
generated
@@ -5920,7 +5920,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "start-os"
|
name = "start-os"
|
||||||
version = "0.3.6-alpha.10"
|
version = "0.3.6-alpha.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes 0.7.5",
|
"aes 0.7.5",
|
||||||
"async-acme",
|
"async-acme",
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ keywords = [
|
|||||||
name = "start-os"
|
name = "start-os"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
repository = "https://github.com/Start9Labs/start-os"
|
repository = "https://github.com/Start9Labs/start-os"
|
||||||
version = "0.3.6-alpha.10"
|
version = "0.3.6-alpha.11"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
@@ -226,7 +226,7 @@ zbus = "5.1.1"
|
|||||||
zeroize = "1.6.0"
|
zeroize = "1.6.0"
|
||||||
mail-send = { git = "https://github.com/dr-bonez/mail-send.git", branch = "main" }
|
mail-send = { git = "https://github.com/dr-bonez/mail-send.git", branch = "main" }
|
||||||
rustls = "0.23.20"
|
rustls = "0.23.20"
|
||||||
rustls-pki-types = { version = "1.10.1", features = ["alloc"]}
|
rustls-pki-types = { version = "1.10.1", features = ["alloc"] }
|
||||||
|
|
||||||
[profile.test]
|
[profile.test]
|
||||||
opt-level = 3
|
opt-level = 3
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ use imbl_value::{to_value, InternedString};
|
|||||||
use patch_db::json_ptr::ROOT;
|
use patch_db::json_ptr::ROOT;
|
||||||
|
|
||||||
use crate::context::RpcContext;
|
use crate::context::RpcContext;
|
||||||
|
use crate::db::model::Database;
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use crate::Error;
|
use crate::Error;
|
||||||
|
|
||||||
@@ -28,8 +29,9 @@ mod v0_3_6_alpha_8;
|
|||||||
mod v0_3_6_alpha_9;
|
mod v0_3_6_alpha_9;
|
||||||
|
|
||||||
mod v0_3_6_alpha_10;
|
mod v0_3_6_alpha_10;
|
||||||
|
mod v0_3_6_alpha_11;
|
||||||
|
|
||||||
pub type Current = v0_3_6_alpha_10::Version; // VERSION_BUMP
|
pub type Current = v0_3_6_alpha_11::Version; // VERSION_BUMP
|
||||||
|
|
||||||
impl Current {
|
impl Current {
|
||||||
#[instrument(skip(self, db))]
|
#[instrument(skip(self, db))]
|
||||||
@@ -52,6 +54,7 @@ impl Current {
|
|||||||
let pre_ups = PreUps::load(&from, &self).await?;
|
let pre_ups = PreUps::load(&from, &self).await?;
|
||||||
db.apply_function(|mut db| {
|
db.apply_function(|mut db| {
|
||||||
migrate_from_unchecked(&from, &self, pre_ups, &mut db)?;
|
migrate_from_unchecked(&from, &self, pre_ups, &mut db)?;
|
||||||
|
from_value::<Database>(db.clone())?;
|
||||||
Ok::<_, Error>((db, ()))
|
Ok::<_, Error>((db, ()))
|
||||||
})
|
})
|
||||||
.await?;
|
.await?;
|
||||||
@@ -109,6 +112,7 @@ enum Version {
|
|||||||
V0_3_6_alpha_8(Wrapper<v0_3_6_alpha_8::Version>),
|
V0_3_6_alpha_8(Wrapper<v0_3_6_alpha_8::Version>),
|
||||||
V0_3_6_alpha_9(Wrapper<v0_3_6_alpha_9::Version>),
|
V0_3_6_alpha_9(Wrapper<v0_3_6_alpha_9::Version>),
|
||||||
V0_3_6_alpha_10(Wrapper<v0_3_6_alpha_10::Version>),
|
V0_3_6_alpha_10(Wrapper<v0_3_6_alpha_10::Version>),
|
||||||
|
V0_3_6_alpha_11(Wrapper<v0_3_6_alpha_11::Version>),
|
||||||
Other(exver::Version),
|
Other(exver::Version),
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,6 +147,7 @@ impl Version {
|
|||||||
Self::V0_3_6_alpha_8(v) => DynVersion(Box::new(v.0)),
|
Self::V0_3_6_alpha_8(v) => DynVersion(Box::new(v.0)),
|
||||||
Self::V0_3_6_alpha_9(v) => DynVersion(Box::new(v.0)),
|
Self::V0_3_6_alpha_9(v) => DynVersion(Box::new(v.0)),
|
||||||
Self::V0_3_6_alpha_10(v) => DynVersion(Box::new(v.0)),
|
Self::V0_3_6_alpha_10(v) => DynVersion(Box::new(v.0)),
|
||||||
|
Self::V0_3_6_alpha_11(v) => DynVersion(Box::new(v.0)),
|
||||||
Self::Other(v) => {
|
Self::Other(v) => {
|
||||||
return Err(Error::new(
|
return Err(Error::new(
|
||||||
eyre!("unknown version {v}"),
|
eyre!("unknown version {v}"),
|
||||||
@@ -169,6 +174,7 @@ impl Version {
|
|||||||
Version::V0_3_6_alpha_8(Wrapper(x)) => x.semver(),
|
Version::V0_3_6_alpha_8(Wrapper(x)) => x.semver(),
|
||||||
Version::V0_3_6_alpha_9(Wrapper(x)) => x.semver(),
|
Version::V0_3_6_alpha_9(Wrapper(x)) => x.semver(),
|
||||||
Version::V0_3_6_alpha_10(Wrapper(x)) => x.semver(),
|
Version::V0_3_6_alpha_10(Wrapper(x)) => x.semver(),
|
||||||
|
Version::V0_3_6_alpha_11(Wrapper(x)) => x.semver(),
|
||||||
Version::Other(x) => x.clone(),
|
Version::Other(x) => x.clone(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
83
core/startos/src/version/v0_3_6_alpha_11.rs
Normal file
83
core/startos/src/version/v0_3_6_alpha_11.rs
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
use exver::{PreReleaseSegment, VersionRange};
|
||||||
|
use imbl_value::json;
|
||||||
|
|
||||||
|
use super::v0_3_5::V0_3_0_COMPAT;
|
||||||
|
use super::{v0_3_6_alpha_10, VersionT};
|
||||||
|
use crate::prelude::*;
|
||||||
|
|
||||||
|
lazy_static::lazy_static! {
|
||||||
|
static ref V0_3_6_alpha_11: exver::Version = exver::Version::new(
|
||||||
|
[0, 3, 6],
|
||||||
|
[PreReleaseSegment::String("alpha".into()), 11.into()]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Copy, Debug, Default)]
|
||||||
|
pub struct Version;
|
||||||
|
|
||||||
|
impl VersionT for Version {
|
||||||
|
type Previous = v0_3_6_alpha_10::Version;
|
||||||
|
type PreUpRes = ();
|
||||||
|
|
||||||
|
async fn pre_up(self) -> Result<Self::PreUpRes, Error> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
fn semver(self) -> exver::Version {
|
||||||
|
V0_3_6_alpha_11.clone()
|
||||||
|
}
|
||||||
|
fn compat(self) -> &'static VersionRange {
|
||||||
|
&V0_3_0_COMPAT
|
||||||
|
}
|
||||||
|
fn up(self, db: &mut Value, _: Self::PreUpRes) -> Result<(), Error> {
|
||||||
|
let acme = std::mem::replace(
|
||||||
|
&mut db["public"]["serverInfo"]["acme"],
|
||||||
|
Value::Object(Default::default()),
|
||||||
|
);
|
||||||
|
if !acme.is_null() && acme["provider"].as_str().is_some() {
|
||||||
|
db["public"]["serverInfo"]["acme"]
|
||||||
|
[&acme["provider"].as_str().or_not_found("provider")?] =
|
||||||
|
json!({ "contact": &acme["contact"] });
|
||||||
|
}
|
||||||
|
|
||||||
|
for (_, package) in db["public"]["packageData"]
|
||||||
|
.as_object_mut()
|
||||||
|
.ok_or_else(|| {
|
||||||
|
Error::new(
|
||||||
|
eyre!("expected public.packageData to be an object"),
|
||||||
|
ErrorKind::Database,
|
||||||
|
)
|
||||||
|
})?
|
||||||
|
.iter_mut()
|
||||||
|
{
|
||||||
|
for (_, host) in package["hosts"]
|
||||||
|
.as_object_mut()
|
||||||
|
.ok_or_else(|| {
|
||||||
|
Error::new(
|
||||||
|
eyre!("expected public.packageData[id].hosts to be an object"),
|
||||||
|
ErrorKind::Database,
|
||||||
|
)
|
||||||
|
})?
|
||||||
|
.iter_mut()
|
||||||
|
{
|
||||||
|
for (_, bind) in host["bindings"]
|
||||||
|
.as_object_mut()
|
||||||
|
.ok_or_else(|| {
|
||||||
|
Error::new(
|
||||||
|
eyre!("expected public.packageData[id].hosts[hostId].bindings to be an object"),
|
||||||
|
ErrorKind::Database,
|
||||||
|
)
|
||||||
|
})?
|
||||||
|
.iter_mut()
|
||||||
|
{
|
||||||
|
bind["net"] = bind["lan"].clone();
|
||||||
|
bind["net"]["public"] = Value::Bool(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
fn down(self, _db: &mut Value) -> Result<(), Error> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
4
web/package-lock.json
generated
4
web/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "startos-ui",
|
"name": "startos-ui",
|
||||||
"version": "0.3.6-alpha.10",
|
"version": "0.3.6-alpha.11",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "startos-ui",
|
"name": "startos-ui",
|
||||||
"version": "0.3.6-alpha.10",
|
"version": "0.3.6-alpha.11",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^14.1.0",
|
"@angular/animations": "^14.1.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "startos-ui",
|
"name": "startos-ui",
|
||||||
"version": "0.3.6-alpha.10",
|
"version": "0.3.6-alpha.11",
|
||||||
"author": "Start9 Labs, Inc",
|
"author": "Start9 Labs, Inc",
|
||||||
"homepage": "https://start9.com/",
|
"homepage": "https://start9.com/",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
Reference in New Issue
Block a user