Skip to content
This repository has been archived by the owner on Jul 22, 2024. It is now read-only.

Spectrumscale-epic1 fix for UB-1487,UB-1488,UB-1495 #243

Merged
merged 4 commits into from
Oct 2, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions local/clients.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,19 @@ import (
func GetLocalClients(logger *log.Logger, config resources.UbiquityServerConfig) (map[string]resources.StorageClient, error) {
// TODO need to refactor and load all the existing clients automatically (instead of hardcore each one here)
clients := make(map[string]resources.StorageClient)
ScbeClient, err := scbe.NewScbeLocalClient(config.ScbeConfig)
if err != nil {
logger.Printf("Not enough params to initialize '%s' client", resources.SCBE)
} else {
clients[resources.SCBE] = ScbeClient
}

if (config.ScbeConfig.ConnectionInfo.ManagementIP != "") {
ScbeClient, err := scbe.NewScbeLocalClient(config.ScbeConfig)
if err != nil {
logger.Printf("Not enough params to initialize '%s' client", resources.SCBE)
} else {
clients[resources.SCBE] = ScbeClient
}
}

if len(clients) == 0 {
log.Fatal("No client can be initialized....please check config file")
return nil, fmt.Errorf("No client can be initialized....please check config file")
logger.Println("No client can be initialized. Please check ubiquity-configmap parameters")
return nil, fmt.Errorf("No client can be initialized. Please check ubiquity-configmap parameters")
}
return clients, nil
}
36 changes: 36 additions & 0 deletions local/clients_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package local_test

import (
"os"
"log"
"github.com/IBM/ubiquity/resources"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/IBM/ubiquity/local"
)

var _ = Describe("Clients", func() {
var (
fakeConfig resources.UbiquityServerConfig
fakeScbeConfig resources.ScbeConfig
fakeConnectionInfo resources.ConnectionInfo
err error
logger *log.Logger
client map[string]resources.StorageClient
)
BeforeEach(func() {
logger = log.New(os.Stdout, "ubiquity: ", log.Lshortfile|log.LstdFlags)
})

Context(".GetLocalClients", func() {
It("should fail when ManagementIP is empty for SCBE backend", func() {
fakeConnectionInfo = resources.ConnectionInfo{}
fakeScbeConfig = resources.ScbeConfig{ConnectionInfo: fakeConnectionInfo,}
fakeConfig = resources.UbiquityServerConfig{ScbeConfig: fakeScbeConfig,}
client, err = local.GetLocalClients(logger, fakeConfig)
Expect(client).To(BeNil())
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal("No client can be initialized. Please check ubiquity-configmap parameters"))
})
})
})
2 changes: 1 addition & 1 deletion local/spectrumscale/connectors/connectors.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ const (
)

func GetSpectrumScaleConnector(logger *log.Logger, config resources.SpectrumScaleConfig) (SpectrumScaleConnector, error) {
if config.RestConfig.Endpoint != "" {
if config.RestConfig.ManagementIP != "" {
logger.Printf("Initializing SpectrumScale REST connector\n")
return NewSpectrumRestV2(logger, config.RestConfig)
}
Expand Down
4 changes: 2 additions & 2 deletions local/spectrumscale/connectors/rest.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ type spectrum_rest struct {
}

func NewSpectrumRest(logger *log.Logger, restConfig resources.RestConfig) (SpectrumScaleConnector, error) {
endpoint := restConfig.Endpoint
endpoint := fmt.Sprintf("https://%s:%d/", restConfig.ManagementIP, restConfig.Port)
user := restConfig.User
password := restConfig.Password

Expand All @@ -48,7 +48,7 @@ func NewSpectrumRest(logger *log.Logger, restConfig resources.RestConfig) (Spect
}

func NewSpectrumRestWithClient(logger *log.Logger, restConfig resources.RestConfig, client *http.Client) (SpectrumScaleConnector, error) {
endpoint := restConfig.Endpoint
endpoint := fmt.Sprintf("https://%s:%d/", restConfig.ManagementIP, restConfig.Port)
return &spectrum_rest{logger: logger, httpClient: client, endpoint: endpoint}, nil
}

Expand Down
4 changes: 2 additions & 2 deletions local/spectrumscale/connectors/rest_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ func (s *spectrumRestV2) AsyncJobCompletion(jobURL string) error {

func NewSpectrumRestV2(logger *log.Logger, restConfig resources.RestConfig) (SpectrumScaleConnector, error) {

endpoint := restConfig.Endpoint
endpoint := fmt.Sprintf("https://%s:%d/", restConfig.ManagementIP, restConfig.Port)
user := restConfig.User
password := restConfig.Password
hostname := restConfig.Hostname
Expand All @@ -135,7 +135,7 @@ func NewSpectrumRestV2(logger *log.Logger, restConfig resources.RestConfig) (Spe
}

func NewspectrumRestV2WithClient(logger *log.Logger, restConfig resources.RestConfig) (SpectrumScaleConnector, *http.Client, error) {
endpoint := restConfig.Endpoint
endpoint := fmt.Sprintf("https://%s:%d/", restConfig.ManagementIP, restConfig.Port)
user := restConfig.User
password := restConfig.Password
hostname := restConfig.Hostname
Expand Down
3 changes: 2 additions & 1 deletion local/spectrumscale/connectors/rest_v2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ var _ = Describe("spectrumRestV2", func() {
logger = log.New(os.Stdout, "spectrum: ", log.Lshortfile|log.LstdFlags)
httpmock.Activate()
fakeurl = "http://1.1.1.1:443"
restConfig.Endpoint = fakeurl
restConfig.ManagementIP = "1.1.1.1"
restConfig.Port = 443
restConfig.User = "fakeuser"
restConfig.Password = "fakepassword"
restConfig.Hostname = "fakehostname"
Expand Down
2 changes: 1 addition & 1 deletion local/spectrumscale/spectrumscale.go
Original file line number Diff line number Diff line change
Expand Up @@ -630,7 +630,7 @@ func (s *spectrumLocalClient) updateDBWithExistingFilesetQuota(filesystem, name,
return err
}

if s.config.RestConfig.Endpoint != "" {
if s.config.RestConfig.ManagementIP != "" {
s.logger.Printf("For REST connector converting quotas to bytes\n")
filesetQuotaBytes, err := utils.ConvertToBytes(s.logger, filesetQuota)
if err != nil {
Expand Down
11 changes: 7 additions & 4 deletions resources/resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ const KeyScbeSslMode = "SCBE_SSL_MODE"
const DefaultDbSslMode = SslModeVerifyFull
const DefaultScbeSslMode = SslModeVerifyFull
const DefaultPluginsSslMode = SslModeVerifyFull
const SpectrumscaleDefaultPort = 443 // the default port for SPECTRUM SCALE management
const SpectrumScaleParamPrefix = "SPECTRUMSCALE_"

type SshConfig struct {
User string
Expand All @@ -93,10 +95,11 @@ type SshConfig struct {
}

type RestConfig struct {
Endpoint string
User string
Password string
Hostname string
Port int
ManagementIP string
User string
Password string
Hostname string
}

type SpectrumNfsRemoteConfig struct {
Expand Down
20 changes: 12 additions & 8 deletions utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,16 +233,20 @@ func LoadConfig() (resources.UbiquityServerConfig, error) {
sscConfig.SshConfig = sshConfig
}
restConfig := resources.RestConfig{}
restConfig.Endpoint = os.Getenv("SSC_REST_ENDPOINT")
restConfig.User = os.Getenv("SSC_REST_USER")
restConfig.Password = os.Getenv("SSC_REST_PASSWORD")
restConfig.Hostname = os.Getenv("SSC_REST_HOSTNAME")
if restConfig.User != "" && restConfig.Hostname != "" && restConfig.Password != "" {
sscConfig.RestConfig = restConfig
restConfig.User = os.Getenv(resources.SpectrumScaleParamPrefix + "REST_USER")
restConfig.Password = os.Getenv(resources.SpectrumScaleParamPrefix + "REST_PASSWORD")
restConfig.Hostname = os.Getenv(resources.SpectrumScaleParamPrefix + "REST_HOSTNAME")
restConfig.ManagementIP = os.Getenv(resources.SpectrumScaleParamPrefix + "MANAGEMENT_IP")
spectrumscalePort, err := strconv.ParseInt(os.Getenv(resources.SpectrumScaleParamPrefix + "MANAGEMENT_PORT"), 0, 32)
if err != nil {
restConfig.Port = resources.SpectrumscaleDefaultPort
} else {
restConfig.Port = int(spectrumscalePort)
}
sscConfig.DefaultFilesystemName = os.Getenv("DEFAULT_FILESYSTEM_NAME")
sscConfig.RestConfig = restConfig
sscConfig.DefaultFilesystemName = os.Getenv(resources.SpectrumScaleParamPrefix + "DEFAULT_FILESYSTEM_NAME")
sscConfig.NfsServerAddr = os.Getenv("SSC_NFS_SERVER_ADDRESS")
forceDelete, err := strconv.ParseBool(os.Getenv("FORCE_DELETE"))
forceDelete, err := strconv.ParseBool(os.Getenv(resources.SpectrumScaleParamPrefix + "FORCE_DELETE"))
if err != nil {
sscConfig.ForceDelete = false
} else {
Expand Down