swagger:operation GET /1.0/storage-pools/{poolName}/buckets/{bucketName} storage storage_pool_bucket_get Get the storage pool bucket Gets a specific storage pool bucket. --- produces: - application/json parameters: - in: path name: poolName description: Storage pool name
(d *Daemon, r *http.Request)
| 493 | // "500": |
| 494 | // $ref: "#/responses/InternalServerError" |
| 495 | func storagePoolBucketGet(d *Daemon, r *http.Request) response.Response { |
| 496 | s := d.State() |
| 497 | |
| 498 | resp := forwardedResponseIfTargetIsRemote(s, r) |
| 499 | if resp != nil { |
| 500 | return resp |
| 501 | } |
| 502 | |
| 503 | bucketProjectName, err := project.StorageBucketProject(r.Context(), s.DB.Cluster, request.ProjectParam(r)) |
| 504 | if err != nil { |
| 505 | return response.SmartError(err) |
| 506 | } |
| 507 | |
| 508 | poolName, err := pathVar(r, "poolName") |
| 509 | if err != nil { |
| 510 | return response.SmartError(err) |
| 511 | } |
| 512 | |
| 513 | pool, err := storagePools.LoadByName(s, poolName) |
| 514 | if err != nil { |
| 515 | return response.SmartError(fmt.Errorf("Failed loading storage pool: %w", err)) |
| 516 | } |
| 517 | |
| 518 | if !pool.Driver().Info().Buckets { |
| 519 | return response.BadRequest(errors.New("Storage pool does not support buckets")) |
| 520 | } |
| 521 | |
| 522 | bucketName, err := pathVar(r, "bucketName") |
| 523 | if err != nil { |
| 524 | return response.SmartError(err) |
| 525 | } |
| 526 | |
| 527 | targetMember := request.QueryParam(r, "target") |
| 528 | memberSpecific := targetMember != "" |
| 529 | |
| 530 | var bucket *db.StorageBucket |
| 531 | err = s.DB.Cluster.Transaction(r.Context(), func(ctx context.Context, tx *db.ClusterTx) error { |
| 532 | bucket, err = tx.GetStoragePoolBucket(ctx, pool.ID(), bucketProjectName, memberSpecific, bucketName) |
| 533 | return err |
| 534 | }) |
| 535 | if err != nil { |
| 536 | return response.SmartError(err) |
| 537 | } |
| 538 | |
| 539 | u := pool.GetBucketURL(bucket.Name) |
| 540 | if u != nil { |
| 541 | bucket.S3URL = u.String() |
| 542 | } |
| 543 | |
| 544 | // Prepare the response. |
| 545 | if localUtil.IsRecursionRequest(r) { |
| 546 | bucketFull, err := getBucketFull(r.Context(), s, pool, bucket.ID, bucket.StorageBucket) |
| 547 | if err != nil { |
| 548 | return response.InternalError(err) |
| 549 | } |
| 550 | |
| 551 | return response.SyncResponseETag(true, bucketFull, bucket.Etag()) |
| 552 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…