MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / provider_update

Function provider_update

crates/openshell-cli/src/run.rs:5640–5720  ·  view source on GitHub ↗
(
    server: &str,
    name: &str,
    from_existing: bool,
    credentials: &[String],
    config: &[String],
    credential_expires_at: &[String],
    tls: &TlsOptions,
)

Source from the content-addressed store, hash-verified

5638}
5639
5640pub async fn provider_update(
5641 server: &str,
5642 name: &str,
5643 from_existing: bool,
5644 credentials: &[String],
5645 config: &[String],
5646 credential_expires_at: &[String],
5647 tls: &TlsOptions,
5648) -> Result<()> {
5649 if from_existing && !credentials.is_empty() {
5650 return Err(miette::miette!(
5651 "--from-existing cannot be combined with --credential"
5652 ));
5653 }
5654
5655 let mut client = grpc_client(server, tls).await?;
5656
5657 let mut credential_map = parse_credential_pairs(credentials)?;
5658 let mut config_map = parse_key_value_pairs(config, "--config")?;
5659 let credential_expires_at_ms = parse_credential_expiry_pairs(credential_expires_at)?;
5660
5661 if from_existing {
5662 // Fetch the existing provider to discover its type for credential lookup.
5663 let existing = client
5664 .get_provider(GetProviderRequest {
5665 name: name.to_string(),
5666 })
5667 .await
5668 .into_diagnostic()?
5669 .into_inner()
5670 .provider
5671 .ok_or_else(|| miette::miette!("provider '{name}' not found"))?;
5672
5673 let provider_type = existing.r#type;
5674 let discovered = discover_existing_provider_data(&mut client, &provider_type).await?;
5675 let Some(discovered) = discovered else {
5676 return Err(miette::miette!(
5677 "no existing local credentials/config found for provider type '{provider_type}'"
5678 ));
5679 };
5680
5681 for (key, value) in discovered.credentials {
5682 credential_map.entry(key).or_insert(value);
5683 }
5684 for (key, value) in discovered.config {
5685 config_map.entry(key).or_insert(value);
5686 }
5687 }
5688
5689 let response = client
5690 .update_provider(UpdateProviderRequest {
5691 provider: Some(Provider {
5692 metadata: Some(openshell_core::proto::datamodel::v1::ObjectMeta {
5693 id: String::new(),
5694 name: name.to_string(),
5695 created_at_ms: 0,
5696 labels: HashMap::new(),
5697 resource_version: 0,

Calls 8

grpc_clientFunction · 0.85
parse_credential_pairsFunction · 0.85
parse_key_value_pairsFunction · 0.85
is_emptyMethod · 0.45
get_providerMethod · 0.45
update_providerMethod · 0.45