mirror of
https://github.com/sergi0g/cup.git
synced 2025-11-16 09:03:46 -05:00
Probably a bad attempt at fixing a huge bug in multiple servers
This commit is contained in:
@@ -17,7 +17,7 @@ async fn get_remote_updates(ctx: &Context, client: &Client, refresh: bool) -> Ve
|
|||||||
|
|
||||||
let handles: Vec<_> = ctx.config.servers
|
let handles: Vec<_> = ctx.config.servers
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(name, url)| async {
|
.map(|(name, url)| async move {
|
||||||
let base_url = if url.starts_with("http://") || url.starts_with("https://") {
|
let base_url = if url.starts_with("http://") || url.starts_with("https://") {
|
||||||
format!("{}/api/v3/", url.trim_end_matches('/'))
|
format!("{}/api/v3/", url.trim_end_matches('/'))
|
||||||
} else {
|
} else {
|
||||||
@@ -47,16 +47,21 @@ async fn get_remote_updates(ctx: &Context, client: &Client, refresh: bool) -> Ve
|
|||||||
return Vec::new();
|
return Vec::new();
|
||||||
}
|
}
|
||||||
let json = parse_json(&get_response_body(response).await);
|
let json = parse_json(&get_response_body(response).await);
|
||||||
|
ctx.logger.debug(format!("JSON response for {}: {}", name, json));
|
||||||
if let Some(updates) = json["images"].as_array() {
|
if let Some(updates) = json["images"].as_array() {
|
||||||
let mut server_updates: Vec<Update> = updates
|
let mut server_updates: Vec<Update> = updates
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|img| serde_json::from_value(img.clone()).ok())
|
.filter_map(|img| match serde_json::from_value(img.clone()) {
|
||||||
|
Ok(o) => o,
|
||||||
|
Err(e) => {dbg!(e);None}
|
||||||
|
})
|
||||||
.collect();
|
.collect();
|
||||||
// Add server origin to each image
|
// Add server origin to each image
|
||||||
for update in &mut server_updates {
|
for update in &mut server_updates {
|
||||||
update.server = Some(name.clone());
|
update.server = Some(name.clone());
|
||||||
update.status = update.get_status();
|
update.status = update.get_status();
|
||||||
}
|
}
|
||||||
|
ctx.logger.debug(format!("Updates for {}: {:#?}", name, server_updates));
|
||||||
return server_updates;
|
return server_updates;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
/// Enum for image status
|
/// Enum for image status
|
||||||
#[derive(Ord, Eq, PartialEq, PartialOrd, Clone)]
|
#[derive(Ord, Eq, PartialEq, PartialOrd, Clone, Debug)]
|
||||||
#[cfg_attr(test, derive(Debug))]
|
|
||||||
pub enum Status {
|
pub enum Status {
|
||||||
UpdateMajor,
|
UpdateMajor,
|
||||||
UpdateMinor,
|
UpdateMinor,
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ use serde::{ser::SerializeStruct, Deserialize, Serialize};
|
|||||||
|
|
||||||
use super::{parts::Parts, status::Status};
|
use super::{parts::Parts, status::Status};
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Clone)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[cfg_attr(test, derive(PartialEq, Debug, Default))]
|
#[cfg_attr(test, derive(PartialEq, Default))]
|
||||||
pub struct Update {
|
pub struct Update {
|
||||||
pub reference: String,
|
pub reference: String,
|
||||||
pub parts: Parts,
|
pub parts: Parts,
|
||||||
@@ -14,16 +14,16 @@ pub struct Update {
|
|||||||
pub status: Status,
|
pub status: Status,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Clone)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[cfg_attr(test, derive(PartialEq, Debug, Default))]
|
#[cfg_attr(test, derive(PartialEq, Default))]
|
||||||
pub struct UpdateResult {
|
pub struct UpdateResult {
|
||||||
pub has_update: Option<bool>,
|
pub has_update: Option<bool>,
|
||||||
pub info: UpdateInfo,
|
pub info: UpdateInfo,
|
||||||
pub error: Option<String>,
|
pub error: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Clone)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[cfg_attr(test, derive(PartialEq, Debug, Default))]
|
#[cfg_attr(test, derive(PartialEq, Default))]
|
||||||
#[serde(untagged)]
|
#[serde(untagged)]
|
||||||
pub enum UpdateInfo {
|
pub enum UpdateInfo {
|
||||||
#[cfg_attr(test, default)]
|
#[cfg_attr(test, default)]
|
||||||
@@ -32,8 +32,8 @@ pub enum UpdateInfo {
|
|||||||
Digest(DigestUpdateInfo),
|
Digest(DigestUpdateInfo),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Clone)]
|
#[derive(Deserialize, Clone, Debug)]
|
||||||
#[cfg_attr(test, derive(PartialEq, Debug))]
|
#[cfg_attr(test, derive(PartialEq))]
|
||||||
pub struct VersionUpdateInfo {
|
pub struct VersionUpdateInfo {
|
||||||
pub version_update_type: String,
|
pub version_update_type: String,
|
||||||
pub new_tag: String,
|
pub new_tag: String,
|
||||||
@@ -41,8 +41,8 @@ pub struct VersionUpdateInfo {
|
|||||||
pub new_version: String,
|
pub new_version: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Clone)]
|
#[derive(Deserialize, Clone, Debug)]
|
||||||
#[cfg_attr(test, derive(PartialEq, Debug))]
|
#[cfg_attr(test, derive(PartialEq))]
|
||||||
pub struct DigestUpdateInfo {
|
pub struct DigestUpdateInfo {
|
||||||
pub local_digests: Vec<String>,
|
pub local_digests: Vec<String>,
|
||||||
pub remote_digest: Option<String>,
|
pub remote_digest: Option<String>,
|
||||||
@@ -53,10 +53,12 @@ impl Serialize for VersionUpdateInfo {
|
|||||||
where
|
where
|
||||||
S: serde::Serializer,
|
S: serde::Serializer,
|
||||||
{
|
{
|
||||||
let mut state = serializer.serialize_struct("VersionUpdateInfo", 3)?;
|
let mut state = serializer.serialize_struct("VersionUpdateInfo", 5)?;
|
||||||
let _ = state.serialize_field("type", "version");
|
let _ = state.serialize_field("type", "version");
|
||||||
let _ = state.serialize_field("version_update_type", &self.version_update_type);
|
let _ = state.serialize_field("version_update_type", &self.version_update_type);
|
||||||
let _ = state.serialize_field("new_tag", &self.new_tag);
|
let _ = state.serialize_field("new_tag", &self.new_tag);
|
||||||
|
let _ = state.serialize_field("current_version", &self.current_version);
|
||||||
|
let _ = state.serialize_field("new_version", &self.new_version);
|
||||||
state.end()
|
state.end()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user