Skip to content

Commit

Permalink
fix: support validator rules check -f config.yaml without all plugi…
Browse files Browse the repository at this point in the history
…ns defined (#191)

Resolves #188

Ensures we dont panic when executing `validator rules check -f
config.yaml` without all plugins defined
  • Loading branch information
ahmad-ibra authored and mattwelke committed Aug 23, 2024
1 parent 59f18cb commit b3316f0
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 16 deletions.
13 changes: 7 additions & 6 deletions pkg/cmd/validator/validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,7 @@ func configurePlugins(c *cfg.Config, vc *components.ValidatorConfig, tc *cfg.Tas
return nil
}

// nolint:gocyclo
func executePlugins(c *cfg.Config, vc *components.ValidatorConfig) error {
log.Header("Executing validator plugin(s)")

Expand All @@ -525,7 +526,7 @@ func executePlugins(c *cfg.Config, vc *components.ValidatorConfig) error {
ok := true
results := make([]*vapi.ValidationResult, 0)

if vc.AWSPlugin.Enabled {
if vc.AWSPlugin != nil && vc.AWSPlugin.Enabled {
v := &awsapi.AwsValidator{
ObjectMeta: metav1.ObjectMeta{
Name: "aws-validator",
Expand All @@ -544,7 +545,7 @@ func executePlugins(c *cfg.Config, vc *components.ValidatorConfig) error {
results = append(results, vr)
}

if vc.AzurePlugin.Enabled {
if vc.AzurePlugin != nil && vc.AzurePlugin.Enabled {
v := &azureapi.AzureValidator{
ObjectMeta: metav1.ObjectMeta{
Name: "azure-validator",
Expand All @@ -563,7 +564,7 @@ func executePlugins(c *cfg.Config, vc *components.ValidatorConfig) error {
results = append(results, vr)
}

if vc.MaasPlugin.Enabled {
if vc.MaasPlugin != nil && vc.MaasPlugin.Enabled {
v := &maasapi.MaasValidator{
ObjectMeta: metav1.ObjectMeta{
Name: "maas-validator",
Expand All @@ -582,7 +583,7 @@ func executePlugins(c *cfg.Config, vc *components.ValidatorConfig) error {
results = append(results, vr)
}

if vc.NetworkPlugin.Enabled {
if vc.NetworkPlugin != nil && vc.NetworkPlugin.Enabled {
v := &netapi.NetworkValidator{
ObjectMeta: metav1.ObjectMeta{
Name: "network-validator",
Expand All @@ -604,7 +605,7 @@ func executePlugins(c *cfg.Config, vc *components.ValidatorConfig) error {
results = append(results, vr)
}

if vc.OCIPlugin.Enabled {
if vc.OCIPlugin != nil && vc.OCIPlugin.Enabled {
v := &ociapi.OciValidator{
ObjectMeta: metav1.ObjectMeta{
Name: "oci-validator",
Expand All @@ -626,7 +627,7 @@ func executePlugins(c *cfg.Config, vc *components.ValidatorConfig) error {
results = append(results, vr)
}

if vc.VspherePlugin.Enabled {
if vc.VspherePlugin != nil && vc.VspherePlugin.Enabled {
v := &vsphereapi.VsphereValidator{
ObjectMeta: metav1.ObjectMeta{
Name: "vsphere-validator",
Expand Down
15 changes: 6 additions & 9 deletions pkg/components/validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,25 +111,22 @@ func (c *ValidatorConfig) AnyPluginEnabled() bool {
func (c *ValidatorConfig) EnabledPluginsHaveRules() (bool, []string) {
var ok bool
invalidPlugins := []string{}
if c.AWSPlugin.Enabled && c.AWSPlugin.Validator.ResultCount() == 0 {
if c.AWSPlugin != nil && c.AWSPlugin.Enabled && c.AWSPlugin.Validator.ResultCount() == 0 {
invalidPlugins = append(invalidPlugins, c.AWSPlugin.Validator.PluginCode())
}
if c.AzurePlugin.Enabled && c.AzurePlugin.Validator.ResultCount() == 0 {
if c.AzurePlugin != nil && c.AzurePlugin.Enabled && c.AzurePlugin.Validator.ResultCount() == 0 {
invalidPlugins = append(invalidPlugins, c.AzurePlugin.Validator.PluginCode())
}
if c.MaasPlugin.Enabled && c.MaasPlugin.Validator.ResultCount() == 0 {
if c.MaasPlugin != nil && c.MaasPlugin.Enabled && c.MaasPlugin.Validator.ResultCount() == 0 {
invalidPlugins = append(invalidPlugins, c.MaasPlugin.Validator.PluginCode())
}
if c.MaasPlugin.Enabled && c.MaasPlugin.Validator.ResultCount() == 0 {
invalidPlugins = append(invalidPlugins, c.MaasPlugin.Validator.PluginCode())
}
if c.NetworkPlugin.Enabled && c.NetworkPlugin.Validator.ResultCount() == 0 {
if c.NetworkPlugin != nil && c.NetworkPlugin.Enabled && c.NetworkPlugin.Validator.ResultCount() == 0 {
invalidPlugins = append(invalidPlugins, c.NetworkPlugin.Validator.PluginCode())
}
if c.OCIPlugin.Enabled && c.OCIPlugin.Validator.ResultCount() == 0 {
if c.OCIPlugin != nil && c.OCIPlugin.Enabled && c.OCIPlugin.Validator.ResultCount() == 0 {
invalidPlugins = append(invalidPlugins, c.OCIPlugin.Validator.PluginCode())
}
if c.VspherePlugin.Enabled && c.VspherePlugin.Validator.ResultCount() == 0 {
if c.VspherePlugin != nil && c.VspherePlugin.Enabled && c.VspherePlugin.Validator.ResultCount() == 0 {
invalidPlugins = append(invalidPlugins, c.VspherePlugin.Validator.PluginCode())
}
if len(invalidPlugins) == 0 {
Expand Down
2 changes: 1 addition & 1 deletion pkg/config/versions.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ var ValidatorChartVersions = map[string]string{
Validator: "v0.1.8",
ValidatorPluginAws: "v0.1.5",
ValidatorPluginAzure: "v0.0.18",
ValidatorPluginMaas: "v0.0.9",
ValidatorPluginMaas: "v0.0.8",
ValidatorPluginNetwork: "v0.0.24",
ValidatorPluginOci: "v0.3.0",
ValidatorPluginVsphere: "v0.0.32",
Expand Down

0 comments on commit b3316f0

Please sign in to comment.