Merge "Switch isogen command output to log module"

This commit is contained in:
Zuul 2019-11-15 15:37:48 +00:00 committed by Gerrit Code Review
commit ffcb533d39
3 changed files with 42 additions and 42 deletions

View File

@ -14,7 +14,7 @@ func NewISOGenCommand(parent *cobra.Command, rootSettings *environment.AirshipCT
Use: "isogen",
Short: "Generate bootstrap ISO image",
RunE: func(cmd *cobra.Command, args []string) error {
return isogen.GenerateBootstrapIso(settings, args, cmd.OutOrStdout())
return isogen.GenerateBootstrapIso(settings, args)
},
}

View File

@ -3,7 +3,6 @@ package isogen
import (
"context"
"fmt"
"io"
"os"
"path/filepath"
"strings"
@ -12,6 +11,7 @@ import (
"opendev.org/airship/airshipctl/pkg/container"
"opendev.org/airship/airshipctl/pkg/document"
"opendev.org/airship/airshipctl/pkg/errors"
"opendev.org/airship/airshipctl/pkg/log"
"opendev.org/airship/airshipctl/pkg/util"
"sigs.k8s.io/kustomize/v3/pkg/fs"
@ -22,9 +22,9 @@ const (
)
// GenerateBootstrapIso will generate data for cloud init and start ISO builder container
func GenerateBootstrapIso(settings *Settings, args []string, out io.Writer) error {
func GenerateBootstrapIso(settings *Settings, args []string) error {
if settings.IsogenConfigFile == "" {
fmt.Fprintln(out, "Reading config file location from global settings is not supported")
log.Print("Reading config file location from global settings is not supported")
return errors.ErrNotImplemented{}
}
@ -35,7 +35,7 @@ func GenerateBootstrapIso(settings *Settings, args []string, out io.Writer) erro
return err
}
if err := verifyInputs(cfg, args, out); err != nil {
if err := verifyInputs(cfg, args); err != nil {
return err
}
@ -44,7 +44,7 @@ func GenerateBootstrapIso(settings *Settings, args []string, out io.Writer) erro
return err
}
fmt.Fprintln(out, "Creating ISO builder container")
log.Print("Creating ISO builder container")
builder, err := container.NewContainer(
&ctx, cfg.Container.ContainerRuntime,
cfg.Container.Image)
@ -52,28 +52,28 @@ func GenerateBootstrapIso(settings *Settings, args []string, out io.Writer) erro
return err
}
err = generateBootstrapIso(docBundle, builder, cfg, out, settings.Debug)
err = generateBootstrapIso(docBundle, builder, cfg, settings.Debug)
if err != nil {
return err
}
fmt.Fprintln(out, "Checking artifacts")
log.Print("Checking artifacts")
return verifyArtifacts(cfg)
}
func verifyInputs(cfg *Config, args []string, out io.Writer) error {
func verifyInputs(cfg *Config, args []string) error {
if len(args) == 0 {
fmt.Fprintln(out, "Specify path to document model. Config param from global settings is not supported")
log.Print("Specify path to document model. Config param from global settings is not supported")
return errors.ErrNotImplemented{}
}
if cfg.Container.Volume == "" {
fmt.Fprintln(out, "Specify volume bind for ISO builder container")
log.Print("Specify volume bind for ISO builder container")
return errors.ErrWrongConfig{}
}
if (cfg.Builder.UserDataFileName == "") || (cfg.Builder.NetworkConfigFileName == "") {
fmt.Fprintln(out, "UserDataFileName or NetworkConfigFileName are not specified in ISO builder config")
log.Print("UserDataFileName or NetworkConfigFileName are not specified in ISO builder config")
return errors.ErrWrongConfig{}
}
@ -82,7 +82,7 @@ func verifyInputs(cfg *Config, args []string, out io.Writer) error {
case len(vols) == 1:
cfg.Container.Volume = fmt.Sprintf("%s:%s", vols[0], vols[0])
case len(vols) > 2:
fmt.Fprintln(out, "Bad container volume format. Use hostPath:contPath")
log.Print("Bad container volume format. Use hostPath:contPath")
return errors.ErrWrongConfig{}
}
return nil
@ -113,11 +113,10 @@ func generateBootstrapIso(
docBubdle document.Bundle,
builder container.Container,
cfg *Config,
out io.Writer,
debug bool,
) error {
cntVol := strings.Split(cfg.Container.Volume, ":")[1]
fmt.Fprintln(out, "Creating cloud-init for ephemeral K8s")
log.Print("Creating cloud-init for ephemeral K8s")
userData, netConf, err := cloudinit.GetCloudData(docBubdle, EphemeralClusterAnnotation)
if err != nil {
return err
@ -131,7 +130,7 @@ func generateBootstrapIso(
vols := []string{cfg.Container.Volume}
builderCfgLocation := filepath.Join(cntVol, builderConfigFileName)
fmt.Fprintf(out, "Running default container command. Mounted dir: %s\n", vols)
log.Printf("Running default container command. Mounted dir: %s", vols)
if err := builder.RunCommand(
[]string{},
nil,
@ -142,15 +141,12 @@ func generateBootstrapIso(
return err
}
fmt.Fprintln(out, "ISO successfully built.")
if debug {
fmt.Fprintf(
out,
"Debug flag is set. Container %s stopped but not deleted.\n",
builder.GetId(),
)
return nil
log.Print("ISO successfully built.")
if !debug {
log.Print("Removing container.")
return builder.RmContainer()
}
fmt.Fprintln(out, "Removing container.")
return builder.RmContainer()
log.Debugf("Debug flag is set. Container %s stopped but not deleted.", builder.GetId())
return nil
}

View File

@ -4,6 +4,7 @@ import (
"bytes"
"fmt"
"io"
"strings"
"testing"
"github.com/stretchr/testify/assert"
@ -11,6 +12,7 @@ import (
"opendev.org/airship/airshipctl/pkg/document"
"opendev.org/airship/airshipctl/pkg/errors"
"opendev.org/airship/airshipctl/pkg/log"
"opendev.org/airship/airshipctl/testutil"
)
@ -60,18 +62,18 @@ func TestBootstrapIso(t *testing.T) {
},
}
expOut := []string{
"Creating cloud-init for ephemeral K8s\n",
fmt.Sprintf("Running default container command. Mounted dir: [%s]\n", volBind),
"ISO successfully built.\n",
"Debug flag is set. Container TESTID stopped but not deleted.\n",
"Removing container.\n",
"Creating cloud-init for ephemeral K8s",
fmt.Sprintf("Running default container command. Mounted dir: [%s]", volBind),
"ISO successfully built.",
"Debug flag is set. Container TESTID stopped but not deleted.",
"Removing container.",
}
tests := []struct {
builder *mockContainer
cfg *Config
debug bool
expectedOut string
expectedOut []string
expectdErr error
}{
{
@ -80,7 +82,7 @@ func TestBootstrapIso(t *testing.T) {
},
cfg: testCfg,
debug: false,
expectedOut: expOut[0] + expOut[1],
expectedOut: []string{expOut[0], expOut[1]},
expectdErr: testErr,
},
{
@ -90,7 +92,7 @@ func TestBootstrapIso(t *testing.T) {
},
cfg: testCfg,
debug: true,
expectedOut: expOut[0] + expOut[1] + expOut[2] + expOut[3],
expectedOut: []string{expOut[0], expOut[1], expOut[2], expOut[3]},
expectdErr: nil,
},
{
@ -101,20 +103,22 @@ func TestBootstrapIso(t *testing.T) {
},
cfg: testCfg,
debug: false,
expectedOut: expOut[0] + expOut[1] + expOut[2] + expOut[4],
expectedOut: []string{expOut[0], expOut[1], expOut[2], expOut[4]},
expectdErr: testErr,
},
}
for _, tt := range tests {
actualOut := bytes.NewBufferString("")
actualErr := generateBootstrapIso(bundle, tt.builder, tt.cfg, actualOut, tt.debug)
outBuf := &bytes.Buffer{}
log.Init(tt.debug, outBuf)
actualErr := generateBootstrapIso(bundle, tt.builder, tt.cfg, tt.debug)
actualOut := outBuf.String()
errS := fmt.Sprintf("generateBootstrapIso should have return error %s, got %s", tt.expectdErr, actualErr)
assert.Equal(t, actualErr, tt.expectdErr, errS)
for _, line := range tt.expectedOut {
assert.True(t, strings.Contains(actualOut, line))
}
errS = fmt.Sprintf("generateBootstrapIso should have print %s, got %s", tt.expectedOut, actualOut)
assert.Equal(t, actualOut.String(), tt.expectedOut, errS)
assert.Equal(t, tt.expectdErr, actualErr)
}
}
@ -172,7 +176,7 @@ func TestVerifyInputs(t *testing.T) {
}
for _, tt := range tests {
actualErr := verifyInputs(tt.cfg, tt.args, bytes.NewBufferString(""))
actualErr := verifyInputs(tt.cfg, tt.args)
assert.Equal(t, tt.expectedErr, actualErr)
}