summaryrefslogtreecommitdiff
path: root/src/updater.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/updater.rs')
-rw-r--r--src/updater.rs41
1 files changed, 17 insertions, 24 deletions
diff --git a/src/updater.rs b/src/updater.rs
index c90f1e6..666c87d 100644
--- a/src/updater.rs
+++ b/src/updater.rs
@@ -19,9 +19,8 @@ pub struct FileInput {
}
pub fn update_images(now: &DateTime<Utc>, db: &dyn Db, reg: &dyn Registries, files: &[FileInput], outcomes: &mut Vec<Result<Vec<FilePatch>, String>>) {
- let mut file_indices: Vec<usize> = vec![];
- let mut image_ranges: Vec<Range<usize>> = vec![];
- let mut imgs: Vec<DockerRef> = vec![];
+ let mut file_idxs: Vec<usize> = vec![];
+ let mut parsed: Vec<DockerRef> = vec![];
let mut images: Vec<Image> = vec![];
for (file_idx, file) in files.iter().enumerate() {
@@ -46,9 +45,8 @@ pub fn update_images(now: &DateTime<Utc>, db: &dyn Db, reg: &dyn Registries, fil
},
};
- file_indices.push(file_idx);
- image_ranges.push(image.clone());
- imgs.push(img);
+ file_idxs.push(file_idx);
+ parsed.push(img);
images.push(image_record);
}
}
@@ -93,23 +91,20 @@ pub fn update_images(now: &DateTime<Utc>, db: &dyn Db, reg: &dyn Registries, fil
file_errors.push(None);
}
- for i in 0..imgs.len() {
- let file_idx = file_indices[i];
+ for i in 0..parsed.len() {
+ let file_idx = file_idxs[i];
let file = &files[file_idx];
if file_errors[file_idx].is_some() {
continue;
}
- let img = &imgs[i];
- let registry = img.registry.as_ref()
- .map(|x| &file.content[x.clone()])
- .unwrap_or("registry.hub.docker.com");
+ let img = &parsed[i];
let mut tag = img.tag.as_ref().map(|x| file.content[x.clone()].to_string());
let image_record = &images[i];
- println!("Checking image {}", &file.content[image_ranges[i].clone()]);
- metrics::get().images_checked.with_label_values(&[registry]).inc();
+ println!("Checking image {}", image_record.image);
+ metrics::get().images_checked.with_label_values(&[&image_record.registry]).inc();
let tags = db.get_tags_sorted(image_record.id);
@@ -118,13 +113,6 @@ pub fn update_images(now: &DateTime<Utc>, db: &dyn Db, reg: &dyn Registries, fil
continue;
}
- let tag_for_digest = tag.as_deref().unwrap_or("latest");
- let cached_digest = if image_record.expires_at <= *now {
- None // Cache was stale, ignore cached digest
- } else {
- db.get_tag_digest(image_record.id, tag_for_digest)
- };
-
if let Some(ref tag_str) = tag {
let mut current = VersionPattern::parse(&tag_str);
let mut new_tag = None;
@@ -148,17 +136,22 @@ pub fn update_images(now: &DateTime<Utc>, db: &dyn Db, reg: &dyn Registries, fil
position: img.tag.clone().unwrap(),
content: new_tag,
});
- metrics::get().images_updated.with_label_values(&[registry]).inc();
+ metrics::get().images_updated.with_label_values(&[&image_record.registry]).inc();
}
}
if let Some(ref digest) = img.digest {
let tag_for_digest = tag.as_deref().unwrap_or("latest");
+ let cached_digest = if image_record.expires_at > *now {
+ db.get_tag_digest(image_record.id, tag_for_digest)
+ } else {
+ None
+ };
let digest_result = match cached_digest {
Some(d) => Ok(d),
None => {
- match reg.get_digest(registry, &image_record.image, tag_for_digest) {
+ match reg.get_digest(&image_record.registry, &image_record.image, tag_for_digest) {
Some(fetched) => {
db.update_tag_digest(image_record.id, tag_for_digest, &fetched, now);
Ok(fetched)
@@ -181,7 +174,7 @@ pub fn update_images(now: &DateTime<Utc>, db: &dyn Db, reg: &dyn Registries, fil
position: img.digest.clone().unwrap(),
content: digest_string,
});
- metrics::get().images_updated.with_label_values(&[registry]).inc();
+ metrics::get().images_updated.with_label_values(&[&image_record.registry]).inc();
}
}
}