diff --git a/chaoslib/litmus/aws-ssm-chaos/lib/ssm/aws-ssm-chaos-by-id.go b/chaoslib/litmus/aws-ssm-chaos/lib/ssm/aws-ssm-chaos-by-id.go index 0eb99d158..b8be2fb3b 100644 --- a/chaoslib/litmus/aws-ssm-chaos/lib/ssm/aws-ssm-chaos-by-id.go +++ b/chaoslib/litmus/aws-ssm-chaos/lib/ssm/aws-ssm-chaos-by-id.go @@ -16,6 +16,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/types" "github.com/litmuschaos/litmus-go/pkg/utils/common" "github.com/palantir/stacktrace" + "github.com/pkg/errors" ) var ( @@ -53,6 +54,9 @@ func PrepareAWSSSMChaosByID(experimentsDetails *experimentTypes.ExperimentDetail go lib.AbortWatcher(experimentsDetails, abort) //get the instance id or list of instance ids + if strings.Count(experimentsDetails.EC2InstanceID, ",") == len(experimentsDetails.EC2InstanceID) { + return errors.Errorf("variable contains only one or more commas") + } instanceIDList := strings.Split(experimentsDetails.EC2InstanceID, ",") if experimentsDetails.EC2InstanceID == "" || len(instanceIDList) == 0 { return cerrors.Error{ErrorCode: cerrors.ErrorTypeTargetSelection, Reason: "no instance id found for chaos injection"} diff --git a/chaoslib/litmus/azure-disk-loss/lib/azure-disk-loss.go b/chaoslib/litmus/azure-disk-loss/lib/azure-disk-loss.go index aa2c16ee8..335c416ec 100644 --- a/chaoslib/litmus/azure-disk-loss/lib/azure-disk-loss.go +++ b/chaoslib/litmus/azure-disk-loss/lib/azure-disk-loss.go @@ -21,6 +21,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/utils/common" "github.com/litmuschaos/litmus-go/pkg/utils/retry" "github.com/palantir/stacktrace" + "github.com/pkg/errors" ) var ( @@ -48,6 +49,9 @@ func PrepareChaos(experimentsDetails *experimentTypes.ExperimentDetails, clients } //get the disk name or list of disk names + if strings.Count(experimentsDetails.VirtualDiskNames, ",") == len(experimentsDetails.VirtualDiskNames) { + return errors.Errorf("variable contains only one or more commas") + } diskNameList := strings.Split(experimentsDetails.VirtualDiskNames, ",") if experimentsDetails.VirtualDiskNames == "" || len(diskNameList) == 0 { return cerrors.Error{ErrorCode: cerrors.ErrorTypeTargetSelection, Reason: "no volume names found to detach"} diff --git a/chaoslib/litmus/azure-instance-stop/lib/azure-instance-stop.go b/chaoslib/litmus/azure-instance-stop/lib/azure-instance-stop.go index 8b3950da7..10a4421e7 100644 --- a/chaoslib/litmus/azure-instance-stop/lib/azure-instance-stop.go +++ b/chaoslib/litmus/azure-instance-stop/lib/azure-instance-stop.go @@ -19,6 +19,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/types" "github.com/litmuschaos/litmus-go/pkg/utils/common" "github.com/palantir/stacktrace" + "github.com/pkg/errors" ) var ( @@ -45,6 +46,9 @@ func PrepareAzureStop(experimentsDetails *experimentTypes.ExperimentDetails, cli } // get the instance name or list of instance names + if strings.Count(experimentsDetails.AzureInstanceNames, ",") == len(experimentsDetails.AzureInstanceNames) { + return errors.Errorf("variable contains only one or more commas") + } instanceNameList := strings.Split(experimentsDetails.AzureInstanceNames, ",") if experimentsDetails.AzureInstanceNames == "" || len(instanceNameList) == 0 { return cerrors.Error{ErrorCode: cerrors.ErrorTypeTargetSelection, Reason: "no instance name found to stop"} diff --git a/chaoslib/litmus/ebs-loss/lib/ebs-loss-by-id/lib/ebs-loss-by-id.go b/chaoslib/litmus/ebs-loss/lib/ebs-loss-by-id/lib/ebs-loss-by-id.go index b21a24de4..023b534fc 100644 --- a/chaoslib/litmus/ebs-loss/lib/ebs-loss-by-id/lib/ebs-loss-by-id.go +++ b/chaoslib/litmus/ebs-loss/lib/ebs-loss-by-id/lib/ebs-loss-by-id.go @@ -15,6 +15,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/types" "github.com/litmuschaos/litmus-go/pkg/utils/common" "github.com/palantir/stacktrace" + "github.com/pkg/errors" ) var ( @@ -48,6 +49,9 @@ func PrepareEBSLossByID(experimentsDetails *experimentTypes.ExperimentDetails, c default: //get the volume id or list of instance ids + if strings.Count(experimentsDetails.EBSVolumeID, ",") == len(experimentsDetails.EBSVolumeID) { + return errors.Errorf("variable contains only one or more commas") + } volumeIDList := strings.Split(experimentsDetails.EBSVolumeID, ",") if len(volumeIDList) == 0 { return cerrors.Error{ErrorCode: cerrors.ErrorTypeTargetSelection, Reason: "no volume id found to detach"} diff --git a/chaoslib/litmus/ec2-terminate-by-id/lib/ec2-terminate-by-id.go b/chaoslib/litmus/ec2-terminate-by-id/lib/ec2-terminate-by-id.go index 2472b9467..2421e83c2 100644 --- a/chaoslib/litmus/ec2-terminate-by-id/lib/ec2-terminate-by-id.go +++ b/chaoslib/litmus/ec2-terminate-by-id/lib/ec2-terminate-by-id.go @@ -18,6 +18,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/types" "github.com/litmuschaos/litmus-go/pkg/utils/common" "github.com/palantir/stacktrace" + "github.com/pkg/errors" ) var ( @@ -45,6 +46,9 @@ func PrepareEC2TerminateByID(experimentsDetails *experimentTypes.ExperimentDetai } //get the instance id or list of instance ids + if strings.Count(experimentsDetails.Ec2InstanceID, ",") == len(experimentsDetails.Ec2InstanceID) { + return errors.Errorf("variable contains only one or more commas") + } instanceIDList := strings.Split(experimentsDetails.Ec2InstanceID, ",") if experimentsDetails.Ec2InstanceID == "" || len(instanceIDList) == 0 { return cerrors.Error{ErrorCode: cerrors.ErrorTypeTargetSelection, Reason: "no EC2 instance ID found to terminate"} diff --git a/chaoslib/litmus/gcp-vm-disk-loss/lib/gcp-vm-disk-loss.go b/chaoslib/litmus/gcp-vm-disk-loss/lib/gcp-vm-disk-loss.go index 38f06901e..c8849a831 100644 --- a/chaoslib/litmus/gcp-vm-disk-loss/lib/gcp-vm-disk-loss.go +++ b/chaoslib/litmus/gcp-vm-disk-loss/lib/gcp-vm-disk-loss.go @@ -47,9 +47,15 @@ func PrepareDiskVolumeLoss(computeService *compute.Service, experimentsDetails * } //get the disk volume names list + if strings.Count(experimentsDetails.DiskVolumeNames, ",") == len(experimentsDetails.DiskVolumeNames) { + return errors.Errorf("variable contains only one or more commas") + } diskNamesList := strings.Split(experimentsDetails.DiskVolumeNames, ",") //get the disk zones list + if strings.TrimSpace(experimentsDetails.Zones) == "" { + return errors.Errorf("no zones found for chaos injection") + } diskZonesList := strings.Split(experimentsDetails.Zones, ",") //get the device names for the given disks diff --git a/chaoslib/litmus/gcp-vm-instance-stop/lib/gcp-vm-instance-stop.go b/chaoslib/litmus/gcp-vm-instance-stop/lib/gcp-vm-instance-stop.go index 2cbcfdba4..7c938526d 100644 --- a/chaoslib/litmus/gcp-vm-instance-stop/lib/gcp-vm-instance-stop.go +++ b/chaoslib/litmus/gcp-vm-instance-stop/lib/gcp-vm-instance-stop.go @@ -18,6 +18,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/types" "github.com/litmuschaos/litmus-go/pkg/utils/common" "github.com/palantir/stacktrace" + "github.com/pkg/errors" "google.golang.org/api/compute/v1" ) @@ -46,9 +47,15 @@ func PrepareVMStop(computeService *compute.Service, experimentsDetails *experime } // get the instance name or list of instance names + if strings.Count(experimentsDetails.VMInstanceName, ",") == len(experimentsDetails.VMInstanceName) { + return errors.Errorf("variable contains only one or more commas") + } instanceNamesList := strings.Split(experimentsDetails.VMInstanceName, ",") // get the zone name or list of corresponding zones for the instances + if strings.TrimSpace(experimentsDetails.Zones) == "" { + return errors.Errorf("no zone name found for chaos injection") + } instanceZonesList := strings.Split(experimentsDetails.Zones, ",") go abortWatcher(computeService, experimentsDetails, instanceNamesList, instanceZonesList, chaosDetails) diff --git a/chaoslib/litmus/network-chaos/helper/netem.go b/chaoslib/litmus/network-chaos/helper/netem.go index c0193f518..b4a93923b 100644 --- a/chaoslib/litmus/network-chaos/helper/netem.go +++ b/chaoslib/litmus/network-chaos/helper/netem.go @@ -2,9 +2,6 @@ package helper import ( "fmt" - "github.com/litmuschaos/litmus-go/pkg/cerrors" - "github.com/litmuschaos/litmus-go/pkg/events" - "github.com/palantir/stacktrace" "os" "os/exec" "os/signal" @@ -13,12 +10,15 @@ import ( "syscall" "time" + "github.com/litmuschaos/litmus-go/pkg/cerrors" clients "github.com/litmuschaos/litmus-go/pkg/clients" + "github.com/litmuschaos/litmus-go/pkg/events" experimentTypes "github.com/litmuschaos/litmus-go/pkg/generic/network-chaos/types" "github.com/litmuschaos/litmus-go/pkg/log" "github.com/litmuschaos/litmus-go/pkg/result" "github.com/litmuschaos/litmus-go/pkg/types" "github.com/litmuschaos/litmus-go/pkg/utils/common" + "github.com/palantir/stacktrace" clientTypes "k8s.io/apimachinery/pkg/types" ) @@ -367,7 +367,9 @@ func getDestIps(serviceMesh string) []string { if strings.TrimSpace(destIps) == "" { return nil } - + if strings.Count(destIps, ",") == len(destIps) { + return nil + } ips := strings.Split(strings.TrimSpace(destIps), ",") // removing duplicates ips from the list, if any diff --git a/chaoslib/litmus/node-drain/lib/node-drain.go b/chaoslib/litmus/node-drain/lib/node-drain.go index 860c675ee..6671464b5 100644 --- a/chaoslib/litmus/node-drain/lib/node-drain.go +++ b/chaoslib/litmus/node-drain/lib/node-drain.go @@ -3,8 +3,6 @@ package lib import ( "context" "fmt" - "github.com/litmuschaos/litmus-go/pkg/cerrors" - "github.com/palantir/stacktrace" "os" "os/exec" "os/signal" @@ -13,6 +11,10 @@ import ( "syscall" "time" + "github.com/litmuschaos/litmus-go/pkg/cerrors" + "github.com/palantir/stacktrace" + "github.com/pkg/errors" + clients "github.com/litmuschaos/litmus-go/pkg/clients" "github.com/litmuschaos/litmus-go/pkg/events" experimentTypes "github.com/litmuschaos/litmus-go/pkg/generic/node-drain/types" @@ -160,7 +162,9 @@ func drainNode(experimentsDetails *experimentTypes.ExperimentDetails, clients cl // uncordonNode uncordon the application node func uncordonNode(experimentsDetails *experimentTypes.ExperimentDetails, clients clients.ClientSets, chaosDetails *types.ChaosDetails) error { - + if strings.Count(experimentsDetails.TargetNode, ",") == len(experimentsDetails.TargetNode) { + return errors.Errorf("variable contains only one or more commas") + } targetNodes := strings.Split(experimentsDetails.TargetNode, ",") for _, targetNode := range targetNodes { @@ -188,6 +192,9 @@ func uncordonNode(experimentsDetails *experimentTypes.ExperimentDetails, clients Times(uint(experimentsDetails.Timeout / experimentsDetails.Delay)). Wait(time.Duration(experimentsDetails.Delay) * time.Second). Try(func(attempt uint) error { + if strings.Count(experimentsDetails.TargetNode, ",") == len(experimentsDetails.TargetNode) { + return errors.Errorf("variable contains only one or more commas") + } targetNodes := strings.Split(experimentsDetails.TargetNode, ",") for _, targetNode := range targetNodes { nodeSpec, err := clients.KubeClient.CoreV1().Nodes().Get(context.Background(), targetNode, v1.GetOptions{}) diff --git a/chaoslib/litmus/pod-network-partition/lib/network-policy.go b/chaoslib/litmus/pod-network-partition/lib/network-policy.go index 786e32162..989abfc5f 100644 --- a/chaoslib/litmus/pod-network-partition/lib/network-policy.go +++ b/chaoslib/litmus/pod-network-partition/lib/network-policy.go @@ -2,10 +2,12 @@ package lib import ( "fmt" + "strings" + "github.com/litmuschaos/litmus-go/pkg/cerrors" "github.com/litmuschaos/litmus-go/pkg/clients" "github.com/palantir/stacktrace" - "strings" + "github.com/pkg/errors" network_chaos "github.com/litmuschaos/litmus-go/chaoslib/litmus/network-chaos/lib" experimentTypes "github.com/litmuschaos/litmus-go/pkg/generic/pod-network-partition/types" @@ -113,6 +115,9 @@ func (np *NetworkPolicy) setPolicy(policy string) *NetworkPolicy { // setPodSelector sets the pod labels selector func (np *NetworkPolicy) setPodSelector(podLabel string) *NetworkPolicy { podSelector := map[string]string{} + if strings.Count(podLabel, ",") == len(podLabel) { + return nil + } labels := strings.Split(podLabel, ",") for i := range labels { key, value := getKeyValue(labels[i]) @@ -127,6 +132,9 @@ func (np *NetworkPolicy) setPodSelector(podLabel string) *NetworkPolicy { // setNamespaceSelector sets the namespace labels selector func (np *NetworkPolicy) setNamespaceSelector(nsLabel string) *NetworkPolicy { nsSelector := map[string]string{} + if strings.Count(nsLabel, ",") == len(nsLabel) { + return nil + } labels := strings.Split(nsLabel, ",") for i := range labels { key, value := getKeyValue(labels[i]) @@ -186,7 +194,9 @@ func (np *NetworkPolicy) setExceptIPs(experimentsDetails *experimentTypes.Experi if err != nil { return stacktrace.Propagate(err, "could not get destination ips") } - + if strings.TrimSpace(destinationIPs) == "" { + return errors.Errorf("destination ips cannot be empty") + } ips := strings.Split(destinationIPs, ",") var uniqueIps []string // removing all the duplicates and ipv6 ips from the list, if any diff --git a/chaoslib/litmus/vm-poweroff/lib/vm-poweroff.go b/chaoslib/litmus/vm-poweroff/lib/vm-poweroff.go index e30557880..9f785cab7 100644 --- a/chaoslib/litmus/vm-poweroff/lib/vm-poweroff.go +++ b/chaoslib/litmus/vm-poweroff/lib/vm-poweroff.go @@ -18,6 +18,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/utils/common" experimentTypes "github.com/litmuschaos/litmus-go/pkg/vmware/vm-poweroff/types" "github.com/palantir/stacktrace" + "github.com/pkg/errors" ) var inject, abort chan os.Signal @@ -42,6 +43,9 @@ func InjectVMPowerOffChaos(experimentsDetails *experimentTypes.ExperimentDetails } //Fetching the target VM Ids + if strings.Count(experimentsDetails.VMIds, ",") == len(experimentsDetails.VMIds) { + return errors.Errorf("variable contains only one or more commas") + } vmIdList := strings.Split(experimentsDetails.VMIds, ",") // Calling AbortWatcher go routine, it will continuously watch for the abort signal and generate the required events and result diff --git a/pkg/cloud/aws/ebs/ebs-volume-state.go b/pkg/cloud/aws/ebs/ebs-volume-state.go index c2b104b82..2ee7d3a48 100644 --- a/pkg/cloud/aws/ebs/ebs-volume-state.go +++ b/pkg/cloud/aws/ebs/ebs-volume-state.go @@ -12,6 +12,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/log" "github.com/litmuschaos/litmus-go/pkg/utils/retry" "github.com/palantir/stacktrace" + "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -116,7 +117,9 @@ func GetEBSStatus(ebsVolumeID, ec2InstanceID, region string) (string, error) { // EBSStateCheckByID will check the attachment state of the given volume func EBSStateCheckByID(volumeIDs, region string) error { - + if strings.Count(volumeIDs, ",") == len(volumeIDs) { + return errors.Errorf("no volumeID provided, please provide a volume to detach") + } volumeIDList := strings.Split(volumeIDs, ",") if len(volumeIDList) == 0 { return cerrors.Error{ diff --git a/pkg/cloud/aws/ec2/ec2-instance-status.go b/pkg/cloud/aws/ec2/ec2-instance-status.go index 49b137b61..6cf25c106 100644 --- a/pkg/cloud/aws/ec2/ec2-instance-status.go +++ b/pkg/cloud/aws/ec2/ec2-instance-status.go @@ -10,6 +10,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/cloud/aws/common" "github.com/litmuschaos/litmus-go/pkg/log" "github.com/palantir/stacktrace" + "github.com/pkg/errors" ) // GetEC2InstanceStatus will verify and give the ec2 instance details along with ebs volume idetails. @@ -51,7 +52,9 @@ func GetEC2InstanceStatus(instanceID, region string) (string, error) { // InstanceStatusCheckByID is used to check the instance status of all the instance under chaos. func InstanceStatusCheckByID(instanceID, region string) error { - + if strings.Count(instanceID, ",") == len(instanceID) { + return errors.Errorf("no instance id provided to terminate") + } instanceIDList := strings.Split(instanceID, ",") if instanceID == "" || len(instanceIDList) == 0 { return cerrors.Error{ diff --git a/pkg/cloud/azure/instance/instance-status.go b/pkg/cloud/azure/instance/instance-status.go index 3594b130d..26eae4db3 100644 --- a/pkg/cloud/azure/instance/instance-status.go +++ b/pkg/cloud/azure/instance/instance-status.go @@ -11,6 +11,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/cerrors" "github.com/litmuschaos/litmus-go/pkg/cloud/azure/common" "github.com/palantir/stacktrace" + "github.com/pkg/errors" "github.com/litmuschaos/litmus-go/pkg/log" ) @@ -97,6 +98,9 @@ func GetAzureScaleSetInstanceStatus(subscriptionID, resourceGroup, virtualMachin // InstanceStatusCheckByName is used to check the instance status of all the instance under chaos func InstanceStatusCheckByName(azureInstanceNames, scaleSet, subscriptionID, resourceGroup string) error { + if strings.Count(azureInstanceNames, ",") == len(azureInstanceNames) { + return errors.Errorf("no instance provided") + } instanceNameList := strings.Split(azureInstanceNames, ",") if azureInstanceNames == "" || len(instanceNameList) == 0 { return cerrors.Error{ diff --git a/pkg/cloud/gcp/disk-volume-status.go b/pkg/cloud/gcp/disk-volume-status.go index 62ea0e939..0904d761d 100644 --- a/pkg/cloud/gcp/disk-volume-status.go +++ b/pkg/cloud/gcp/disk-volume-status.go @@ -10,6 +10,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/log" "github.com/litmuschaos/litmus-go/pkg/utils/retry" "github.com/palantir/stacktrace" + "github.com/pkg/errors" "github.com/sirupsen/logrus" "google.golang.org/api/compute/v1" ) @@ -104,12 +105,16 @@ func DiskVolumeStateCheck(computeService *compute.Service, experimentsDetails *e if experimentsDetails.GCPProjectID == "" { return cerrors.Error{ErrorCode: cerrors.ErrorTypeStatusChecks, Target: fmt.Sprintf("{projectId: %s}", experimentsDetails.GCPProjectID), Reason: "no gcp project id provided, please provide the project id"} } - + if strings.Count(experimentsDetails.DiskVolumeNames, ",") == len(experimentsDetails.DiskVolumeNames) { + return errors.Errorf("no disk name provided, please provide the name of the disk") + } diskNamesList := strings.Split(experimentsDetails.DiskVolumeNames, ",") if len(diskNamesList) == 0 { return cerrors.Error{ErrorCode: cerrors.ErrorTypeStatusChecks, Target: fmt.Sprintf("{diskNames: %v}", diskNamesList), Reason: "no disk name provided, please provide the name of the disk"} } - + if strings.Count(experimentsDetails.Zones, ",") == len(experimentsDetails.Zones) { + return errors.Errorf("no zone provided, please provide the zone of the disk") + } zonesList := strings.Split(experimentsDetails.Zones, ",") if len(zonesList) == 0 { return cerrors.Error{ErrorCode: cerrors.ErrorTypeStatusChecks, Target: fmt.Sprintf("{zones: %v}", zonesList), Reason: "no zone provided, please provide the zone of the disk"} @@ -131,7 +136,9 @@ func DiskVolumeStateCheck(computeService *compute.Service, experimentsDetails *e // SetTargetDiskInstanceNames fetches the vm instances to which the disks are attached func SetTargetDiskInstanceNames(computeService *compute.Service, experimentsDetails *experimentTypes.ExperimentDetails) error { - + if strings.Count(experimentsDetails.DiskVolumeNames, ",") == len(experimentsDetails.DiskVolumeNames) { + return errors.Errorf("no disk name provided, please provide the name of the disk") + } diskNamesList := strings.Split(experimentsDetails.DiskVolumeNames, ",") zonesList := strings.Split(experimentsDetails.Zones, ",") diff --git a/pkg/cloud/gcp/vm-instance-status.go b/pkg/cloud/gcp/vm-instance-status.go index 70a782cb5..43b755da6 100644 --- a/pkg/cloud/gcp/vm-instance-status.go +++ b/pkg/cloud/gcp/vm-instance-status.go @@ -6,6 +6,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/cerrors" "github.com/litmuschaos/litmus-go/pkg/log" + "github.com/pkg/errors" "google.golang.org/api/compute/v1" ) @@ -26,9 +27,16 @@ func GetVMInstanceStatus(computeService *compute.Service, instanceName string, g // InstanceStatusCheckByName is used to check the status of all the VM instances under chaos func InstanceStatusCheckByName(computeService *compute.Service, managedInstanceGroup string, delay, timeout int, check string, instanceNames string, gcpProjectId string, instanceZones string) error { - + if strings.Count(instanceNames, ",") == len(instanceNames) { + return errors.Errorf("no instance provided") + } instanceNamesList := strings.Split(instanceNames, ",") - + if strings.TrimSpace(instanceZones) == "" { + return errors.Errorf("no zone provided") + } + if strings.Count(instanceZones, ",") == len(instanceZones) { + return errors.Errorf("no zone provided") + } instanceZonesList := strings.Split(instanceZones, ",") if managedInstanceGroup != "enable" && managedInstanceGroup != "disable" { diff --git a/pkg/cloud/vmware/vm-status.go b/pkg/cloud/vmware/vm-status.go index 9f5bf52cd..8ee71e8ba 100644 --- a/pkg/cloud/vmware/vm-status.go +++ b/pkg/cloud/vmware/vm-status.go @@ -10,6 +10,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/cerrors" "github.com/palantir/stacktrace" + "github.com/pkg/errors" ) // GetVMStatus returns the current status of a given VM @@ -89,7 +90,9 @@ func GetVMStatus(vcenterServer, vmId, cookie string) (string, error) { // VMStatusCheck validates the steady state for the given vm ids func VMStatusCheck(vcenterServer, vmIds, cookie string) error { - + if strings.Count(vmIds, ",") == len(vmIds) { + return errors.Errorf("vmIds not provided") + } vmIdList := strings.Split(vmIds, ",") if vmIds == "" || len(vmIdList) == 0 { return cerrors.Error{ diff --git a/pkg/probe/k8sprobe.go b/pkg/probe/k8sprobe.go index aa33eaeb8..c7fec8ac7 100644 --- a/pkg/probe/k8sprobe.go +++ b/pkg/probe/k8sprobe.go @@ -15,6 +15,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/math" "github.com/litmuschaos/litmus-go/pkg/types" "github.com/litmuschaos/litmus-go/pkg/utils/retry" + "github.com/pkg/errors" "github.com/sirupsen/logrus" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -67,6 +68,9 @@ func triggerK8sProbe(probe v1alpha1.ProbeAttributes, clients clients.ClientSets, parsedResourceNames := []string{} if inputs.ResourceNames != "" { + if strings.Count(inputs.ResourceNames, ",") == len(inputs.ResourceNames) { + return errors.Errorf("resource names cannot be empty") + } parsedResourceNames = strings.Split(inputs.ResourceNames, ",") for i := range parsedResourceNames { parsedResourceNames[i] = strings.TrimSpace(parsedResourceNames[i]) diff --git a/pkg/probe/promProbe.go b/pkg/probe/promProbe.go index 4e02aa7fc..bd7be4a0a 100644 --- a/pkg/probe/promProbe.go +++ b/pkg/probe/promProbe.go @@ -15,6 +15,7 @@ import ( cmp "github.com/litmuschaos/litmus-go/pkg/probe/comparator" "github.com/litmuschaos/litmus-go/pkg/types" "github.com/litmuschaos/litmus-go/pkg/utils/retry" + "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -367,6 +368,9 @@ func extractValueFromMetrics(metrics, probeName string) (string, error) { } // deriving the index for the value column from the headers + if strings.Count(rows[0], ",") == len(rows[0]) { + return "", errors.Errorf("error while parsing rows") + } headerColumn := strings.Split(rows[0], ",") indexForValueColumn := -1 for index := range headerColumn { @@ -380,6 +384,9 @@ func extractValueFromMetrics(metrics, probeName string) (string, error) { } // splitting the metrics entries which are available as comma separated + if strings.Count(rows[1], ",") == len(rows[1]) { + return "", errors.Errorf("error while parsing rows") + } values := strings.Split(rows[1], ",") if values[indexForValueColumn] == "" { return "", cerrors.Error{ErrorCode: cerrors.ErrorTypePromProbe, Target: fmt.Sprintf("{name: %v}", probeName), Reason: "error while parsing value from derived matrics"} diff --git a/pkg/status/application.go b/pkg/status/application.go index 755117a02..75fb16d7c 100644 --- a/pkg/status/application.go +++ b/pkg/status/application.go @@ -9,6 +9,7 @@ import ( "github.com/litmuschaos/litmus-go/pkg/cerrors" "github.com/palantir/stacktrace" + "github.com/pkg/errors" clients "github.com/litmuschaos/litmus-go/pkg/clients" "github.com/litmuschaos/litmus-go/pkg/log" @@ -80,7 +81,9 @@ func CheckApplicationStatusesByLabels(appNs, appLabel string, timeout, delay int // CheckAuxiliaryApplicationStatus checks the status of the Auxiliary applications func CheckAuxiliaryApplicationStatus(AuxiliaryAppDetails string, timeout, delay int, clients clients.ClientSets) error { - + if strings.Count(AuxiliaryAppDetails, ",") == len(AuxiliaryAppDetails) { + return errors.Errorf("no auxiliary application provided") + } AuxiliaryAppInfo := strings.Split(AuxiliaryAppDetails, ",") for _, val := range AuxiliaryAppInfo { diff --git a/pkg/status/nodes.go b/pkg/status/nodes.go index e287bf858..84c80f30d 100644 --- a/pkg/status/nodes.go +++ b/pkg/status/nodes.go @@ -7,6 +7,7 @@ import ( "time" "github.com/litmuschaos/litmus-go/pkg/cerrors" + "github.com/pkg/errors" clients "github.com/litmuschaos/litmus-go/pkg/clients" "github.com/litmuschaos/litmus-go/pkg/log" @@ -25,6 +26,9 @@ func CheckNodeStatus(nodes string, timeout, delay int, clients clients.ClientSet Try(func(attempt uint) error { nodeList := apiv1.NodeList{} if nodes != "" { + if strings.Count(nodes, ",") == len(nodes) { + return errors.Errorf("no node provided") + } targetNodes := strings.Split(nodes, ",") for index := range targetNodes { node, err := clients.KubeClient.CoreV1().Nodes().Get(context.Background(), targetNodes[index], metav1.GetOptions{})