Fix unknown management type error

When using "redfish-dell" as the management type, airshipctl throws an
error due to a missing case statement. This change fixes the regression
by re-adding "redfish-dell" as a remote type.

Change-Id: I8314a1e356d1bb3bb1705762bbeda1adf1db41d2
Signed-off-by: Drew Walters <andrew.walters@att.com>
This commit is contained in:
Drew Walters 2020-04-30 16:51:05 +00:00
parent c33e0a20ad
commit 00f934af50
3 changed files with 36 additions and 1 deletions

View File

@ -21,7 +21,9 @@ import (
"opendev.org/airship/airshipctl/pkg/config"
"opendev.org/airship/airshipctl/pkg/document"
"opendev.org/airship/airshipctl/pkg/environment"
"opendev.org/airship/airshipctl/pkg/log"
"opendev.org/airship/airshipctl/pkg/remote/redfish"
redfishdell "opendev.org/airship/airshipctl/pkg/remote/redfish/vendors/dell"
)
// Client is a set of functions that clients created for out-of-band power management and control should implement. The
@ -167,6 +169,7 @@ func newBaremetalHost(mgmtCfg config.ManagementConfiguration,
// Select the client that corresponds to the management type specified in the airshipctl config.
switch mgmtCfg.Type {
case redfish.ClientType:
log.Debug("Remote type: Redfish")
ctx, client, err := redfish.NewClient(
address,
mgmtCfg.Insecure,
@ -178,6 +181,20 @@ func newBaremetalHost(mgmtCfg config.ManagementConfiguration,
return host, err
}
host = baremetalHost{client, ctx, address, hostDoc.GetName(), username, password}
case redfishdell.ClientType:
log.Debug("Remote type: Redfish for Integrated Dell Remote Access Controller (iDrac) systems")
ctx, client, err := redfishdell.NewClient(
address,
mgmtCfg.Insecure,
mgmtCfg.UseProxy,
username,
password)
if err != nil {
return host, err
}
host = baremetalHost{client, ctx, address, hostDoc.GetName(), username, password}
default:
return host, ErrUnknownManagementType{Type: mgmtCfg.Type}

View File

@ -24,6 +24,8 @@ import (
"opendev.org/airship/airshipctl/pkg/config"
"opendev.org/airship/airshipctl/pkg/document"
"opendev.org/airship/airshipctl/pkg/environment"
"opendev.org/airship/airshipctl/pkg/remote/redfish"
redfishdell "opendev.org/airship/airshipctl/pkg/remote/redfish/vendors/dell"
"opendev.org/airship/airshipctl/testutil"
)
@ -107,6 +109,22 @@ func TestNewManagerByLabelNoHostsFound(t *testing.T) {
assert.Error(t, err)
}
func TestNewManagerRedfish(t *testing.T) {
cfg := &config.ManagementConfiguration{Type: redfish.ClientType}
settings := initSettings(t, withManagementConfig(cfg), withTestDataPath("base"))
_, err := NewManager(settings, config.BootstrapPhase, ByLabel(document.EphemeralHostSelector))
assert.NoError(t, err)
}
func TestNewManagerRedfishDell(t *testing.T) {
cfg := &config.ManagementConfiguration{Type: redfishdell.ClientType}
settings := initSettings(t, withManagementConfig(cfg), withTestDataPath("base"))
_, err := NewManager(settings, config.BootstrapPhase, ByLabel(document.EphemeralHostSelector))
assert.NoError(t, err)
}
func TestNewManagerUnknownRemoteType(t *testing.T) {
badCfg := &config.ManagementConfiguration{Type: "bad-remote-type"}
settings := initSettings(t, withManagementConfig(badCfg), withTestDataPath("base"))

View File

@ -33,7 +33,7 @@ func (b baremetalHost) DoRemoteDirect(settings *environment.AirshipCTLSettings)
return config.ErrMissingConfig{What: "RemoteDirect options not defined in bootstrap config"}
}
log.Debugf("Using ephemeral node %s with BMCAddress %s", b.NodeID(), b.BMCAddress)
log.Debugf("Using ephemeral node %s with BMC Address %s", b.NodeID(), b.BMCAddress)
// Perform remote direct operations
if remoteConfig.IsoURL == "" {