Skip to content

Commit

Permalink
Update Go modules, UBI base image, Trivy, fix linter errors. (#21)
Browse files Browse the repository at this point in the history
* Update ubi image and Go version. 
* Use Trivy for scanning.
* Update Go modules, fix linter errors.
  • Loading branch information
donatwork authored Aug 25, 2023
1 parent 2645357 commit 4ee5203
Show file tree
Hide file tree
Showing 27 changed files with 75 additions and 85 deletions.
13 changes: 5 additions & 8 deletions .github/workflows/actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@ jobs:
name: Image Scanner
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.20+
- name: Set up Go 1.21+
uses: actions/setup-go@v2
with:
go-version: ^1.20
go-version: ^1.21
id: go
- name: Checkout the code
uses: actions/checkout@v2
Expand All @@ -71,10 +71,7 @@ jobs:
run: go mod download
- name: Build csm-metrics-powermax Docker Image
run: make clean build docker
- name: Image scanner
uses: Azure/container-scan@v0
- name: Run Trivy action
uses: aquasecurity/trivy-action@master
with:
image-name: csm-metrics-powermax
severity-threshold: HIGH
env:
DOCKLE_HOST: "unix:///var/run/docker.sock"
image-ref: csm-metrics-powermax
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM registry.access.redhat.com/ubi9/ubi-micro
FROM registry.access.redhat.com/ubi9/ubi-micro@sha256:630cf7bdef807f048cadfe7180d6c27eb3aaa99323ffc3628811da230ed3322a
LABEL vendor="Dell Inc." \
name="csm-metrics-powermax" \
summary="Dell Container Storage Modules (CSM) for Observability - Metrics for PowerMax" \
Expand Down
12 changes: 6 additions & 6 deletions cmd/metrics-powermax/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package main
import (
"context"
"fmt"
"os"
"strconv"
"strings"
"time"
Expand All @@ -37,8 +38,6 @@ import (

"github.com/sirupsen/logrus"

"os"

"go.opentelemetry.io/otel/metric/global"

"github.com/fsnotify/fsnotify"
Expand All @@ -52,12 +51,13 @@ const (
defaultReverseProxyConfigFile = "/etc/reverseproxy/config.yaml"
)

var logger *logrus.Logger
var powerMaxSvc *service.PowerMaxService
var ctx context.Context
var (
logger *logrus.Logger
powerMaxSvc *service.PowerMaxService
ctx context.Context
)

func main() {

logger = logrus.New()

viper.SetConfigFile(defaultConfigFile)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/dell/csm-metrics-powermax
go 1.21

require (
github.com/dell/gopowermax/v2 v2.2.0
github.com/dell/gopowermax/v2 v2.3.1-0.20230822074322-4ff408a66ad3
github.com/fsnotify/fsnotify v1.5.1
github.com/golang/mock v1.6.0
github.com/gorilla/mux v1.8.0
Expand Down
24 changes: 12 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -75,17 +75,17 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/cucumber/gherkin-go/v11 v11.0.0 h1:cwVwN1Qn2VRSfHZNLEh5x00tPBmZcjATBWDpxsR5Xug=
github.com/cucumber/gherkin-go/v11 v11.0.0/go.mod h1:CX33k2XU2qog4e+TFjOValoq6mIUq0DmVccZs238R9w=
github.com/cucumber/godog v0.10.0 h1:W01u1+o8bRpgqJRLrclN3iAanU1jAao+TwOMoSV9g1Y=
github.com/cucumber/godog v0.10.0/go.mod h1:0Q+MOUg8Z9AhzLV+nNMbThQ2x1b17yYwGyahApTLjJA=
github.com/cucumber/messages-go/v10 v10.0.3 h1:m/9SD/K/A15WP7i1aemIv7cwvUw+viS51Ui5HBw1cdE=
github.com/cucumber/messages-go/v10 v10.0.3/go.mod h1:9jMZ2Y8ZxjLY6TG2+x344nt5rXstVVDYSdS5ySfI1WY=
github.com/cucumber/gherkin-go/v19 v19.0.3 h1:mMSKu1077ffLbTJULUfM5HPokgeBcIGboyeNUof1MdE=
github.com/cucumber/gherkin-go/v19 v19.0.3/go.mod h1:jY/NP6jUtRSArQQJ5h1FXOUgk5fZK24qtE7vKi776Vw=
github.com/cucumber/godog v0.12.6 h1:3IToXviU45G7FgijwTk/LdB4iojn8zUFDfQLj4MMiHc=
github.com/cucumber/godog v0.12.6/go.mod h1:Y02TTpimPXDb70PnG6M3zpODXm1+bjCsuZzcW76xAww=
github.com/cucumber/messages-go/v16 v16.0.1 h1:fvkpwsLgnIm0qugftrw2YwNlio+ABe2Iu94Ap8GMYIY=
github.com/cucumber/messages-go/v16 v16.0.1/go.mod h1:EJcyR5Mm5ZuDsKJnT2N9KRnBK30BGjtYotDKpwQ0v6g=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dell/gopowermax/v2 v2.2.0 h1:g41Ms/GWxwZbe3IJeeVfdX1/IgnZNzpxHGi+VO+mcBA=
github.com/dell/gopowermax/v2 v2.2.0/go.mod h1:06DoVqIp9Xt//mEqgSTzTbG2xXhWbT0mCjIjGrRRoAI=
github.com/dell/gopowermax/v2 v2.3.1-0.20230822074322-4ff408a66ad3 h1:wHcu7itw+rV2S81MOsidNCoD0E72kSKMcaXSaMkLrRM=
github.com/dell/gopowermax/v2 v2.3.1-0.20230822074322-4ff408a66ad3/go.mod h1:IvFKMvXw35EiuBKig9v4eDf2tYX5up/0LqDBLzvwGZ4=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
Expand Down Expand Up @@ -126,8 +126,8 @@ github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34
github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw=
github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA=
github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
Expand Down Expand Up @@ -221,8 +221,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QG
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks=
github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc=
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-memdb v1.3.0 h1:xdXq34gBOMEloa9rlGStLxmfX/dyIK8htOv36dQUwHU=
github.com/hashicorp/go-memdb v1.3.0/go.mod h1:Mluclgwib3R93Hk5fxEfiRhB+6Dar64wWh71LpNSe3g=
github.com/hashicorp/go-memdb v1.3.4 h1:XSL3NR682X/cVk2IeV0d70N4DZ9ljI885xAEU8IoK3c=
github.com/hashicorp/go-memdb v1.3.4/go.mod h1:uBTr1oQbtuMgd1SSGoR8YV27eT3sBHbYiNm53bMpgSg=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
Expand Down
6 changes: 3 additions & 3 deletions internal/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,15 @@ package common
import (
"context"
"errors"
"os"
"time"

"github.com/dell/csm-metrics-powermax/internal/k8sutils"
"github.com/dell/csm-metrics-powermax/internal/reverseproxy/config"
"github.com/dell/csm-metrics-powermax/internal/service/types"
pmax "github.com/dell/gopowermax/v2"
"github.com/sirupsen/logrus"
corev1 "k8s.io/api/core/v1"
"os"
"time"
)

const (
Expand Down Expand Up @@ -160,7 +161,6 @@ func GetPowerMaxArrays(ctx context.Context, k8sUtils k8sutils.UtilsInterface, fi
ApplicationName,
true,
false)

if err != nil {
logger.WithError(err).Errorf("cannot connect to PowerMax array %s, %s", arrayID, array.Endpoint)
continue
Expand Down
10 changes: 4 additions & 6 deletions internal/common/common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ import (
)

func Test_Run(t *testing.T) {

mockUtils := k8smock.Init()
mockUtils.CreateNewCredentialSecret("powermax-creds")

Expand Down Expand Up @@ -78,7 +77,7 @@ func Test_Run(t *testing.T) {

newContent := strings.ReplaceAll(string(fileContentBytes), "[serverip]", serverIP)
newContent = strings.ReplaceAll(newContent, "[serverport]", serverPort)
os.WriteFile(filePath, []byte(newContent), 0644)
os.WriteFile(filePath, []byte(newContent), 0o600)

clusters, err := common.GetPowerMaxArrays(context.Background(), k8sUtils, filePath, logger)

Expand All @@ -89,13 +88,12 @@ func Test_Run(t *testing.T) {
assert.NotNil(t, clusters)
assert.Nil(t, err)
}
os.WriteFile(filePath, fileContentBytes, 0644)
os.WriteFile(filePath, fileContentBytes, 0o600)
})
}
}

func Test_Run_Unauthorized(t *testing.T) {

mockUtils := k8smock.Init()
mockUtils.CreateNewCredentialSecret("powermax-creds")

Expand Down Expand Up @@ -125,7 +123,7 @@ func Test_Run_Unauthorized(t *testing.T) {

newContent := strings.ReplaceAll(string(fileContentBytes), "[serverip]", serverIP)
newContent = strings.ReplaceAll(newContent, "[serverport]", serverPort)
os.WriteFile(filePath, []byte(newContent), 0644)
os.WriteFile(filePath, []byte(newContent), 0o600)

clusters, err := common.GetPowerMaxArrays(context.Background(), k8sUtils, filePath, logger)

Expand All @@ -136,7 +134,7 @@ func Test_Run_Unauthorized(t *testing.T) {
assert.NotNil(t, clusters)
assert.Nil(t, err)
}
os.WriteFile(filePath, fileContentBytes, 0644)
os.WriteFile(filePath, fileContentBytes, 0o600)
})
}
}
Expand Down
9 changes: 4 additions & 5 deletions internal/entrypoint/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@ package entrypoint
import (
"context"
"fmt"
"github.com/dell/csm-metrics-powermax/internal/common"
"os"
"runtime"
"time"

"github.com/dell/csm-metrics-powermax/internal/common"

"github.com/dell/csm-metrics-powermax/internal/service/types"

otlexporters "github.com/dell/csm-metrics-powermax/opentelemetry/exporters"
Expand All @@ -46,10 +47,8 @@ const (
LivenessProbeInterval = 30 * time.Second
)

var (
// ConfigValidatorFunc is used to override config validation in testing
ConfigValidatorFunc func(*Config) error = ValidateConfig
)
// ConfigValidatorFunc is used to override config validation in testing
var ConfigValidatorFunc = ValidateConfig

// Config holds data that will be used by the service
type Config struct {
Expand Down
1 change: 0 additions & 1 deletion internal/entrypoint/run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ import (
)

func Test_Run(t *testing.T) {

tests := map[string]func(t *testing.T) (expectError bool, config *entrypoint.Config, exporter otlexporters.Otlexporter, pScaleSvc types.Service, prevConfigValidationFunc func(*entrypoint.Config) error, ctrl *gomock.Controller, validatingConfig bool){
"success": func(*testing.T) (bool, *entrypoint.Config, otlexporters.Otlexporter, types.Service, func(*entrypoint.Config) error, *gomock.Controller, bool) {
ctrl := gomock.NewController(t)
Expand Down
2 changes: 0 additions & 2 deletions internal/k8s/k8sapi_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ func Test_GetPersistentVolumes(t *testing.T) {

tests := map[string]func(t *testing.T) (connectFn, configFn, []checkFn){
"success": func(*testing.T) (connectFn, configFn, []checkFn) {

volumes := &corev1.PersistentVolumeList{
Items: []corev1.PersistentVolume{
{
Expand Down Expand Up @@ -108,7 +107,6 @@ func Test_GetPersistentVolumes(t *testing.T) {
}
})
}

}

func Test_GetStorageClasses(t *testing.T) {
Expand Down
1 change: 0 additions & 1 deletion internal/k8s/leader_elector.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ type LeaderElector struct {

// InitLeaderElection will run algorithm for leader election, call during service initialzation process
func (elect *LeaderElector) InitLeaderElection(endpoint string, namespace string) error {

k8sconfig, err := InClusterConfigFn()
if err != nil {
return err
Expand Down
3 changes: 1 addition & 2 deletions internal/k8s/storageclass_finder.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ type StorageClassFinder struct {
}

// GetStorageClasses will return a list of storage classes that match the given DriverName in Kubernetes
func (f *StorageClassFinder) GetStorageClasses(ctx context.Context) ([]v1.StorageClass, error) {
func (f *StorageClassFinder) GetStorageClasses(_ context.Context) ([]v1.StorageClass, error) {
var storageClasses []v1.StorageClass

classes, err := f.API.GetStorageClasses()
Expand All @@ -64,7 +64,6 @@ func (f *StorageClassFinder) GetStorageClasses(ctx context.Context) ([]v1.Storag
}

func (f *StorageClassFinder) isMatch(class v1.StorageClass) bool {

for _, arrayID := range f.StorageArrayID {
if !Contains(arrayID.DriverNames, class.Provisioner) {
continue
Expand Down
5 changes: 0 additions & 5 deletions internal/k8s/storageclass_finder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ func Test_K8sStorageClassFinder(t *testing.T) {

tests := map[string]func(t *testing.T) (k8s.StorageClassFinder, []checkFn, *gomock.Controller){
"success not selecting storageclass that is not in config": func(*testing.T) (k8s.StorageClassFinder, []checkFn, *gomock.Controller) {

ctrl := gomock.NewController(t)
api := mocks.NewMockStorageClassGetter(ctrl)

Expand Down Expand Up @@ -102,7 +101,6 @@ func Test_K8sStorageClassFinder(t *testing.T) {
return finder, check(hasNoError, checkExpectedOutput(expected.Items)), ctrl
},
"success selecting the matching driver name with storage classes": func(*testing.T) (k8s.StorageClassFinder, []checkFn, *gomock.Controller) {

ctrl := gomock.NewController(t)
api := mocks.NewMockStorageClassGetter(ctrl)

Expand Down Expand Up @@ -131,7 +129,6 @@ func Test_K8sStorageClassFinder(t *testing.T) {
return finder, check(hasNoError, checkExpectedOutput(storageClasses.Items)), ctrl
},
"success selecting storage classes matching multiple driver names": func(*testing.T) (k8s.StorageClassFinder, []checkFn, *gomock.Controller) {

ctrl := gomock.NewController(t)
api := mocks.NewMockStorageClassGetter(ctrl)

Expand Down Expand Up @@ -173,7 +170,6 @@ func Test_K8sStorageClassFinder(t *testing.T) {
return finder, check(hasNoError, checkExpectedOutput(storageClasses.Items)), ctrl
},
"success matching storage classes without StorageArrayId based on a default cluster being used": func(*testing.T) (k8s.StorageClassFinder, []checkFn, *gomock.Controller) {

ctrl := gomock.NewController(t)
api := mocks.NewMockStorageClassGetter(ctrl)

Expand Down Expand Up @@ -240,7 +236,6 @@ func Test_K8sStorageClassFinder(t *testing.T) {
)), ctrl
},
"success selecting storage classes matching one of two driver names": func(*testing.T) (k8s.StorageClassFinder, []checkFn, *gomock.Controller) {

ctrl := gomock.NewController(t)
api := mocks.NewMockStorageClassGetter(ctrl)

Expand Down
3 changes: 2 additions & 1 deletion internal/k8s/volume_finder.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package k8s

import (
"context"

"github.com/sirupsen/logrus"

corev1 "k8s.io/api/core/v1"
Expand Down Expand Up @@ -56,7 +57,7 @@ type VolumeInfo struct {
}

// GetPersistentVolumes will return a list of persistent volume information
func (f VolumeFinder) GetPersistentVolumes(ctx context.Context) ([]VolumeInfo, error) {
func (f VolumeFinder) GetPersistentVolumes(_ context.Context) ([]VolumeInfo, error) {
volumeInfo := make([]VolumeInfo, 0)

volumes, err := f.API.GetPersistentVolumes()
Expand Down
2 changes: 0 additions & 2 deletions internal/k8s/volume_finder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ func Test_K8sPersistentVolumeFinder(t *testing.T) {

tests := map[string]func(t *testing.T) (k8s.VolumeFinder, []checkFn, *gomock.Controller){
"success selecting the matching driver name with multiple volumes": func(*testing.T) (k8s.VolumeFinder, []checkFn, *gomock.Controller) {

ctrl := gomock.NewController(t)
api := mocks.NewMockVolumeGetter(ctrl)

Expand Down Expand Up @@ -164,7 +163,6 @@ func Test_K8sPersistentVolumeFinder(t *testing.T) {
})), ctrl
},
"success selecting multiple volumes matching multiple driver names": func(*testing.T) (k8s.VolumeFinder, []checkFn, *gomock.Controller) {

ctrl := gomock.NewController(t)
api := mocks.NewMockVolumeGetter(ctrl)

Expand Down
4 changes: 2 additions & 2 deletions internal/k8sutils/k8sutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ import (
"fmt"
"os"
"path/filepath"

common "github.com/dell/csm-metrics-powermax/internal/reverseproxy/common"
"strconv"
"time"

common "github.com/dell/csm-metrics-powermax/internal/reverseproxy/common"

log "github.com/sirupsen/logrus"
"k8s.io/client-go/tools/clientcmd"

Expand Down
7 changes: 4 additions & 3 deletions internal/reverseproxy/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@ package config
import (
"crypto/subtle"
"fmt"
"net/url"

k8sutils "github.com/dell/csm-metrics-powermax/internal/k8sutils"
common "github.com/dell/csm-metrics-powermax/internal/reverseproxy/common"
utils "github.com/dell/csm-metrics-powermax/internal/reverseproxy/utils"
"net/url"

"github.com/spf13/viper"
)
Expand Down Expand Up @@ -153,7 +154,7 @@ func (proxy *StandAloneProxyConfig) updateProxyCredentials(creds common.Credenti

// GetManagementServers - Returns the list of management servers present in StandAloneProxyConfig
func (proxy *StandAloneProxyConfig) GetManagementServers() []ManagementServer {
var mgmtServers = make([]ManagementServer, 0)
mgmtServers := make([]ManagementServer, 0)
for _, v := range proxy.managementServers {
mgmtServers = append(mgmtServers, *v)
}
Expand Down Expand Up @@ -186,7 +187,7 @@ func (proxy *StandAloneProxyConfig) GetManagedArraysAndServers() map[string]Stor

// GetStorageArray - Returns a list of storage array given a storage array id
func (proxy *StandAloneProxyConfig) GetStorageArray(storageArrayID string) []StorageArray {
var storageArrays = make([]StorageArray, 0)
storageArrays := make([]StorageArray, 0)
if storageArrayID != "" {
if storageArray, ok := proxy.managedArrays[storageArrayID]; ok {
storageArrays = append(storageArrays, *storageArray)
Expand Down
Loading

0 comments on commit 4ee5203

Please sign in to comment.