From 33221ee2b63f7257a1eba5ada5a9ec5c30c01d2d Mon Sep 17 00:00:00 2001 From: Harsh Desai Date: Thu, 20 Jul 2017 17:45:13 -0700 Subject: [PATCH 1/2] Supply Portworx StorageClass paramters in volume spec labels for server-side processing --- pkg/volume/portworx/portworx_util.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/volume/portworx/portworx_util.go b/pkg/volume/portworx/portworx_util.go index 1a7c387eaf8..e29e8a30570 100644 --- a/pkg/volume/portworx/portworx_util.go +++ b/pkg/volume/portworx/portworx_util.go @@ -56,11 +56,14 @@ func (util *PortworxVolumeUtil) CreateVolume(p *portworxVolumeProvisioner) (stri requestGB := int(volume.RoundUpSize(capacity.Value(), 1024*1024*1024)) specHandler := osdspec.NewSpecHandler() - spec, err := specHandler.SpecFromOpts(p.options.Parameters) - if err != nil { - glog.Errorf("Error parsing parameters for PVC: %v. Err: %v", p.options.PVC.Name, err) - return "", 0, nil, err + spec, _ := specHandler.SpecFromOpts(p.options.Parameters) + if spec == nil { + spec = specHandler.DefaultSpec() } + + // Pass all parameters as volume labels for Portworx server-side processing + spec.VolumeLabels = p.options.Parameters + spec.Size = uint64(requestGB * 1024 * 1024 * 1024) source := osdapi.Source{} locator := osdapi.VolumeLocator{ From c6927108764225fc092fbb6268e788a6999d843a Mon Sep 17 00:00:00 2001 From: Harsh Desai Date: Thu, 27 Jul 2017 16:12:26 -0700 Subject: [PATCH 2/2] Add comment for parameter parsing logic in Portworx volume create --- pkg/volume/portworx/portworx_util.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/volume/portworx/portworx_util.go b/pkg/volume/portworx/portworx_util.go index e29e8a30570..b1ae08784a4 100644 --- a/pkg/volume/portworx/portworx_util.go +++ b/pkg/volume/portworx/portworx_util.go @@ -55,13 +55,17 @@ func (util *PortworxVolumeUtil) CreateVolume(p *portworxVolumeProvisioner) (stri // Portworx Volumes are specified in GB requestGB := int(volume.RoundUpSize(capacity.Value(), 1024*1024*1024)) + // Perform a best-effort parsing of parameters. Portworx 1.2.9 and later parses volume parameters from + // spec.VolumeLabels. So even if below SpecFromOpts() fails to parse certain parameters or + // doesn't support new parameters, the server-side processing will parse it correctly. + // We still need to call SpecFromOpts() here to handle cases where someone is running Portworx 1.2.8 and lower. specHandler := osdspec.NewSpecHandler() spec, _ := specHandler.SpecFromOpts(p.options.Parameters) if spec == nil { spec = specHandler.DefaultSpec() } - // Pass all parameters as volume labels for Portworx server-side processing + // Pass all parameters as volume labels for Portworx server-side processing. spec.VolumeLabels = p.options.Parameters spec.Size = uint64(requestGB * 1024 * 1024 * 1024)