From 710a4c6da66e87bd75f671d60dbfa79195c7ee59 Mon Sep 17 00:00:00 2001 From: Boris Glimcher Date: Thu, 3 Aug 2023 23:48:53 +0300 Subject: [PATCH] refactor(storage): rename volume_id -> volume_name_ref Signed-off-by: Boris Glimcher --- docker-compose.yml | 2 +- go.mod | 8 +-- go.sum | 16 ++--- pkg/middleend/qos.go | 15 ++-- pkg/middleend/qos_test.go | 148 ++++++++++++++++---------------------- 5 files changed, 79 insertions(+), 110 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 9054243c..29887e35 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -68,7 +68,7 @@ services: test: grpcurl -plaintext localhost:50051 list || exit 1 opi-spdk-client: - image: ghcr.io/opiproject/godpu:main@sha256:f9ed4453b1f43e896f2ae05d2d57fbd62fd8891716efd9cc3dba49557dce3bbb + image: ghcr.io/opiproject/godpu:main@sha256:532b641df768a345b12d6e5fae481ab90394fd40cb3a21aa77791418b13e29a1 networks: - opi depends_on: diff --git a/go.mod b/go.mod index e42b99d9..2883e240 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/digitalocean/go-qemu v0.0.0-20230711162256-2e3d0186973e github.com/google/uuid v1.3.0 github.com/opiproject/gospdk v0.0.0-20230724125810-f9b59208a93e - github.com/opiproject/opi-api v0.0.0-20230802143709-76c2f23d70d5 + github.com/opiproject/opi-api v0.0.0-20230803153709-1e58d25ae2be go.einride.tech/aip v0.61.0 google.golang.org/grpc v1.57.0 google.golang.org/protobuf v1.31.0 @@ -18,7 +18,7 @@ require ( golang.org/x/net v0.13.0 // indirect golang.org/x/sys v0.10.0 // indirect golang.org/x/text v0.11.0 // indirect - google.golang.org/genproto v0.0.0-20230731193218-e0aa005b6bdf // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230731193218-e0aa005b6bdf // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf // indirect + google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 // indirect ) diff --git a/go.sum b/go.sum index 19d119d3..1860b358 100644 --- a/go.sum +++ b/go.sum @@ -13,8 +13,8 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/opiproject/gospdk v0.0.0-20230724125810-f9b59208a93e h1:y27NgCS0+ESFLR40iwWm7OM0qi++zTjRDuQt09+iie8= github.com/opiproject/gospdk v0.0.0-20230724125810-f9b59208a93e/go.mod h1:RqA5Ix7+x0Is8UckJE+6Ji5kCfk6yujWWaTMoRlZv3w= -github.com/opiproject/opi-api v0.0.0-20230802143709-76c2f23d70d5 h1:L0TDC4GEqKUpoiZAqEezI/Cha5sstiXg4ZNqLgYUPn0= -github.com/opiproject/opi-api v0.0.0-20230802143709-76c2f23d70d5/go.mod h1:92pv4ulvvPMuxCJ9ND3aYbmBfEMLx0VCjpkiR7ZTqPY= +github.com/opiproject/opi-api v0.0.0-20230803153709-1e58d25ae2be h1:YwIWGD+r0FHjuAjLq+ISExvm39bBpipZdAYe0cM5D9I= +github.com/opiproject/opi-api v0.0.0-20230803153709-1e58d25ae2be/go.mod h1:92pv4ulvvPMuxCJ9ND3aYbmBfEMLx0VCjpkiR7ZTqPY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -52,12 +52,12 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20230731193218-e0aa005b6bdf h1:v5Cf4E9+6tawYrs/grq1q1hFpGtzlGFzgWHqwt6NFiU= -google.golang.org/genproto v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= -google.golang.org/genproto/googleapis/api v0.0.0-20230731193218-e0aa005b6bdf h1:xkVZ5FdZJF4U82Q/JS+DcZA83s/GRVL+QrFMlexk9Yo= -google.golang.org/genproto/googleapis/api v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf h1:guOdSPaeFgN+jEJwTo1dQ71hdBm+yKSCCKuTRkJzcVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230731193218-e0aa005b6bdf/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 h1:eSaPbMR4T7WfH9FvABk36NBMacoTUKdWCvV0dx+KfOg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/pkg/middleend/qos.go b/pkg/middleend/qos.go index fe593041..ae8595b2 100644 --- a/pkg/middleend/qos.go +++ b/pkg/middleend/qos.go @@ -59,7 +59,7 @@ func (s *Server) CreateQosVolume(_ context.Context, in *pb.CreateQosVolumeReques return volume, nil } - if err := s.setMaxLimit(in.QosVolume.VolumeId.Value, in.QosVolume.MaxLimit); err != nil { + if err := s.setMaxLimit(in.QosVolume.VolumeNameRef, in.QosVolume.MaxLimit); err != nil { return nil, err } @@ -93,7 +93,7 @@ func (s *Server) DeleteQosVolume(_ context.Context, in *pb.DeleteQosVolumeReques return nil, err } - if err := s.cleanMaxLimit(qosVolume.VolumeId.Value); err != nil { + if err := s.cleanMaxLimit(qosVolume.VolumeNameRef); err != nil { return nil, err } @@ -122,14 +122,14 @@ func (s *Server) UpdateQosVolume(_ context.Context, in *pb.UpdateQosVolumeReques return nil, status.Errorf(codes.NotFound, "unable to find key %s", name) } - if volume.VolumeId.Value != in.QosVolume.VolumeId.Value { + if volume.VolumeNameRef != in.QosVolume.VolumeNameRef { msg := fmt.Sprintf("Change of underlying volume %v to a new one %v is forbidden", - volume.VolumeId.Value, in.QosVolume.VolumeId.Value) + volume.VolumeNameRef, in.QosVolume.VolumeNameRef) log.Println("error:", msg) return nil, status.Errorf(codes.InvalidArgument, msg) } log.Println("Set new max limit values") - if err := s.setMaxLimit(in.QosVolume.VolumeId.Value, in.QosVolume.MaxLimit); err != nil { + if err := s.setMaxLimit(in.QosVolume.VolumeNameRef, in.QosVolume.MaxLimit); err != nil { return nil, err } @@ -213,7 +213,7 @@ func (s *Server) StatsQosVolume(_ context.Context, in *pb.StatsQosVolumeRequest) return nil, err } params := spdk.BdevGetIostatParams{ - Name: volume.VolumeId.Value, + Name: volume.VolumeNameRef, } var result spdk.BdevGetIostatResult err := s.rpc.Call("bdev_get_iostat", ¶ms, &result) @@ -249,9 +249,6 @@ func (s *Server) verifyQosVolume(volume *pb.QosVolume) error { if err := resourcename.Validate(volume.Name); err != nil { return err } - if volume.VolumeId == nil || volume.VolumeId.Value == "" { - return fmt.Errorf("volume_id cannot be empty") - } if volume.MinLimit != nil { return fmt.Errorf("QoS volume min_limit is not supported") diff --git a/pkg/middleend/qos_test.go b/pkg/middleend/qos_test.go index 5948588b..601ae3d4 100644 --- a/pkg/middleend/qos_test.go +++ b/pkg/middleend/qos_test.go @@ -10,7 +10,6 @@ import ( "testing" "github.com/opiproject/gospdk/spdk" - _go "github.com/opiproject/opi-api/common/v1/gen/go" pb "github.com/opiproject/opi-api/storage/v1alpha1/gen/go" "github.com/opiproject/opi-spdk-bridge/pkg/server" "google.golang.org/grpc/codes" @@ -23,8 +22,8 @@ var ( testQosVolumeID = "qos-volume-42" testQosVolumeName = server.ResourceIDToVolumeName(testQosVolumeID) testQosVolume = &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: "volume-42"}, - MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, + VolumeNameRef: "volume-42", + MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, } ) @@ -63,7 +62,7 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { "min_limit is not supported": { id: testQosVolumeID, in: &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + VolumeNameRef: "volume-42", MinLimit: &pb.QosLimit{ RdIopsKiops: 100000, }, @@ -78,7 +77,7 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { "max_limit rd_iops_kiops is not supported": { id: testQosVolumeID, in: &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ RdIopsKiops: 100000, }, @@ -93,7 +92,7 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { "max_limit wr_iops_kiops is not supported": { id: testQosVolumeID, in: &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ WrIopsKiops: 100000, }, @@ -108,7 +107,7 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { "max_limit rw_iops_kiops is negative": { id: testQosVolumeID, in: &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ RwIopsKiops: -1, }, @@ -123,7 +122,7 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { "max_limit rd_bandwidth_kiops is negative": { id: testQosVolumeID, in: &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ RdBandwidthMbs: -1, }, @@ -138,7 +137,7 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { "max_limit wr_bandwidth_kiops is negative": { id: testQosVolumeID, in: &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ WrBandwidthMbs: -1, }, @@ -153,7 +152,7 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { "max_limit rw_bandwidth_kiops is negative": { id: testQosVolumeID, in: &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ RwBandwidthMbs: -1, }, @@ -168,8 +167,8 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { "max_limit with all zero limits": { id: testQosVolumeID, in: &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: "volume-42"}, - MaxLimit: &pb.QosLimit{}, + VolumeNameRef: "volume-42", + MaxLimit: &pb.QosLimit{}, }, out: nil, spdk: []string{}, @@ -181,9 +180,9 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { "qos_volume name is ignored": { id: testQosVolumeID, in: &pb.QosVolume{ - Name: server.ResourceIDToVolumeName("ignored-id"), - VolumeId: &_go.ObjectKey{Value: "volume-42"}, - MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, + Name: server.ResourceIDToVolumeName("ignored-id"), + VolumeNameRef: "volume-42", + MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, }, out: testQosVolume, spdk: []string{`{"id":%d,"error":{"code":0,"message":""},"result":true}`}, @@ -192,29 +191,16 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { existBefore: false, existAfter: true, }, - "volume_id is nil": { - id: testQosVolumeID, - in: &pb.QosVolume{ - VolumeId: nil, - MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, - }, - out: nil, - spdk: []string{}, - errCode: codes.InvalidArgument, - errMsg: "volume_id cannot be empty", - existBefore: false, - existAfter: false, - }, "volume_id is empty": { id: testQosVolumeID, in: &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: ""}, - MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, + VolumeNameRef: "", + MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, }, out: nil, spdk: []string{}, - errCode: codes.InvalidArgument, - errMsg: "volume_id cannot be empty", + errCode: codes.Unknown, + errMsg: "missing required field: qos_volume.volume_name_ref", existBefore: false, existAfter: false, }, @@ -318,7 +304,7 @@ func TestMiddleEnd_CreateQosVolume(t *testing.T) { _, _ = testEnv.client.CreateQosVolume(testEnv.ctx, &pb.CreateQosVolumeRequest{ QosVolumeId: testQosVolumeID, QosVolume: &pb.QosVolume{ - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ RwIopsKiops: 1, RdBandwidthMbs: 2, @@ -439,9 +425,9 @@ func TestMiddleEnd_DeleteQosVolume(t *testing.T) { func TestMiddleEnd_UpdateQosVolume(t *testing.T) { originalQosVolume := &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: testQosVolume.VolumeId, - MaxLimit: &pb.QosLimit{RdBandwidthMbs: 1221}, + Name: testQosVolumeName, + VolumeNameRef: testQosVolume.VolumeNameRef, + MaxLimit: &pb.QosLimit{RdBandwidthMbs: 1221}, } tests := map[string]struct { mask *fieldmaskpb.FieldMask @@ -457,7 +443,7 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { // mask: &fieldmaskpb.FieldMask{Paths: []string{"*", "author"}}, // in: &pb.QosVolume{ // Name: testQosVolumeName, - // VolumeId: &_go.ObjectKey{Value: "volume-42"}, + // VolumeNameRef: "volume-42", // MinLimit: &pb.QosLimit{ // RdIopsKiops: 100000, // }, @@ -472,8 +458,8 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { "min_limit is not supported": { mask: nil, in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + Name: testQosVolumeName, + VolumeNameRef: "volume-42", MinLimit: &pb.QosLimit{ RdIopsKiops: 100000, }, @@ -488,8 +474,8 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { "max_limit rd_iops_kiops is not supported": { mask: nil, in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + Name: testQosVolumeName, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ RdIopsKiops: 100000, }, @@ -504,8 +490,8 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { "max_limit wr_iops_kiops is not supported": { mask: nil, in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + Name: testQosVolumeName, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ WrIopsKiops: 100000, }, @@ -520,8 +506,8 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { "max_limit rw_iops_kiops is negative": { mask: nil, in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + Name: testQosVolumeName, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ RwIopsKiops: -1, }, @@ -536,8 +522,8 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { "max_limit rd_bandwidth_kiops is negative": { mask: nil, in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + Name: testQosVolumeName, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ RdBandwidthMbs: -1, }, @@ -552,8 +538,8 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { "max_limit wr_bandwidth_kiops is negative": { mask: nil, in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + Name: testQosVolumeName, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ WrBandwidthMbs: -1, }, @@ -568,8 +554,8 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { "max_limit rw_bandwidth_kiops is negative": { mask: nil, in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: &_go.ObjectKey{Value: "volume-42"}, + Name: testQosVolumeName, + VolumeNameRef: "volume-42", MaxLimit: &pb.QosLimit{ RwBandwidthMbs: -1, }, @@ -584,9 +570,9 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { "max_limit with all zero limits": { mask: nil, in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: &_go.ObjectKey{Value: "volume-42"}, - MaxLimit: &pb.QosLimit{}, + Name: testQosVolumeName, + VolumeNameRef: "volume-42", + MaxLimit: &pb.QosLimit{}, }, out: nil, spdk: []string{}, @@ -598,9 +584,9 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { "qos_volume_id is empty": { mask: nil, in: &pb.QosVolume{ - Name: "", - VolumeId: &_go.ObjectKey{Value: "volume-42"}, - MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, + Name: "", + VolumeNameRef: "volume-42", + MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, }, out: nil, spdk: []string{}, @@ -609,31 +595,17 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { existBefore: true, missing: false, }, - "volume_id is nil": { - mask: nil, - in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: nil, - MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, - }, - out: nil, - spdk: []string{}, - errCode: codes.InvalidArgument, - errMsg: "volume_id cannot be empty", - existBefore: true, - missing: false, - }, "volume_id is empty": { mask: nil, in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: &_go.ObjectKey{Value: ""}, - MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, + Name: testQosVolumeName, + VolumeNameRef: "", + MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, }, out: nil, spdk: []string{}, - errCode: codes.InvalidArgument, - errMsg: "volume_id cannot be empty", + errCode: codes.Unknown, + errMsg: "missing required field: qos_volume.volume_name_ref", existBefore: true, missing: false, }, @@ -650,15 +622,15 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { "change underlying volume": { mask: nil, in: &pb.QosVolume{ - Name: testQosVolumeName, - VolumeId: &_go.ObjectKey{Value: "new-underlying-volume-id"}, - MaxLimit: &pb.QosLimit{RdBandwidthMbs: 1}, + Name: testQosVolumeName, + VolumeNameRef: "new-underlying-volume-id", + MaxLimit: &pb.QosLimit{RdBandwidthMbs: 1}, }, out: nil, spdk: []string{}, errCode: codes.InvalidArgument, errMsg: fmt.Sprintf("Change of underlying volume %v to a new one %v is forbidden", - originalQosVolume.VolumeId.Value, "new-underlying-volume-id"), + originalQosVolume.VolumeNameRef, "new-underlying-volume-id"), existBefore: true, missing: false, }, @@ -704,7 +676,7 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { }, "malformed name": { mask: nil, - in: &pb.QosVolume{Name: "-ABC-DEF"}, + in: &pb.QosVolume{Name: "-ABC-DEF", VolumeNameRef: "TBD"}, out: nil, spdk: []string{}, errCode: codes.InvalidArgument, @@ -757,14 +729,14 @@ func TestMiddleEnd_UpdateQosVolume(t *testing.T) { func TestMiddleEnd_ListQosVolume(t *testing.T) { qosVolume0 := &pb.QosVolume{ - Name: "qos-volume-41", - VolumeId: &_go.ObjectKey{Value: "volume-41"}, - MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, + Name: "qos-volume-41", + VolumeNameRef: "volume-41", + MaxLimit: &pb.QosLimit{RwBandwidthMbs: 1}, } qosVolume1 := &pb.QosVolume{ - Name: "qos-volume-45", - VolumeId: &_go.ObjectKey{Value: "volume-45"}, - MaxLimit: &pb.QosLimit{RwBandwidthMbs: 5}, + Name: "qos-volume-45", + VolumeNameRef: "volume-45", + MaxLimit: &pb.QosLimit{RwBandwidthMbs: 5}, } existingToken := "existing-pagination-token" testParent := "todo" @@ -992,7 +964,7 @@ func TestMiddleEnd_StatsQosVolume(t *testing.T) { }, spdk: []string{ `{"id":%d,"error":{"code":0,"message":""},"result":{"tick_rate": 3300000000,"ticks": 5,` + - `"bdevs":[{"name":"` + testQosVolume.VolumeId.Value + `", "bytes_read": 36864}]}}`, + `"bdevs":[{"name":"` + testQosVolume.VolumeNameRef + `", "bytes_read": 36864}]}}`, }, errCode: codes.OK, errMsg: "",