Files
nomad/client/host_volume_endpoint.go
Daniel Bennett 99c25fc635 dhv: mkdir plugin parameters: uid,guid,mode (#25533)
also remove Error logs from client rpc and promote plugin Debug logs to Error (since they have more info in them)
2025-03-28 10:13:13 -05:00

81 lines
1.9 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package client
import (
"context"
"time"
metrics "github.com/hashicorp/go-metrics/compat"
cstructs "github.com/hashicorp/nomad/client/structs"
)
type HostVolume struct {
c *Client
}
func newHostVolumesEndpoint(c *Client) *HostVolume {
v := &HostVolume{c: c}
return v
}
var hostVolumeRequestTimeout = time.Minute
func (v *HostVolume) Create(
req *cstructs.ClientHostVolumeCreateRequest,
resp *cstructs.ClientHostVolumeCreateResponse) error {
defer metrics.MeasureSince([]string{"client", "host_volume", "create"}, time.Now())
ctx, cancelFn := v.requestContext()
defer cancelFn()
cresp, err := v.c.hostVolumeManager.Create(ctx, req)
if err != nil {
return err
}
resp.CapacityBytes = cresp.CapacityBytes
resp.HostPath = cresp.HostPath
v.c.logger.Info("created host volume", "id", req.ID, "path", resp.HostPath)
return nil
}
func (v *HostVolume) Register(
req *cstructs.ClientHostVolumeRegisterRequest,
resp *cstructs.ClientHostVolumeRegisterResponse) error {
defer metrics.MeasureSince([]string{"client", "host_volume", "register"}, time.Now())
ctx, cancelFn := v.requestContext()
defer cancelFn()
err := v.c.hostVolumeManager.Register(ctx, req)
if err != nil {
return err
}
v.c.logger.Info("registered host volume", "id", req.ID, "path", req.HostPath)
return nil
}
func (v *HostVolume) Delete(
req *cstructs.ClientHostVolumeDeleteRequest,
resp *cstructs.ClientHostVolumeDeleteResponse) error {
defer metrics.MeasureSince([]string{"client", "host_volume", "create"}, time.Now())
ctx, cancelFn := v.requestContext()
defer cancelFn()
_, err := v.c.hostVolumeManager.Delete(ctx, req)
if err != nil {
return err
}
v.c.logger.Info("deleted host volume", "id", req.ID, "path", req.HostPath)
return nil
}
func (v *HostVolume) requestContext() (context.Context, context.CancelFunc) {
return context.WithTimeout(context.Background(), hostVolumeRequestTimeout)
}