MCPcopy
hub / github.com/lxc/incus / storagePoolBucketKeyGet

Function storagePoolBucketKeyGet

cmd/incusd/storage_buckets.go:1383–1442  ·  view source on GitHub ↗

swagger:operation GET /1.0/storage-pools/{poolName}/buckets/{bucketName}/keys/{keyName} storage storage_pool_bucket_key_get Get the storage pool bucket key Gets a specific storage pool bucket key. --- produces: - application/json parameters: - in: path name: poolName descript

(d *Daemon, r *http.Request)

Source from the content-addressed store, hash-verified

1381// "500":
1382// $ref: "#/responses/InternalServerError"
1383func storagePoolBucketKeyGet(d *Daemon, r *http.Request) response.Response {
1384 s := d.State()
1385
1386 resp := forwardedResponseIfTargetIsRemote(s, r)
1387 if resp != nil {
1388 return resp
1389 }
1390
1391 bucketProjectName, err := project.StorageBucketProject(r.Context(), s.DB.Cluster, request.ProjectParam(r))
1392 if err != nil {
1393 return response.SmartError(err)
1394 }
1395
1396 poolName, err := pathVar(r, "poolName")
1397 if err != nil {
1398 return response.SmartError(err)
1399 }
1400
1401 pool, err := storagePools.LoadByName(s, poolName)
1402 if err != nil {
1403 return response.SmartError(fmt.Errorf("Failed loading storage pool: %w", err))
1404 }
1405
1406 if !pool.Driver().Info().Buckets {
1407 return response.BadRequest(errors.New("Storage pool does not support buckets"))
1408 }
1409
1410 bucketName, err := pathVar(r, "bucketName")
1411 if err != nil {
1412 return response.SmartError(err)
1413 }
1414
1415 keyName, err := pathVar(r, "keyName")
1416 if err != nil {
1417 return response.SmartError(err)
1418 }
1419
1420 targetMember := request.QueryParam(r, "target")
1421 memberSpecific := targetMember != ""
1422
1423 var bucketKey *db.StorageBucketKey
1424 err = s.DB.Cluster.Transaction(r.Context(), func(ctx context.Context, tx *db.ClusterTx) error {
1425 bucket, err := tx.GetStoragePoolBucket(ctx, pool.ID(), bucketProjectName, memberSpecific, bucketName)
1426 if err != nil {
1427 return err
1428 }
1429
1430 bucketKey, err = tx.GetStoragePoolBucketKey(ctx, bucket.ID, keyName)
1431 if err != nil {
1432 return err
1433 }
1434
1435 return nil
1436 })
1437 if err != nil {
1438 return response.SmartError(err)
1439 }
1440

Callers

nothing calls this directly

Calls 15

EtagMethod · 0.95
StorageBucketProjectFunction · 0.92
ProjectParamFunction · 0.92
SmartErrorFunction · 0.92
BadRequestFunction · 0.92
QueryParamFunction · 0.92
SyncResponseETagFunction · 0.92
pathVarFunction · 0.85
ContextMethod · 0.80
ErrorfMethod · 0.80
StateMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…