diff --git a/cmd/create/port/port.go b/cmd/create/port/port.go index ad895c67..ebf9c5d5 100644 --- a/cmd/create/port/port.go +++ b/cmd/create/port/port.go @@ -40,7 +40,7 @@ var Cmd = &cobra.Command{ c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug) if err != nil { - klog.Errorf("failed to create a session with IBM cloud: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } diff --git a/cmd/delete/port/port.go b/cmd/delete/port/port.go index 4ca674a8..ba7cf58f 100644 --- a/cmd/delete/port/port.go +++ b/cmd/delete/port/port.go @@ -39,7 +39,7 @@ var Cmd = &cobra.Command{ c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug) if err != nil { - klog.Errorf("failed to create a session with IBM cloud: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } diff --git a/cmd/dhcp-sync/dhcp-sync.go b/cmd/dhcp-sync/dhcp-sync.go index 3fd785d0..76d9b652 100644 --- a/cmd/dhcp-sync/dhcp-sync.go +++ b/cmd/dhcp-sync/dhcp-sync.go @@ -184,10 +184,9 @@ var Cmd = &cobra.Command{ if !ok { return } - klog.Info("event:", event) + klog.V(2).Infof("event: %v", event) if event.Op&fsnotify.Write == fsnotify.Write { - klog.Info("modified file:", event.Name) - klog.Info("restarting the dhcpd service") + klog.V(2).Infof("%s has been modified, proceeding to restart dhcpd service", event.Name) exitcode, out, err := utils.RunCMD("systemctl", "restart", "dhcpd") if exitcode != 0 { klog.Errorf("failed to restart the dhcpd service, exitcode: %d, stdout: %s, err: %s", exitcode, out, err) diff --git a/cmd/dhcpserver/create.go b/cmd/dhcpserver/create.go index 0599438a..d49c745f 100644 --- a/cmd/dhcpserver/create.go +++ b/cmd/dhcpserver/create.go @@ -16,6 +16,7 @@ package dhcpserver import ( "fmt" + "github.com/IBM/go-sdk-core/v5/core" "github.com/spf13/cobra" @@ -40,7 +41,7 @@ var createCmd = &cobra.Command{ c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug) if err != nil { - klog.Errorf("failed to create a session with IBM cloud: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } @@ -69,7 +70,7 @@ var createCmd = &cobra.Command{ return fmt.Errorf("failed to create a dhcpserver, err: %v", err) } - klog.Infof("Successfully created a DHCP server") + klog.Info("Successfully created a DHCP server") return nil }, } diff --git a/cmd/dhcpserver/delete.go b/cmd/dhcpserver/delete.go index 604b7fec..af98cb5d 100644 --- a/cmd/dhcpserver/delete.go +++ b/cmd/dhcpserver/delete.go @@ -34,7 +34,7 @@ var deleteCmd = &cobra.Command{ c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug) if err != nil { - klog.Errorf("failed to create a session with IBM cloud: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } @@ -48,7 +48,7 @@ var deleteCmd = &cobra.Command{ return fmt.Errorf("failed to delete a dhcpserver, err: %v", err) } - klog.Infof("Successfully Deleted a DHCP server") + klog.Info("Successfully Deleted a DHCP server") return nil }, } diff --git a/cmd/dhcpserver/get.go b/cmd/dhcpserver/get.go index d700996d..5df483d6 100644 --- a/cmd/dhcpserver/get.go +++ b/cmd/dhcpserver/get.go @@ -38,7 +38,7 @@ var getCmd = &cobra.Command{ c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug) if err != nil { - klog.Errorf("failed to create a session with IBM cloud: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } diff --git a/cmd/dhcpserver/list.go b/cmd/dhcpserver/list.go index 90ff6b83..96c28a66 100644 --- a/cmd/dhcpserver/list.go +++ b/cmd/dhcpserver/list.go @@ -34,7 +34,7 @@ var listCmd = &cobra.Command{ c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug) if err != nil { - klog.Errorf("failed to create a session with IBM cloud: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } diff --git a/cmd/get/events/events.go b/cmd/get/events/events.go index bf76381e..e6aaf19a 100644 --- a/cmd/get/events/events.go +++ b/cmd/get/events/events.go @@ -45,7 +45,7 @@ var Cmd = &cobra.Command{ c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug) if err != nil { - klog.Errorf("failed to create a session with IBM cloud: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } diff --git a/cmd/get/peravailability/peravailability.go b/cmd/get/peravailability/peravailability.go index c839a4b8..ee923715 100644 --- a/cmd/get/peravailability/peravailability.go +++ b/cmd/get/peravailability/peravailability.go @@ -42,7 +42,7 @@ var Cmd = &cobra.Command{ opt := pkg.Options c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug) if err != nil { - klog.Errorf("failed to create a session with IBM cloud: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } @@ -69,7 +69,7 @@ var Cmd = &cobra.Command{ klog.Infof("%s, where the current instance is present supports PER.", pvmclient.Zone) } sort.Strings(perEnabledRegions) - klog.Infoln("The following zones/datacenters have support for PER:", perEnabledRegions, ".", "More information at https://cloud.ibm.com/docs/overview?topic=overview-locations") + klog.Infof("The following zones/datacenters have support for PER:%v.More information at https://cloud.ibm.com/docs/overview?topic=overview-locations", perEnabledRegions) return nil }, } diff --git a/cmd/get/ports/ports.go b/cmd/get/ports/ports.go index 8bc68538..00757a07 100644 --- a/cmd/get/ports/ports.go +++ b/cmd/get/ports/ports.go @@ -45,7 +45,7 @@ var Cmd = &cobra.Command{ c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug) if err != nil { - klog.Errorf("failed to create a session with IBM cloud: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } diff --git a/cmd/image/import/import.go b/cmd/image/import/import.go index 12922d80..728ec1a2 100644 --- a/cmd/image/import/import.go +++ b/cmd/image/import/import.go @@ -111,7 +111,7 @@ pvsadm image import -n upstream-core-lon04 -b --object rhel-83-100 validStorageType := []string{"tier3", "tier1"} if !utils.Contains(validStorageType, strings.ToLower(opt.StorageType)) { - klog.Errorf("Provide valid StorageType.. allowable values are [tier1, tier3]") + klog.Errorf("provide valid StorageType. Allowable values are [tier1, tier3]") os.Exit(1) } @@ -148,7 +148,7 @@ pvsadm image import -n upstream-core-lon04 -b --object rhel-83-100 } // Create the service credential if does not exist - klog.Infof("Auto Generating the COS Service credential for importing the image with name: %s", opt.ServiceCredName) + klog.V(2).Infof("Auto Generating the COS Service credential for importing the image with name: %s", opt.ServiceCredName) CreateServiceKeyRequest := controller.CreateServiceKeyRequest{ Name: opt.ServiceCredName, SourceCRN: crn, @@ -161,7 +161,7 @@ pvsadm image import -n upstream-core-lon04 -b --object rhel-83-100 cred, ok = newKey.Credentials["cos_hmac_keys"].(map[string]interface{}) } else { // Use the service credential already created - klog.Infof("Reading the existing service credential") + klog.V(2).Info("Reading the existing service credential") cred, ok = keys[0].Credentials["cos_hmac_keys"].(map[string]interface{}) } if !ok { @@ -217,11 +217,11 @@ pvsadm image import -n upstream-core-lon04 -b --object rhel-83-100 if err != nil { return err } - klog.Infof("Retriving image details") + klog.V(1).Info("Retrieving image details") } if !opt.Watch { - klog.Infof("Importing Image %s is currently in %s state, Please check the Progress in the IBM Cloud UI\n", *image.Name, *image.State) + klog.Infof("Image import for %s is currently in %s state, Please check the progress in the IBM cloud UI", *image.Name, *image.State) return nil } diff --git a/cmd/image/info/info.go b/cmd/image/info/info.go index d46a4706..661af8a4 100644 --- a/cmd/image/info/info.go +++ b/cmd/image/info/info.go @@ -58,13 +58,13 @@ pvsadm image info rhcos-46-12152021.ova.gz return fmt.Errorf("failed to detect the image filetype: %v", err) } if checkGzip { - klog.Infof("Image %s is in gzip format, extracting it", fileName) + klog.V(1).Infof("Image %s is in gzip format, extracting it", fileName) ova = filepath.Join(ovaImgDir, "image.ova") err = utils.GunzipIt(fileName, ova) if err != nil { return err } - klog.Infof("Extract complete") + klog.V(1).Info("Extract complete") } else { ova = fileName } diff --git a/cmd/image/qcow2ova/get-image.go b/cmd/image/qcow2ova/get-image.go index 64aeb569..3f935ada 100644 --- a/cmd/image/qcow2ova/get-image.go +++ b/cmd/image/qcow2ova/get-image.go @@ -40,18 +40,18 @@ func getImage(downloadDir string, srcUrl string, timeout time.Duration) (string, if !fileExists(srcUrl) { return "", fmt.Errorf("not a valid URL or file does not exist at %s", srcUrl) } - klog.Infof("Copying %s into %s", srcUrl, dest) + klog.V(1).Infof("Copying %s into %s", srcUrl, dest) if err := cp(srcUrl, dest); err != nil { return "", err } - klog.Infof("Copy Completed!") + klog.V(1).Info("Copy Completed!") } else { out, err := os.Create(dest) if err != nil { return "", err } defer out.Close() - klog.Infof("Downloading %s into %s", srcUrl, dest) + klog.V(1).Infof("Downloading %s into %s", srcUrl, dest) client := http.Client{ Timeout: timeout, } @@ -69,7 +69,7 @@ func getImage(downloadDir string, srcUrl string, timeout time.Duration) (string, if err != nil { return "", err } - klog.Infof("Download Completed!") + klog.V(1).Info("Download Completed!") } return dest, nil } diff --git a/cmd/image/qcow2ova/prep/loop.go b/cmd/image/qcow2ova/prep/loop.go index c9bbc5bc..cebe32d8 100644 --- a/cmd/image/qcow2ova/prep/loop.go +++ b/cmd/image/qcow2ova/prep/loop.go @@ -144,11 +144,11 @@ func Umount(dir string) error { exitcode, out, err := utils.RunCMD("umount", dir) if exitcode != 0 { if strings.Contains(err, "not mounted") { - klog.Infof("Ignoring 'not mounted' error for %s", dir) + klog.V(1).Infof("Ignoring 'not mounted' error for %s", dir) return nil } if strings.Contains(err, "no mount point specified") { - klog.Infof("Ignoring 'no mount point specified' error for %s", dir) + klog.V(1).Infof("Ignoring 'no mount point specified' error for %s", dir) return nil } if strings.Contains(err, "target is busy") { @@ -158,7 +158,7 @@ func Umount(dir string) error { return nil } } - klog.Infof(" As '%s' is busy, unmounting it using lazy unmount", dir) + klog.V(1).Infof("As '%s' is busy, unmounting it using lazy unmount", dir) exitcode, out, err = utils.RunCMD("umount", "-lf", dir) if exitcode == 0 { return nil diff --git a/cmd/image/qcow2ova/prep/prepare.go b/cmd/image/qcow2ova/prep/prepare.go index 868ac2c7..c9946b29 100644 --- a/cmd/image/qcow2ova/prep/prepare.go +++ b/cmd/image/qcow2ova/prep/prepare.go @@ -20,9 +20,9 @@ import ( "path/filepath" "strings" - "github.com/ppc64le-cloud/pvsadm/pkg/utils" - "k8s.io/klog/v2" + + "github.com/ppc64le-cloud/pvsadm/pkg/utils" ) var ( @@ -179,7 +179,7 @@ func Prepare4capture(mnt, volume, dist, rhnuser, rhnpasswd, rootpasswd string) e case "rhel", "centos": return prepare(mnt, volume, dist, rhnuser, rhnpasswd, rootpasswd) case "coreos": - klog.Infof("No image preparation required for the coreos...") + klog.Info("No image preparation required for the coreos.") return nil default: return fmt.Errorf("not a supported distro: %s", dist) diff --git a/cmd/image/qcow2ova/qcow2ova.go b/cmd/image/qcow2ova/qcow2ova.go index f5198291..3bcc1df8 100644 --- a/cmd/image/qcow2ova/qcow2ova.go +++ b/cmd/image/qcow2ova/qcow2ova.go @@ -16,6 +16,7 @@ package qcow2ova import ( "fmt" + "io/ioutil" "os" "os/signal" "path/filepath" @@ -96,8 +97,8 @@ Qcow2 images location: if strings.ToLower(opt.ImageDist) == "coreos" { return fmt.Errorf("--prep-template option is not supported for coreos distro") } else { - klog.Info("Overriding with the user defined image preparation template.") - content, err := os.ReadFile(opt.PrepTemplate) + klog.V(2).Info("Overriding with the user defined image preparation template.") + content, err := ioutil.ReadFile(opt.PrepTemplate) if err != nil { return err } @@ -159,10 +160,24 @@ Qcow2 images location: if opt.ImageDist != "coreos" && opt.OSPassword == "" && !opt.OSPasswordSkip { var err error opt.OSPassword, err = GeneratePassword(12) - klog.Infof("Autogenerated OS root password is: %s", opt.OSPassword) if err != nil { return err } + passwordfile, err := os.Create("password.txt") + if err != nil { + klog.Errorf("failed to create password file, err: %v", err) + return err + } + defer passwordfile.Close() + + passwordfile.WriteString(fmt.Sprintf("Root Password : %s", opt.OSPassword)) + cwd, err := os.Getwd() + if err != nil { + return err + } + + klog.Infof("Autogenerated OS root password is updated in %s", filepath.Join(cwd, passwordfile.Name())) + } // preflight checks validations @@ -193,7 +208,7 @@ Qcow2 images location: signal.Notify(c, syscall.SIGINT, syscall.SIGTERM) go func() { <-c - klog.Infof("Received an interrupt, exiting...") + klog.Info("Received an interrupt, exiting.") prep.ExitChroot() prep.UmountHostPartitions(mnt) _ = prep.Umount(mnt) @@ -206,7 +221,7 @@ Qcow2 images location: return fmt.Errorf("failed to download the %s into %s, error: %v", opt.ImageURL, tmpDir, err) } - klog.Infof("downloaded/copied the file at: %s", image) + klog.V(1).Infof("downloaded/copied the file at: %s", image) var qcow2Img string @@ -215,13 +230,13 @@ Qcow2 images location: return fmt.Errorf("failed to detect the image filetype: %v", err) } if checkGzip { - klog.Infof("Image %s is in gzip format, extracting it", image) + klog.V(1).Infof("Image %s is in gzip format, extracting it", image) qcow2Img = filepath.Join(tmpDir, ova.VolName+".qcow2") err = utils.GunzipIt(image, qcow2Img) if err != nil { return err } - klog.Infof("Extract complete") + klog.V(1).Info("Extract complete") } else { qcow2Img = image } @@ -239,36 +254,36 @@ Qcow2 images location: if err != nil { return err } - klog.Infof("Conversion completed") + klog.Info("Conversion completed") klog.Infof("Resizing the image %s to %dG", rawImg, opt.ImageSize) err = qemuImgResize("-f", "raw", rawImg, fmt.Sprintf("%dG", opt.ImageSize)) if err != nil { return err } - klog.Infof("Resize completed") + klog.Info("Resize completed") - klog.Infof("Preparing the image") + klog.Info("Preparing the image") err = prep.Prepare4capture(mnt, rawImg, opt.ImageDist, opt.RHNUser, opt.RHNPassword, opt.OSPassword) if err != nil { return fmt.Errorf("failed while preparing the image for %s distro, err: %v", opt.ImageDist, err) } - klog.Infof("Preparation completed") + klog.Info("Preparation completed") - klog.Infof("Creating an OVA bundle") + klog.Info("Creating an OVA bundle") ovafile := filepath.Join(tmpDir, opt.ImageName+".ova") if err := ova.CreateTarArchive(ovaImgDir, ovafile, opt.TargetDiskSize, opt.ImageDist, volumeDiskName); err != nil { return fmt.Errorf("failed to create ova bundle, err: %v", err) } klog.Infof("OVA bundle creation completed: %s", ovafile) - klog.Infof("Compressing an OVA file") + klog.Info("Compressing an OVA file") ovaGZfile := filepath.Join(cwd, opt.ImageName+".ova.gz") err = utils.GzipIt(ovafile, ovaGZfile) if err != nil { return err } - klog.Infof("OVA file Compression completed") + klog.Info("OVA file Compression completed") fmt.Printf("\n\nSuccessfully converted Qcow2 image to OVA format, find at %s\nOS root password: %s\n", ovaGZfile, opt.OSPassword) return nil diff --git a/cmd/image/qcow2ova/validate/diskspace/diskspace_windows.go b/cmd/image/qcow2ova/validate/diskspace/diskspace_windows.go index c14e53bb..67815aa6 100644 --- a/cmd/image/qcow2ova/validate/diskspace/diskspace_windows.go +++ b/cmd/image/qcow2ova/validate/diskspace/diskspace_windows.go @@ -26,7 +26,7 @@ func (p *Rule) String() string { } func (p *Rule) Verify() error { - return fmt.Errorf("Not supported on Windows platform") + return fmt.Errorf("not supported on Windows platform") } func (p *Rule) Hint() string { diff --git a/cmd/image/qcow2ova/validate/tools/tools.go b/cmd/image/qcow2ova/validate/tools/tools.go index a21ff6d0..d78ba93a 100644 --- a/cmd/image/qcow2ova/validate/tools/tools.go +++ b/cmd/image/qcow2ova/validate/tools/tools.go @@ -40,7 +40,7 @@ func (p *Rule) Verify() error { p.failedCommand = command return err } - klog.Infof("%s found at %s\n", command, path) + klog.Infof("%s found at %s", command, path) } return nil } diff --git a/cmd/image/qcow2ova/validate/validate.go b/cmd/image/qcow2ova/validate/validate.go index 8ab50a43..b3f17461 100644 --- a/cmd/image/qcow2ova/validate/validate.go +++ b/cmd/image/qcow2ova/validate/validate.go @@ -37,9 +37,9 @@ func AddRule(r Rule) { func Validate() error { for _, rule := range rules { ruleStr := rule.String() - klog.Infof("Checking: %s\n", ruleStr) + klog.Infof("Checking: %s", ruleStr) if utils.Contains(pkg.ImageCMDOptions.PreflightSkip, ruleStr) { - klog.Infof("SKIPPED!") + klog.Info("SKIPPED!") continue } err := rule.Verify() diff --git a/cmd/image/sync/sync.go b/cmd/image/sync/sync.go index e8d850bb..51ba2e61 100644 --- a/cmd/image/sync/sync.go +++ b/cmd/image/sync/sync.go @@ -54,7 +54,7 @@ func copyWorker(copyJobs <-chan copyWorkload, results chan<- bool, workerId int) klog.Infof("Copying object: %s src bucket: %s dest bucket: %s", copyJob.srcObject, copyJob.srcBucket, copyJob.tgtBucket) err := copyJob.s3Cli.CopyObjectToBucket(copyJob.srcBucket, copyJob.tgtBucket, copyJob.srcObject) if err != nil { - klog.Errorf("ERROR: %v, Copy object %s failed", err, copyJob.srcObject) + klog.Errorf("copy object %s failed, err: %v", copyJob.srcObject, err) results <- false } duration := time.Since(start) @@ -92,13 +92,13 @@ func calculateChannels(spec []pkg.Spec, instanceList []InstanceItem) (int, error for item_no, item := range spec { _, err := instanceList[item_no].Source.CheckBucketLocationConstraint(item.Source.Bucket, item.Source.Region+"-"+item.Source.StorageClass) if err != nil { - klog.Errorf("Location constraint verification failed for src bucket: %s", item.Source.Bucket) + klog.Errorf("location constraint verification failed for src bucket %s", item.Source.Bucket) return 0, err } selectedObjects, err := instanceList[item_no].Source.SelectObjects(item.Source.Bucket, item.Source.Object) if err != nil { - klog.Errorf("Select Objects failed: %v", err) + klog.Errorf("select Objects failed, err: %v", err) return 0, err } @@ -114,7 +114,7 @@ func copyObjects(spec []pkg.Spec, instanceList []InstanceItem, copyJobs chan<- c for item_no, item := range spec { selectedObjects, err := instanceList[item_no].Source.SelectObjects(item.Source.Bucket, item.Source.Object) if err != nil { - klog.Errorf("Select Objects failed: %v", err) + klog.Errorf("select Objects failed, err: %v", err) return err } @@ -122,7 +122,7 @@ func copyObjects(spec []pkg.Spec, instanceList []InstanceItem, copyJobs chan<- c for targetItemNo, targetItem := range item.Target { _, err = instanceList[item_no].Target[targetItemNo].CheckBucketLocationConstraint(targetItem.Bucket, targetItem.Region+"-"+targetItem.StorageClass) if err != nil { - klog.Errorf("Location constraint verification failed for dest bucket: %s", targetItem.Bucket) + klog.Errorf("location constraint verification failed for dest bucket %s", targetItem.Bucket) return errors.New("bucket location constraint verification failed") } @@ -162,13 +162,13 @@ func getSpec(specfileName string) ([]pkg.Spec, error) { // Unmashalling yaml file yamlFile, err := os.ReadFile(specfileName) if err != nil { - klog.Errorf("ERROR: Read yaml failed : %v", err) + klog.Errorf("read yaml failed, err: %v", err) return nil, err } err = yaml.Unmarshal(yamlFile, &spec) if err != nil { - klog.Errorf("Unmarshal: %v", err) + klog.Errorf("unmarshal failed, err: %v", err) return nil, err } diff --git a/cmd/image/sync/sync_test.go b/cmd/image/sync/sync_test.go index 0317000a..a6d2c944 100644 --- a/cmd/image/sync/sync_test.go +++ b/cmd/image/sync/sync_test.go @@ -79,7 +79,7 @@ func TestGetSpec(t *testing.T) { SpecFileName := file.Name() defer os.Remove(SpecFileName) - klog.Infoln("Specfile :", SpecFileName) + klog.V(1).Infof("Specfile :%s", SpecFileName) specString, merr := yaml.Marshal(&spec) require.NoError(t, merr, "Error in Unmarshalling Specfile") @@ -247,7 +247,7 @@ func mockCreateInstances(mockSyncClient *mocksync.MockSyncClient) []InstanceItem } func mockCreateSpec() []pkg.Spec { - klog.Infoln("STEP: Generating Spec") + klog.V(1).Info("STEP: Generating Spec") specSlice := make([]pkg.Spec, 0) for i := 0; i < noOfSources; i++ { specSlice = append(specSlice, utils.GenerateSpec(noOfTargetsPerSource)) diff --git a/cmd/image/upload/upload.go b/cmd/image/upload/upload.go index ec6d84a8..65a6789e 100644 --- a/cmd/image/upload/upload.go +++ b/cmd/image/upload/upload.go @@ -149,27 +149,30 @@ pvsadm image upload --bucket bucket1320 -f centos-8-latest.ova.gz --bucket-regio } } } else if len(instances) == 0 { - klog.Infof("No active Cloud Object Storage instances were found in the account\n") + klog.Info("No active Cloud Object Storage instances were found in the account") } // Ask if user likes to use existing instance if opt.InstanceName == "" && len(instances) != 0 { - klog.Infof("Bucket %s not found in the account provided\n", opt.BucketName) + klog.Infof("Bucket %s not found in the account provided", opt.BucketName) if utils.AskConfirmation(UseExistingPromptMessage) { availableInstances := []string{} for name := range instances { availableInstances = append(availableInstances, name) } - selectedInstance := utils.SelectItem("Select Cloud Object Storage Instance:", availableInstances) + selectedInstance, err := utils.SelectItem("Select Cloud Object Storage Instance:", availableInstances) + if err != nil { + return err + } opt.InstanceName = selectedInstance - klog.Infof("Selected InstanceName is %s\n", opt.InstanceName) + klog.Infof("Selected InstanceName is %s", opt.InstanceName) } } //Create a new instance if opt.InstanceName == "" { if !utils.AskConfirmation(CreatePromptMessage) { - return fmt.Errorf("Create Cloud Object Storage instance either offline or use the pvsadm command\n") + return fmt.Errorf("create Cloud Object Storage instance either offline or use the pvsadm command") } if opt.ResourceGrp == "" { resourceGroupQuery := management.ResourceGroupQuery{ @@ -186,11 +189,14 @@ pvsadm image upload --bucket bucket1320 -f centos-8-latest.ova.gz --bucket-regio resourceGroupNames = append(resourceGroupNames, resgrp.Name) } - opt.ResourceGrp = utils.SelectItem("Select ResourceGroup having required permissions for creating a service instance from the below:", resourceGroupNames) + opt.ResourceGrp, err = utils.SelectItem("Select ResourceGroup having required permissions for creating a service instance from the below:", resourceGroupNames) + if err != nil { + return err + } } opt.InstanceName = utils.ReadUserInput("Type Name of the Cloud Object Storage instance:") - klog.Infof("Creating a new cos %s instance\n", opt.InstanceName) + klog.Infof("Creating a new cos %s instance", opt.InstanceName) _, err = bxCli.CreateServiceInstance(opt.InstanceName, ServiceType, opt.ServicePlan, opt.ResourceGrp, ResourceGroupAPIRegion) @@ -215,7 +221,7 @@ pvsadm image upload --bucket bucket1320 -f centos-8-latest.ova.gz --bucket-regio //Create a new bucket if !bucketExists { - klog.Infof("Creating a new bucket %s\n", opt.BucketName) + klog.Infof("Creating a new bucket %s", opt.BucketName) s3Cli, err = client.NewS3Client(bxCli, opt.InstanceName, opt.Region) if err != nil { return err diff --git a/cmd/purge/images/images.go b/cmd/purge/images/images.go index f22d34cd..b794b34f 100644 --- a/cmd/purge/images/images.go +++ b/cmd/purge/images/images.go @@ -62,7 +62,7 @@ pvsadm purge --help for information err = pvmclient.ImgClient.Delete(*image.ImageID) if err != nil { if opt.IgnoreErrors { - klog.Infof("error occurred while deleting the image: %v", err) + klog.Errorf("error occurred while deleting the image: %v", err) } else { return err } diff --git a/cmd/purge/keys/keys.go b/cmd/purge/keys/keys.go index d3098f78..dc858132 100644 --- a/cmd/purge/keys/keys.go +++ b/cmd/purge/keys/keys.go @@ -46,7 +46,7 @@ pvsadm purge --help for information c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug) if err != nil { - klog.Errorf("failed to create a session with IBM cloud: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } @@ -67,7 +67,7 @@ pvsadm purge --help for information err = pvmclient.KeyClient.Delete(key) if err != nil { if opt.IgnoreErrors { - klog.Infof("error occurred while deleting the key: %v", err) + klog.Errorf("error occurred while deleting the key: %v", err) } else { return fmt.Errorf("failed to delete a key, err: %v", err) } diff --git a/cmd/purge/networks/networks.go b/cmd/purge/networks/networks.go index 2eaf8fcf..8b852d94 100644 --- a/cmd/purge/networks/networks.go +++ b/cmd/purge/networks/networks.go @@ -91,7 +91,7 @@ pvsadm purge --help for information err = pvmclient.NetworkClient.Delete(*network.NetworkID) if err != nil { if opt.IgnoreErrors { - klog.Infof("error occurred while deleting the network: %v", err) + klog.Errorf("error occurred while deleting the network: %v", err) } else { return err } diff --git a/cmd/purge/vms/vms.go b/cmd/purge/vms/vms.go index b94d9f00..277a62e6 100644 --- a/cmd/purge/vms/vms.go +++ b/cmd/purge/vms/vms.go @@ -57,7 +57,7 @@ pvsadm purge --help for information for _, instance := range instances { ins, err := pvmclient.InstanceClient.Get(*instance.PvmInstanceID) if err != nil { - klog.Infof("Error occurred while getting the vm %s", err) + klog.Errorf("error occurred while getting the vm %s", err) continue } var ipAddrsPrivate, ipAddrsPublic []string @@ -80,7 +80,7 @@ pvsadm purge --help for information err = pvmclient.InstanceClient.Delete(*instance.PvmInstanceID) if err != nil { if opt.IgnoreErrors { - klog.Infof("error occurred while deleting the vm: %v", err) + klog.Errorf("error occurred while deleting the vm: %v", err) } else { return err } diff --git a/cmd/purge/volumes/volumes.go b/cmd/purge/volumes/volumes.go index a16a760a..5c392203 100644 --- a/cmd/purge/volumes/volumes.go +++ b/cmd/purge/volumes/volumes.go @@ -70,7 +70,7 @@ pvsadm purge --help for information err = pvmclient.VolumeClient.DeleteVolume(*volume.VolumeID) if err != nil { if opt.IgnoreErrors { - klog.Infof("error occurred while deleting the volume: %v", err) + klog.Errorf("error occurred while deleting the volume: %v", err) } else { return err } diff --git a/cmd/root.go b/cmd/root.go index ce57cf32..30da2896 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -47,7 +47,7 @@ This is a tool built for the Power Systems Virtual Server helps managing and mai PersistentPreRunE: func(cmd *cobra.Command, args []string) error { if pkg.Options.APIKey == "" { if key := os.Getenv("IBMCLOUD_API_KEY"); key != "" { - klog.Infof("Using an API key from IBMCLOUD_API_KEY environment variable") + klog.V(1).Info("Using an API key from IBMCLOUD_API_KEY environment variable") pkg.Options.APIKey = key } } diff --git a/pkg/audit/audit.go b/pkg/audit/audit.go index cbca5ac1..ccdaaf68 100644 --- a/pkg/audit/audit.go +++ b/pkg/audit/audit.go @@ -63,11 +63,11 @@ func (a *Audit) Log(name, op, value string) { } jsonEntry, err := json.Marshal(entry) if err != nil { - klog.Fatalf("json marshal error: %v", err) + klog.Errorf("json marshal error: %v", err) } jsonEntry = append(jsonEntry, '\n') if _, err := a.file.Write(jsonEntry); err != nil { - klog.Fatalf("log failed with error: %v", err) + klog.Errorf("log failed with error, err: %v", err) } a.mutex.Unlock() } @@ -75,7 +75,7 @@ func (a *Audit) Log(name, op, value string) { func Delete(file string) { check_file, err := os.Stat(file) if err != nil { - klog.V(2).Infoln(err) + klog.Errorf("cannot retrieve file stats, err: %v", err) return } if check_file.Size() == 0 { diff --git a/pkg/client/client.go b/pkg/client/client.go index 791933c9..f502050b 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -213,7 +213,7 @@ func (c *Client) ListWorkspaceInstances() (*resourcecontrollerv2.ResourceInstanc } workspaces, _, err := c.ResouceControllerClient.ListResourceInstances(listServiceInstanceOptions) if err != nil { - klog.Errorf("Error!: %+v", err) + klog.Errorf("error while listing Resource Instances: %+v", err) return nil, err } return workspaces, nil @@ -268,7 +268,7 @@ func (c *Client) CreateServiceInstance(instanceName, serviceName, servicePlan, r for l := range supportedLocations { locationList = append(locationList, l) } - return "", fmt.Errorf("No deployment found for service plan %s at location %s.\nValid location(s) are: %q.\nUse service instance example if the service is a Cloud Foundry service.", + return "", fmt.Errorf("no deployment found for service plan %s at location %s.\nValid location(s) are: %q.\nUse service instance example if the service is a Cloud Foundry service", servicePlan, region, locationList) } @@ -292,8 +292,8 @@ func (c *Client) CreateServiceInstance(instanceName, serviceName, servicePlan, r return "", err } - klog.Infof("Resource service Instance Details :%v\n", serviceInstance) - klog.Infof("Resource service InstanceID :%v\n", serviceInstance.Crn.ServiceInstance) + klog.Infof("Resource service Instance Details :%v", serviceInstance) + klog.Infof("Resource service InstanceID :%v", serviceInstance.Crn.ServiceInstance) return serviceInstance.Crn.ServiceInstance, nil } @@ -302,7 +302,7 @@ func (c *Client) CreateServiceInstance(instanceName, serviceName, servicePlan, r func (c *Client) DeleteServiceInstance(instanceID string, recursive bool) error { err := c.ResourceClientV1.DeleteInstance(instanceID, recursive) if err != nil { - klog.Infof("Failed to delete the instance with id %s because of the error %s", instanceID, err) + klog.Errorf("failed to delete the instance with id %s because of the error %s", instanceID, err) return err } return nil diff --git a/pkg/client/network/network.go b/pkg/client/network/network.go index 58e54b13..54d0620e 100644 --- a/pkg/client/network/network.go +++ b/pkg/client/network/network.go @@ -57,7 +57,7 @@ func (c *Client) GetAll() (*models.Networks, error) { resp, err := c.session.Power.PCloudNetworks.PcloudNetworksGetall(params, c.session.AuthInfo(c.instanceID)) if err != nil || resp.Payload == nil { - klog.Infof("Failed to perform the operation... %v", err) + klog.Errorf("failed to perform the operation, err: %v", err) return nil, errors.ToError(err) } diff --git a/pkg/client/pvmclient.go b/pkg/client/pvmclient.go index b201a158..ef835cf6 100644 --- a/pkg/client/pvmclient.go +++ b/pkg/client/pvmclient.go @@ -67,8 +67,8 @@ func NewPVMClient(c *Client, instanceID, instanceName, ep string) (*PVMClient, e } found := false for _, svc := range svcs { - klog.V(4).Infof("Service ID: %s, region_id: %s, Name: %s", svc.Guid, svc.RegionID, svc.Name) - klog.V(4).Infof("crn: %v", svc.Crn) + klog.V(3).Infof("Service ID: %s, region_id: %s, Name: %s", svc.Guid, svc.RegionID, svc.Name) + klog.V(3).Infof("crn: %v", svc.Crn) if svc.Name == instanceName { instanceID = svc.Guid found = true diff --git a/pkg/client/s3client.go b/pkg/client/s3client.go index 0a45a9ba..a4b34e39 100644 --- a/pkg/client/s3client.go +++ b/pkg/client/s3client.go @@ -78,12 +78,12 @@ func NewS3Client(c *Client, instanceName, region string) (s3client *S3Client, er Name: instanceName, }) if err != nil { - return s3client, fmt.Errorf("failed to list the resource instances: %v", err) + return s3client, fmt.Errorf("failed to list the resource instances, err: %v", err) } found := false for _, svc := range svcs { - klog.V(4).Infof("Service ID: %s, region_id: %s, Name: %s", svc.Guid, svc.RegionID, svc.Name) - klog.V(4).Infof("crn: %v", svc.Crn) + klog.V(3).Infof("Service ID: %s, region_id: %s, Name: %s", svc.Guid, svc.RegionID, svc.Name) + klog.V(3).Infof("crn: %v", svc.Crn) if svc.Name == instanceName { instanceID = svc.Guid found = true @@ -118,7 +118,7 @@ func NewS3Client(c *Client, instanceName, region string) (s3client *S3Client, er func (c *S3Client) CheckBucketExists(bucketName string) (bool, error) { result, err := c.S3Session.ListBuckets(nil) if err != nil { - klog.Infof("Unable to list buckets, %v\n", err) + klog.Errorf("unable to list buckets, err: %v", err) return false, err } @@ -151,7 +151,7 @@ func (c *S3Client) SelectObjects(bucketName string, regex string) ([]string, err return true }) if err != nil { - klog.Infof("failed to list objects, %v\n", err) + klog.Errorf("failed to list objects, err: %v", err) return nil, err } return matchedObjects, err @@ -166,7 +166,7 @@ func (c *S3Client) CheckBucketLocationConstraint(bucketName string, bucketLocati result, err := c.S3Session.GetBucketLocation(getParams) if err != nil { - klog.Infof("Unable to get bucket location %v\n", err) + klog.Errorf("unable to get bucket location, err: %v", err) return false, err } @@ -187,11 +187,11 @@ func (c *S3Client) CheckIfObjectExists(bucketName, objectName string) (bool, err if err != nil { if aerr, ok := err.(awserr.Error); ok { if aerr.Code() == s3.ErrCodeNoSuchKey { - klog.Infof("Object %s not found in %s bucket", objectName, bucketName) + klog.Errorf("object %s not found in %s bucket", objectName, bucketName) return false, nil } } - return false, fmt.Errorf("unknown error occurred, %v", err) + return false, fmt.Errorf("unknown error occurred, err: %v", err) } return true, nil } @@ -202,11 +202,11 @@ func (c *S3Client) CreateBucket(bucketName string) error { Bucket: aws.String(bucketName), // New Bucket Name }) if err != nil { - klog.Errorf("Unable to create bucket %q, %v", bucketName, err) + klog.Errorf("unable to create bucket %q, err: %v", bucketName, err) return err } // Wait until bucket is created before finishing - klog.Infof("Waiting for bucket %q to be created...\n", bucketName) + klog.Infof("Waiting for bucket %s to be created.", bucketName) err = c.S3Session.WaitUntilBucketExists(&s3.HeadBucketInput{ Bucket: aws.String(bucketName), @@ -223,7 +223,7 @@ func (c *S3Client) CopyObjectToBucket(srcBucketName string, destBucketName strin } _, err := c.S3Session.CopyObject(©Params) if err != nil { - klog.Errorf("Unable to copy object %s from bucket %s, to bucket %s Error: %v", objectName, srcBucketName, destBucketName, err) + klog.Errorf("unable to copy object %s from bucket %s, to bucket %s, err: %v", objectName, srcBucketName, destBucketName, err) return err } @@ -266,17 +266,17 @@ func (r *CustomReader) Seek(offset int64, whence int) (int64, error) { // To upload a object to S3 bucket func (c *S3Client) UploadObject(fileName, objectName, bucketName string) error { - klog.Infof("uploading the file %s\n", fileName) + klog.Infof("uploading the file %s", fileName) //Read the content of the file file, err := os.Open(fileName) if err != nil { - return fmt.Errorf("err opening file %s: %s", fileName, err) + return fmt.Errorf("err opening file %s, err: %s", fileName, err) } defer file.Close() fileInfo, err := file.Stat() if err != nil { - return fmt.Errorf("failed to stat file %v, %v", fileName, err) + return fmt.Errorf("failed to stat file %v, err: %v", fileName, err) } reader := &CustomReader{ @@ -303,6 +303,6 @@ func (c *S3Client) UploadObject(fileName, objectName, bucketName string) error { return err } fmt.Println() - klog.Infof("Upload completed successfully in %f seconds to location %s\n", time.Since(startTime).Seconds(), result.Location) + klog.Infof("Upload completed successfully in %f seconds to location %s", time.Since(startTime).Seconds(), result.Location) return err } diff --git a/pkg/client/volume/volume.go b/pkg/client/volume/volume.go index 27096e9e..91c5ee61 100644 --- a/pkg/client/volume/volume.go +++ b/pkg/client/volume/volume.go @@ -55,7 +55,7 @@ func (c *Client) DeleteVolume(id string) error { } func (c *Client) GetAll() (*models.Volumes, error) { - klog.Infof("Calling the Power Volumes GetAll Method") + klog.V(1).Info("Calling the Power Volumes GetAll Method") params := p_cloud_volumes.NewPcloudCloudinstancesVolumesGetallParamsWithTimeout(pkg.TIMEOUT).WithCloudInstanceID(c.instanceID) resp, err := c.session.Power.PCloudVolumes.PcloudCloudinstancesVolumesGetall(params, c.session.AuthInfo(c.instanceID)) if err != nil { diff --git a/pkg/utils/select.go b/pkg/utils/select.go index cb8858e5..156bb8fb 100644 --- a/pkg/utils/select.go +++ b/pkg/utils/select.go @@ -23,7 +23,7 @@ import ( access "github.com/charmbracelet/huh/accessibility" ) -func SelectItem(msg string, instances []string) string { +func SelectItem(msg string, instances []string) (string, error) { var choice string err := huh.NewForm( @@ -32,9 +32,10 @@ func SelectItem(msg string, instances []string) string { Options(huh.NewOptions(instances...)...).Value(&choice))).Run() if err != nil { - klog.Fatalf("Couldn't process the inputs: %v", err) + klog.Errorf("couldn't process the inputs: %v", err) + return "", err } - return choice + return choice, nil } func AskConfirmation(message string) bool { @@ -49,6 +50,7 @@ func AskConfirmation(message string) bool { Value(&confirm))).Run() if err != nil { klog.Fatalf("couldn't process inputs: %v", err) + } return confirm } diff --git a/test/e2e/sync/sync.go b/test/e2e/sync/sync.go index 8ef7532d..73fd2f29 100644 --- a/test/e2e/sync/sync.go +++ b/test/e2e/sync/sync.go @@ -65,16 +65,16 @@ func runSyncCMD(args ...string) (int, string, string) { // Create Specifications yaml file func createSpecFile(spec []pkg.Spec) error { - klog.Infof("STEP: Creating Spec file") + klog.V(4).Info("STEP: Creating Spec file") dir, err := os.MkdirTemp(".", "spec") if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to create temporary directory, err: %v", err) return err } file, err := os.CreateTemp(dir, "spec.*.yaml") if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to create a temp file, err: %v", err) return err } defer file.Close() @@ -82,26 +82,26 @@ func createSpecFile(spec []pkg.Spec) error { SpecFileName = file.Name() specString, merr := yaml.Marshal(&spec) if merr != nil { - klog.Errorf("ERROR: %v", merr) + klog.Errorf("marshal failed, err: %v", merr) return merr } _, err = file.WriteString(string(specString)) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("error while writing in the file, err: %v", err) return err } - klog.Infoln(string(specString)) + klog.V(3).Info("Specifications for e2e sync test", string(specString)) return nil } // Create Cloud Object Storage Service instance func createCOSInstance(instanceName string) error { - klog.Infoln("STEP: Creating COS instance :", instanceName) + klog.V(4).Infof("STEP: Creating COS instance : %s", instanceName) bxCli, err := client.NewClientWithEnv(APIKey, client.DefaultEnv, Debug) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } @@ -110,7 +110,7 @@ func createCOSInstance(instanceName string) error { } resGrpList, err := bxCli.ResGroupAPI.List(&resourceGroupQuery) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("error while listing resource groups, err: %v", err) return err } @@ -118,12 +118,12 @@ func createCOSInstance(instanceName string) error { for _, resgrp := range resGrpList { resourceGroupNames = append(resourceGroupNames, resgrp.Name) } - klog.Infoln("Resource Group names: ", resourceGroupNames) + klog.V(3).Infof("Resource Group names: %v", resourceGroupNames) _, err = bxCli.CreateServiceInstance(instanceName, ServiceType, ServicePlan, resourceGroupNames[0], ResourceGroupAPIRegion) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to create Service Instance, err: %v", err) return err } @@ -132,10 +132,10 @@ func createCOSInstance(instanceName string) error { // Delete Cloud Object Storage Service instance func deleteCOSInstance(instanceName string) error { - klog.Infoln("STEP: Deleting COS instance", instanceName) + klog.V(4).Infof("STEP: Deleting COS instance %s", instanceName) bxCli, err := client.NewClientWithEnv(APIKey, client.DefaultEnv, Debug) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } @@ -144,7 +144,7 @@ func deleteCOSInstance(instanceName string) error { Name: instanceName, }) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to list instance, err: %v", err) return err } @@ -152,10 +152,10 @@ func deleteCOSInstance(instanceName string) error { if svc.Name == instanceName { err = bxCli.DeleteServiceInstance(svc.ID, Recursive) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to delete Service Instance, err: %v", err) return err } - klog.Infoln("Service Instance Deleted: ", svc.Name) + klog.V(2).Infof("Service Instance Deleted: %s", svc.Name) } } @@ -164,16 +164,16 @@ func deleteCOSInstance(instanceName string) error { // Create S3 bucket in the given region and storage class func createBucket(bucketName string, cos string, region string, storageClass string) error { - klog.Infof("STEP: Creating Bucket %s in region %s in COS %s storageClass %s", bucketName, region, cos, storageClass) + klog.V(4).Infof("STEP: Creating Bucket %s in region %s in COS %s storageClass %s", bucketName, region, cos, storageClass) bxCli, err := client.NewClientWithEnv(APIKey, client.DefaultEnv, Debug) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } s3Cli, err := client.NewS3Client(bxCli, cos, region) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to create S3Client, err: %v", err) return err } @@ -184,7 +184,7 @@ func createBucket(bucketName string, cos string, region string, storageClass str }, }) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to create bucket, err: %v", err) return err } @@ -192,7 +192,7 @@ func createBucket(bucketName string, cos string, region string, storageClass str Bucket: aws.String(bucketName), }) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("error while waiting for bucket, err: %v", err) return err } @@ -201,11 +201,11 @@ func createBucket(bucketName string, cos string, region string, storageClass str // Create Local object files func createObjects() error { - klog.Infoln("STEP: Create Required Files") + klog.V(4).Info("STEP: Create Required Files") var content string dir, err := os.MkdirTemp(".", "objects") if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to create temporary directory, err: %v", err) return err } @@ -213,7 +213,7 @@ func createObjects() error { for i := 0; i < NoOfObjects; i++ { file, err := os.CreateTemp(ObjectsFolderName, "image-sync-*.txt") if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to create a temp file, err: %v", err) return err } defer file.Close() @@ -221,7 +221,7 @@ func createObjects() error { content = utils.GenerateRandomString(200) _, err = file.WriteString(content) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("error while writing in the file, err: %v", err) return err } } @@ -231,19 +231,19 @@ func createObjects() error { // Delete Temporarily created local object files and spec file func deleteTempFiles() error { - klog.Infoln("STEP: Delete created Files") + klog.V(4).Info("STEP: Delete created Files") specFolder := filepath.Dir(SpecFileName) - klog.Infoln("deleting spec folder:", specFolder) + klog.V(3).Infof("deleting spec folder:%s", specFolder) err := os.RemoveAll(specFolder) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("error while deleting spec folder, err: %v", err) } - klog.Infoln("deleting object folder:", ObjectsFolderName) + klog.V(3).Infof("deleting object folder:%s", ObjectsFolderName) err = os.RemoveAll(ObjectsFolderName) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("error while deleting object folder, err: %v", err) } return nil @@ -255,7 +255,7 @@ func uploadWorker(s3Cli *client.S3Client, bucketName string, workerId int, filep fileName := strings.Split(filepath, "/")[len(strings.Split(filepath, "/"))-1] err := s3Cli.UploadObject(filepath, fileName, bucketName) if err != nil { - klog.Errorf("ERROR: %v, File %s upload failed", err, filepath) + klog.Errorf("file %s upload failed, err: %v", filepath, err) results <- false } results <- true @@ -264,23 +264,23 @@ func uploadWorker(s3Cli *client.S3Client, bucketName string, workerId int, filep // Upload object from local dir to s3 bucket func uploadObjects(src pkg.Source) error { - klog.Infoln("STEP: Upload Objects to source Bucket ", src.Bucket) + klog.V(4).Infof("STEP: Upload Objects to source Bucket %s", src.Bucket) var filePath string files, err := os.ReadDir(ObjectsFolderName) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("error while reading the directory, err: %v", err) return err } bxCli, err := client.NewClientWithEnv(APIKey, client.DefaultEnv, Debug) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } s3Cli, err := client.NewS3Client(bxCli, src.Cos, src.Region) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to create S3Client, err: %v", err) return err } @@ -308,29 +308,29 @@ func uploadObjects(src pkg.Source) error { // Verify the copied Objects exists in the target bucket func verifyBucketObjects(tgt pkg.TargetItem, cos string, files []fs.FileInfo, regex string) error { - klog.Infoln("STEP: Verify objects in Bucket ", tgt.Bucket) + klog.V(4).Infof("STEP: Verify objects in Bucket %s", tgt.Bucket) bxCli, err := client.NewClientWithEnv(APIKey, client.DefaultEnv, Debug) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("failed to create a session with IBM cloud, err: %v", err) return err } s3Cli, err := client.NewS3Client(bxCli, cos, tgt.Region) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("unable to create S3Client, err: %v", err) return err } objects, err := s3Cli.SelectObjects(tgt.Bucket, regex) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("error while selecting objects, err: %v", err) return err } for _, f := range files { fileName := f.Name() res := false - klog.Infoln("Verifying object", fileName) + klog.V(3).Infof("Verifying object %s", fileName) for _, item := range objects { if item == fileName { @@ -339,7 +339,7 @@ func verifyBucketObjects(tgt pkg.TargetItem, cos string, files []fs.FileInfo, re } } if !res { - klog.Errorf("ERROR: Object %s not found in the bucket %s", fileName, tgt.Bucket) + klog.Errorf("object %s not found in the bucket %s", fileName, tgt.Bucket) return errors.New("ERROR: Object not found in the bucket ") } } @@ -349,10 +349,10 @@ func verifyBucketObjects(tgt pkg.TargetItem, cos string, files []fs.FileInfo, re // Verify objects copied from source bucket to dest buckets func verifyObjectsCopied(spec []pkg.Spec) error { - klog.Infoln("STEP: Verify Objects Copied to dest buckets") + klog.V(4).Info("STEP: Verify Objects Copied to dest buckets") files, err := os.ReadDir(ObjectsFolderName) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("error while reading directory, err: %v", err) return err } fileInfos := make([]fs.FileInfo, 0, len(files)) @@ -368,7 +368,7 @@ func verifyObjectsCopied(spec []pkg.Spec) error { for _, tgt := range src.Target { err = verifyBucketObjects(tgt, src.Cos, fileInfos, src.Object) if err != nil { - klog.Errorf("ERROR: %v", err) + klog.Errorf("error while verifying bucket objects, err: %v", err) return err } } @@ -379,7 +379,7 @@ func verifyObjectsCopied(spec []pkg.Spec) error { // Create necessary resources to run the sync command func createResources(spec []pkg.Spec) error { - klog.Infoln("STEP: Create resources") + klog.V(4).Info("STEP: Create resources") err := createSpecFile(spec) if err != nil { return err @@ -419,7 +419,7 @@ func createResources(spec []pkg.Spec) error { // Delete the resources func deleteResources(spec []pkg.Spec) error { - klog.Infoln("STEP: Delete resources") + klog.V(4).Info("STEP: Delete resources") for _, src := range spec { err := deleteCOSInstance(src.Cos) if err != nil {