Skip to content

Commit

Permalink
Merge pull request #196 from doitintl/fix-helmv2-name
Browse files Browse the repository at this point in the history
Fix: Helm v3 collector name and refactoring to be test-friendly
  • Loading branch information
stepanstipl authored Jul 26, 2021
2 parents c181855 + 4dae478 commit b08cb07
Show file tree
Hide file tree
Showing 9 changed files with 88 additions and 19 deletions.
4 changes: 3 additions & 1 deletion pkg/collector/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import (
"k8s.io/client-go/restmapper"
)

const CLUSTER_COLLECTOR_NAME = "Cluster"

type ClusterCollector struct {
*commonCollector
*kubeCollector
Expand All @@ -33,7 +35,7 @@ func NewClusterCollector(opts *ClusterOpts, additionalKinds []string) (*ClusterC

collector := &ClusterCollector{
kubeCollector: kubeCollector,
commonCollector: newCommonCollector("Cluster"),
commonCollector: newCommonCollector(CLUSTER_COLLECTOR_NAME),
}

if opts.ClientSet == nil {
Expand Down
7 changes: 5 additions & 2 deletions pkg/collector/fake.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ import (
goversion "github.com/hashicorp/go-version"
)

const FAKE_VERSION = "1.2.3"
const (
FAKE_VERSION = "1.2.3"
FAKE_COLLECTOR_NAME = "Fake"
)

type fakeCollector struct {
*commonCollector
Expand All @@ -16,7 +19,7 @@ func (c *fakeCollector) Get() ([]map[string]interface{}, error) {

func NewFakeCollector() *fakeCollector {
return &fakeCollector{
commonCollector: newCommonCollector("Fake"),
commonCollector: newCommonCollector(FAKE_COLLECTOR_NAME),
}
}

Expand Down
4 changes: 3 additions & 1 deletion pkg/collector/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import (
"helm.sh/helm/v3/pkg/releaseutil"
)

const FILE_COLLECTOR_NAME = "File"

type FileCollector struct {
*commonCollector
filenames []string
Expand All @@ -29,7 +31,7 @@ func NewFileCollector(opts *FileOpts) (*FileCollector, error) {
}

collector := &FileCollector{
commonCollector: newCommonCollector("File"),
commonCollector: newCommonCollector(FILE_COLLECTOR_NAME),
filenames: opts.Filenames,
}

Expand Down
12 changes: 8 additions & 4 deletions pkg/collector/helm2.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ import (
corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
)

const HELM_V2_COLLECTOR_NAME = "Helm v2"

type HelmV2Collector struct {
*commonCollector
*kubeCollector
client *corev1.CoreV1Client
client corev1.CoreV1Interface
secretsStore *storage.Storage
configStore *storage.Storage
}
Expand All @@ -22,6 +24,7 @@ type HelmV2Opts struct {
Kubeconfig string
KubeContext string
DiscoveryClient discovery.DiscoveryInterface
CoreClient corev1.CoreV1Interface
}

func NewHelmV2Collector(opts *HelmV2Opts) (*HelmV2Collector, error) {
Expand All @@ -32,12 +35,13 @@ func NewHelmV2Collector(opts *HelmV2Opts) (*HelmV2Collector, error) {
}

collector := &HelmV2Collector{
commonCollector: newCommonCollector("Helm v2"),
commonCollector: newCommonCollector(HELM_V2_COLLECTOR_NAME),
kubeCollector: kubeCollector,
}

collector.client, err = corev1.NewForConfig(kubeCollector.GetRestConfig())
if err != nil {
if opts.CoreClient != nil {
collector.client = opts.CoreClient
} else if collector.client, err = corev1.NewForConfig(kubeCollector.GetRestConfig()); err != nil {
return nil, err
}

Expand Down
28 changes: 28 additions & 0 deletions pkg/collector/helm2_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package collector

import (
"testing"

"k8s.io/client-go/kubernetes/fake"
)

func TestNewHelmV2Collector(t *testing.T) {
expectedName := "Helm v2"

clientSet := fake.NewSimpleClientset()
col, err := NewHelmV2Collector(&HelmV2Opts{
DiscoveryClient: clientSet.Discovery(),
CoreClient: clientSet.CoreV1(),
})
clientSet.CoreV1()

if err != nil {
t.Fatalf("Failed to create collector from fake discovery client")
}
if col == nil {
t.Fatalf("Should return collector, got nil instead")
}
if col.Name() != expectedName {
t.Fatalf("Expected collector name: %s, instead got: %s", expectedName, col.Name())
}
}
12 changes: 8 additions & 4 deletions pkg/collector/helm3.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ import (
corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
)

const HELM_V3_COLLECTOR_NAME = "Helm v3"

type HelmV3Collector struct {
*commonCollector
*kubeCollector
client *corev1.CoreV1Client
client corev1.CoreV1Interface
secretsStore *storage.Storage
configStore *storage.Storage
}
Expand All @@ -22,6 +24,7 @@ type HelmV3Opts struct {
Kubeconfig string
KubeContext string
DiscoveryClient discovery.DiscoveryInterface
CoreClient corev1.CoreV1Interface
}

func NewHelmV3Collector(opts *HelmV3Opts) (*HelmV3Collector, error) {
Expand All @@ -31,12 +34,13 @@ func NewHelmV3Collector(opts *HelmV3Opts) (*HelmV3Collector, error) {
}

collector := &HelmV3Collector{
commonCollector: newCommonCollector("Helm v2"),
commonCollector: newCommonCollector(HELM_V3_COLLECTOR_NAME),
kubeCollector: kubeCollector,
}

collector.client, err = corev1.NewForConfig(kubeCollector.GetRestConfig())
if err != nil {
if opts.CoreClient != nil {
collector.client = opts.CoreClient
} else if collector.client, err = corev1.NewForConfig(kubeCollector.GetRestConfig()); err != nil {
return nil, err
}

Expand Down
27 changes: 27 additions & 0 deletions pkg/collector/helm3_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package collector

import (
"testing"

"k8s.io/client-go/kubernetes/fake"
)

func TestNewHelmV3Collector(t *testing.T) {
expectedName := "Helm v3"

clientSet := fake.NewSimpleClientset()
col, err := NewHelmV3Collector(&HelmV3Opts{
DiscoveryClient: clientSet.Discovery(),
CoreClient: clientSet.CoreV1(),
})

if err != nil {
t.Fatalf("Failed to create collector from fake discovery client")
}
if col == nil {
t.Fatalf("Should return collector, got nil instead")
}
if col.Name() != expectedName {
t.Fatalf("Expected collector name: %s, instead got: %s", expectedName, col.Name())
}
}
9 changes: 4 additions & 5 deletions pkg/collector/kube.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ type kubeCollector struct {
func newKubeCollector(kubeconfig string, kubecontext string, discoveryClient discovery.DiscoveryInterface) (*kubeCollector, error) {
col := &kubeCollector{}

if discoveryClient == nil {
if discoveryClient != nil {
col.discoveryClient = discoveryClient
} else {
pathOptions := clientcmd.NewDefaultPathOptions()
if kubeconfig != "" {
pathOptions.GlobalFile = kubeconfig
Expand All @@ -36,12 +38,9 @@ func newKubeCollector(kubeconfig string, kubecontext string, discoveryClient dis
return nil, err
}

col.discoveryClient, err = discovery.NewDiscoveryClientForConfig(col.restConfig)
if err != nil {
if col.discoveryClient, err = discovery.NewDiscoveryClientForConfig(col.restConfig); err != nil {
return nil, err
}
} else {
col.discoveryClient = discoveryClient
}

return col, nil
Expand Down
4 changes: 2 additions & 2 deletions pkg/collector/kube_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ func TestNewKubeCollector(t *testing.T) {
col, err := newKubeCollector("", "", clientSet.Discovery())

if err != nil {
t.Errorf("Failed to create kubeCollector from fake discovery client")
t.Fatalf("Failed to create kubeCollector from fake discovery client")
}
if col == nil {
t.Errorf("Should return collector, instrad got nil")
t.Fatalf("Should return collector, got nil instead")
}
}

Expand Down

0 comments on commit b08cb07

Please sign in to comment.