Add local CAS pin metadata
This commit is contained in:
parent
99f6dee26f
commit
00471bcec0
9 changed files with 169 additions and 16 deletions
|
|
@ -225,18 +225,38 @@ pub fn handle_request(
|
|||
let present = cas.has(&hash)?;
|
||||
Ok(ControlResponse::CasHas { hash, present })
|
||||
}
|
||||
ControlRequest::CasPin { hash } => {
|
||||
let cas = LocalCas::new(node.paths.cas_dir());
|
||||
if !cas.has(&hash)? {
|
||||
return Err(NodeError::Cas(geth_cas::CasError::NotFound(
|
||||
hash.to_string(),
|
||||
)));
|
||||
}
|
||||
store.pin_cas_object(hash.as_str())?;
|
||||
Ok(ControlResponse::CasPinned { hash, pinned: true })
|
||||
}
|
||||
ControlRequest::CasUnpin { hash } => {
|
||||
geth_cas::validate_hash(&hash)?;
|
||||
store.unpin_cas_object(hash.as_str())?;
|
||||
Ok(ControlResponse::CasPinned {
|
||||
hash,
|
||||
pinned: false,
|
||||
})
|
||||
}
|
||||
ControlRequest::CasList => {
|
||||
let cas = LocalCas::new(node.paths.cas_dir());
|
||||
Ok(ControlResponse::CasList {
|
||||
blobs: cas
|
||||
.list()?
|
||||
.into_iter()
|
||||
.map(|blob| CasBlob {
|
||||
let blobs = cas
|
||||
.list()?
|
||||
.into_iter()
|
||||
.map(|blob| {
|
||||
Ok(CasBlob {
|
||||
pinned: store.is_cas_object_pinned(blob.hash.as_str())?,
|
||||
hash: blob.hash,
|
||||
size_bytes: blob.size_bytes,
|
||||
})
|
||||
.collect(),
|
||||
})
|
||||
})
|
||||
.collect::<Result<Vec<_>, NodeError>>()?;
|
||||
Ok(ControlResponse::CasList { blobs })
|
||||
}
|
||||
ControlRequest::KeychainInit { admin_key_path } => {
|
||||
let mut ops = Vec::new();
|
||||
|
|
|
|||
Loading…
Reference in a new issue