From 4fc656b636e3ccdf842d54bdd57eff6d9b7635d7 Mon Sep 17 00:00:00 2001 From: Alfonso Acosta Date: Wed, 5 Feb 2020 12:55:44 +0100 Subject: [PATCH] Remove k8s dependencies form pkg/install --- pkg/install/go.mod | 5 +++++ pkg/install/go.sum | 13 +++++++++++++ pkg/install/install_test.go | 35 +++++++++++++++++++++++------------ 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/pkg/install/go.mod b/pkg/install/go.mod index 4c8660b29..88bc1c40f 100644 --- a/pkg/install/go.mod +++ b/pkg/install/go.mod @@ -4,8 +4,13 @@ go 1.13 require ( github.com/instrumenta/kubeval v0.0.0-20190918223246-8d013ec9fc56 + github.com/kr/pretty v0.1.0 // indirect github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd + github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/testify v1.4.0 + golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 // indirect golang.org/x/tools v0.0.0-20200121210457-b3205ff6fffe // indirect + gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect + gopkg.in/yaml.v2 v2.2.4 ) diff --git a/pkg/install/go.sum b/pkg/install/go.sum index e9a0df605..a33b44f7a 100644 --- a/pkg/install/go.sum +++ b/pkg/install/go.sum @@ -14,6 +14,11 @@ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NH github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/instrumenta/kubeval v0.0.0-20190918223246-8d013ec9fc56 h1:kKOrEaxR9KvCDdnQqjiBxbaeJg/goLvJvW0lno6aWm4= github.com/instrumenta/kubeval v0.0.0-20190918223246-8d013ec9fc56/go.mod h1:bpiMYvNpVxWjdJsS0hDRu9TrobT5GfWCZwJseGUstxE= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mattn/go-colorable v0.1.0 h1:v2XXALHHh6zHfYTJ+cSkwtyffnaOyR1MXaA91mTrb8o= github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -34,6 +39,8 @@ github.com/spf13/cobra v0.0.0-20180820174524-ff0d02e85550/go.mod h1:1l0Ry5zgKvJa github.com/spf13/jwalterweatherman v0.0.0-20180814060501-14d3d4c51834/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20180821114517-d929dcbb1086 h1:iU+nPfqRqK8ShQqnpZLv8cZ9oklo6NFUcmX1JT5Rudg= github.com/spf13/pflag v0.0.0-20180821114517-d929dcbb1086/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.1.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -56,6 +63,8 @@ golang.org/x/sys v0.0.0-20180821044426-4ea2f632f6e9/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 h1:ng0gs1AKnRRuEMZoTLLlbOd+C17zUDepwGQBb/n+JVg= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20180810153555-6e3c4e7365dd/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20200121210457-b3205ff6fffe h1:9JVTDdjJdXl2FlizZ0H6Qs+vK1hzWT6pBPxo8ghSoBw= @@ -63,8 +72,12 @@ golang.org/x/tools v0.0.0-20200121210457-b3205ff6fffe/go.mod h1:TB2adYChydJhpapK golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/install/install_test.go b/pkg/install/install_test.go index 43e64884a..b8beef785 100644 --- a/pkg/install/install_test.go +++ b/pkg/install/install_test.go @@ -1,14 +1,11 @@ package install import ( - "bytes" "testing" "github.com/instrumenta/kubeval/kubeval" "github.com/stretchr/testify/assert" - - v1 "k8s.io/api/apps/v1" - "k8s.io/apimachinery/pkg/util/yaml" + yaml "gopkg.in/yaml.v2" ) func testFillInTemplates(t *testing.T, expectedNoManifests int, params TemplateParameters) map[string][]byte { @@ -33,16 +30,25 @@ func testFillInTemplates(t *testing.T, expectedNoManifests int, params TemplateP return manifests } -func unmarshalDeployment(t *testing.T, data []byte) *v1.Deployment { - manifest := string(data) +// Deployment is defined here to avoid pulling in all the k8s dependencies into the install package +type Deployment struct { + Spec struct { + Template struct { + Spec struct { + Containers []struct { + SecurityContext *struct { + } `yaml:"securityContext"` + } `yaml:"containers"` + } `yaml:"spec"` + } `yaml:"template"` + } `yaml:"spec"` +} - decoder := yaml.NewYAMLOrJSONDecoder(bytes.NewBuffer([]byte(manifest)), 4096) - deployment := &v1.Deployment{} - err := decoder.Decode(deployment) - if err != nil { +func unmarshalDeployment(t *testing.T, data []byte) *Deployment { + deployment := &Deployment{} + if err := yaml.Unmarshal(data, deployment); err != nil { t.Errorf("issue decoding memcache-dep.yaml into a deployment: %#v", err) } - return deployment } @@ -111,6 +117,9 @@ func TestTestFillInTemplatesAddSecurityContext(t *testing.T) { memDeploy := manifests["memcache-dep.yaml"] deployment := unmarshalDeployment(t, memDeploy) + if len(deployment.Spec.Template.Spec.Containers) < 1 { + t.Error("incorrect number of containers in deployment") + } container := deployment.Spec.Template.Spec.Containers[0] if container.SecurityContext == nil { t.Error("security context not found when there should be one") @@ -137,7 +146,9 @@ func TestFillInTemplatesNoSecurityContext(t *testing.T) { memDeploy := manifests["memcache-dep.yaml"] deployment := unmarshalDeployment(t, memDeploy) - + if len(deployment.Spec.Template.Spec.Containers) < 1 { + t.Error("incorrect number of containers in deployment") + } container := deployment.Spec.Template.Spec.Containers[0] if container.SecurityContext != nil { t.Errorf("security context found when there should be none: %#v", container.SecurityContext)