git.delta.rocks / jrsonnet / refs/commits / cd4874aa6417

difftreelog

refactor db data

Yaroslav Bolyukin2021-09-18parent: #5eda055.patch.diff
in: trunk

4 files changed

deletedsrc/db/db.rsdiffbeforeafterboth

no changes

addedsrc/db/dbr.rsdiffbeforeafterboth

no changes

modifiedsrc/db/mod.rsdiffbeforeafterboth
1mod db;1mod dbr;
2pub mod secret;2pub mod secret;
33
4pub use db::*;4pub use dbr::*;
55
modifiedsrc/db/secret.rsdiffbeforeafterboth
1use crate::{command::CommandExt, host::FleetConfig, nix::SECRETS_ATTRIBUTE};1use crate::{command::CommandExt, host::FleetOpts, nix::SECRETS_ATTRIBUTE};
2use anyhow::{bail, Result};2use anyhow::{bail, Context, Result};
3use log::info;3use log::info;
4use serde::{Deserialize, Deserializer, Serialize, Serializer};4use serde::{Deserialize, Deserializer, Serialize, Serializer};
5use std::{5use std::{
10};10};
11use time::{Duration, PrimitiveDateTime};11use time::{Duration, PrimitiveDateTime};
1212
13use super::db::DbData;13use super::DbData;
1414
15#[derive(Serialize, Deserialize, Debug)]15#[derive(Serialize, Deserialize, Debug)]
16pub struct SecretListData {16pub struct SecretListData {
31 }) s)31 }) s)
32 "#,32 "#,
33 )33 )
34 .arg("--json")
34 .run_json()35 .run_json()
36 .context("while getting secret list")
35}37}
3638
37struct ReadableDate(PrimitiveDateTime);39struct ReadableDate(PrimitiveDateTime);
109 // Secrets are generated on machine running fleet command111 // Secrets are generated on machine running fleet command
110 pub fn generate_secret(112 pub fn generate_secret(
111 &mut self,113 &mut self,
112 fleet_config: FleetConfig,114 _fleet_config: &FleetOpts,
113 secret: &str,115 secret: &str,
114 data: &SecretListData,116 data: &SecretListData,
115 ) -> Result<()> {117 ) -> Result<()> {
116 let mut rage_keys = String::new();118 let mut rage_keys = String::new();
117 for (i, owner) in data.owners.iter().enumerate() {119 for (i, _owner) in data.owners.iter().enumerate() {
118 if i != 0 {120 if i != 0 {
119 rage_keys.push(' ');121 rage_keys.push(' ');
120 }122 }
121 rage_keys.push_str("--recipient \"");123 rage_keys.push_str("--recipient \"");
124 // rage_keys.push_str(&fleet_config.clone().build()?.host(owner)?.key()?);
122 // rage_keys.push_str(&keys.get_host_key(&owner)?);125 //rage_keys.push_str(&keys.get_host_key(&owner)?);
123 rage_keys.push('"')126 rage_keys.push('"')
124 }127 }
125 let created_at: PrimitiveDateTime = SystemTime::now().into();128 let created_at: PrimitiveDateTime = SystemTime::now().into();
154 let name = entry.file_name();157 let name = entry.file_name();
155 let name = name158 let name = name
156 .to_str()159 .to_str()
157 .ok_or(anyhow::anyhow!("file name should be utf-8"))?;160 .ok_or_else(|| anyhow::anyhow!("file name should be utf-8"))?;
158 let value = String::from_utf8(std::fs::read(entry.path())?)?;161 let value = String::from_utf8(std::fs::read(entry.path())?)?;
159 if let Some(name) = name.strip_prefix("pub_") {162 if let Some(name) = name.strip_prefix("pub_") {
160 secret_data.public_data.insert(name.into(), value);163 secret_data.public_data.insert(name.into(), value);
176 return Ok(true);179 return Ok(true);
177 }180 }
178181
179 if !secret.is_valid(&data) {182 if !secret.is_valid(data) {
180 return Ok(true);183 return Ok(true);
181 }184 }
182185
185 pub fn ensure_generated(188 pub fn ensure_generated(
186 &mut self,189 &mut self,
187 // keys: &KeyDb,190 // keys: &KeyDb,
191 fleet_config: &FleetOpts,
188 secret: &str,192 secret: &str,
189 data: &SecretListData,193 data: &SecretListData,
190 ) -> Result<()> {194 ) -> Result<()> {
191 if self.need_to_generate(secret, data)? {195 if self.need_to_generate(secret, data)? {
192 info!("Generating secret {}", secret);196 info!("Generating secret {}", secret);
193 // self.generate_secret(keys, secret, data)?;197 self.generate_secret(fleet_config, secret, data)?;
194 }198 }
195199
196 Ok(())200 Ok(())