MCPcopy Create free account
hub / github.com/Dstack-TEE/dstack / create_dns_credential

Method create_dns_credential

gateway/src/admin_service.rs:322–361  ·  view source on GitHub ↗
(
        self,
        request: CreateDnsCredentialRequest,
    )

Source from the content-addressed store, hash-verified

320 }
321
322 async fn create_dns_credential(
323 self,
324 request: CreateDnsCredentialRequest,
325 ) -> Result<DnsCredentialInfo> {
326 let kv_store = self.state.kv_store();
327
328 // Validate provider type
329 let provider = match request.provider_type.as_str() {
330 "cloudflare" => DnsProvider::Cloudflare {
331 api_token: request.cf_api_token,
332 api_url: request.cf_api_url,
333 },
334 _ => bail!("unsupported provider type: {}", request.provider_type),
335 };
336
337 let now = now_secs();
338 let id = generate_cred_id();
339 let dns_txt_ttl = request.dns_txt_ttl.unwrap_or(60);
340 let max_dns_wait = Duration::from_secs(request.max_dns_wait.unwrap_or(60 * 5).into());
341 let cred = DnsCredential {
342 id: id.clone(),
343 name: request.name,
344 provider,
345 created_at: now,
346 updated_at: now,
347 dns_txt_ttl,
348 max_dns_wait,
349 };
350
351 kv_store.save_dns_credential(&cred)?;
352 info!("Created DNS credential: {} ({})", cred.name, cred.id);
353
354 // Set as default if requested
355 if request.set_as_default {
356 kv_store.set_default_dns_credential_id(&id)?;
357 info!("Set DNS credential {} as default", id);
358 }
359
360 Ok(dns_cred_to_proto(cred))
361 }
362
363 async fn update_dns_credential(
364 self,

Callers

nothing calls this directly

Calls 8

generate_cred_idFunction · 0.85
dns_cred_to_protoFunction · 0.85
kv_storeMethod · 0.80
cloneMethod · 0.80
save_dns_credentialMethod · 0.80
now_secsFunction · 0.70
as_strMethod · 0.45

Tested by

no test coverage detected