diff --git a/.golangci.json b/.golangci.json new file mode 100644 index 00000000..b53580d8 --- /dev/null +++ b/.golangci.json @@ -0,0 +1,47 @@ +{ + "linters": { + "disable-all": true, + "enable": [ + "govet", + "revive", + "goimports", + "misspell", + "ineffassign", + "gofmt" + ] + }, + "linters-settings": { + "govet": { + "check-shadowing": false + }, + "gofmt": { + "simplify": false + } + }, + "run": { + "skip-dirs": [ + "vendor", + "tests", + "pkg/client", + "pkg/generated" + ], + "tests": false, + "timeout": "10m" + }, + "issues": { + "exclude-rules": [ + { + "linters": "govet", + "text": "^(nilness|structtag)" + }, + { + "linters": "revive", + "text": "should have comment" + }, + { + "linters": "revive", + "text": "should be of the form" + } + ] + } +} diff --git a/Dockerfile.dapper b/Dockerfile.dapper index f6b3f6cd..a0ddfcb0 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -11,8 +11,9 @@ RUN apt-get update && \ ENV GOLANG_ARCH_amd64=amd64 GOLANG_ARCH_arm=armv6l GOLANG_ARCH_arm64=arm64 GOLANG_ARCH=GOLANG_ARCH_${ARCH} \ GOPATH=/go PATH=/go/bin:/usr/local/go/bin:${PATH} SHELL=/bin/bash -RUN wget -O - https://storage.googleapis.com/golang/go1.16.4.linux-${!GOLANG_ARCH}.tar.gz | tar -xzf - -C /usr/local && \ - go get golang.org/x/lint/golint +RUN wget -O - https://storage.googleapis.com/golang/go1.16.4.linux-${!GOLANG_ARCH}.tar.gz | tar -xzf - -C /usr/local + +RUN curl -sL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s v1.40.1 ENV DOCKER_URL_amd64=https://get.docker.com/builds/Linux/x86_64/docker-1.10.3 \ DOCKER_URL_arm=https://github.com/rancher/docker/releases/download/v1.10.3-ros1/docker-1.10.3_arm \ diff --git a/addons/addons.go b/addons/addons.go index bca4a787..f98cc1b9 100644 --- a/addons/addons.go +++ b/addons/addons.go @@ -2,9 +2,10 @@ package addons import ( "fmt" - "k8s.io/client-go/transport" "strconv" + "k8s.io/client-go/transport" + "github.com/rancher/rke/k8s" "github.com/rancher/rke/templates" "github.com/sirupsen/logrus" diff --git a/cluster/addons.go b/cluster/addons.go index e45b7304..c11a8a14 100644 --- a/cluster/addons.go +++ b/cluster/addons.go @@ -525,10 +525,7 @@ func (c *Cluster) doAddonDelete(ctx context.Context, resourceName string, isCrit return err } - if err := k8s.DeleteK8sSystemJob(deleteJob, k8sClient, c.AddonJobTimeout); err != nil { - return err - } - return nil + return k8s.DeleteK8sSystemJob(deleteJob, k8sClient, c.AddonJobTimeout) } @@ -562,10 +559,7 @@ func (c *Cluster) StoreAddonConfigMap(ctx context.Context, addonYaml string, add } func (c *Cluster) ApplySystemAddonExecuteJob(addonJob string, addonUpdated bool) error { - if err := k8s.ApplyK8sSystemJob(addonJob, c.LocalKubeConfigPath, c.K8sWrapTransport, c.AddonJobTimeout, addonUpdated); err != nil { - return err - } - return nil + return k8s.ApplyK8sSystemJob(addonJob, c.LocalKubeConfigPath, c.K8sWrapTransport, c.AddonJobTimeout, addonUpdated) } func (c *Cluster) deployIngress(ctx context.Context, data map[string]interface{}) error { diff --git a/cluster/certificates.go b/cluster/certificates.go index 8e75dd48..719ffd62 100644 --- a/cluster/certificates.go +++ b/cluster/certificates.go @@ -186,7 +186,7 @@ func GetClusterCertsFromNodes(ctx context.Context, kubeCluster *Cluster) (map[st log.Infof(ctx, "[certificates] Fetching kubernetes certificates from nodes") var err error backupHosts := hosts.GetUniqueHostList(kubeCluster.EtcdHosts, kubeCluster.ControlPlaneHosts, nil) - certificates := map[string]pki.CertificatePKI{} + var certificates map[string]pki.CertificatePKI for _, host := range backupHosts { certificates, err = pki.FetchCertificatesFromHost(ctx, kubeCluster.EtcdHosts, host, kubeCluster.SystemImages.Alpine, kubeCluster.LocalKubeConfigPath, kubeCluster.PrivateRegistriesMap) if certificates != nil { diff --git a/cluster/cluster.go b/cluster/cluster.go index 4e3e27d2..61e1b889 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -513,10 +513,7 @@ func parseIngressConfig(clusterFile string, rkeConfig *v3.RancherKubernetesEngin if err := parseIngressExtraVolumes(ingressMap, rkeConfig); err != nil { return err } - if err := parseIngressExtraVolumeMounts(ingressMap, rkeConfig); err != nil { - return err - } - return nil + return parseIngressExtraVolumeMounts(ingressMap, rkeConfig) } func parseDaemonSetUpdateStrategy(updateStrategyField interface{}) (*v3.DaemonSetUpdateStrategy, error) { @@ -1093,10 +1090,7 @@ func RestartClusterPods(ctx context.Context, kubeCluster *Cluster) error { return util.ErrList(errList) }) } - if err := errgrp.Wait(); err != nil { - return err - } - return nil + return errgrp.Wait() } func IsLegacyKubeAPI(ctx context.Context, kubeCluster *Cluster) (bool, error) { diff --git a/cluster/encryption.go b/cluster/encryption.go index fd36960f..2a35590a 100644 --- a/cluster/encryption.go +++ b/cluster/encryption.go @@ -335,11 +335,7 @@ func (c *Cluster) updateEncryptionProvider(ctx context.Context, keys []*encrypti if err := c.UpdateClusterCurrentState(ctx, fullState); err != nil { return err } - if err := services.RestartKubeAPIWithHealthcheck(ctx, c.ControlPlaneHosts, c.LocalConnDialerFactory, c.Certificates); err != nil { - return err - } - - return nil + return services.RestartKubeAPIWithHealthcheck(ctx, c.ControlPlaneHosts, c.LocalConnDialerFactory, c.Certificates) } func (c *Cluster) DeployEncryptionProviderFile(ctx context.Context) error { @@ -525,7 +521,7 @@ func resolveCustomEncryptionConfig(clusterFile string) (string, *apiserverconfig var r map[string]interface{} err = ghodssyaml.Unmarshal([]byte(clusterFile), &r) if err != nil { - return clusterFile, nil, fmt.Errorf("error unmarshalling: %v", err) + return clusterFile, nil, fmt.Errorf("error unmarshalling clusterfile: %v", err) } services, ok := r["services"].(map[string]interface{}) if services == nil || !ok { @@ -544,6 +540,9 @@ func resolveCustomEncryptionConfig(clusterFile string) (string, *apiserverconfig if ok && customConfig != nil { delete(sec, "custom_config") newClusterFile, err := ghodssyaml.Marshal(r) + if err != nil { + return clusterFile, nil, fmt.Errorf("error marshalling clusterfile: %v", err) + } c, err := parseCustomConfig(customConfig) return string(newClusterFile), c, err } diff --git a/cluster/etcd.go b/cluster/etcd.go index 8a0f68fe..ba9809c6 100644 --- a/cluster/etcd.go +++ b/cluster/etcd.go @@ -61,10 +61,7 @@ func (c *Cluster) DeployRestoreCerts(ctx context.Context, clusterCerts map[strin return util.ErrList(errList) }) } - if err := errgrp.Wait(); err != nil { - return err - } - return nil + return errgrp.Wait() } func (c *Cluster) DeployStateFile(ctx context.Context, stateFilePath, snapshotName string) error { @@ -92,10 +89,7 @@ func (c *Cluster) DeployStateFile(ctx context.Context, stateFilePath, snapshotNa return util.ErrList(errList) }) } - if err := errgrp.Wait(); err != nil { - return err - } - return nil + return errgrp.Wait() } func (c *Cluster) GetStateFileFromSnapshot(ctx context.Context, snapshotName string) (string, error) { diff --git a/cluster/network.go b/cluster/network.go index 27ce0145..2612e0c8 100644 --- a/cluster/network.go +++ b/cluster/network.go @@ -456,6 +456,9 @@ func (c *Cluster) doAciDeploy(ctx context.Context, data map[string]interface{}) } podIPStart, podIPEnd := cidr.AddressRange(clusterCIDR) _, staticExternalSubnet, err := net.ParseCIDR(c.Network.Options[AciStaticExternalSubnet]) + if err != nil { + return err + } staticServiceIPStart, staticServiceIPEnd := cidr.AddressRange(staticExternalSubnet) _, svcGraphSubnet, err := net.ParseCIDR(c.Network.Options[AciServiceGraphSubnet]) if err != nil { diff --git a/cluster/reconcile.go b/cluster/reconcile.go index 927dc5a7..657f0f8b 100644 --- a/cluster/reconcile.go +++ b/cluster/reconcile.go @@ -116,10 +116,7 @@ func reconcileControl(ctx context.Context, currentCluster, kubeCluster *Cluster, if len(cpToDelete) == len(currentCluster.ControlPlaneHosts) { log.Infof(ctx, "[reconcile] Deleting all current controlplane nodes, skipping deleting from k8s cluster") // rebuilding local admin config to enable saving cluster state - if err := rebuildLocalAdminConfig(ctx, kubeCluster); err != nil { - return err - } - return nil + return rebuildLocalAdminConfig(ctx, kubeCluster) } for _, toDeleteHost := range cpToDelete { if err := cleanControlNode(ctx, kubeCluster, currentCluster, toDeleteHost); err != nil { @@ -127,10 +124,7 @@ func reconcileControl(ctx context.Context, currentCluster, kubeCluster *Cluster, } } // rebuilding local admin config to enable saving cluster state - if err := rebuildLocalAdminConfig(ctx, kubeCluster); err != nil { - return err - } - return nil + return rebuildLocalAdminConfig(ctx, kubeCluster) } func reconcileHost(ctx context.Context, toDeleteHost *hosts.Host, worker, etcd bool, cluster *Cluster) error { diff --git a/cluster/validation.go b/cluster/validation.go index f3457166..e406ad2a 100644 --- a/cluster/validation.go +++ b/cluster/validation.go @@ -11,7 +11,7 @@ import ( "github.com/rancher/rke/pki" "github.com/rancher/rke/services" "github.com/rancher/rke/util" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/validation" ) @@ -308,11 +308,7 @@ func validateServicesOptions(c *Cluster) error { } // validate etcd s3 backup backend configurations - if err := validateEtcdBackupOptions(c); err != nil { - return err - } - - return nil + return validateEtcdBackupOptions(c) } func validateEtcdBackupOptions(c *Cluster) error { @@ -436,10 +432,7 @@ func validateSystemImages(c *Cluster) error { if err := validateMetricsImages(c); err != nil { return err } - if err := validateIngressImages(c); err != nil { - return err - } - return nil + return validateIngressImages(c) } func validateKubernetesImages(c *Cluster) error { diff --git a/cmd/util.go b/cmd/util.go index ead5cf7e..584e3e88 100644 --- a/cmd/util.go +++ b/cmd/util.go @@ -84,11 +84,7 @@ func getKubeconfigFile(ctx *cli.Context) error { } kubeCluster, _ := tempCluster.GetClusterState(context.Background(), clusterState) - if err := cluster.RebuildKubeconfig(context.Background(), kubeCluster); err != nil { - return err - } - - return nil + return cluster.RebuildKubeconfig(context.Background(), kubeCluster) } func getStateFile(ctx *cli.Context) error { @@ -128,7 +124,13 @@ func getStateFile(ctx *cli.Context) error { logrus.Infof("Successfully connected to server using kubeconfig, retrieved server version [%s]", serverVersion) // Retrieve full-cluster-state configmap k8sClient, err := k8s.NewClient(localKubeConfig, nil) + if err != nil { + return err + } cfgMap, err := k8s.GetConfigMap(k8sClient, cluster.FullStateConfigMapName) + if err != nil { + return err + } clusterData := cfgMap.Data[cluster.FullStateConfigMapName] rkeFullState := &cluster.FullState{} if err = json.Unmarshal([]byte(clusterData), rkeFullState); err != nil { @@ -180,6 +182,10 @@ func RetrieveClusterStateConfigMap( } rkeFullState, err = cluster.StringToFullState(ctx, stateFile) + if err != nil { + return APIURL, caCrt, clientCert, clientKey, nil, err + } + // Move current state file stateFilePath := cluster.GetStateFilePath(flags.ClusterFilePath, flags.ConfigDir) err = util.ReplaceFileWithBackup(stateFilePath, "rkestate") diff --git a/go.mod b/go.mod index 70cf9359..ae851663 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,8 @@ require ( github.com/urfave/cli v1.20.0 go.uber.org/atomic v1.5.0 // indirect golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 - golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c + golang.org/x/tools v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.21.0 k8s.io/apimachinery v0.21.0 diff --git a/go.sum b/go.sum index 8ee5be6f..7a40499f 100644 --- a/go.sum +++ b/go.sum @@ -604,6 +604,7 @@ github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6Ut github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= @@ -675,8 +676,9 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449 h1:xUIPaMhvROX9dhPvRCenIJtU78+lbEenGbgqB5hfHCQ= golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -711,8 +713,9 @@ golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210224082022-3d97a244fca7 h1:OgUuv8lsRpBibGNbSizVwKWlysjaNzmC9gYMhPVfqFM= golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -725,8 +728,9 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -773,8 +777,10 @@ golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073 h1:8qxJSnu+7dRq6upnbntrmriWByIakBuct5OM/MdQC1M= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= @@ -837,8 +843,9 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/pki/deploy.go b/pki/deploy.go index bba0c5b5..0c984469 100644 --- a/pki/deploy.go +++ b/pki/deploy.go @@ -107,10 +107,7 @@ func DeployStateOnPlaneHost(ctx context.Context, host *hosts.Host, stateDownload return err } - if err := docker.DoRemoveContainer(ctx, host.DClient, StateDeployerContainerName, host.Address); err != nil { - return err - } - return nil + return docker.DoRemoveContainer(ctx, host.DClient, StateDeployerContainerName, host.Address) } func doRunDeployer(ctx context.Context, host *hosts.Host, containerEnv []string, certDownloaderImage string, prsMap map[string]v3.PrivateRegistry) error { diff --git a/scripts/validate b/scripts/validate index 05a34bf1..e861dee3 100755 --- a/scripts/validate +++ b/scripts/validate @@ -5,16 +5,5 @@ cd $(dirname $0)/.. echo Running validation -PACKAGES=". $(find -name '*.go' | xargs -I{} dirname {} | cut -f2 -d/ | sort -u | grep -Ev '(^\.$|.git|.trash-cache|vendor|bin|data)' | sed -e 's!^!./!' -e 's!$!/...!')" - -echo Running: go vet -go vet ${PACKAGES} -echo Running: golint -for i in ${PACKAGES}; do - if [ -n "$(golint $i | grep -v 'should have comment.*or be unexported' | tee /dev/stderr)" ]; then - failed=true - fi -done -test -z "$failed" -echo Running: go fmt -test -z "$(go fmt ${PACKAGES} | tee /dev/stderr)" +echo Running: golangci-lint +golangci-lint run diff --git a/services/controlplane.go b/services/controlplane.go index 7a2e09da..36b97c8f 100644 --- a/services/controlplane.go +++ b/services/controlplane.go @@ -198,10 +198,7 @@ func startNewControlHost(ctx context.Context, runHost *hosts.Host, localConnDial if err := doDeployControlHost(ctx, runHost, localConnDialerFactory, prsMap, cpNodePlanMap[runHost.Address].Processes, alpineImage, certMap); err != nil { return err } - if err := doDeployWorkerPlaneHost(ctx, runHost, localConnDialerFactory, prsMap, cpNodePlanMap[runHost.Address].Processes, certMap, updateWorkersOnly, alpineImage); err != nil { - return err - } - return nil + return doDeployWorkerPlaneHost(ctx, runHost, localConnDialerFactory, prsMap, cpNodePlanMap[runHost.Address].Processes, certMap, updateWorkersOnly, alpineImage) } func checkHostUpgradable(ctx context.Context, runHost *hosts.Host, cpNodePlanMap map[string]v3.RKEConfigNodePlan) (bool, bool, error) { @@ -239,10 +236,7 @@ func upgradeControlHost(ctx context.Context, kubeClient *kubernetes.Clientset, h if err := CheckNodeReady(kubeClient, host, ControlRole); err != nil { return err } - if err := k8s.CordonUncordon(kubeClient, host.HostnameOverride, false); err != nil { - return err - } - return nil + return k8s.CordonUncordon(kubeClient, host.HostnameOverride, false) } func RemoveControlPlane(ctx context.Context, controlHosts []*hosts.Host, force bool) error { diff --git a/services/workerplane.go b/services/workerplane.go index d630cc04..37cbb160 100644 --- a/services/workerplane.go +++ b/services/workerplane.go @@ -206,10 +206,7 @@ func upgradeWorkerHost(ctx context.Context, kubeClient *kubernetes.Clientset, ru return err } // uncordon node - if err := k8s.CordonUncordon(kubeClient, runHost.HostnameOverride, false); err != nil { - return err - } - return nil + return k8s.CordonUncordon(kubeClient, runHost.HostnameOverride, false) } func doDeployWorkerPlaneHost(ctx context.Context, host *hosts.Host, localConnDialerFactory hosts.DialerFactory, prsMap map[string]v3.PrivateRegistry, processMap map[string]v3.Process, certMap map[string]pki.CertificatePKI, updateWorkersOnly bool, alpineImage string) error { diff --git a/types/rke_types.go b/types/rke_types.go index b5dd7b13..7505bdea 100644 --- a/types/rke_types.go +++ b/types/rke_types.go @@ -21,7 +21,7 @@ type RancherKubernetesEngineConfig struct { Addons string `yaml:"addons" json:"addons,omitempty"` // List of urls or paths for addons AddonsInclude []string `yaml:"addons_include" json:"addonsInclude,omitempty"` - // List of images used internally for proxy, cert downlaod and kubedns + // List of images used internally for proxy, cert download and kubedns SystemImages RKESystemImages `yaml:"system_images" json:"systemImages,omitempty"` // SSH Private Key Path SSHKeyPath string `yaml:"ssh_key_path" json:"sshKeyPath,omitempty" norman:"nocreate,noupdate"` @@ -33,7 +33,7 @@ type RancherKubernetesEngineConfig struct { Authorization AuthzConfig `yaml:"authorization" json:"authorization,omitempty"` // Enable/disable strict docker version checking IgnoreDockerVersion *bool `yaml:"ignore_docker_version" json:"ignoreDockerVersion" norman:"default=true"` - // Kubernetes version to use (if kubernetes image is specifed, image version takes precedence) + // Kubernetes version to use (if kubernetes image is specified, image version takes precedence) Version string `yaml:"kubernetes_version" json:"kubernetesVersion,omitempty"` // List of private registries and their credentials PrivateRegistries []PrivateRegistry `yaml:"private_registries" json:"privateRegistries,omitempty"`