| 4841 | } |
| 4842 | |
| 4843 | pub async fn provider_get(server: &str, name: &str, tls: &TlsOptions) -> Result<()> { |
| 4844 | let mut client = grpc_client(server, tls).await?; |
| 4845 | let response = client |
| 4846 | .get_provider(GetProviderRequest { |
| 4847 | name: name.to_string(), |
| 4848 | }) |
| 4849 | .await |
| 4850 | .into_diagnostic()?; |
| 4851 | |
| 4852 | let provider = response |
| 4853 | .into_inner() |
| 4854 | .provider |
| 4855 | .ok_or_else(|| miette::miette!("provider missing from response"))?; |
| 4856 | |
| 4857 | let credential_keys = provider.credentials.keys().cloned().collect::<Vec<_>>(); |
| 4858 | let config_keys = provider.config.keys().cloned().collect::<Vec<_>>(); |
| 4859 | |
| 4860 | println!("{}", "Provider:".cyan().bold()); |
| 4861 | println!(); |
| 4862 | println!(" {} {}", "Id:".dimmed(), provider.object_id()); |
| 4863 | println!(" {} {}", "Name:".dimmed(), provider.object_name()); |
| 4864 | println!(" {} {}", "Type:".dimmed(), provider.r#type); |
| 4865 | println!( |
| 4866 | " {} {}", |
| 4867 | "Resource version:".dimmed(), |
| 4868 | provider.metadata.as_ref().map_or(0, |m| m.resource_version) |
| 4869 | ); |
| 4870 | println!( |
| 4871 | " {} {}", |
| 4872 | "Credential keys:".dimmed(), |
| 4873 | if credential_keys.is_empty() { |
| 4874 | "<none>".to_string() |
| 4875 | } else { |
| 4876 | credential_keys.join(", ") |
| 4877 | } |
| 4878 | ); |
| 4879 | println!( |
| 4880 | " {} {}", |
| 4881 | "Config keys:".dimmed(), |
| 4882 | if config_keys.is_empty() { |
| 4883 | "<none>".to_string() |
| 4884 | } else { |
| 4885 | config_keys.join(", ") |
| 4886 | } |
| 4887 | ); |
| 4888 | |
| 4889 | Ok(()) |
| 4890 | } |
| 4891 | |
| 4892 | fn provider_to_json(provider: &Provider) -> serde_json::Value { |
| 4893 | let mut obj = serde_json::Map::new(); |