diff --git a/.golangci.yaml b/.golangci.yaml new file mode 100644 index 000000000..d49dcba39 --- /dev/null +++ b/.golangci.yaml @@ -0,0 +1,13 @@ +linters: + # Disable all linters. + # Default: false + disable-all: true + # Enable specific linter + # https://golangci-lint.run/usage/linters/#enabled-by-default-linters + enable: + - deadcode + - unused + - varcheck + - ineffassign + - staticcheck + - gosimple diff --git a/Makefile b/Makefile index 002cfc372..2885e4cbe 100644 --- a/Makefile +++ b/Makefile @@ -159,3 +159,6 @@ clientset: ;$(info $(M)...Begin to find or download controller-gen.) @ ## Find # Fix invalid file's license. update-licenses: ;$(info $(M)...Begin to update licenses.) @hack/update-licenses.sh + +golint: + @hack/verify-golangci-lint.sh diff --git a/hack/verify-all.sh b/hack/verify-all.sh index fdb510926..eb6b149f2 100755 --- a/hack/verify-all.sh +++ b/hack/verify-all.sh @@ -27,7 +27,6 @@ EXCLUDED_PATTERNS=( "verify-linkcheck.sh" # runs in separate Jenkins job once per day due to high network usage "verify-*-dockerized.sh" # Don't run any scripts that intended to be run dockerized "verify-govet-levee.sh" # Do not run levee analysis by default while KEP-1933 implementation is in alpha. - "verify-golangci-lint.sh" # Experimental - intended to be run by hand periodically "verify-licenses.sh" ) diff --git a/hack/verify-golangci-lint.sh b/hack/verify-golangci-lint.sh old mode 100644 new mode 100755 index 46a33f6a2..5f1a023a8 --- a/hack/verify-golangci-lint.sh +++ b/hack/verify-golangci-lint.sh @@ -35,14 +35,24 @@ PATH="${GOBIN}:${PATH}" # Explicitly opt into go modules, even though we're inside a GOPATH directory export GO111MODULE=on +if ! command -v golangci-lint ; then # Install golangci-lint -echo 'installing golangci-lint ' -pushd "${KUBE_ROOT}/hack/tools" >/dev/null - go install github.com/golangci/golangci-lint/cmd/golangci-lint -popd >/dev/null + echo 'installing golangci-lint ' + pushd "${KUBE_ROOT}/hack/tools" >/dev/null + GO111MODULE=auto go install -mod= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.44.2 + popd >/dev/null +fi cd "${KUBE_ROOT}" +function error_exit { + if [ $? -eq 1 ]; then + echo "Please run the following command:" + echo " make golint" + fi +} +trap "error_exit" EXIT + echo 'running golangci-lint ' golangci-lint run \ --timeout 30m \ @@ -50,4 +60,8 @@ golangci-lint run \ -E deadcode \ -E unused \ -E varcheck \ - -E ineffassign \ No newline at end of file + -E ineffassign \ + -E staticcheck \ + -E gosimple \ + -E bodyclose \ + pkg/... cmd/... tools/... test/... kube/... diff --git a/kube/pkg/quota/v1/evaluator/core/persistent_volume_claims.go b/kube/pkg/quota/v1/evaluator/core/persistent_volume_claims.go index fd4783ee3..df565cf41 100644 --- a/kube/pkg/quota/v1/evaluator/core/persistent_volume_claims.go +++ b/kube/pkg/quota/v1/evaluator/core/persistent_volume_claims.go @@ -179,7 +179,7 @@ func (p *pvcEvaluator) UsageStats(options quota.UsageStatsOptions) (quota.UsageS var _ quota.Evaluator = &pvcEvaluator{} func toExternalPersistentVolumeClaimOrError(obj runtime.Object) (*corev1.PersistentVolumeClaim, error) { - pvc := &corev1.PersistentVolumeClaim{} + var pvc *corev1.PersistentVolumeClaim switch t := obj.(type) { case *corev1.PersistentVolumeClaim: pvc = t diff --git a/kube/pkg/quota/v1/evaluator/core/pods.go b/kube/pkg/quota/v1/evaluator/core/pods.go index 90dd9b1ef..f97d7c5ae 100644 --- a/kube/pkg/quota/v1/evaluator/core/pods.go +++ b/kube/pkg/quota/v1/evaluator/core/pods.go @@ -144,10 +144,7 @@ func (p *podEvaluator) GroupResource() schema.GroupResource { // Handles returns true if the evaluator should handle the specified attributes. func (p *podEvaluator) Handles(a admission.Attributes) bool { op := a.GetOperation() - if op == admission.Create { - return true - } - return false + return op == admission.Create } // Matches returns true if the evaluator matches the specified quota with the provided input item @@ -276,7 +273,7 @@ func podComputeUsageHelper(requests corev1.ResourceList, limits corev1.ResourceL } func toExternalPodOrError(obj runtime.Object) (*corev1.Pod, error) { - pod := &corev1.Pod{} + var pod *corev1.Pod switch t := obj.(type) { case *corev1.Pod: pod = t diff --git a/kube/pkg/quota/v1/evaluator/core/services.go b/kube/pkg/quota/v1/evaluator/core/services.go index 2f9c9646e..5806634f0 100644 --- a/kube/pkg/quota/v1/evaluator/core/services.go +++ b/kube/pkg/quota/v1/evaluator/core/services.go @@ -94,7 +94,7 @@ func (p *serviceEvaluator) UncoveredQuotaScopes(limitedScopes []corev1.ScopedRes // convert the input object to an internal service object or error. func toExternalServiceOrError(obj runtime.Object) (*corev1.Service, error) { - svc := &corev1.Service{} + var svc *corev1.Service switch t := obj.(type) { case *corev1.Service: svc = t diff --git a/kube/plugin/pkg/admission/resourcequota/controller.go b/kube/plugin/pkg/admission/resourcequota/controller.go index 83bcb8f74..5009dfb13 100644 --- a/kube/plugin/pkg/admission/resourcequota/controller.go +++ b/kube/plugin/pkg/admission/resourcequota/controller.go @@ -381,9 +381,7 @@ func getMatchedLimitedScopes(evaluator quota.Evaluator, inputObject runtime.Obje klog.Errorf("Error while matching limited Scopes: %v", err) return []corev1.ScopedResourceSelectorRequirement{}, err } - for _, scope := range matched { - scopes = append(scopes, scope) - } + scopes = append(scopes, matched...) } return scopes, nil } @@ -443,9 +441,7 @@ func CheckRequest(quotas []corev1.ResourceQuota, a admission.Attributes, evaluat if err != nil { return nil, fmt.Errorf("error matching scopes of quota %s, err: %v", resourceQuota.Name, err) } - for _, scope := range localRestrictedScopes { - restrictedScopes = append(restrictedScopes, scope) - } + restrictedScopes = append(restrictedScopes, localRestrictedScopes...) match, err := evaluator.Matches(&resourceQuota, inputObject) if err != nil { @@ -578,9 +574,7 @@ func getScopeSelectorsFromQuota(quota corev1.ResourceQuota) []corev1.ScopedResou Operator: corev1.ScopeSelectorOpExists}) } if quota.Spec.ScopeSelector != nil { - for _, scopeSelector := range quota.Spec.ScopeSelector.MatchExpressions { - selectors = append(selectors, scopeSelector) - } + selectors = append(selectors, quota.Spec.ScopeSelector.MatchExpressions...) } return selectors } diff --git a/pkg/api/alerting/v2alpha1/types.go b/pkg/api/alerting/v2alpha1/types.go index 3b218b355..aec8d8d90 100644 --- a/pkg/api/alerting/v2alpha1/types.go +++ b/pkg/api/alerting/v2alpha1/types.go @@ -394,7 +394,6 @@ func ParseAlertingRuleQueryParams(req *restful.Request) (*AlertingRuleQueryParam q.PageNum, err = strconv.Atoi(req.QueryParameter("page")) if err != nil { q.PageNum = 1 - err = nil } if q.PageNum <= 0 { q.PageNum = 1 @@ -420,7 +419,6 @@ func ParseAlertQueryParams(req *restful.Request) (*AlertQueryParams, error) { q.PageNum, err = strconv.Atoi(req.QueryParameter("page")) if err != nil { q.PageNum = 1 - err = nil } if q.PageNum <= 0 { q.PageNum = 1 diff --git a/pkg/apiserver/apiserver.go b/pkg/apiserver/apiserver.go index 00acc7812..3eca33dfc 100644 --- a/pkg/apiserver/apiserver.go +++ b/pkg/apiserver/apiserver.go @@ -199,7 +199,7 @@ func monitorRequest(r *restful.Request, response *restful.Response, chain *restf reqInfo, exists := request.RequestInfoFrom(r.Request.Context()) if exists && reqInfo.APIGroup != "" { RequestCounter.WithLabelValues(reqInfo.Verb, reqInfo.APIGroup, reqInfo.APIVersion, reqInfo.Resource, strconv.Itoa(response.StatusCode())).Inc() - elapsedSeconds := time.Now().Sub(start).Seconds() + elapsedSeconds := time.Since(start).Seconds() RequestLatencies.WithLabelValues(reqInfo.Verb, reqInfo.APIGroup, reqInfo.APIVersion, reqInfo.Resource).Observe(elapsedSeconds) } } diff --git a/pkg/apiserver/auditing/backend.go b/pkg/apiserver/auditing/backend.go index 78f53826f..07683fcb2 100644 --- a/pkg/apiserver/auditing/backend.go +++ b/pkg/apiserver/auditing/backend.go @@ -156,7 +156,7 @@ func (b *Backend) sendEvents(events *v1alpha1.EventList) { start := time.Now() defer func() { stopCh <- struct{}{} - klog.V(8).Infof("send %d auditing logs used %d", len(events.Items), time.Now().Sub(start).Milliseconds()) + klog.V(8).Infof("send %d auditing logs used %d", len(events.Items), time.Since(start).Milliseconds()) }() bs, err := b.eventToBytes(events) @@ -172,6 +172,7 @@ func (b *Backend) sendEvents(events *v1alpha1.EventList) { klog.Errorf("send audit events error, %s", err) return } + defer response.Body.Close() if response.StatusCode != http.StatusOK { klog.Errorf("send audit events error[%d]", response.StatusCode) diff --git a/pkg/apiserver/auditing/types.go b/pkg/apiserver/auditing/types.go index e3c2fe122..431175acf 100644 --- a/pkg/apiserver/auditing/types.go +++ b/pkg/apiserver/auditing/types.go @@ -92,10 +92,7 @@ func (a *auditing) getAuditLevel() audit.Level { func (a *auditing) Enabled() bool { level := a.getAuditLevel() - if level.Less(audit.LevelMetadata) { - return false - } - return true + return !level.Less(audit.LevelMetadata) } func (a *auditing) K8sAuditingEnabled() bool { @@ -294,5 +291,6 @@ func (c *ResponseCapture) Hijack() (net.Conn, *bufio.ReadWriter, error) { // CloseNotify is part of http.CloseNotifier interface func (c *ResponseCapture) CloseNotify() <-chan bool { + //nolint:staticcheck return c.ResponseWriter.(http.CloseNotifier).CloseNotify() } diff --git a/pkg/apiserver/auditing/types_test.go b/pkg/apiserver/auditing/types_test.go index 12c791762..45935e795 100644 --- a/pkg/apiserver/auditing/types_test.go +++ b/pkg/apiserver/auditing/types_test.go @@ -22,7 +22,6 @@ import ( "net/http/httptest" "net/url" "testing" - "time" "github.com/stretchr/testify/assert" v1 "k8s.io/api/authentication/v1" @@ -41,8 +40,6 @@ import ( "kubesphere.io/kubesphere/pkg/utils/iputil" ) -var noResyncPeriodFunc = func() time.Duration { return 0 } - func TestGetAuditLevel(t *testing.T) { webhook := &auditingv1alpha1.Webhook{ TypeMeta: metav1.TypeMeta{ diff --git a/pkg/apiserver/authentication/oauth/options.go b/pkg/apiserver/authentication/oauth/options.go index 826dc448b..39b5de24c 100644 --- a/pkg/apiserver/authentication/oauth/options.go +++ b/pkg/apiserver/authentication/oauth/options.go @@ -120,9 +120,9 @@ func desensitize(data map[string]interface{}) map[string]interface{} { if isSensitiveData(k) { continue } - switch v.(type) { + switch v := v.(type) { case map[interface{}]interface{}: - output[k] = desensitize(convert(v.(map[interface{}]interface{}))) + output[k] = desensitize(convert(v)) default: output[k] = v } @@ -134,9 +134,9 @@ func desensitize(data map[string]interface{}) map[string]interface{} { func convert(m map[interface{}]interface{}) map[string]interface{} { output := make(map[string]interface{}) for k, v := range m { - switch k.(type) { + switch k := k.(type) { case string: - output[k.(string)] = v + output[k] = v } } return output diff --git a/pkg/apiserver/authentication/token/issuer.go b/pkg/apiserver/authentication/token/issuer.go index b6cf206ab..1bbbf25bb 100644 --- a/pkg/apiserver/authentication/token/issuer.go +++ b/pkg/apiserver/authentication/token/issuer.go @@ -189,7 +189,7 @@ func (s *issuer) Verify(token string) (*VerifiedResponse, error) { } now := time.Now().Unix() - if claims.VerifyExpiresAt(now, false) == false { + if !claims.VerifyExpiresAt(now, false) { delta := time.Unix(now, 0).Sub(time.Unix(claims.ExpiresAt, 0)) err = fmt.Errorf("jwt: token is expired by %v", delta) klog.V(4).Info(err) @@ -198,7 +198,7 @@ func (s *issuer) Verify(token string) (*VerifiedResponse, error) { // allowing a clock skew when checking the time-based values. skewedTime := now + int64(s.maximumClockSkew.Seconds()) - if claims.VerifyIssuedAt(skewedTime, false) == false { + if !claims.VerifyIssuedAt(skewedTime, false) { err = fmt.Errorf("jwt: token used before issued, iat:%v, now:%v", claims.IssuedAt, now) klog.Warning(err) return nil, err diff --git a/pkg/apiserver/authentication/token/issuer_test.go b/pkg/apiserver/authentication/token/issuer_test.go index 8530dc470..f96240342 100644 --- a/pkg/apiserver/authentication/token/issuer_test.go +++ b/pkg/apiserver/authentication/token/issuer_test.go @@ -303,8 +303,10 @@ func Test_issuer_Verify(t *testing.T) { func Test_issuer_keyFunc(t *testing.T) { type fields struct { - name string - secret []byte + //nolint:unused + name string + secret []byte + //nolint:unused maximumClockSkew time.Duration } type args struct { @@ -342,7 +344,7 @@ func Test_issuer_keyFunc(t *testing.T) { return } iss := s.(*issuer) - got, err := iss.keyFunc(tt.args.token) + got, _ := iss.keyFunc(tt.args.token) assert.NotNil(t, got) }) } diff --git a/pkg/apiserver/authorization/union/union.go b/pkg/apiserver/authorization/union/union.go index 4bfa1125e..c1571bb20 100644 --- a/pkg/apiserver/authorization/union/union.go +++ b/pkg/apiserver/authorization/union/union.go @@ -90,7 +90,7 @@ func (authzHandler unionAuthzRulesHandler) RulesFor(user user.Info, namespace st for _, currAuthzHandler := range authzHandler { resourceRules, nonResourceRules, incomplete, err := currAuthzHandler.RulesFor(user, namespace) - if incomplete == true { + if incomplete { incompleteStatus = true } if err != nil { diff --git a/pkg/apiserver/dispatch/dispatch.go b/pkg/apiserver/dispatch/dispatch.go index 6b1373915..8955cebae 100644 --- a/pkg/apiserver/dispatch/dispatch.go +++ b/pkg/apiserver/dispatch/dispatch.go @@ -56,7 +56,7 @@ func (c *clusterDispatch) Dispatch(w http.ResponseWriter, req *http.Request, han if len(info.Cluster) == 0 { klog.Warningf("Request with empty cluster, %v", req.URL) - http.Error(w, fmt.Sprintf("Bad request, empty cluster"), http.StatusBadRequest) + http.Error(w, "Bad request, empty cluster", http.StatusBadRequest) return } diff --git a/pkg/apiserver/request/context.go b/pkg/apiserver/request/context.go index d10bf1075..7a0458446 100644 --- a/pkg/apiserver/request/context.go +++ b/pkg/apiserver/request/context.go @@ -38,9 +38,6 @@ const ( // auditKey is the context key for the audit event. auditKey - - // audiencesKey is the context key for request audiences. - audiencesKey ) // NewContext instantiates a base context object for request flows. diff --git a/pkg/apiserver/request/context_test.go b/pkg/apiserver/request/context_test.go index 5609b8b14..be1de0ab7 100644 --- a/pkg/apiserver/request/context_test.go +++ b/pkg/apiserver/request/context_test.go @@ -37,7 +37,7 @@ func TestNamespaceContext(t *testing.T) { } ctx = NewContext() - result, ok = NamespaceFrom(ctx) + _, ok = NamespaceFrom(ctx) if ok { t.Fatalf("Should not be ok because there is no namespace on the context") } diff --git a/pkg/apiserver/runtime/runtime.go b/pkg/apiserver/runtime/runtime.go index bb98f772b..13ef11c8b 100644 --- a/pkg/apiserver/runtime/runtime.go +++ b/pkg/apiserver/runtime/runtime.go @@ -66,6 +66,5 @@ func (cb *ContainerBuilder) Register(funcs ...func(*restful.Container) error) { func NewContainerBuilder(funcs ...func(*restful.Container) error) ContainerBuilder { var cb ContainerBuilder cb.Register(funcs...) - return cb } diff --git a/pkg/controller/certificatesigningrequest/certificatesigningrequest_controller.go b/pkg/controller/certificatesigningrequest/certificatesigningrequest_controller.go index 64ef806db..e2a6b4f23 100644 --- a/pkg/controller/certificatesigningrequest/certificatesigningrequest_controller.go +++ b/pkg/controller/certificatesigningrequest/certificatesigningrequest_controller.go @@ -262,7 +262,7 @@ func (c *Controller) Approve(csr *certificatesv1.CertificateSigningRequest) erro } // approve csr - csr, err := c.k8sclient.CertificatesV1().CertificateSigningRequests().UpdateApproval(context.Background(), csr.Name, csr, metav1.UpdateOptions{}) + _, err := c.k8sclient.CertificatesV1().CertificateSigningRequests().UpdateApproval(context.Background(), csr.Name, csr, metav1.UpdateOptions{}) if err != nil { klog.Errorln(err) return err diff --git a/pkg/controller/cluster/cluster_controller.go b/pkg/controller/cluster/cluster_controller.go index 9ec26306c..cead43158 100644 --- a/pkg/controller/cluster/cluster_controller.go +++ b/pkg/controller/cluster/cluster_controller.go @@ -79,25 +79,16 @@ const ( maxRetries = 15 kubefedNamespace = "kube-federation-system" - openpitrixRuntime = "openpitrix.io/runtime" kubesphereManaged = "kubesphere.io/managed" // Actually host cluster name can be anything, there is only necessary when calling JoinFederation function hostClusterName = "kubesphere" - // allocate kubernetesAPIServer port in range [portRangeMin, portRangeMax] for agents if port is not specified - // kubesphereAPIServer port is defaulted to kubernetesAPIServerPort + 10000 - portRangeMin = 6000 - portRangeMax = 7000 - // proxy format proxyFormat = "%s/api/v1/namespaces/kubesphere-system/services/:ks-apiserver:80/proxy/%s" // mulitcluster configuration name configzMultiCluster = "multicluster" - - // probe cluster timeout - probeClusterTimeout = 3 * time.Second ) // Cluster template for reconcile host cluster if there is none. @@ -372,7 +363,7 @@ func (c *clusterController) syncCluster(key string) error { // currently we didn't set cluster.Spec.Enable when creating cluster at client side, so only check // if we enable cluster.Spec.JoinFederation now - if cluster.Spec.JoinFederation == false { + if !cluster.Spec.JoinFederation { klog.V(5).Infof("Skipping to join cluster %s cause it is not expected to join", cluster.Name) return nil } @@ -590,6 +581,8 @@ func (c *clusterController) tryToFetchKubeSphereComponents(host string, transpor return nil, err } + defer response.Body.Close() + if response.StatusCode != http.StatusOK { klog.V(4).Infof("Response status code isn't 200.") return nil, fmt.Errorf("response code %d", response.StatusCode) @@ -616,6 +609,8 @@ func (c *clusterController) tryFetchKubeSphereVersion(host string, transport htt return "", err } + defer response.Body.Close() + if response.StatusCode != http.StatusOK { klog.V(4).Infof("Response status code isn't 200.") return "", fmt.Errorf("response code %d", response.StatusCode) @@ -671,16 +666,6 @@ func (c *clusterController) handleErr(err error, key interface{}) { utilruntime.HandleError(err) } -// isConditionTrue checks cluster specific condition value is True, return false if condition not exists -func isConditionTrue(cluster *clusterv1alpha1.Cluster, conditionType clusterv1alpha1.ClusterConditionType) bool { - for _, condition := range cluster.Status.Conditions { - if condition.Type == conditionType && condition.Status == v1.ConditionTrue { - return true - } - } - return false -} - // updateClusterCondition updates condition in cluster conditions using giving condition // adds condition if not existed func (c *clusterController) updateClusterCondition(cluster *clusterv1alpha1.Cluster, condition clusterv1alpha1.ClusterCondition) { diff --git a/pkg/controller/destinationrule/destinationrule_controller.go b/pkg/controller/destinationrule/destinationrule_controller.go index d21ab01ad..fbf41a64f 100644 --- a/pkg/controller/destinationrule/destinationrule_controller.go +++ b/pkg/controller/destinationrule/destinationrule_controller.go @@ -403,8 +403,6 @@ func (v *DestinationRuleController) addDeployment(obj interface{}) { for key := range services { v.queue.Add(key) } - - return } func (v *DestinationRuleController) deleteDeployment(obj interface{}) { diff --git a/pkg/controller/globalrolebinding/globalrolebinding_controller.go b/pkg/controller/globalrolebinding/globalrolebinding_controller.go index ea77a80c0..fd2439e68 100644 --- a/pkg/controller/globalrolebinding/globalrolebinding_controller.go +++ b/pkg/controller/globalrolebinding/globalrolebinding_controller.go @@ -76,7 +76,8 @@ type Controller struct { // Kubernetes API. recorder record.EventRecorder multiClusterEnabled bool - devopsClient devops.Interface + //nolint:unused + devopsClient devops.Interface } func NewController(k8sClient kubernetes.Interface, ksClient kubesphere.Interface, diff --git a/pkg/controller/group/group_controller.go b/pkg/controller/group/group_controller.go index 835f0cd14..8bf907696 100644 --- a/pkg/controller/group/group_controller.go +++ b/pkg/controller/group/group_controller.go @@ -27,7 +27,6 @@ import ( "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/scheme" @@ -62,7 +61,6 @@ const ( type Controller struct { controller.BaseController - scheme *runtime.Scheme k8sClient kubernetes.Interface ksClient kubesphere.Interface groupInformer iamv1alpha2informers.GroupInformer @@ -220,7 +218,7 @@ func (c *Controller) reconcile(key string) error { return item == finalizer }) - if group, err = c.ksClient.IamV1alpha2().Groups().Update(context.Background(), group, metav1.UpdateOptions{}); err != nil { + if _, err = c.ksClient.IamV1alpha2().Groups().Update(context.Background(), group, metav1.UpdateOptions{}); err != nil { return err } } diff --git a/pkg/controller/group/group_controller_test.go b/pkg/controller/group/group_controller_test.go index e7729945f..eeaff786c 100644 --- a/pkg/controller/group/group_controller_test.go +++ b/pkg/controller/group/group_controller_test.go @@ -44,7 +44,6 @@ import ( ) var ( - alwaysReady = func() bool { return true } noResyncPeriodFunc = func() time.Duration { return 0 } ) @@ -152,6 +151,7 @@ func (f *fixture) run(userName string) { f.runController(userName, true, false) } +//nolint:unused func (f *fixture) runExpectError(userName string) { f.runController(userName, true, true) } diff --git a/pkg/controller/groupbinding/groupbinding_controller.go b/pkg/controller/groupbinding/groupbinding_controller.go index 0f40dec22..adfadc7b5 100644 --- a/pkg/controller/groupbinding/groupbinding_controller.go +++ b/pkg/controller/groupbinding/groupbinding_controller.go @@ -25,7 +25,6 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/scheme" @@ -59,7 +58,6 @@ const ( type Controller struct { controller.BaseController - scheme *runtime.Scheme k8sClient kubernetes.Interface ksClient kubesphere.Interface groupBindingLister iamv1alpha2listers.GroupBindingLister @@ -137,7 +135,7 @@ func (c *Controller) reconcile(key string) error { } } if g != nil { - if groupBinding, err = c.ksClient.IamV1alpha2().GroupBindings().Update(context.Background(), g, metav1.UpdateOptions{}); err != nil { + if _, err = c.ksClient.IamV1alpha2().GroupBindings().Update(context.Background(), g, metav1.UpdateOptions{}); err != nil { return err } // Skip reconcile when group is updated. @@ -156,7 +154,7 @@ func (c *Controller) reconcile(key string) error { return item == finalizer }) - if groupBinding, err = c.ksClient.IamV1alpha2().GroupBindings().Update(context.Background(), groupBinding, metav1.UpdateOptions{}); err != nil { + if _, err = c.ksClient.IamV1alpha2().GroupBindings().Update(context.Background(), groupBinding, metav1.UpdateOptions{}); err != nil { return err } } diff --git a/pkg/controller/groupbinding/groupbinding_controller_test.go b/pkg/controller/groupbinding/groupbinding_controller_test.go index 96f8266a1..d03418728 100644 --- a/pkg/controller/groupbinding/groupbinding_controller_test.go +++ b/pkg/controller/groupbinding/groupbinding_controller_test.go @@ -59,7 +59,8 @@ type fixture struct { ksclient *fake.Clientset k8sclient *k8sfake.Clientset // Objects to put in the store. - groupBindingLister []*v1alpha2.GroupBinding + groupBindingLister []*v1alpha2.GroupBinding + //nolint:unused fedgroupBindingLister []*fedv1beta1types.FederatedGroupBinding userLister []*v1alpha2.User // Actions expected to happen on the client. @@ -163,6 +164,7 @@ func (f *fixture) run(userName string) { f.runController(userName, true, false) } +//nolint:unused func (f *fixture) runExpectError(userName string) { f.runController(userName, true, true) } diff --git a/pkg/controller/helm/helm_controller_test.go b/pkg/controller/helm/helm_controller_test.go index 0f8c7c59d..8b18cc5f0 100644 --- a/pkg/controller/helm/helm_controller_test.go +++ b/pkg/controller/helm/helm_controller_test.go @@ -24,7 +24,6 @@ import ( "k8s.io/client-go/rest" "k8s.io/klog/klogr" ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/client" logf "sigs.k8s.io/controller-runtime/pkg/log" "kubesphere.io/kubesphere/pkg/simple/client/gateway" @@ -40,7 +39,6 @@ import ( var cfg *rest.Config var testEnv *envtest.Environment -var k8sClient client.Client func TestApplicationController(t *testing.T) { RegisterFailHandler(Fail) diff --git a/pkg/controller/job/job_controller.go b/pkg/controller/job/job_controller.go index b42392c79..e211b6d17 100644 --- a/pkg/controller/job/job_controller.go +++ b/pkg/controller/job/job_controller.go @@ -37,7 +37,6 @@ import ( clientset "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/cache" - "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" ) @@ -52,9 +51,7 @@ const ( ) type JobController struct { - client clientset.Interface - eventBroadcaster record.EventBroadcaster - eventRecorder record.EventRecorder + client clientset.Interface jobLister batchv1listers.JobLister jobSynced cache.InformerSynced @@ -172,16 +169,6 @@ func (v *JobController) syncJob(key string) error { return nil } -// When a job is added, figure out which service it will be used -// and enqueue it. obj must have *batchv1.Job type -func (v *JobController) addJob(obj interface{}) { - deploy := obj.(*batchv1.Job) - - v.queue.Add(deploy.Name) - - return -} - func (v *JobController) handleErr(err error, key interface{}) { if err == nil { v.queue.Forget(key) diff --git a/pkg/controller/job/job_controller_test.go b/pkg/controller/job/job_controller_test.go index 5172517d6..b7fe08ab6 100644 --- a/pkg/controller/job/job_controller_test.go +++ b/pkg/controller/job/job_controller_test.go @@ -38,11 +38,13 @@ var ( ) type fixture struct { - t *testing.T - kubeclient *k8sfake.Clientset + t *testing.T + kubeclient *k8sfake.Clientset + //nolint:unused jobController *JobController jobLister []*batchv1.Job + //nolint:unused kubeactions []core.Action actions []core.Action diff --git a/pkg/controller/loginrecord/loginrecord_controller.go b/pkg/controller/loginrecord/loginrecord_controller.go index 69edad26e..0f30ac5e5 100644 --- a/pkg/controller/loginrecord/loginrecord_controller.go +++ b/pkg/controller/loginrecord/loginrecord_controller.go @@ -56,9 +56,7 @@ type loginRecordController struct { k8sClient kubernetes.Interface ksClient kubesphere.Interface loginRecordLister iamv1alpha2listers.LoginRecordLister - loginRecordSynced cache.InformerSynced userLister iamv1alpha2listers.UserLister - userSynced cache.InformerSynced loginHistoryRetentionPeriod time.Duration loginHistoryMaximumEntries int // recorder is an event recorder for recording Event resources to the diff --git a/pkg/controller/network/ippool/ippool_controller_test.go b/pkg/controller/network/ippool/ippool_controller_test.go index 152883f0f..de9ba07c4 100644 --- a/pkg/controller/network/ippool/ippool_controller_test.go +++ b/pkg/controller/network/ippool/ippool_controller_test.go @@ -48,10 +48,6 @@ func TestIPPoolSuit(t *testing.T) { RunSpecs(t, "IPPool Suite") } -var ( - alwaysReady = func() bool { return true } -) - var _ = Describe("test ippool", func() { pool := &v1alpha1.IPPool{ TypeMeta: v1.TypeMeta{}, @@ -138,11 +134,7 @@ var _ = Describe("test ippool", func() { Eventually(func() bool { result, _ := ksclient.NetworkV1alpha1().IPPools().Get(context.TODO(), pool.Name, v1.GetOptions{}) - if result.Status.Allocations != 1 { - return false - } - - return true + return result.Status.Allocations == 1 }, 3*time.Second).Should(Equal(true)) }) @@ -153,11 +145,7 @@ var _ = Describe("test ippool", func() { ipamClient.ReleaseByHandle("testhandle") Eventually(func() bool { result, _ := ksclient.NetworkV1alpha1().IPPools().Get(context.TODO(), pool.Name, v1.GetOptions{}) - if result.Status.Allocations != 0 { - return false - } - - return true + return result.Status.Allocations == 0 }, 3*time.Second).Should(Equal(true)) err := ksclient.NetworkV1alpha1().IPPools().Delete(context.TODO(), pool.Name, v1.DeleteOptions{}) diff --git a/pkg/controller/network/nsnetworkpolicy/nsnetworkpolicy_test.go b/pkg/controller/network/nsnetworkpolicy/nsnetworkpolicy_test.go index 590656143..afacc1be7 100644 --- a/pkg/controller/network/nsnetworkpolicy/nsnetworkpolicy_test.go +++ b/pkg/controller/network/nsnetworkpolicy/nsnetworkpolicy_test.go @@ -28,7 +28,6 @@ import ( netv1 "k8s.io/api/networking/v1" "k8s.io/apimachinery/pkg/util/yaml" kubeinformers "k8s.io/client-go/informers" - informerv1 "k8s.io/client-go/informers/core/v1" kubefake "k8s.io/client-go/kubernetes/fake" "k8s.io/klog" @@ -37,21 +36,15 @@ import ( ksfake "kubesphere.io/kubesphere/pkg/client/clientset/versioned/fake" ksinformers "kubesphere.io/kubesphere/pkg/client/informers/externalversions" - nsnppolicyinformer "kubesphere.io/kubesphere/pkg/client/informers/externalversions/network/v1alpha1" - workspaceinformer "kubesphere.io/kubesphere/pkg/client/informers/externalversions/tenant/v1alpha1" "kubesphere.io/kubesphere/pkg/constants" "kubesphere.io/kubesphere/pkg/controller/network/nsnetworkpolicy/provider" options "kubesphere.io/kubesphere/pkg/simple/client/network" ) var ( - c *NSNetworkPolicyController - stopCh chan struct{} - nsnpInformer nsnppolicyinformer.NamespaceNetworkPolicyInformer - serviceInformer informerv1.ServiceInformer - workspaceInformer workspaceinformer.WorkspaceInformer - namespaceInformer informerv1.NamespaceInformer - alwaysReady = func() bool { return true } + c *NSNetworkPolicyController + stopCh chan struct{} + alwaysReady = func() bool { return true } ) const ( diff --git a/pkg/controller/network/nsnetworkpolicy/provider/ns_k8s.go b/pkg/controller/network/nsnetworkpolicy/provider/ns_k8s.go index e28ae91ca..ae0ab9a0a 100644 --- a/pkg/controller/network/nsnetworkpolicy/provider/ns_k8s.go +++ b/pkg/controller/network/nsnetworkpolicy/provider/ns_k8s.go @@ -89,6 +89,7 @@ func (c *k8sPolicyController) run(threadiness int, reconcilerPeriod string, stop // Wait until we are in sync with the Kubernetes API before starting the // resource cache. klog.Info("Waiting to sync with Kubernetes API (NetworkPolicy)") + //nolint:staticcheck if ok := cache.WaitForCacheSync(stopCh, c.hasSynced); !ok { } klog.Infof("Finished syncing with Kubernetes API (NetworkPolicy)") diff --git a/pkg/controller/notification/notification_controller.go b/pkg/controller/notification/notification_controller.go index 782893097..71916c25e 100644 --- a/pkg/controller/notification/notification_controller.go +++ b/pkg/controller/notification/notification_controller.go @@ -279,13 +279,13 @@ func (c *Controller) multiClusterSync(ctx context.Context, obj client.Object) er return err } - switch obj.(type) { + switch obj := obj.(type) { case *v2beta1.Config: - return c.syncFederatedConfig(obj.(*v2beta1.Config)) + return c.syncFederatedConfig(obj) case *v2beta1.Receiver: - return c.syncFederatedReceiver(obj.(*v2beta1.Receiver)) + return c.syncFederatedReceiver(obj) case *corev1.Secret: - return c.syncFederatedSecret(obj.(*corev1.Secret)) + return c.syncFederatedSecret(obj) default: klog.Errorf("unknown type for notification, %v", obj) return nil diff --git a/pkg/controller/notification/notification_controller_test.go b/pkg/controller/notification/notification_controller_test.go index 7a0beb034..b5bd22cfb 100644 --- a/pkg/controller/notification/notification_controller_test.go +++ b/pkg/controller/notification/notification_controller_test.go @@ -55,9 +55,6 @@ var ( v2beta1.AddToScheme(scheme.Scheme) apis.AddToScheme(scheme.Scheme) - const timeout = time.Second * 30 - const interval = time.Second * 1 - secret := &corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", @@ -100,6 +97,7 @@ var ( ) BeforeEach(func() { k8sClient = fakek8s.NewSimpleClientset() + //nolint:staticcheck cl = fake.NewFakeClientWithScheme(scheme.Scheme) informerCacheCtx = context.TODO() ksCache = &fakeCache{ diff --git a/pkg/controller/openpitrix/helmapplication/helm_application_controller.go b/pkg/controller/openpitrix/helmapplication/helm_application_controller.go index 52a328dd7..ba9184c8e 100644 --- a/pkg/controller/openpitrix/helmapplication/helm_application_controller.go +++ b/pkg/controller/openpitrix/helmapplication/helm_application_controller.go @@ -41,10 +41,6 @@ func init() { registerMetrics() } -const ( - helmApplicationControllerName = "helm-application-controller" -) - var _ reconcile.Reconciler = &ReconcileHelmApplication{} // ReconcileHelmApplication reconciles a federated helm application object diff --git a/pkg/controller/openpitrix/helmapplication/helm_application_controller_test.go b/pkg/controller/openpitrix/helmapplication/helm_application_controller_test.go index bea3a216a..0d359a039 100644 --- a/pkg/controller/openpitrix/helmapplication/helm_application_controller_test.go +++ b/pkg/controller/openpitrix/helmapplication/helm_application_controller_test.go @@ -96,10 +96,7 @@ var _ = Describe("helmApplication", func() { Eventually(func() bool { var ver v1alpha1.HelmApplicationVersion err := k8sClient.Get(context.Background(), types.NamespacedName{Name: appVer2.Name}, &ver) - if apierrors.IsNotFound(err) { - return true - } - return false + return apierrors.IsNotFound(err) }, timeout, interval).Should(BeTrue()) By("Active app version exists") diff --git a/pkg/controller/openpitrix/helmapplication/helm_application_version_controller.go b/pkg/controller/openpitrix/helmapplication/helm_application_version_controller.go index 0a47ff889..577db5892 100644 --- a/pkg/controller/openpitrix/helmapplication/helm_application_version_controller.go +++ b/pkg/controller/openpitrix/helmapplication/helm_application_version_controller.go @@ -53,7 +53,7 @@ func (r *ReconcileHelmApplicationVersion) Reconcile(ctx context.Context, request start := time.Now() klog.V(4).Infof("sync helm application version: %s", request.String()) defer func() { - klog.V(4).Infof("sync helm application version end: %s, elapsed: %v", request.String(), time.Now().Sub(start)) + klog.V(4).Infof("sync helm application version end: %s, elapsed: %v", request.String(), time.Since(start)) }() appVersion := &v1alpha1.HelmApplicationVersion{} @@ -97,10 +97,7 @@ func (r *ReconcileHelmApplicationVersion) Reconcile(ctx context.Context, request // Delete HelmApplicationVersion appVersion.ObjectMeta.Finalizers = sliceutil.RemoveString(appVersion.ObjectMeta.Finalizers, func(item string) bool { - if item == HelmAppVersionFinalizer { - return true - } - return false + return item == HelmAppVersionFinalizer }) if err := r.Update(context.Background(), appVersion); err != nil { return reconcile.Result{}, err diff --git a/pkg/controller/openpitrix/helmcategory/helm_category_controller.go b/pkg/controller/openpitrix/helmcategory/helm_category_controller.go index 696348b1f..164640c64 100644 --- a/pkg/controller/openpitrix/helmcategory/helm_category_controller.go +++ b/pkg/controller/openpitrix/helmcategory/helm_category_controller.go @@ -25,8 +25,6 @@ import ( "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - "k8s.io/client-go/rest" - "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" "k8s.io/klog" "sigs.k8s.io/controller-runtime/pkg/client" @@ -178,8 +176,6 @@ var _ reconcile.Reconciler = &ReconcileHelmCategory{} type ReconcileHelmCategory struct { client.Client //Scheme *runtime.Scheme - recorder record.EventRecorder - config *rest.Config } func (r *ReconcileHelmCategory) SetupWithManager(mgr ctrl.Manager) error { @@ -195,7 +191,7 @@ func (r *ReconcileHelmCategory) Reconcile(ctx context.Context, request reconcile start := time.Now() klog.V(4).Infof("sync helm category: %s", request.String()) defer func() { - klog.V(4).Infof("sync helm category end: %s, elapsed: %v", request.String(), time.Now().Sub(start)) + klog.V(4).Infof("sync helm category end: %s, elapsed: %v", request.String(), time.Since(start)) }() instance := &v1alpha1.HelmCategory{} @@ -237,10 +233,7 @@ func (r *ReconcileHelmCategory) Reconcile(ctx context.Context, request reconcile } instance.ObjectMeta.Finalizers = sliceutil.RemoveString(instance.ObjectMeta.Finalizers, func(item string) bool { - if item == HelmCategoryFinalizer { - return true - } - return false + return item == HelmCategoryFinalizer }) if err := r.Update(context.Background(), instance); err != nil { return reconcile.Result{}, err @@ -297,8 +290,7 @@ func (r *ReconcileHelmCategory) updateCategoryCount(id string) error { func (r *ReconcileHelmCategory) countApplications(id string) (int, error) { list := v1alpha1.HelmApplicationList{} - var err error - err = r.List(context.TODO(), &list, client.MatchingLabels{ + err := r.List(context.TODO(), &list, client.MatchingLabels{ constants.CategoryIdLabelKey: id, constants.ChartRepoIdLabelKey: v1alpha1.AppStoreRepoId, }) diff --git a/pkg/controller/openpitrix/helmrelease/get_chart_data.go b/pkg/controller/openpitrix/helmrelease/get_chart_data.go index 35f0c7f1b..c8981102c 100644 --- a/pkg/controller/openpitrix/helmrelease/get_chart_data.go +++ b/pkg/controller/openpitrix/helmrelease/get_chart_data.go @@ -39,7 +39,7 @@ func (r *ReconcileHelmRelease) GetChartData(rls *v1alpha1.HelmRelease) (chartNam return chartName, chartData, ErrGetRepoFailed } - index, err := helmrepoindex.ByteArrayToSavedIndex([]byte(repo.Status.Data)) + index, _ := helmrepoindex.ByteArrayToSavedIndex([]byte(repo.Status.Data)) if version := index.GetApplicationVersion(rls.Spec.ApplicationId, rls.Spec.ApplicationVersionId); version != nil { url := version.Spec.URLs[0] diff --git a/pkg/controller/openpitrix/helmrelease/helm_release_controller.go b/pkg/controller/openpitrix/helmrelease/helm_release_controller.go index d1b9bfe40..aadecbcf7 100644 --- a/pkg/controller/openpitrix/helmrelease/helm_release_controller.go +++ b/pkg/controller/openpitrix/helmrelease/helm_release_controller.go @@ -27,8 +27,6 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/tools/cache" - "k8s.io/client-go/tools/record" "k8s.io/klog" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" @@ -68,10 +66,8 @@ type ReconcileHelmRelease struct { StorageClient s3.Interface KsFactory externalversions.SharedInformerFactory client.Client - recorder record.EventRecorder // mock helm install && uninstall helmMock bool - informer cache.SharedIndexInformer checkReleaseStatusBackoff *flowcontrol.Backoff clusterClients clusterclient.ClusterClients @@ -163,10 +159,7 @@ func (r *ReconcileHelmRelease) Reconcile(ctx context.Context, request reconcile. klog.V(3).Infof("remove helm release %s finalizer", instance.Name) // remove finalizer instance.ObjectMeta.Finalizers = sliceutil.RemoveString(instance.ObjectMeta.Finalizers, func(item string) bool { - if item == HelmReleaseFinalizer { - return true - } - return false + return item == HelmReleaseFinalizer }) if err := r.Update(context.Background(), instance); err != nil { return reconcile.Result{}, err diff --git a/pkg/controller/openpitrix/helmrepo/helm_repo_controller.go b/pkg/controller/openpitrix/helmrepo/helm_repo_controller.go index 0410ea4c8..99a8e49f5 100644 --- a/pkg/controller/openpitrix/helmrepo/helm_repo_controller.go +++ b/pkg/controller/openpitrix/helmrepo/helm_repo_controller.go @@ -102,7 +102,7 @@ func (r *ReconcileHelmRepo) Reconcile(ctx context.Context, request reconcile.Req start := time.Now() klog.Infof("sync repo: %s", request.Name) defer func() { - klog.Infof("sync repo end: %s, elapsed: %v", request.Name, time.Now().Sub(start)) + klog.Infof("sync repo end: %s, elapsed: %v", request.Name, time.Since(start)) }() // Fetch the helmrepoes instance instance := &v1alpha1.HelmRepo{} @@ -137,10 +137,7 @@ func (r *ReconcileHelmRepo) Reconcile(ctx context.Context, request reconcile.Req if sliceutil.HasString(instance.ObjectMeta.Finalizers, HelmRepoFinalizer) { // remove our finalizer from the list and update it. instance.ObjectMeta.Finalizers = sliceutil.RemoveString(instance.ObjectMeta.Finalizers, func(item string) bool { - if item == HelmRepoFinalizer { - return true - } - return false + return item == HelmRepoFinalizer }) if err := r.Update(context.Background(), instance); err != nil { return reconcile.Result{}, err diff --git a/pkg/controller/quota/accessor.go b/pkg/controller/quota/accessor.go index 378a1a1b4..4c557d2be 100644 --- a/pkg/controller/quota/accessor.go +++ b/pkg/controller/quota/accessor.go @@ -174,9 +174,8 @@ func (a *accessor) GetQuotas(namespaceName string) ([]corev1.ResourceQuota, erro func (a *accessor) waitForReadyResourceQuotaNames(namespaceName string) ([]string, error) { ctx := context.TODO() var resourceQuotaNames []string - var err error // wait for a valid mapping cache. The overall response can be delayed for up to 10 seconds. - err = utilwait.PollImmediate(100*time.Millisecond, 8*time.Second, func() (done bool, err error) { + err := utilwait.PollImmediate(100*time.Millisecond, 8*time.Second, func() (done bool, err error) { resourceQuotaNames, err = resourceQuotaNamesFor(ctx, a.client, namespaceName) // if we can't find the namespace yet, just wait for the cache to update. Requests to non-existent namespaces // may hang, but those people are doing something wrong and namespace lifecycle should reject them. @@ -194,9 +193,8 @@ func (a *accessor) waitForReadyResourceQuotaNames(namespaceName string) ([]strin func (a *accessor) waitForReadyNamespacedResourceQuotas(namespaceName string) ([]corev1.ResourceQuota, error) { ctx := context.TODO() var resourceQuotas []corev1.ResourceQuota - var err error // wait for a valid mapping cache. The overall response can be delayed for up to 10 seconds. - err = utilwait.PollImmediate(100*time.Millisecond, 8*time.Second, func() (done bool, err error) { + err := utilwait.PollImmediate(100*time.Millisecond, 8*time.Second, func() (done bool, err error) { resourceQuotaList := &corev1.ResourceQuotaList{} err = a.client.List(ctx, resourceQuotaList, &client.ListOptions{Namespace: namespaceName}) if err != nil { diff --git a/pkg/controller/serviceaccount/serviceaccount_controller_test.go b/pkg/controller/serviceaccount/serviceaccount_controller_test.go index e857f6e29..79451dba1 100644 --- a/pkg/controller/serviceaccount/serviceaccount_controller_test.go +++ b/pkg/controller/serviceaccount/serviceaccount_controller_test.go @@ -85,6 +85,7 @@ var _ = Describe("ServiceAccount", func() { ctx := context.Background() reconciler := &Reconciler{ + //nolint:staticcheck Client: fake.NewFakeClientWithScheme(scheme.Scheme), logger: ctrl.Log.WithName("controllers").WithName("acrpullbinding-controller"), scheme: scheme.Scheme, @@ -109,6 +110,7 @@ var _ = Describe("ServiceAccount", func() { ctx := context.Background() reconciler := &Reconciler{ + //nolint:staticcheck Client: fake.NewFakeClientWithScheme(scheme.Scheme), logger: ctrl.Log.WithName("controllers").WithName("acrpullbinding-controller"), scheme: scheme.Scheme, diff --git a/pkg/controller/storage/capability/capability_controller.go b/pkg/controller/storage/capability/capability_controller.go index df0910ebd..78d17418c 100644 --- a/pkg/controller/storage/capability/capability_controller.go +++ b/pkg/controller/storage/capability/capability_controller.go @@ -154,7 +154,6 @@ func (c *StorageCapabilityController) enqueueStorageClassByCSI(csi interface{}) c.enqueueStorageClass(obj) } } - return } func (c *StorageCapabilityController) runWorker() { @@ -246,7 +245,6 @@ func (c *StorageCapabilityController) updateSnapshotAnnotation(storageClass *sto if _, err := strconv.ParseBool(storageClass.Annotations[annotationAllowSnapshot]); err != nil { storageClass.Annotations[annotationAllowSnapshot] = strconv.FormatBool(snapshotAllow) } - return } func (c *StorageCapabilityController) updateCloneVolumeAnnotation(storageClass *storagev1.StorageClass, cloneAllow bool) { @@ -256,7 +254,6 @@ func (c *StorageCapabilityController) updateCloneVolumeAnnotation(storageClass * if _, err := strconv.ParseBool(storageClass.Annotations[annotationAllowClone]); err != nil { storageClass.Annotations[annotationAllowClone] = strconv.FormatBool(cloneAllow) } - return } func (c *StorageCapabilityController) removeAnnotations(storageClass *storagev1.StorageClass) { diff --git a/pkg/controller/storage/capability/capability_controller_test.go b/pkg/controller/storage/capability/capability_controller_test.go index 986cbad27..37b609d3c 100644 --- a/pkg/controller/storage/capability/capability_controller_test.go +++ b/pkg/controller/storage/capability/capability_controller_test.go @@ -47,7 +47,8 @@ type fixture struct { snapshotSupported bool // Clients k8sClient *k8sfake.Clientset - ksClient *ksfake.Clientset + //nolint:unused + ksClient *ksfake.Clientset // Objects from here preload into NewSimpleFake. storageObjects []runtime.Object // include StorageClass // Objects to put in the store. diff --git a/pkg/controller/storage/snapshotclass/snapshotclass_controller_test.go b/pkg/controller/storage/snapshotclass/snapshotclass_controller_test.go index e2756fc21..24119d2c8 100644 --- a/pkg/controller/storage/snapshotclass/snapshotclass_controller_test.go +++ b/pkg/controller/storage/snapshotclass/snapshotclass_controller_test.go @@ -45,12 +45,14 @@ var ( ) type fixture struct { - t *testing.T + t *testing.T + //nolint:unused snapshotSupported bool // Clients k8sClient *k8sFake.Clientset snapshotClassClient *snapFake.Clientset - ksClient *ksfake.Clientset + //nolint:unused + ksClient *ksfake.Clientset // Objects from here preload into NewSimpleFake. storageObjects []runtime.Object // include StorageClass snapshotClassObjects []runtime.Object diff --git a/pkg/controller/utils/controller/basecontroller_test.go b/pkg/controller/utils/controller/basecontroller_test.go index ceb7234b0..f7a50c987 100644 --- a/pkg/controller/utils/controller/basecontroller_test.go +++ b/pkg/controller/utils/controller/basecontroller_test.go @@ -19,7 +19,6 @@ package controller import ( "fmt" "testing" - "time" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -28,9 +27,8 @@ import ( ) var ( - alwaysReady = func() bool { return true } - noResyncPeriodFunc = func() time.Duration { return 0 } - controllerName = "base-controler-test" + alwaysReady = func() bool { return true } + controllerName = "base-controler-test" ) type fixture struct { @@ -48,7 +46,6 @@ func (in *fakeObj) DeepCopyInto(out *fakeObj) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRole. diff --git a/pkg/controller/virtualservice/virtualservice_controller.go b/pkg/controller/virtualservice/virtualservice_controller.go index 2e77d4668..4c9137ef6 100644 --- a/pkg/controller/virtualservice/virtualservice_controller.go +++ b/pkg/controller/virtualservice/virtualservice_controller.go @@ -227,6 +227,7 @@ func (v *VirtualServiceController) syncService(key string) error { } // default component name to service name + //nolint:ineffassign,staticcheck appName := name defer func() { @@ -322,7 +323,6 @@ func (v *VirtualServiceController) syncService(key string) error { switch strategies[0].Spec.StrategyPolicy { case servicemeshv1alpha2.PolicyPause: vs.Spec = v.generateDefaultVirtualServiceSpec(name, subsets, service).Spec - break case servicemeshv1alpha2.PolicyWaitForWorkloadReady: set := v.getSubsets(strategies[0]) diff --git a/pkg/controller/virtualservice/virtualservice_controller_test.go b/pkg/controller/virtualservice/virtualservice_controller_test.go index d590d7d42..29f9d6df2 100644 --- a/pkg/controller/virtualservice/virtualservice_controller_test.go +++ b/pkg/controller/virtualservice/virtualservice_controller_test.go @@ -189,43 +189,6 @@ func newDestinationRule(name string, host string, labels map[string]string, subs return &dr } -func newStrategy(name string, service *v1.Service, principalVersion string) *v1alpha2.Strategy { - st := v1alpha2.Strategy{ - ObjectMeta: metav1.ObjectMeta{ - Name: name, - Namespace: service.Namespace, - Labels: NewLabels().WithApp(""), - Annotations: nil, - }, - Spec: v1alpha2.StrategySpec{ - Type: v1alpha2.CanaryType, - PrincipalVersion: principalVersion, - GovernorVersion: "", - Template: v1alpha2.VirtualServiceTemplateSpec{ - ObjectMeta: metav1.ObjectMeta{}, - Spec: apiv1alpha3.VirtualService{ - Hosts: []string{service.Name}, - Http: []*apiv1alpha3.HTTPRoute{ - { - Route: []*apiv1alpha3.HTTPRouteDestination{ - { - Destination: &apiv1alpha3.Destination{ - Host: service.Name, - Subset: "", - }, - }, - }, - }, - }, - }, - }, - StrategyPolicy: v1alpha2.PolicyImmediately, - }, - } - - return &st -} - func toHost(service *v1.Service) string { return fmt.Sprintf("%s.%s.svc", service.Name, service.Namespace) } diff --git a/pkg/controller/workspacerolebinding/workspacerolebinding_controller_test.go b/pkg/controller/workspacerolebinding/workspacerolebinding_controller_test.go index c842b5819..b7bbf44f8 100644 --- a/pkg/controller/workspacerolebinding/workspacerolebinding_controller_test.go +++ b/pkg/controller/workspacerolebinding/workspacerolebinding_controller_test.go @@ -18,7 +18,6 @@ package workspacerolebinding import ( "context" - "fmt" "time" . "github.com/onsi/ginkgo" @@ -55,7 +54,7 @@ var _ = Describe("WorkspaceRoleBinding", func() { It("Should create successfully", func() { workspaceAdminBinding := &iamv1alpha2.WorkspaceRoleBinding{ ObjectMeta: metav1.ObjectMeta{ - Name: fmt.Sprintf("admin-workspace1-admin"), + Name: "admin-workspace1-admin", Labels: map[string]string{tenantv1alpha1.WorkspaceLabel: workspace.Name}, }, RoleRef: rbacv1.RoleRef{ diff --git a/pkg/controller/workspacetemplate/workspacetemplate_controller_test.go b/pkg/controller/workspacetemplate/workspacetemplate_controller_test.go index fdffb55b1..185a343ac 100644 --- a/pkg/controller/workspacetemplate/workspacetemplate_controller_test.go +++ b/pkg/controller/workspacetemplate/workspacetemplate_controller_test.go @@ -46,6 +46,7 @@ var _ = Describe("WorkspaceTemplate", func() { BeforeEach(func() { reconciler = &Reconciler{ + //nolint:staticcheck Client: fake.NewFakeClientWithScheme(scheme.Scheme), Logger: ctrl.Log.WithName("controllers").WithName("acrpullbinding-controller"), Recorder: record.NewFakeRecorder(5), diff --git a/pkg/kapis/alerting/v2alpha1/register.go b/pkg/kapis/alerting/v2alpha1/register.go index a53286976..019259867 100644 --- a/pkg/kapis/alerting/v2alpha1/register.go +++ b/pkg/kapis/alerting/v2alpha1/register.go @@ -47,7 +47,6 @@ func AddToContainer(container *restful.Container, informers informers.InformerFa if informers == nil || promResourceClient == nil || ruleClient == nil || option == nil { h := func(req *restful.Request, resp *restful.Response) { ksapi.HandleBadRequest(resp, nil, alertingv2alpha1.ErrAlertingAPIV2NotEnabled) - return } ws.Route(ws.GET("/{path:*}").To(h).Returns(http.StatusOK, ksapi.StatusOK, nil)) ws.Route(ws.PUT("/{path:*}").To(h).Returns(http.StatusOK, ksapi.StatusOK, nil)) diff --git a/pkg/kapis/cluster/v1alpha1/handler.go b/pkg/kapis/cluster/v1alpha1/handler.go index bb49ae027..f5ccbee46 100644 --- a/pkg/kapis/cluster/v1alpha1/handler.go +++ b/pkg/kapis/cluster/v1alpha1/handler.go @@ -225,10 +225,10 @@ func (h *handler) generateDefaultDeployment(cluster *v1alpha1.Cluster, w io.Writ fmt.Sprintf("--name=%s", cluster.Name), fmt.Sprintf("--token=%s", cluster.Spec.Connection.Token), fmt.Sprintf("--proxy-server=%s", h.proxyAddress), - fmt.Sprintf("--keepalive=10s"), - fmt.Sprintf("--kubesphere-service=ks-apiserver.kubesphere-system.svc:80"), - fmt.Sprintf("--kubernetes-service=kubernetes.default.svc:443"), - fmt.Sprintf("--v=0"), + "--keepalive=10s", + "--kubesphere-service=ks-apiserver.kubesphere-system.svc:80", + "--kubernetes-service=kubernetes.default.svc:443", + "--v=0", }, Image: h.agentImage, Resources: corev1.ResourceRequirements{ @@ -421,6 +421,7 @@ func validateKubeSphereAPIServer(config *rest.Config) (*version.Info, error) { if err != nil { return nil, err } + defer response.Body.Close() responseBytes, _ := ioutil.ReadAll(response.Body) responseBody := string(responseBytes) diff --git a/pkg/kapis/cluster/v1alpha1/handler_test.go b/pkg/kapis/cluster/v1alpha1/handler_test.go index 85d159d2b..9211755f6 100644 --- a/pkg/kapis/cluster/v1alpha1/handler_test.go +++ b/pkg/kapis/cluster/v1alpha1/handler_test.go @@ -354,6 +354,7 @@ func TestValidateKubeConfig(t *testing.T) { env := &envtest.Environment{ Config: config, ControlPlane: envtest.ControlPlane{ + //nolint:staticcheck APIServer: &envtest.APIServer{ Args: envtest.DefaultKubeAPIServerFlags, URL: u, @@ -413,6 +414,7 @@ func TestValidateMemberClusterConfiguration(t *testing.T) { env := &envtest.Environment{ Config: config, ControlPlane: envtest.ControlPlane{ + //nolint:staticcheck APIServer: &envtest.APIServer{ Args: envtest.DefaultKubeAPIServerFlags, URL: u, diff --git a/pkg/kapis/monitoring/v1alpha3/helper.go b/pkg/kapis/monitoring/v1alpha3/helper.go index 84d3f706f..f08614099 100644 --- a/pkg/kapis/monitoring/v1alpha3/helper.go +++ b/pkg/kapis/monitoring/v1alpha3/helper.go @@ -551,6 +551,4 @@ func ExportMetrics(resp *restful.Response, metrics model.Metrics, startTime, end api.HandleBadRequest(resp, nil, err) return } - - return } diff --git a/pkg/kapis/network/v1alpha2/swagger-doc.go b/pkg/kapis/network/v1alpha2/swagger-doc.go index d8cdd4c0a..eb7111e80 100644 --- a/pkg/kapis/network/v1alpha2/swagger-doc.go +++ b/pkg/kapis/network/v1alpha2/swagger-doc.go @@ -83,9 +83,6 @@ type Metric struct { Max float64 `json:"max"` } -func (m Metric) first() time.Time { return m.Samples[0].Timestamp } -func (m Metric) last() time.Time { return m.Samples[len(m.Samples)-1].Timestamp } - // Sample is a single datapoint of a metric. type Sample struct { Timestamp time.Time `json:"date"` diff --git a/pkg/kapis/oauth/handler.go b/pkg/kapis/oauth/handler.go index a052d3a0e..4639b296f 100644 --- a/pkg/kapis/oauth/handler.go +++ b/pkg/kapis/oauth/handler.go @@ -655,7 +655,9 @@ func (h *handler) logout(req *restful.Request, resp *restful.Response) { state := req.QueryParameter("state") if state != "" { - redirectURL.Query().Add("state", state) + qry := redirectURL.Query() + qry.Add("state", state) + redirectURL.RawQuery = qry.Encode() } resp.Header().Set("Content-Type", "text/plain") diff --git a/pkg/kapis/openpitrix/v1/handler.go b/pkg/kapis/openpitrix/v1/handler.go index 2f8cad97d..473de9c5b 100644 --- a/pkg/kapis/openpitrix/v1/handler.go +++ b/pkg/kapis/openpitrix/v1/handler.go @@ -707,7 +707,6 @@ func (h *openpitrixHandler) DescribeApplication(req *restful.Request, resp *rest } resp.WriteEntity(app) - return } func (h *openpitrixHandler) DeleteApplication(req *restful.Request, resp *restful.Response) { @@ -988,7 +987,7 @@ func (h *openpitrixHandler) CreateAttachment(req *restful.Request, resp *restful api.HandleBadRequest(resp, nil, err) return } - data, err := ioutil.ReadAll(f) + data, _ := ioutil.ReadAll(f) f.Close() att, err = h.openpitrix.CreateAttachment(data) diff --git a/pkg/kapis/openpitrix/v2alpha1/handler.go b/pkg/kapis/openpitrix/v2alpha1/handler.go index 552f8397e..1582fe23e 100644 --- a/pkg/kapis/openpitrix/v2alpha1/handler.go +++ b/pkg/kapis/openpitrix/v2alpha1/handler.go @@ -84,7 +84,6 @@ func (h *openpitrixHandler) DescribeApplication(req *restful.Request, resp *rest } resp.WriteEntity(app) - return } func (h *openpitrixHandler) ListApplications(req *restful.Request, resp *restful.Response) { diff --git a/pkg/kapis/resources/v1alpha2/handler.go b/pkg/kapis/resources/v1alpha2/handler.go index 1310e420b..9552338db 100644 --- a/pkg/kapis/resources/v1alpha2/handler.go +++ b/pkg/kapis/resources/v1alpha2/handler.go @@ -73,10 +73,6 @@ func newResourceHandler(k8sClient kubernetes.Interface, factory informers.Inform } } -func (r *resourceHandler) handleGetNamespacedResources(request *restful.Request, response *restful.Response) { - r.handleListNamespaceResources(request, response) -} - func (r *resourceHandler) handleListNamespaceResources(request *restful.Request, response *restful.Response) { namespace := request.PathParameter("namespace") resource := request.PathParameter("resources") diff --git a/pkg/kapis/resources/v1alpha3/handler.go b/pkg/kapis/resources/v1alpha3/handler.go index 3b97c45cf..169c42c0d 100644 --- a/pkg/kapis/resources/v1alpha3/handler.go +++ b/pkg/kapis/resources/v1alpha3/handler.go @@ -127,16 +127,12 @@ func (h *Handler) fallback(resourceType string, namespace string, q *query.Query switch field { case query.FieldName: conditions.Fuzzy[v1alpha2.Name] = string(value) - break case query.FieldNames: conditions.Match[v1alpha2.Name] = string(value) - break case query.FieldCreationTimeStamp: conditions.Match[v1alpha2.CreateTime] = string(value) - break case query.FieldLastUpdateTimestamp: conditions.Match[v1alpha2.UpdateTime] = string(value) - break case query.FieldLabel: values := strings.SplitN(string(value), ":", 2) if len(values) == 2 { @@ -144,7 +140,6 @@ func (h *Handler) fallback(resourceType string, namespace string, q *query.Query } else { conditions.Match[v1alpha2.Label] = values[0] } - break case query.FieldAnnotation: values := strings.SplitN(string(value), ":", 2) if len(values) == 2 { @@ -152,16 +147,12 @@ func (h *Handler) fallback(resourceType string, namespace string, q *query.Query } else { conditions.Match[v1alpha2.Annotation] = values[0] } - break case query.FieldStatus: conditions.Match[v1alpha2.Status] = string(value) - break case query.FieldOwnerReference: conditions.Match[v1alpha2.Owner] = string(value) - break default: conditions.Match[string(field)] = string(value) - break } } diff --git a/pkg/kapis/tenant/v1alpha2/metering.go b/pkg/kapis/tenant/v1alpha2/metering.go index c7b5ede0c..912625012 100644 --- a/pkg/kapis/tenant/v1alpha2/metering.go +++ b/pkg/kapis/tenant/v1alpha2/metering.go @@ -107,6 +107,4 @@ func (h *tenantHandler) HandlePriceInfoQuery(req *restful.Request, resp *restful priceResponse.PvcPerGigabytesPerHour = priceInfo.PvcPerGigabytesPerHour resp.WriteAsJson(priceResponse) - - return } diff --git a/pkg/models/auth/password_test.go b/pkg/models/auth/password_test.go index 829ac6aad..b3bd09948 100644 --- a/pkg/models/auth/password_test.go +++ b/pkg/models/auth/password_test.go @@ -91,8 +91,8 @@ func Test_passwordAuthenticator_Authenticate(t *testing.T) { ksClient := fakeks.NewSimpleClientset() ksInformerFactory := ksinformers.NewSharedInformerFactory(ksClient, 0) err := ksInformerFactory.Iam().V1alpha2().Users().Informer().GetIndexer().Add(newUser("user1", "100001", "fakepwd")) - err = ksInformerFactory.Iam().V1alpha2().Users().Informer().GetIndexer().Add(newUser("user3", "100003", "")) - err = ksInformerFactory.Iam().V1alpha2().Users().Informer().GetIndexer().Add(newActiveUser("user4", "password")) + _ = ksInformerFactory.Iam().V1alpha2().Users().Informer().GetIndexer().Add(newUser("user3", "100003", "")) + _ = ksInformerFactory.Iam().V1alpha2().Users().Informer().GetIndexer().Add(newActiveUser("user4", "password")) if err != nil { t.Fatal(err) diff --git a/pkg/models/crds/typed_handler_test.go b/pkg/models/crds/typed_handler_test.go index 260e2aeba..0e25ae96e 100644 --- a/pkg/models/crds/typed_handler_test.go +++ b/pkg/models/crds/typed_handler_test.go @@ -126,6 +126,7 @@ func TestHandler_Get(t *testing.T) { h := NewTyped(&fakeClient{c}, cm1.GroupVersionKind(), Scheme) type args struct { + //nolint:unused gvk schema.GroupVersionKind key types.NamespacedName } diff --git a/pkg/models/devops/devops.go b/pkg/models/devops/devops.go index d21698e34..be94439ba 100644 --- a/pkg/models/devops/devops.go +++ b/pkg/models/devops/devops.go @@ -210,6 +210,7 @@ func (d devopsOperator) ListDevOpsProject(workspace string, limit, offset int) ( if err != nil { return api.ListResult{}, nil } + //nolint:staticcheck,ineffassign items := make([]interface{}, 0) var result []interface{} for _, item := range data { @@ -550,7 +551,7 @@ func (d devopsOperator) GetNodesDetail(projectName, pipelineName, runId string, return nil, err } - Nodes, err := json.Marshal(respNodes) + Nodes, _ := json.Marshal(respNodes) err = json.Unmarshal(Nodes, &nodesDetails) if err != nil { klog.Error(err) @@ -722,7 +723,7 @@ func (d devopsOperator) GetBranchNodesDetail(projectName, pipelineName, branchNa klog.Error(err) return nil, err } - Nodes, err := json.Marshal(respNodes) + Nodes, _ := json.Marshal(respNodes) err = json.Unmarshal(Nodes, &nodesDetails) if err != nil { klog.Error(err) @@ -982,9 +983,9 @@ func getInputReqBody(reqBody io.ReadCloser) (newReqBody io.ReadCloser, err error return nil, err } - err = json.Unmarshal(Body, &checkBody) + json.Unmarshal(Body, &checkBody) - if checkBody.Abort != true && checkBody.Parameters == nil { + if !checkBody.Abort && checkBody.Parameters == nil { workRound.Parameters = []devops.CheckPlayloadParameters{} workRound.ID = checkBody.ID jsonBody, _ = json.Marshal(workRound) diff --git a/pkg/models/devops/s2ibinary_handler_test.go b/pkg/models/devops/s2ibinary_handler_test.go index aaeb7cdfb..783bd1364 100644 --- a/pkg/models/devops/s2ibinary_handler_test.go +++ b/pkg/models/devops/s2ibinary_handler_test.go @@ -39,7 +39,6 @@ import ( const ( fileaContents = "This is a test file." - fileaKey = "binary" fileaName = "filea.txt" boundary = `MyBoundary` ns = "testns" @@ -63,6 +62,7 @@ func TestS2iBinaryUploader(t *testing.T) { informerFactory := ksinformers.NewSharedInformerFactory(fakeKubeClient, 0) stopCh := make(chan struct{}) s2iInformer := informerFactory.Devops().V1alpha1().S2iBinaries() + //nolint:ineffassign,staticcheck err := s2iInformer.Informer().GetIndexer().Add(s2ib) defer close(stopCh) informerFactory.Start(stopCh) diff --git a/pkg/models/gateway/gateway_test.go b/pkg/models/gateway/gateway_test.go index c32045432..e68e8ff12 100644 --- a/pkg/models/gateway/gateway_test.go +++ b/pkg/models/gateway/gateway_test.go @@ -53,6 +53,7 @@ func Test_gatewayOperator_GetGateways(t *testing.T) { v1alpha1.AddToScheme(Scheme) corev1.AddToScheme(Scheme) + //nolint:staticcheck client := fake.NewFakeClientWithScheme(Scheme) client.Create(context.TODO(), &v1alpha1.Gateway{ @@ -69,9 +70,11 @@ func Test_gatewayOperator_GetGateways(t *testing.T) { }, }) + //nolint:staticcheck client2 := fake.NewFakeClientWithScheme(Scheme) create_GlobalGateway(client2) + //nolint:staticcheck client3 := fake.NewFakeClientWithScheme(Scheme) create_LegacyGateway(client3, "project6") @@ -316,7 +319,7 @@ func Test_gatewayOperator_CreateGateway(t *testing.T) { v1alpha1.AddToScheme(Scheme) corev1.AddToScheme(Scheme) appsv1.AddToScheme(Scheme) - + //nolint:staticcheck client := fake.NewFakeClientWithScheme(Scheme) tests := []struct { @@ -420,6 +423,7 @@ func Test_gatewayOperator_DeleteGateway(t *testing.T) { var Scheme = runtime.NewScheme() v1alpha1.AddToScheme(Scheme) + //nolint:staticcheck client := fake.NewFakeClientWithScheme(Scheme) client.Create(context.TODO(), &v1alpha1.Gateway{ @@ -486,6 +490,7 @@ func Test_gatewayOperator_UpdateGateway(t *testing.T) { var Scheme = runtime.NewScheme() v1alpha1.AddToScheme(Scheme) + //nolint:staticcheck client := fake.NewFakeClientWithScheme(Scheme) client.Create(context.TODO(), &v1alpha1.Gateway{ @@ -569,10 +574,12 @@ func Test_gatewayOperator_UpgradeGateway(t *testing.T) { var Scheme = runtime.NewScheme() v1alpha1.AddToScheme(Scheme) + //nolint:staticcheck client := fake.NewFakeClientWithScheme(Scheme) corev1.AddToScheme(Scheme) appsv1.AddToScheme(Scheme) + //nolint:staticcheck client2 := fake.NewFakeClientWithScheme(Scheme) create_LegacyGateway(client2, "project2") create_LegacyGatewayConfigMap(client2, "project2") @@ -672,7 +679,7 @@ func Test_gatewayOperator_ListGateways(t *testing.T) { v1alpha1.AddToScheme(Scheme) corev1.AddToScheme(Scheme) appsv1.AddToScheme(Scheme) - + //nolint:staticcheck client := fake.NewFakeClientWithScheme(Scheme) create_LegacyGateway(client, "project2") @@ -830,7 +837,9 @@ func Test_gatewayOperator_status(t *testing.T) { corev1.AddToScheme(Scheme) appsv1.AddToScheme(Scheme) + //nolint:staticcheck client := fake.NewFakeClientWithScheme(Scheme) + //nolint:staticcheck client2 := fake.NewFakeClientWithScheme(Scheme) fake := &corev1.Node{ diff --git a/pkg/models/iam/am/am.go b/pkg/models/iam/am/am.go index 26528dae6..d374dc6e1 100644 --- a/pkg/models/iam/am/am.go +++ b/pkg/models/iam/am/am.go @@ -141,6 +141,7 @@ func NewOperator(ksClient kubesphere.Interface, k8sClient kubernetes.Interface, } func (am *amOperator) GetGlobalRoleOfUser(username string) (*iamv1alpha2.GlobalRole, error) { + //nolint:ineffassign,staticcheck globalRoleBindings, err := am.ListGlobalRoleBindings(username) if len(globalRoleBindings) > 0 { // Usually, only one globalRoleBinding will be found which is created from ks-console. diff --git a/pkg/models/metering/type.go b/pkg/models/metering/type.go index 8f17a4c56..940e7adf2 100644 --- a/pkg/models/metering/type.go +++ b/pkg/models/metering/type.go @@ -159,8 +159,6 @@ func (as *AppStatistic) Aggregate() { as.NetBytesReceived += daemonsetObj.NetBytesReceived as.PVCBytesTotal += daemonsetObj.PVCBytesTotal } - - return } type ServiceStatistic struct { diff --git a/pkg/models/monitoring/monitoring.go b/pkg/models/monitoring/monitoring.go index cdfd8b832..79ad482b1 100644 --- a/pkg/models/monitoring/monitoring.go +++ b/pkg/models/monitoring/monitoring.go @@ -528,6 +528,7 @@ func (mo monitoringOperator) GetAppWorkloads(ns string, apps []string) map[strin if applicationVersion != "" && appObject.Labels[constants.ApplicationVersion] != applicationVersion { return false } + //nolint:staticcheck return true } @@ -547,41 +548,6 @@ func (mo monitoringOperator) GetAppWorkloads(ns string, apps []string) map[strin return componentsMap } -func (mo monitoringOperator) getApplicationPVCs(appObject *v1beta1.Application) []string { - - var pvcList []string - - ns := appObject.Namespace - for _, com := range appObject.Status.ComponentList.Objects { - - switch strings.Title(com.Kind) { - case "Deployment": - deployObj, err := mo.k8s.AppsV1().Deployments(ns).Get(context.Background(), com.Name, metav1.GetOptions{}) - if err != nil { - klog.Error(err.Error()) - return nil - } - - for _, vol := range deployObj.Spec.Template.Spec.Volumes { - pvcList = append(pvcList, vol.PersistentVolumeClaim.ClaimName) - } - case "Statefulset": - stsObj, err := mo.k8s.AppsV1().StatefulSets(ns).Get(context.Background(), com.Name, metav1.GetOptions{}) - if err != nil { - klog.Error(err.Error()) - return nil - } - for _, vol := range stsObj.Spec.Template.Spec.Volumes { - pvcList = append(pvcList, vol.PersistentVolumeClaim.ClaimName) - } - } - - } - - return pvcList - -} - func (mo monitoringOperator) GetSerivePodsMap(ns string, services []string) map[string][]string { var svcPodsMap = make(map[string][]string) diff --git a/pkg/models/monitoring/sort_page.go b/pkg/models/monitoring/sort_page.go index 22e4afd8f..90905aa90 100644 --- a/pkg/models/monitoring/sort_page.go +++ b/pkg/models/monitoring/sort_page.go @@ -161,7 +161,7 @@ func (raw *Metrics) Sort(target, order, identifier string) *Metrics { for _, mv := range item.MetricValues { v, ok := mv.Metadata[identifier] if ok && v != "" { - ordinal, _ := resourceOrdinal[v] + ordinal := resourceOrdinal[v] sorted[ordinal] = mv } } diff --git a/pkg/models/monitoring/utils.go b/pkg/models/monitoring/utils.go index bf4a0ede7..2e13b7faf 100644 --- a/pkg/models/monitoring/utils.go +++ b/pkg/models/monitoring/utils.go @@ -31,9 +31,6 @@ const ( METER_RESOURCE_TYPE_NET_EGRESS METER_RESOURCE_TYPE_PVC - meteringConfigDir = "/etc/kubesphere/metering/" - meteringConfigName = "ks-metering.yaml" - meteringDefaultPrecision = 10 meteringFeePrecision = 3 ) diff --git a/pkg/models/openpitrix/applications.go b/pkg/models/openpitrix/applications.go index 8f82ddff9..dc3b50e49 100644 --- a/pkg/models/openpitrix/applications.go +++ b/pkg/models/openpitrix/applications.go @@ -19,7 +19,6 @@ import ( "errors" "fmt" "sort" - "strings" "time" "kubesphere.io/kubesphere/pkg/apiserver/query" @@ -539,47 +538,6 @@ func (c *applicationOperator) modifyAppAttachment(app *v1alpha1.HelmApplication, return "", nil } -// modify icon or attachment of the app -// added: new attachments have been saved to store -// deleted: attachments should be deleted -func (c *applicationOperator) appAttachmentDiff(old, newApp *v1alpha1.HelmApplication) (added, deleted []string) { - - added = make([]string, 0, 7) - deleted = make([]string, 0, 7) - - if old.Spec.Icon != newApp.Spec.Icon { - if old.Spec.Icon != "" && !strings.HasPrefix(old.Spec.Icon, "http://") { - deleted = append(deleted, old.Spec.Icon) - } - added = append(added, newApp.Spec.Icon) - } - - existsAtt := make(map[string]string, 6) - newAtt := make(map[string]string, 6) - - for _, id := range newApp.Spec.Attachments { - newAtt[id] = "" - } - - for _, id := range old.Spec.Attachments { - existsAtt[id] = "" - } - - for _, id := range newApp.Spec.Attachments { - if _, exists := existsAtt[id]; !exists { - added = append(added, id) - } - } - - for _, id := range old.Spec.Attachments { - if _, exists := newAtt[id]; !exists { - deleted = append(deleted, id) - } - } - - return added, deleted -} - func (c *applicationOperator) DescribeApp(id string) (*App, error) { var helmApp *v1alpha1.HelmApplication var ctg *v1alpha1.HelmCategory diff --git a/pkg/models/openpitrix/applications_test.go b/pkg/models/openpitrix/applications_test.go index 2a86aeab5..f4ca8bbf6 100644 --- a/pkg/models/openpitrix/applications_test.go +++ b/pkg/models/openpitrix/applications_test.go @@ -58,7 +58,7 @@ func TestOpenPitrixApp(t *testing.T) { } // validate corrupted package - validateResp, err = appOperator.ValidatePackage(validateReq) + _, err = appOperator.ValidatePackage(validateReq) if err == nil { klog.Errorf("validate package failed, error: %s", err) t.FailNow() @@ -79,7 +79,7 @@ func TestOpenPitrixApp(t *testing.T) { } // add app to indexer - apps, err := ksClient.ApplicationV1alpha1().HelmApplications().List(context.TODO(), metav1.ListOptions{}) + apps, _ := ksClient.ApplicationV1alpha1().HelmApplications().List(context.TODO(), metav1.ListOptions{}) for _, app := range apps.Items { err := fakeInformerFactory.KubeSphereSharedInformerFactory().Application().V1alpha1().HelmApplications(). Informer().GetIndexer().Add(&app) @@ -90,7 +90,7 @@ func TestOpenPitrixApp(t *testing.T) { } // add app version to indexer - appvers, err := ksClient.ApplicationV1alpha1().HelmApplicationVersions().List(context.TODO(), metav1.ListOptions{}) + appvers, _ := ksClient.ApplicationV1alpha1().HelmApplicationVersions().List(context.TODO(), metav1.ListOptions{}) for _, ver := range appvers.Items { err := fakeInformerFactory.KubeSphereSharedInformerFactory().Application().V1alpha1().HelmApplicationVersions(). Informer().GetIndexer().Add(&ver) diff --git a/pkg/models/openpitrix/applicationversions.go b/pkg/models/openpitrix/applicationversions.go index 4761c55eb..c5db743d5 100644 --- a/pkg/models/openpitrix/applicationversions.go +++ b/pkg/models/openpitrix/applicationversions.go @@ -373,45 +373,27 @@ func (c *applicationOperator) DoAppVersionAction(versionId string, request *Acti switch request.Action { case ActionCancel: - if version.Status.State != v1alpha1.StateSubmitted { - } state = v1alpha1.StateDraft audit.State = v1alpha1.StateDraft case ActionPass: - if version.Status.State != v1alpha1.StateSubmitted { - - } state = v1alpha1.StatePassed audit.State = v1alpha1.StatePassed case ActionRecover: - if version.Status.State != v1alpha1.StateSuspended { - - } state = v1alpha1.StateActive audit.State = v1alpha1.StateActive case ActionReject: - if version.Status.State != v1alpha1.StateSubmitted { - // todo check status - } + // todo check status state = v1alpha1.StateRejected audit.State = v1alpha1.StateRejected case ActionSubmit: - if version.Status.State != v1alpha1.StateDraft { - // todo check status - } + // todo check status state = v1alpha1.StateSubmitted audit.State = v1alpha1.StateSubmitted case ActionSuspend: - if version.Status.State != v1alpha1.StateActive { - // todo check status - } state = v1alpha1.StateSuspended audit.State = v1alpha1.StateSuspended case ActionRelease: // release to app store - if version.Status.State != v1alpha1.StatePassed { - // todo check status - } state = v1alpha1.StateActive audit.State = v1alpha1.StateActive default: diff --git a/pkg/models/openpitrix/categories.go b/pkg/models/openpitrix/categories.go index 0116b656b..b5fc2762e 100644 --- a/pkg/models/openpitrix/categories.go +++ b/pkg/models/openpitrix/categories.go @@ -170,7 +170,7 @@ func (c *categoryOperator) ModifyCategory(id string, request *ModifyCategoryRequ func (c *categoryOperator) DescribeCategory(id string) (*Category, error) { var err error - ctg := &v1alpha1.HelmCategory{} + var ctg *v1alpha1.HelmCategory ctg, err = c.ctgClient.HelmCategories().Get(context.TODO(), id, metav1.GetOptions{}) if err != nil { klog.Error(err) diff --git a/pkg/models/openpitrix/category_test.go b/pkg/models/openpitrix/category_test.go index 9169fcc8f..51615b6a4 100644 --- a/pkg/models/openpitrix/category_test.go +++ b/pkg/models/openpitrix/category_test.go @@ -46,7 +46,7 @@ func TestOpenPitrixCategory(t *testing.T) { } // add category to indexer - ctgs, err := ksClient.ApplicationV1alpha1().HelmCategories().List(context.TODO(), metav1.ListOptions{}) + ctgs, _ := ksClient.ApplicationV1alpha1().HelmCategories().List(context.TODO(), metav1.ListOptions{}) for _, ctg := range ctgs.Items { err := fakeInformerFactory.KubeSphereSharedInformerFactory().Application().V1alpha1().HelmCategories(). Informer().GetIndexer().Add(&ctg) diff --git a/pkg/models/openpitrix/errors.go b/pkg/models/openpitrix/errors.go index 1c42f3eb6..72b2b369f 100644 --- a/pkg/models/openpitrix/errors.go +++ b/pkg/models/openpitrix/errors.go @@ -30,6 +30,4 @@ var ( loadRepoInfoFailed = errors.New("load repo info failed") downloadFileFailed = errors.New("download file failed") - readFileFailed = errors.New("read file failed") - releaseExists = errors.New("release exists") ) diff --git a/pkg/models/openpitrix/release.go b/pkg/models/openpitrix/release.go index 1753b8af5..6d3ef2949 100644 --- a/pkg/models/openpitrix/release.go +++ b/pkg/models/openpitrix/release.go @@ -128,9 +128,9 @@ func (c *releaseOperator) UpgradeApplication(request UpgradeClusterRequest) erro } patch := client.MergeFrom(oldRls) - data, err := patch.Data(newRls) + data, _ := patch.Data(newRls) - newRls, err = c.rlsClient.Patch(context.TODO(), request.ClusterId, patch.Type(), data, metav1.PatchOptions{}) + _, err = c.rlsClient.Patch(context.TODO(), request.ClusterId, patch.Type(), data, metav1.PatchOptions{}) if err != nil { klog.Errorf("patch release %s/%s failed, error: %s", request.Namespace, request.ClusterId, err) return err @@ -198,7 +198,7 @@ func (c *releaseOperator) CreateApplication(workspace, clusterName, namespace st rls.Labels[constants.ChartRepoIdLabelKey] = repoId } - rls, err = c.rlsClient.Create(context.TODO(), rls, metav1.CreateOptions{}) + _, err = c.rlsClient.Create(context.TODO(), rls, metav1.CreateOptions{}) if err != nil { klog.Errorln(err) @@ -379,7 +379,7 @@ func (c *releaseOperator) DescribeApplication(workspace, clusterName, namespace, func (c *releaseOperator) DeleteApplication(workspace, clusterName, namespace, id string) error { - rls, err := c.rlsLister.Get(id) + _, err := c.rlsLister.Get(id) if err != nil { if apierrors.IsNotFound(err) { return nil @@ -389,8 +389,6 @@ func (c *releaseOperator) DeleteApplication(workspace, clusterName, namespace, i } // TODO, check workspace, cluster and namespace - if rls.GetWorkspace() != workspace || rls.GetRlsCluster() != clusterName || rls.GetRlsNamespace() != namespace { - } err = c.rlsClient.Delete(context.TODO(), id, metav1.DeleteOptions{}) @@ -421,21 +419,3 @@ func (c *releaseOperator) getAppVersion(repoId, id string) (ret *v1alpha1.HelmAp } return } - -// get app version from repo and helm application -func (c *releaseOperator) getAppVersionWithData(repoId, id string) (ret *v1alpha1.HelmApplicationVersion, err error) { - if ver, exists, _ := c.cachedRepos.GetAppVersionWithData(id); exists { - return ver, nil - } - - if repoId != "" && repoId != v1alpha1.AppStoreRepoId { - return nil, fmt.Errorf("not found") - } - ret, err = c.appVersionLister.Get(id) - - if err != nil && !apierrors.IsNotFound(err) { - klog.Error(err) - return nil, err - } - return -} diff --git a/pkg/models/openpitrix/release_test.go b/pkg/models/openpitrix/release_test.go index 682d9ee27..47999519f 100644 --- a/pkg/models/openpitrix/release_test.go +++ b/pkg/models/openpitrix/release_test.go @@ -50,7 +50,7 @@ func TestOpenPitrixRelease(t *testing.T) { } // add app to indexer - apps, err := ksClient.ApplicationV1alpha1().HelmApplications().List(context.TODO(), metav1.ListOptions{}) + apps, _ := ksClient.ApplicationV1alpha1().HelmApplications().List(context.TODO(), metav1.ListOptions{}) for _, app := range apps.Items { err := fakeInformerFactory.KubeSphereSharedInformerFactory().Application().V1alpha1().HelmApplications(). Informer().GetIndexer().Add(&app) @@ -61,7 +61,7 @@ func TestOpenPitrixRelease(t *testing.T) { } // add app version to indexer - appvers, err := ksClient.ApplicationV1alpha1().HelmApplicationVersions().List(context.TODO(), metav1.ListOptions{}) + appvers, _ := ksClient.ApplicationV1alpha1().HelmApplicationVersions().List(context.TODO(), metav1.ListOptions{}) for _, ver := range appvers.Items { err := fakeInformerFactory.KubeSphereSharedInformerFactory().Application().V1alpha1().HelmApplicationVersions(). Informer().GetIndexer().Add(&ver) @@ -87,7 +87,7 @@ func TestOpenPitrixRelease(t *testing.T) { } // add app version to indexer - rls, err := ksClient.ApplicationV1alpha1().HelmReleases().List(context.TODO(), metav1.ListOptions{}) + rls, _ := ksClient.ApplicationV1alpha1().HelmReleases().List(context.TODO(), metav1.ListOptions{}) for _, item := range rls.Items { err := fakeInformerFactory.KubeSphereSharedInformerFactory().Application().V1alpha1().HelmReleases(). Informer().GetIndexer().Add(&item) diff --git a/pkg/models/openpitrix/repo_test.go b/pkg/models/openpitrix/repo_test.go index eb3226b6d..97e1bc6bc 100644 --- a/pkg/models/openpitrix/repo_test.go +++ b/pkg/models/openpitrix/repo_test.go @@ -61,7 +61,7 @@ func TestOpenPitrixRepo(t *testing.T) { } // validate the corrupt repo - validateRes, err = repoOperator.ValidateRepo("http://www.baidu.com", &repo.Spec.Credential) + _, err = repoOperator.ValidateRepo("http://www.baidu.com", &repo.Spec.Credential) if err == nil { klog.Errorf("validate category failed") t.Fail() @@ -75,7 +75,7 @@ func TestOpenPitrixRepo(t *testing.T) { } // add category to indexer - repos, err := ksClient.ApplicationV1alpha1().HelmRepos().List(context.TODO(), metav1.ListOptions{}) + repos, _ := ksClient.ApplicationV1alpha1().HelmRepos().List(context.TODO(), metav1.ListOptions{}) for _, repo := range repos.Items { err := fakeInformerFactory.KubeSphereSharedInformerFactory().Application().V1alpha1().HelmRepos(). Informer().GetIndexer().Add(&repo) diff --git a/pkg/models/openpitrix/repos.go b/pkg/models/openpitrix/repos.go index f31b5ad1d..de2a0d85a 100644 --- a/pkg/models/openpitrix/repos.go +++ b/pkg/models/openpitrix/repos.go @@ -94,7 +94,7 @@ func (c *repoOperator) DoRepoAction(repoId string, request *RepoActionRequest) e klog.Errorf("create patch [%s] failed, error: %s", repoId, err) return err } - repo, err = c.repoClient.HelmRepos().Patch(context.TODO(), repoId, types.MergePatchType, data, metav1.PatchOptions{}) + _, err = c.repoClient.HelmRepos().Patch(context.TODO(), repoId, types.MergePatchType, data, metav1.PatchOptions{}) if err != nil { klog.Errorf("patch repo [%s] failed, error: %s", repoId, err) return err @@ -140,8 +140,7 @@ func (c *repoOperator) CreateRepo(repo *v1alpha1.HelmRepo) (*CreateRepoResponse, } func (c *repoOperator) DeleteRepo(id string) error { - var err error - err = c.repoClient.HelmRepos().Delete(context.TODO(), id, metav1.DeleteOptions{}) + err := c.repoClient.HelmRepos().Delete(context.TODO(), id, metav1.DeleteOptions{}) if err != nil && !apierrors.IsNotFound(err) { klog.Errorf("delete repo %s failed, error: %s", id, err) return err @@ -256,7 +255,7 @@ func (c *repoOperator) ModifyRepo(id string, request *ModifyRepoRequest) error { return nil } - repo, err = c.repoClient.HelmRepos().Patch(context.TODO(), id, patch.Type(), data, metav1.PatchOptions{}) + _, err = c.repoClient.HelmRepos().Patch(context.TODO(), id, patch.Type(), data, metav1.PatchOptions{}) if err != nil { klog.Error(err) diff --git a/pkg/models/openpitrix/utils.go b/pkg/models/openpitrix/utils.go index ec6caac34..ec6be1286 100644 --- a/pkg/models/openpitrix/utils.go +++ b/pkg/models/openpitrix/utils.go @@ -165,7 +165,7 @@ func matchPackageFailedError(err error, res *ValidatePackageResponse) { case strings.HasPrefix(errStr, "missing file ["): - matched := regexp.MustCompile("missing file \\[(.+)]").FindStringSubmatch(errStr) + matched := regexp.MustCompile(`missing file \\[(.+)]`).FindStringSubmatch(errStr) if len(matched) > 0 { errorDetails[matched[1]] = "not found" } @@ -258,10 +258,8 @@ func convertApplication(rls *v1alpha1.HelmRelease, rlsInfos []*resource.Info) *A } app.ReleaseInfo = make([]runtime.Object, 0, len(rlsInfos)) - if rlsInfos != nil { - for _, info := range rlsInfos { - app.ReleaseInfo = append(app.ReleaseInfo, info.Object) - } + for _, info := range rlsInfos { + app.ReleaseInfo = append(app.ReleaseInfo, info.Object) } return app @@ -605,10 +603,7 @@ func filterAppByName(app *v1alpha1.HelmApplication, namePart string) bool { } name := app.GetTrueName() - if strings.Contains(strings.ToLower(name), strings.ToLower(namePart)) { - return true - } - return false + return strings.Contains(strings.ToLower(name), strings.ToLower(namePart)) } func filterAppByStates(app *v1alpha1.HelmApplication, state []string) bool { @@ -749,7 +744,7 @@ func filterReleaseByStates(rls *v1alpha1.HelmRelease, state []string) bool { } func filterReleasesWithAppVersions(releases []*v1alpha1.HelmRelease, appVersions map[string]*v1alpha1.HelmApplicationVersion) []*v1alpha1.HelmRelease { - if appVersions == nil || len(appVersions) == 0 || len(releases) == 0 { + if len(appVersions) == 0 || len(releases) == 0 { return []*v1alpha1.HelmRelease{} } @@ -803,10 +798,6 @@ func dataKeyInStorage(workspace, id string) string { return path.Join(workspace, id) } -func attachmentKeyInStorage(ws, id string) string { - return path.Join(ws, id) -} - func convertAppVersionReview(app *v1alpha1.HelmApplication, appVersion *v1alpha1.HelmApplicationVersion) *AppVersionReview { review := &AppVersionReview{} status := appVersion.Status diff --git a/pkg/models/registries/image.go b/pkg/models/registries/image.go index 1850bbb36..6e28b5610 100644 --- a/pkg/models/registries/image.go +++ b/pkg/models/registries/image.go @@ -56,7 +56,7 @@ type DockerURL struct { func (u *DockerURL) StringWithoutScheme() string { u.Scheme = "" s := u.String() - return strings.Trim(s, "//") + return strings.Trim(s, "/") } func ParseDockerURL(rawurl string) (*DockerURL, error) { diff --git a/pkg/models/registries/v2/options.go b/pkg/models/registries/v2/options.go index c879b3859..0eadc7741 100644 --- a/pkg/models/registries/v2/options.go +++ b/pkg/models/registries/v2/options.go @@ -27,8 +27,7 @@ import ( const ( // DefaultRegistry is the registry name that will be used if no registry // provided and the default is not overridden. - DefaultRegistry = "index.docker.io" - defaultRegistryAlias = "docker.io" + DefaultRegistry = "index.docker.io" // DefaultTag is the tag name that will be used if no tag provided and the // default is not overridden. diff --git a/pkg/models/resources/v1alpha2/resource/resources.go b/pkg/models/resources/v1alpha2/resource/resources.go index b0565a59b..6da42bbfd 100644 --- a/pkg/models/resources/v1alpha2/resource/resources.go +++ b/pkg/models/resources/v1alpha2/resource/resources.go @@ -113,7 +113,7 @@ func (r *ResourceGetter) GetResource(namespace, resource, name string) (interfac } func (r *ResourceGetter) ListResources(namespace, resource string, conditions *params.Conditions, orderBy string, reverse bool, limit, offset int) (*models.PageableResponse, error) { - items := make([]interface{}, 0) + var items []interface{} var err error var result []interface{} diff --git a/pkg/models/resources/v1alpha2/role/roles.go b/pkg/models/resources/v1alpha2/role/roles.go index 3c8f960b9..28fce2e04 100644 --- a/pkg/models/resources/v1alpha2/role/roles.go +++ b/pkg/models/resources/v1alpha2/role/roles.go @@ -103,8 +103,5 @@ func (s *roleSearcher) Search(namespace string, conditions *params.Conditions, o // role created by user from kubesphere dashboard func isUserFacingRole(role *rbac.Role) bool { - if role.Annotations[constants.CreatorAnnotationKey] != "" { - return true - } - return false + return role.Annotations[constants.CreatorAnnotationKey] != "" } diff --git a/pkg/models/resources/v1alpha3/clusterdashboard/clusterdashboard_test.go b/pkg/models/resources/v1alpha3/clusterdashboard/clusterdashboard_test.go index 075a8bcfd..a12d5f326 100644 --- a/pkg/models/resources/v1alpha3/clusterdashboard/clusterdashboard_test.go +++ b/pkg/models/resources/v1alpha3/clusterdashboard/clusterdashboard_test.go @@ -48,6 +48,7 @@ func TestGetListClusterDashboards(t *testing.T) { t.Fatalf("unable add APIs to scheme: %v", err) } + //nolint:staticcheck c = fake.NewFakeClientWithScheme(sch) var labelSet1 = map[string]string{"foo-1": "bar-1"} diff --git a/pkg/models/resources/v1alpha3/dashboard/dashboard_test.go b/pkg/models/resources/v1alpha3/dashboard/dashboard_test.go index 2405ae334..c438f8545 100644 --- a/pkg/models/resources/v1alpha3/dashboard/dashboard_test.go +++ b/pkg/models/resources/v1alpha3/dashboard/dashboard_test.go @@ -47,6 +47,7 @@ func TestGetListDashboards(t *testing.T) { t.Fatalf("unable add APIs to scheme: %v", err) } + //nolint:staticcheck c = fake.NewFakeClientWithScheme(sch) var labelSet1 = map[string]string{"foo-1": "bar-1"} diff --git a/pkg/models/routers/routers.go b/pkg/models/routers/routers.go index b3e2c6bb6..ebcd8de5a 100644 --- a/pkg/models/routers/routers.go +++ b/pkg/models/routers/routers.go @@ -365,9 +365,9 @@ func (c *routerOperator) createOrUpdateRouterWorkload(namespace string, publishS } if createDeployment { - deployment, err = c.client.AppsV1().Deployments(ingressControllerNamespace).Create(context.Background(), deployment, metav1.CreateOptions{}) + _, err = c.client.AppsV1().Deployments(ingressControllerNamespace).Create(context.Background(), deployment, metav1.CreateOptions{}) } else { - deployment, err = c.client.AppsV1().Deployments(ingressControllerNamespace).Update(context.Background(), deployment, metav1.UpdateOptions{}) + _, err = c.client.AppsV1().Deployments(ingressControllerNamespace).Update(context.Background(), deployment, metav1.UpdateOptions{}) } if err != nil { diff --git a/pkg/models/tenant/metering.go b/pkg/models/tenant/metering.go index 9f22787b2..7487a35c5 100644 --- a/pkg/models/tenant/metering.go +++ b/pkg/models/tenant/metering.go @@ -22,9 +22,6 @@ import ( "strings" "time" - "kubesphere.io/kubesphere/pkg/constants" - "kubesphere.io/kubesphere/pkg/models/metering" - "github.com/pkg/errors" appv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -40,6 +37,8 @@ import ( "kubesphere.io/kubesphere/pkg/apiserver/authorization/authorizer" "kubesphere.io/kubesphere/pkg/apiserver/query" "kubesphere.io/kubesphere/pkg/apiserver/request" + "kubesphere.io/kubesphere/pkg/constants" + "kubesphere.io/kubesphere/pkg/models/metering" monitoringmodel "kubesphere.io/kubesphere/pkg/models/monitoring" "kubesphere.io/kubesphere/pkg/models/openpitrix" "kubesphere.io/kubesphere/pkg/server/params" @@ -735,41 +734,6 @@ func (t *tenantOperator) classifyPodStats(user user.Info, cluster, ns string, po return } -func (t *tenantOperator) listServices(user user.Info, ns string) (*corev1.ServiceList, error) { - - svcScope := request.NamespaceScope - - listSvc := authorizer.AttributesRecord{ - User: user, - Verb: "list", - Resource: "services", - Namespace: ns, - ResourceRequest: true, - ResourceScope: svcScope, - } - - decision, _, err := t.authorizer.Authorize(listSvc) - if err != nil { - klog.Error(err) - return nil, err - } - - if decision != authorizer.DecisionAllow { - _, err := t.am.ListRoleBindings(user.GetName(), nil, ns) - if err != nil { - klog.Error(err) - return nil, err - } - } - - svcs, err := t.k8sclient.CoreV1().Services(ns).List(context.Background(), metav1.ListOptions{}) - if err != nil { - return nil, err - } - - return svcs, nil -} - // updateDeploysStats will update deployment field in resource stats struct with pod stats data and deployments will be classified into 3 classes: // 1. openpitrix deployments // 2. app deployments diff --git a/pkg/models/terminal/terminal.go b/pkg/models/terminal/terminal.go index 3d134b86c..fffd712c7 100644 --- a/pkg/models/terminal/terminal.go +++ b/pkg/models/terminal/terminal.go @@ -79,13 +79,11 @@ type TerminalMessage struct { // TerminalSize handles pty->process resize events // Called in a loop from remotecommand as long as the process is running func (t TerminalSession) Next() *remotecommand.TerminalSize { - select { - case size := <-t.sizeChan: - if size.Height == 0 && size.Width == 0 { - return nil - } - return &size + size := <-t.sizeChan + if size.Height == 0 && size.Width == 0 { + return nil } + return &size } // Read handles pty->process messages (stdin, resize) diff --git a/pkg/simple/client/alerting/rule_client.go b/pkg/simple/client/alerting/rule_client.go index 05a07715c..f830ced8e 100644 --- a/pkg/simple/client/alerting/rule_client.go +++ b/pkg/simple/client/alerting/rule_client.go @@ -15,9 +15,6 @@ const ( epRules = apiPrefix + "/rules" statusAPIError = 422 - statusSuccess status = "success" - statusError status = "error" - ErrBadData ErrorType = "bad_data" ErrTimeout ErrorType = "timeout" ErrCanceled ErrorType = "canceled" @@ -84,10 +81,11 @@ func (c *ruleClient) rules(client api.Client, ctx context.Context) ([]*RuleGroup return nil, errors.Wrap(err, "error creating request: ") } - _, body, _, err := c.do(client, ctx, req) + resp, body, _, err := c.do(client, ctx, req) if err != nil { return nil, errors.Wrap(err, "error doing request: ") } + defer resp.Body.Close() var result struct { Groups []*RuleGroup diff --git a/pkg/simple/client/devops/jenkins/build.go b/pkg/simple/client/devops/jenkins/build.go index 830d60400..26e0b3767 100644 --- a/pkg/simple/client/devops/jenkins/build.go +++ b/pkg/simple/client/devops/jenkins/build.go @@ -192,6 +192,7 @@ func (b *Build) Stop() (bool, error) { if err != nil { return false, err } + defer response.Body.Close() if response.StatusCode != http.StatusOK { return false, errors.New(strconv.Itoa(response.StatusCode)) } @@ -202,7 +203,8 @@ func (b *Build) Stop() (bool, error) { func (b *Build) GetConsoleOutput() string { url := b.Base + "/consoleText" var content string - b.Jenkins.Requester.GetXML(url, &content, nil) + rsp, _ := b.Jenkins.Requester.GetXML(url, &content, nil) + rsp.Body.Close() return content } @@ -224,10 +226,11 @@ func (b *Build) GetInjectedEnvVars() (map[string]string, error) { EnvMap map[string]string `json:"envMap"` } endpoint := b.Base + "/injectedEnvVars" - _, err := b.Jenkins.Requester.GetJSON(endpoint, &envVars, nil) + rsp, err := b.Jenkins.Requester.GetJSON(endpoint, &envVars, nil) if err != nil { return envVars.EnvMap, err } + rsp.Body.Close() return envVars.EnvMap, nil } @@ -308,13 +311,12 @@ func (b *Build) GetResultSet() (*TestResult, error) { url := b.Base + "/testReport" var report TestResult - _, err := b.Jenkins.Requester.GetJSON(url, &report, nil) + rsp, err := b.Jenkins.Requester.GetJSON(url, &report, nil) if err != nil { return nil, err } - + rsp.Body.Close() return &report, nil - } func (b *Build) GetTimestamp() time.Time { @@ -355,7 +357,10 @@ func (b *Build) IsRunning() bool { func (b *Build) SetDescription(description string) error { data := url.Values{} data.Set("description", description) - _, err := b.Jenkins.Requester.Post(b.Base+"/submitDescription", bytes.NewBufferString(data.Encode()), nil, nil) + resp, err := b.Jenkins.Requester.Post(b.Base+"/submitDescription", bytes.NewBufferString(data.Encode()), nil, nil) + if err != nil { + resp.Body.Close() + } return err } func (b *Build) PauseToggle() error { @@ -363,6 +368,7 @@ func (b *Build) PauseToggle() error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -395,6 +401,7 @@ func (b *Build) Poll(options ...interface{}) (int, error) { if err != nil { return 0, err } + response.Body.Close() return response.StatusCode, nil } @@ -403,6 +410,7 @@ func (j *Jenkins) GetProjectPipelineBuildByType(projectId, pipelineId string, st if err != nil { return nil, restful.NewError(devops.GetDevOpsStatusCode(err), err.Error()) } + //nolint:staticcheck build, err := job.getBuildByType(status) return build.Raw, nil } @@ -411,6 +419,7 @@ func (j *Jenkins) GetMultiBranchPipelineBuildByType(projectId, pipelineId, branc if err != nil { return nil, restful.NewError(devops.GetDevOpsStatusCode(err), err.Error()) } + //nolint:staticcheck build, err := job.getBuildByType(status) return build.Raw, nil } diff --git a/pkg/simple/client/devops/jenkins/credential.go b/pkg/simple/client/devops/jenkins/credential.go index dc1fec01d..1eeadc4be 100644 --- a/pkg/simple/client/devops/jenkins/credential.go +++ b/pkg/simple/client/devops/jenkins/credential.go @@ -177,6 +177,7 @@ func (j *Jenkins) GetCredentialInProject(projectId, id string) (*devops.Credenti if err != nil { return nil, err } + response.Body.Close() if response.StatusCode != http.StatusOK { return nil, errors.New(strconv.Itoa(response.StatusCode)) } @@ -197,6 +198,7 @@ func (j *Jenkins) GetCredentialsInProject(projectId string) ([]*devops.Credentia if err != nil { return nil, err } + response.Body.Close() if response.StatusCode != http.StatusOK { return nil, errors.New(strconv.Itoa(response.StatusCode)) } @@ -236,7 +238,7 @@ func (j *Jenkins) CreateCredentialInProject(projectId string, credential *v1.Sec if err != nil { return "", err } - + response.Body.Close() if response.StatusCode != http.StatusOK { return "", errors.New(strconv.Itoa(response.StatusCode)) } @@ -272,6 +274,7 @@ func (j *Jenkins) UpdateCredentialInProject(projectId string, credential *v1.Sec if err != nil { return "", err } + response.Body.Close() if response.StatusCode != http.StatusOK { return "", errors.New(strconv.Itoa(response.StatusCode)) } @@ -285,6 +288,7 @@ func (j *Jenkins) DeleteCredentialInProject(projectId, id string) (string, error if err != nil { return "", err } + response.Body.Close() if response.StatusCode != http.StatusOK { return "", errors.New(strconv.Itoa(response.StatusCode)) } diff --git a/pkg/simple/client/devops/jenkins/folder.go b/pkg/simple/client/devops/jenkins/folder.go index 1646f6c81..f24bdd832 100644 --- a/pkg/simple/client/devops/jenkins/folder.go +++ b/pkg/simple/client/devops/jenkins/folder.go @@ -59,6 +59,7 @@ func (f *Folder) Create(name, description string) (*Folder, error) { if err != nil { return nil, err } + r.Body.Close() if r.StatusCode == 200 { f.Poll() return f, nil @@ -71,5 +72,6 @@ func (f *Folder) Poll() (int, error) { if err != nil { return 0, err } + response.Body.Close() return response.StatusCode, nil } diff --git a/pkg/simple/client/devops/jenkins/internal/bitbucket.go b/pkg/simple/client/devops/jenkins/internal/bitbucket.go index 725b66d60..6b8d594d9 100644 --- a/pkg/simple/client/devops/jenkins/internal/bitbucket.go +++ b/pkg/simple/client/devops/jenkins/internal/bitbucket.go @@ -72,7 +72,6 @@ func AppendBitbucketServerSourceToEtree(source *etree.Element, gitSource *devops regexTraits.CreateAttr("plugin", "scm-api") regexTraits.CreateElement("regex").SetText(gitSource.RegexFilter) } - return } func GetBitbucketServerSourceFromEtree(source *etree.Element) *devopsv1alpha3.BitbucketServerSource { diff --git a/pkg/simple/client/devops/jenkins/internal/git.go b/pkg/simple/client/devops/jenkins/internal/git.go index b07a3946e..15c02cfe8 100644 --- a/pkg/simple/client/devops/jenkins/internal/git.go +++ b/pkg/simple/client/devops/jenkins/internal/git.go @@ -53,7 +53,6 @@ func AppendGitSourceToEtree(source *etree.Element, gitSource *devopsv1alpha3.Git regexTraits.CreateAttr("plugin", "scm-api") regexTraits.CreateElement("regex").SetText(gitSource.RegexFilter) } - return } func GetGitSourcefromEtree(source *etree.Element) *devopsv1alpha3.GitSource { diff --git a/pkg/simple/client/devops/jenkins/internal/github.go b/pkg/simple/client/devops/jenkins/internal/github.go index d2f43ee7a..c5fe30f7e 100644 --- a/pkg/simple/client/devops/jenkins/internal/github.go +++ b/pkg/simple/client/devops/jenkins/internal/github.go @@ -71,7 +71,6 @@ func AppendGithubSourceToEtree(source *etree.Element, githubSource *devopsv1alph regexTraits.CreateAttr("plugin", "scm-api") regexTraits.CreateElement("regex").SetText(githubSource.RegexFilter) } - return } func GetGithubSourcefromEtree(source *etree.Element) *devopsv1alpha3.GithubSource { diff --git a/pkg/simple/client/devops/jenkins/internal/gitlab.go b/pkg/simple/client/devops/jenkins/internal/gitlab.go index 71e5e86ac..c9aafe8eb 100644 --- a/pkg/simple/client/devops/jenkins/internal/gitlab.go +++ b/pkg/simple/client/devops/jenkins/internal/gitlab.go @@ -70,6 +70,7 @@ func AppendGitlabSourceToEtree(source *etree.Element, gitSource *devopsv1alpha3. regexTraits.CreateAttr("plugin", "scm-api") regexTraits.CreateElement("regex").SetText(gitSource.RegexFilter) } + //nolint:gosimple return } diff --git a/pkg/simple/client/devops/jenkins/internal/svn.go b/pkg/simple/client/devops/jenkins/internal/svn.go index c7b854d9e..7ac9a83fc 100644 --- a/pkg/simple/client/devops/jenkins/internal/svn.go +++ b/pkg/simple/client/devops/jenkins/internal/svn.go @@ -27,6 +27,7 @@ func AppendSvnSourceToEtree(source *etree.Element, svnSource *devopsv1alpha3.Svn if svnSource.Excludes != "" { source.CreateElement("excludes").SetText(svnSource.Excludes) } + //nolint:gosimple return } @@ -65,7 +66,7 @@ func AppendSingleSvnSourceToEtree(source *etree.Element, svnSource *devopsv1alph source.CreateElement("ignoreDirPropChanges").SetText("false") source.CreateElement("filterChangelog").SetText("false") source.CreateElement("quietOperation").SetText("true") - + //nolint:gosimple return } diff --git a/pkg/simple/client/devops/jenkins/jenkins.go b/pkg/simple/client/devops/jenkins/jenkins.go index ba671bc01..a286d25df 100644 --- a/pkg/simple/client/devops/jenkins/jenkins.go +++ b/pkg/simple/client/devops/jenkins/jenkins.go @@ -63,7 +63,7 @@ func (j *Jenkins) Init() (*Jenkins, error) { if err != nil { return nil, err } - + rsp.Body.Close() j.Version = rsp.Header.Get("X-Jenkins") //if j.Raw == nil { // return nil, errors.New("Connection Failed, Please verify that the host and credentials are correct.") @@ -214,6 +214,7 @@ func (j *Jenkins) Poll() (int, error) { if err != nil { return 0, err } + resp.Body.Close() return resp.StatusCode, nil } @@ -233,6 +234,7 @@ func (j *Jenkins) GetGlobalRole(roleName string) (string, error) { if err != nil { return "", err } + response.Body.Close() if response.StatusCode != http.StatusOK { return "", errors.New(strconv.Itoa(response.StatusCode)) } @@ -279,6 +281,7 @@ func (j *Jenkins) AssignGlobalRole(roleName string, sid string) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -301,6 +304,7 @@ func (j *Jenkins) UnAssignGlobalRole(roleName string, sid string) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -321,6 +325,7 @@ func (j *Jenkins) GetProjectRole(roleName string) (*ProjectRole, error) { if err != nil { return nil, err } + response.Body.Close() if response.StatusCode != http.StatusOK { return nil, errors.New(strconv.Itoa(response.StatusCode)) } @@ -353,6 +358,7 @@ func (j *Jenkins) AssignProjectRole(roleName string, sid string) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -375,6 +381,7 @@ func (j *Jenkins) UnAssignProjectRole(roleName string, sid string) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -402,6 +409,7 @@ func (j *Jenkins) AddGlobalRole(roleName string, ids devops.GlobalPermissionIds, if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -419,6 +427,7 @@ func (j *Jenkins) DeleteProjectRoles(roleName ...string) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { fmt.Println(responseString) return errors.New(strconv.Itoa(response.StatusCode)) @@ -448,6 +457,7 @@ func (j *Jenkins) AddProjectRole(roleName string, pattern string, ids devops.Pro if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -464,6 +474,7 @@ func (j *Jenkins) DeleteUserInProject(username string) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -837,6 +848,7 @@ func (j *Jenkins) CheckCron(projectName string, httpParameters *devops.HttpParam var path string reader = httpParameters.Body + //nolint:ineffassign,staticcheck cronData, err := ioutil.ReadAll(reader) err = json.Unmarshal(cronData, cron) if err != nil { @@ -889,6 +901,7 @@ func (j *Jenkins) ToJson(httpParameters *devops.HttpParameters) (map[string]inte // After creating an instance call init method. func CreateJenkins(client *http.Client, base string, maxConnection int, auth ...interface{}) *Jenkins { j := &Jenkins{} + //nolint:gosimple if strings.HasSuffix(base, "/") { base = base[:len(base)-1] } diff --git a/pkg/simple/client/devops/jenkins/job.go b/pkg/simple/client/devops/jenkins/job.go index 33dfda3e8..3166433e1 100644 --- a/pkg/simple/client/devops/jenkins/job.go +++ b/pkg/simple/client/devops/jenkins/job.go @@ -194,10 +194,11 @@ func (j *Job) GetAllBuildIds() ([]JobBuild, error) { var buildsResp struct { Builds []JobBuild `json:"allBuilds"` } - _, err := j.Jenkins.Requester.GetJSON(j.Base, &buildsResp, map[string]string{"tree": "allBuilds[number,url]"}) + rsp, err := j.Jenkins.Requester.GetJSON(j.Base, &buildsResp, map[string]string{"tree": "allBuilds[number,url]"}) if err != nil { return nil, err } + rsp.Body.Close() return buildsResp.Builds, nil } @@ -205,10 +206,11 @@ func (j *Job) GetAllBuildStatus() ([]JobBuildStatus, error) { var buildsResp struct { Builds []JobBuildStatus `json:"allBuilds"` } - _, err := j.Jenkins.Requester.GetJSON(j.Base, &buildsResp, map[string]string{"tree": "allBuilds[number,building,result]"}) + resp, err := j.Jenkins.Requester.GetJSON(j.Base, &buildsResp, map[string]string{"tree": "allBuilds[number,building,result]"}) if err != nil { return nil, err } + resp.Body.Close() return buildsResp.Builds, nil } @@ -277,6 +279,7 @@ func (j *Job) Enable() (bool, error) { if err != nil { return false, err } + resp.Body.Close() if resp.StatusCode != 200 { return false, errors.New(strconv.Itoa(resp.StatusCode)) } @@ -288,6 +291,7 @@ func (j *Job) Disable() (bool, error) { if err != nil { return false, err } + resp.Body.Close() if resp.StatusCode != 200 { return false, errors.New(strconv.Itoa(resp.StatusCode)) } @@ -299,6 +303,7 @@ func (j *Job) Delete() (bool, error) { if err != nil { return false, err } + resp.Body.Close() if resp.StatusCode != 200 { return false, errors.New(strconv.Itoa(resp.StatusCode)) } @@ -308,10 +313,11 @@ func (j *Job) Delete() (bool, error) { func (j *Job) Rename(name string) (bool, error) { data := url.Values{} data.Set("newName", name) - _, err := j.Jenkins.Requester.Post(j.Base+"/doRename", bytes.NewBufferString(data.Encode()), nil, nil) + resp, err := j.Jenkins.Requester.Post(j.Base+"/doRename", bytes.NewBufferString(data.Encode()), nil, nil) if err != nil { return false, err } + resp.Body.Close() j.Base = "/job/" + name j.Poll() return true, nil @@ -326,6 +332,7 @@ func (j *Job) Create(config string, qr ...interface{}) (*Job, error) { if err != nil { return nil, err } + resp.Body.Close() if resp.StatusCode == 200 { j.Poll() return j, nil @@ -339,6 +346,7 @@ func (j *Job) Copy(destinationName string) (*Job, error) { if err != nil { return nil, err } + resp.Body.Close() if resp.StatusCode == 200 { newJob := &Job{Jenkins: j.Jenkins, Raw: new(JobResponse), Base: "/job/" + destinationName} _, err := newJob.Poll() @@ -358,6 +366,7 @@ func (j *Job) UpdateConfig(config string) error { if err != nil { return err } + resp.Body.Close() if resp.StatusCode == 200 { j.Poll() return nil @@ -368,10 +377,11 @@ func (j *Job) UpdateConfig(config string) error { func (j *Job) GetConfig() (string, error) { var data string - _, err := j.Jenkins.Requester.GetXML(j.Base+"/config.xml", &data, nil) + resp, err := j.Jenkins.Requester.GetXML(j.Base+"/config.xml", &data, nil) if err != nil { return "", err } + resp.Body.Close() return data, nil } @@ -433,7 +443,7 @@ func (j *Job) InvokeSimple(params map[string]string) (int64, error) { if err != nil { return 0, err } - + resp.Body.Close() if resp.StatusCode != 200 && resp.StatusCode != 201 { return 0, errors.New("Could not invoke job " + j.GetName()) } @@ -490,6 +500,7 @@ func (j *Job) Invoke(files []string, skipIfRunning bool, params map[string]strin if err != nil { return false, err } + resp.Body.Close() if resp.StatusCode == 200 || resp.StatusCode == 201 { return true, nil } @@ -501,5 +512,6 @@ func (j *Job) Poll() (int, error) { if err != nil { return 0, err } + response.Body.Close() return response.StatusCode, nil } diff --git a/pkg/simple/client/devops/jenkins/pipeline.go b/pkg/simple/client/devops/jenkins/pipeline.go index f8fff086f..3dcb3b5bb 100644 --- a/pkg/simple/client/devops/jenkins/pipeline.go +++ b/pkg/simple/client/devops/jenkins/pipeline.go @@ -179,6 +179,7 @@ func (p *Pipeline) ListPipelineRuns() (*devops.PipelineRunList, error) { // listPipelineRunsByRemotePaging get the pipeline runs with pagination by remote (Jenkins BlueOcean plugin) // get the pagination information from the server side is better than the local side, but the API has some issues // see also https://github.com/kubesphere/kubesphere/issues/3507 +//nolint:unused func (p *Pipeline) listPipelineRunsByRemotePaging() (*devops.PipelineRunList, error) { res, err := p.Jenkins.SendPureRequest(p.Path, p.HttpParameters) if err != nil { @@ -258,6 +259,7 @@ func (p *Pipeline) parsePaging() (start, limit int) { return } +//nolint:unused func (p *Pipeline) searchPipelineRunsCount() (int, error) { u, err := p.resetPaging(0, 1000) if err != nil { diff --git a/pkg/simple/client/devops/jenkins/pipeline_internal.go b/pkg/simple/client/devops/jenkins/pipeline_internal.go index f611b9017..0d9e28946 100644 --- a/pkg/simple/client/devops/jenkins/pipeline_internal.go +++ b/pkg/simple/client/devops/jenkins/pipeline_internal.go @@ -269,6 +269,7 @@ func appendMultiBranchJobTriggerToEtree(properties *etree.Element, s *devopsv1al triggerProperty.CreateAttr("plugin", "multibranch-action-triggers") triggerProperty.CreateElement("createActionJobsToTrigger").SetText(s.CreateActionJobsToTrigger) triggerProperty.CreateElement("deleteActionJobsToTrigger").SetText(s.DeleteActionJobsToTrigger) + //nolint:gosimple return } diff --git a/pkg/simple/client/devops/jenkins/pipeline_model_converter.go b/pkg/simple/client/devops/jenkins/pipeline_model_converter.go index 46640a6e0..952280ba6 100644 --- a/pkg/simple/client/devops/jenkins/pipeline_model_converter.go +++ b/pkg/simple/client/devops/jenkins/pipeline_model_converter.go @@ -78,6 +78,7 @@ func (j *Jenkins) ValidateJenkinsfile(jenkinsfile string) (*ValidateJenkinsfileR if err != nil { return nil, err } + response.Body.Close() if response.StatusCode != http.StatusOK { return nil, errors.New(strconv.Itoa(response.StatusCode)) } @@ -95,6 +96,7 @@ func (j *Jenkins) ValidatePipelineJson(json string) (*ValidatePipelineJsonRespon if err != nil { return nil, err } + response.Body.Close() if response.StatusCode != http.StatusOK { return nil, errors.New(strconv.Itoa(response.StatusCode)) } @@ -110,6 +112,7 @@ func (j *Jenkins) PipelineJsonToJenkinsfile(json string) (*PipelineJsonToJenkins if err != nil { return nil, err } + response.Body.Close() if response.StatusCode != http.StatusOK { return nil, errors.New(strconv.Itoa(response.StatusCode)) } @@ -125,6 +128,7 @@ func (j *Jenkins) JenkinsfileToPipelineJson(jenkinsfile string) (*JenkinsfileToP if err != nil { return nil, err } + response.Body.Close() if response.StatusCode != http.StatusOK { return nil, errors.New(strconv.Itoa(response.StatusCode)) } @@ -140,6 +144,7 @@ func (j *Jenkins) StepsJsonToJenkinsfile(json string) (*StepJsonToJenkinsfileRes if err != nil { return nil, err } + response.Body.Close() if response.StatusCode != http.StatusOK { return nil, errors.New(strconv.Itoa(response.StatusCode)) } @@ -155,6 +160,7 @@ func (j *Jenkins) StepsJenkinsfileToJson(jenkinsfile string) (*StepsJenkinsfileT if err != nil { return nil, err } + response.Body.Close() if response.StatusCode != http.StatusOK { return nil, errors.New(strconv.Itoa(response.StatusCode)) } diff --git a/pkg/simple/client/devops/jenkins/request.go b/pkg/simple/client/devops/jenkins/request.go index 647b9ac0d..b68633b3d 100644 --- a/pkg/simple/client/devops/jenkins/request.go +++ b/pkg/simple/client/devops/jenkins/request.go @@ -98,6 +98,7 @@ func (r *Requester) SetCrumb(ar *APIRequest) error { } return err } + response.Body.Close() if response.StatusCode == 200 && crumbData["crumbRequestField"] != "" { ar.SetHeader(crumbData["crumbRequestField"], crumbData["crumb"]) } @@ -185,6 +186,7 @@ func (r *Requester) SetClient(client *http.Client) *Requester { } //Add auth on redirect if required. +//nolint:unused func (r *Requester) redirectPolicyFunc(req *http.Request, via []*http.Request) error { if r.BasicAuth != nil { req.SetBasicAuth(r.BasicAuth.Username, r.BasicAuth.Password) @@ -410,7 +412,7 @@ func (r *Requester) DoPostForm(ar *APIRequest, responseStruct interface{}, form for k, v := range form { formValue.Set(k, v) } - req, err := http.NewRequest("POST", URL.String(), strings.NewReader(formValue.Encode())) + req, _ := http.NewRequest("POST", URL.String(), strings.NewReader(formValue.Encode())) if r.BasicAuth != nil { req.SetBasicAuth(r.BasicAuth.Username, r.BasicAuth.Password) } diff --git a/pkg/simple/client/devops/jenkins/role.go b/pkg/simple/client/devops/jenkins/role.go index b76879433..acc7d577a 100644 --- a/pkg/simple/client/devops/jenkins/role.go +++ b/pkg/simple/client/devops/jenkins/role.go @@ -67,6 +67,7 @@ func (j *GlobalRole) Update(ids devops.GlobalPermissionIds) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -85,6 +86,7 @@ func (j *GlobalRole) AssignRole(sid string) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -102,6 +104,7 @@ func (j *GlobalRole) UnAssignRole(sid string) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -131,6 +134,7 @@ func (j *ProjectRole) Update(pattern string, ids devops.ProjectPermissionIds) er if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -148,6 +152,7 @@ func (j *ProjectRole) AssignRole(sid string) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } @@ -165,6 +170,7 @@ func (j *ProjectRole) UnAssignRole(sid string) error { if err != nil { return err } + response.Body.Close() if response.StatusCode != http.StatusOK { return errors.New(strconv.Itoa(response.StatusCode)) } diff --git a/pkg/simple/client/es/query/builder.go b/pkg/simple/client/es/query/builder.go index 8376314b1..f499f25f5 100644 --- a/pkg/simple/client/es/query/builder.go +++ b/pkg/simple/client/es/query/builder.go @@ -175,7 +175,7 @@ func (b *Bool) AppendFilter(item Item) *Bool { func (b *Bool) AppendMultiFilter(items []Item) *Bool { - if items == nil || len(items) == 0 { + if len(items) == 0 { return b } @@ -200,7 +200,7 @@ func (b *Bool) AppendShould(item Item) *Bool { func (b *Bool) AppendMultiShould(items []Item) *Bool { - if items == nil || len(items) == 0 { + if len(items) == 0 { return b } @@ -224,7 +224,7 @@ func (b *Bool) AppendMustNot(item Item) *Bool { func (b *Bool) AppendMultiMustNot(items []Item) *Bool { - if items == nil || len(items) == 0 { + if len(items) == 0 { return b } @@ -267,7 +267,7 @@ func NewMultiMatchPhrase(key string, val []string) []Item { var array []Item - if val == nil || len(val) == 0 { + if len(val) == 0 { return nil } @@ -307,7 +307,7 @@ func NewMultiMatchPhrasePrefix(key string, val []string) []Item { var array []Item - if val == nil || len(val) == 0 { + if len(val) == 0 { return nil } @@ -429,7 +429,7 @@ func NewMultiWildcard(key string, val []string) []Item { var array []Item - if val == nil || len(val) == 0 { + if len(val) == 0 { return nil } diff --git a/pkg/simple/client/kiali/client_test.go b/pkg/simple/client/kiali/client_test.go index d5290677f..2130b5132 100644 --- a/pkg/simple/client/kiali/client_test.go +++ b/pkg/simple/client/kiali/client_test.go @@ -117,6 +117,7 @@ func TestClient_Get(t *testing.T) { tt.fields.ServiceToken, tt.fields.Host, ) + //nolint:bodyclose gotResp, err := c.Get(tt.args.url) if (err != nil) != tt.wantErr { t.Errorf("Client.Get() error = %v, wantErr %v", err, tt.wantErr) diff --git a/pkg/simple/client/ldap/channel.go b/pkg/simple/client/ldap/channel.go index d826c5742..092a492fe 100644 --- a/pkg/simple/client/ldap/channel.go +++ b/pkg/simple/client/ldap/channel.go @@ -175,7 +175,6 @@ func (c *channelPool) Close() { for conn := range conns { conn.Close() } - return } func (c *channelPool) Len() int { return len(c.getConns()) } diff --git a/pkg/simple/client/ldap/conn.go b/pkg/simple/client/ldap/conn.go index 41189aa2b..854e70c5a 100644 --- a/pkg/simple/client/ldap/conn.go +++ b/pkg/simple/client/ldap/conn.go @@ -71,6 +71,7 @@ func (p *PoolConn) MarkUnusable() { p.unusable = true } +//nolint:unused func (p *PoolConn) autoClose(err error) { for _, code := range p.closeAt { if ldap.IsErrorWithCode(err, code) { diff --git a/pkg/simple/client/ldap/ldap.go b/pkg/simple/client/ldap/ldap.go index ece318de3..11361adfe 100644 --- a/pkg/simple/client/ldap/ldap.go +++ b/pkg/simple/client/ldap/ldap.go @@ -35,19 +35,15 @@ import ( ) const ( - ldapAttributeObjectClass = "objectClass" - ldapAttributeCommonName = "cn" - ldapAttributeSerialNumber = "sn" - ldapAttributeGlobalIDNumber = "gidNumber" - ldapAttributeHomeDirectory = "homeDirectory" - ldapAttributeUserID = "uid" - ldapAttributeUserIDNumber = "uidNumber" - ldapAttributeMail = "mail" - ldapAttributeUserPassword = "userPassword" - ldapAttributePreferredLanguage = "preferredLanguage" - ldapAttributeDescription = "description" - ldapAttributeCreateTimestamp = "createTimestamp" - ldapAttributeOrganizationUnit = "ou" + ldapAttributeObjectClass = "objectClass" + ldapAttributeCommonName = "cn" + ldapAttributeSerialNumber = "sn" + ldapAttributeUserID = "uid" + ldapAttributeMail = "mail" + ldapAttributeUserPassword = "userPassword" + ldapAttributeDescription = "description" + ldapAttributeCreateTimestamp = "createTimestamp" + ldapAttributeOrganizationUnit = "ou" // ldap create timestamp attribute layout ldapAttributeCreateTimestampLayout = "20060102150405Z" diff --git a/pkg/simple/client/logging/elasticsearch/elasticsearch.go b/pkg/simple/client/logging/elasticsearch/elasticsearch.go index 31a762e3b..b49cfe9a0 100644 --- a/pkg/simple/client/logging/elasticsearch/elasticsearch.go +++ b/pkg/simple/client/logging/elasticsearch/elasticsearch.go @@ -176,7 +176,7 @@ func (c *client) ExportLogs(sf logging.SearchFilter, w io.Writer) error { output := new(bytes.Buffer) for _, l := range data { - output.WriteString(fmt.Sprintf(`%s`, stringutils.StripAnsi(l))) + output.WriteString(stringutils.StripAnsi(l)) } _, err = io.Copy(w, output) if err != nil { diff --git a/pkg/simple/client/monitoring/metricsserver/metricsserver_test.go b/pkg/simple/client/monitoring/metricsserver/metricsserver_test.go index a6bfd0f8b..99b942499 100644 --- a/pkg/simple/client/monitoring/metricsserver/metricsserver_test.go +++ b/pkg/simple/client/monitoring/metricsserver/metricsserver_test.go @@ -532,7 +532,7 @@ func sortedResults(result []monitoring.Metric) []monitoring.Metric { metricValues := mr.MetricData.MetricValues length := len(metricValues) for i, mv := range metricValues { - podName, _ := mv.Metadata["pod"] + podName := mv.Metadata["pod"] if i == 0 && podName == "pod2" && length >= 2 { metricValues[0], metricValues[1] = metricValues[1], metricValues[0] } diff --git a/pkg/simple/client/monitoring/query_options.go b/pkg/simple/client/monitoring/query_options.go index 71e225202..66f8ef4e4 100644 --- a/pkg/simple/client/monitoring/query_options.go +++ b/pkg/simple/client/monitoring/query_options.go @@ -155,6 +155,7 @@ type ApplicationsOption struct { func (aso ApplicationsOption) Apply(o *QueryOptions) { // nothing should be done + //nolint:gosimple return } @@ -167,6 +168,7 @@ type OpenpitrixsOption struct { func (oso OpenpitrixsOption) Apply(o *QueryOptions) { // nothing should be done + //nolint:gosimple return } @@ -213,6 +215,7 @@ type ServicesOption struct { func (sso ServicesOption) Apply(o *QueryOptions) { // nothing should be done + //nolint:gosimple return } diff --git a/pkg/simple/client/monitoring/types.go b/pkg/simple/client/monitoring/types.go index 39276b86b..e987a2908 100644 --- a/pkg/simple/client/monitoring/types.go +++ b/pkg/simple/client/monitoring/types.go @@ -92,7 +92,6 @@ func (mv *MetricValue) TransferToExportedMetricValue() { } mv.Series = nil - return } func (p Point) Timestamp() float64 { diff --git a/pkg/simple/client/network/ippool/calico/options.go b/pkg/simple/client/network/ippool/calico/options.go index 60e6f08b1..11a7e1429 100644 --- a/pkg/simple/client/network/ippool/calico/options.go +++ b/pkg/simple/client/network/ippool/calico/options.go @@ -17,7 +17,7 @@ limitations under the License. package calico type Options struct { - IPIPMode string `json:"ipipMode,omityempty" yaml:"ipipMode,omityempty"` - VXLANMode string `json:"vxlanMode,omityempty" yaml:"vxlanMode,omityempty"` - NATOutgoing bool `json:"natOutgoing,omitempty" yaml:"natOutgoing,omityempty"` + IPIPMode string `json:"ipipMode,omitempty" yaml:"ipipMode,omitempty"` + VXLANMode string `json:"vxlanMode,omitempty" yaml:"vxlanMode,omitempty"` + NATOutgoing bool `json:"natOutgoing,omitempty" yaml:"natOutgoing,omitempty"` } diff --git a/pkg/simple/client/network/ippool/ipam/ipam.go b/pkg/simple/client/network/ippool/ipam/ipam.go index 19aeecc56..a661dfcc9 100644 --- a/pkg/simple/client/network/ippool/ipam/ipam.go +++ b/pkg/simple/client/network/ippool/ipam/ipam.go @@ -488,7 +488,7 @@ func (c IPAMClient) findUnclaimedBlock(pool *v1alpha1.IPPool) (*v1alpha1.IPAMBlo /// Build a map for faster lookups. exists := map[string]bool{} for _, e := range existingBlocks { - exists[fmt.Sprintf("%s", e.Spec.CIDR)] = true + exists[e.Spec.CIDR] = true } // Iterate through pools to find a new block. @@ -512,7 +512,7 @@ func (c IPAMClient) findUnclaimedBlock(pool *v1alpha1.IPPool) (*v1alpha1.IPAMBlo blocks := blockGenerator(pool) for subnet := blocks(); subnet != nil; subnet = blocks() { // Check if a block already exists for this subnet. - if _, ok := exists[fmt.Sprintf("%s", subnet.String())]; !ok { + if _, ok := exists[subnet.String()]; !ok { result = v1alpha1.NewBlock(pool, *subnet, nil) break } diff --git a/pkg/simple/client/network/ippool/options.go b/pkg/simple/client/network/ippool/options.go index 154eff150..b9324c026 100644 --- a/pkg/simple/client/network/ippool/options.go +++ b/pkg/simple/client/network/ippool/options.go @@ -21,5 +21,5 @@ import ( ) type Options struct { - Calico *calico.Options `json:"calico,omityempty" yaml:"calico,omityempty"` + Calico *calico.Options `json:"calico,omitempty" yaml:"calico,omitempty"` } diff --git a/pkg/simple/client/network/options.go b/pkg/simple/client/network/options.go index 2e646db9c..f8077554e 100644 --- a/pkg/simple/client/network/options.go +++ b/pkg/simple/client/network/options.go @@ -46,7 +46,7 @@ func NewNetworkOptions() *Options { } func (s *Options) IsEmpty() bool { - return s.EnableNetworkPolicy == false && + return !s.EnableNetworkPolicy && s.WeaveScopeHost == "" && s.IPPoolType == networkv1alpha1.IPPoolTypeNone } diff --git a/pkg/simple/client/notification/options.go b/pkg/simple/client/notification/options.go index 1db9794ef..3e04eea91 100644 --- a/pkg/simple/client/notification/options.go +++ b/pkg/simple/client/notification/options.go @@ -28,6 +28,7 @@ func NewNotificationOptions() *Options { func (s *Options) ApplyTo(options *Options) { if options == nil { + //nolint:staticcheck options = s return } diff --git a/pkg/simple/client/openpitrix/helmwrapper/helm_wrapper.go b/pkg/simple/client/openpitrix/helmwrapper/helm_wrapper.go index f3fae3416..7d350c5e2 100644 --- a/pkg/simple/client/openpitrix/helmwrapper/helm_wrapper.go +++ b/pkg/simple/client/openpitrix/helmwrapper/helm_wrapper.go @@ -78,7 +78,7 @@ func (c *helmWrapper) IsReleaseReady(waitTime time.Duration) (bool, error) { return false, err } client := c.helmConf.KubeClient - resources, err := client.Build(bytes.NewBufferString(manifest), true) + resources, _ := client.Build(bytes.NewBufferString(manifest), true) err = client.Wait(resources, waitTime) @@ -95,7 +95,6 @@ func (c *helmWrapper) IsReleaseReady(waitTime time.Duration) (bool, error) { func (c *helmWrapper) Status() (*helmrelease.Release, error) { helmStatus := action.NewStatus(c.helmConf) - rel, err := helmStatus.Run(c.ReleaseName) if err != nil { if err.Error() == StatusNotFoundFormat { @@ -272,7 +271,7 @@ func (c *helmWrapper) createChart(chartName, chartData, values string) error { func (c *helmWrapper) Uninstall() error { start := time.Now() defer func() { - klog.V(2).Infof("run command end, namespace: %s, name: %s elapsed: %v", c.Namespace, c.ReleaseName, time.Now().Sub(start)) + klog.V(2).Infof("run command end, namespace: %s, name: %s elapsed: %v", c.Namespace, c.ReleaseName, time.Since(start)) }() uninstall := action.NewUninstall(c.helmConf) @@ -367,7 +366,7 @@ func (c *helmWrapper) writeAction(chartName, chartData, values string, upgrade b if klog.V(2) { start := time.Now() defer func() { - klog.V(2).Infof("run command end, namespace: %s, name: %s, upgrade: %t, elapsed: %v", c.Namespace, c.ReleaseName, upgrade, time.Now().Sub(start)) + klog.V(2).Infof("run command end, namespace: %s, name: %s, upgrade: %t, elapsed: %v", c.Namespace, c.ReleaseName, upgrade, time.Since(start)) }() } diff --git a/pkg/simple/client/sonarqube/interface.go b/pkg/simple/client/sonarqube/interface.go index 4fbc0cf8a..5dbfdb779 100644 --- a/pkg/simple/client/sonarqube/interface.go +++ b/pkg/simple/client/sonarqube/interface.go @@ -81,7 +81,7 @@ func (s *sonarQube) GetSonarResultsByTaskIds(taskIds ...string) ([]*SonarStatus, S: "FILE_LINE", Facets: "severities,types", } - issuesSearch, _, err := s.client.Issues.Search(issuesSearchOption) + issuesSearch, _, _ := s.client.Issues.Search(issuesSearchOption) sonarStatus.Issues = issuesSearch sonarStatuses = append(sonarStatuses, sonarStatus) } diff --git a/pkg/utils/idutils/id_utils.go b/pkg/utils/idutils/id_utils.go index 42c4a9967..99f38befd 100644 --- a/pkg/utils/idutils/id_utils.go +++ b/pkg/utils/idutils/id_utils.go @@ -28,6 +28,8 @@ import ( ) var sf *sonyflake.Sonyflake + +//nolint:unused var upperMachineID uint16 func init() { diff --git a/pkg/utils/metrics/metrics.go b/pkg/utils/metrics/metrics.go index a2f9c669e..97a310b72 100644 --- a/pkg/utils/metrics/metrics.go +++ b/pkg/utils/metrics/metrics.go @@ -62,7 +62,9 @@ func (m DefaultMetrics) Install(c *restful.Container) { } func (m DefaultMetrics) registerMetrics() { + //nolint:staticcheck RawMustRegister(prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{})) + //nolint:staticcheck RawMustRegister(prometheus.NewGoCollector()) } diff --git a/pkg/utils/reposcache/repo_cahes.go b/pkg/utils/reposcache/repo_cahes.go index e12ee44d3..2f878980e 100644 --- a/pkg/utils/reposcache/repo_cahes.go +++ b/pkg/utils/reposcache/repo_cahes.go @@ -20,10 +20,6 @@ package reposcache import ( "context" "errors" - "fmt" - "io/ioutil" - "os" - "path" "strings" "sync" @@ -130,20 +126,6 @@ func (c *cachedRepos) deleteRepo(repo *v1alpha1.HelmRepo) { } } -func loadBuiltinChartData(name, version string) ([]byte, error) { - fName := path.Join(WorkDir, "chart", fmt.Sprintf("%s-%s.tgz", name, version)) - f, err := os.Open(fName) - if err != nil { - return nil, err - } - data, err := ioutil.ReadAll(f) - if err != nil { - klog.Errorf("read index failed, error: %s", err) - return nil, err - } - return data, nil -} - func (c *cachedRepos) DeleteRepo(repo *v1alpha1.HelmRepo) error { c.Lock() defer c.Unlock() diff --git a/pkg/utils/resourceparse/resource_parse.go b/pkg/utils/resourceparse/resource_parse.go index 9b2772016..720223781 100644 --- a/pkg/utils/resourceparse/resource_parse.go +++ b/pkg/utils/resourceparse/resource_parse.go @@ -32,7 +32,7 @@ func Parse(reader io.Reader, namespace, rlsName string, local bool) ([]*resource klog.Infof("parse resources, namespace: %s, release: %s", namespace, rlsName) start := time.Now() defer func() { - klog.Infof("parse resources end, namespace: %s, release: %s, cost: %v", namespace, rlsName, time.Now().Sub(start)) + klog.Infof("parse resources end, namespace: %s, release: %s, cost: %v", namespace, rlsName, time.Since(start)) }() } @@ -41,7 +41,7 @@ func Parse(reader io.Reader, namespace, rlsName string, local bool) ([]*resource f := cmdutil.NewFactory(matchVersionKubeConfigFlags) builder := f.NewBuilder().Unstructured().NamespaceParam(namespace).ContinueOnError().Stream(reader, rlsName).Flatten() - if local == true { + if local { builder = builder.Local() } r := builder.Do() @@ -50,7 +50,7 @@ func Parse(reader io.Reader, namespace, rlsName string, local bool) ([]*resource return nil, err } - if local == false { + if !local { for i := range infos { infos[i].Namespace = namespace err := infos[i].Get() diff --git a/staging/src/kubesphere.io/api/cluster/v1alpha1/openapi_generated.go b/staging/src/kubesphere.io/api/cluster/v1alpha1/openapi_generated.go index c6b2320d2..d38039921 100644 --- a/staging/src/kubesphere.io/api/cluster/v1alpha1/openapi_generated.go +++ b/staging/src/kubesphere.io/api/cluster/v1alpha1/openapi_generated.go @@ -1,4 +1,3 @@ -//go:build !ignore_autogenerated // +build !ignore_autogenerated /* diff --git a/staging/src/kubesphere.io/api/devops/v1alpha1/openapi_generated.go b/staging/src/kubesphere.io/api/devops/v1alpha1/openapi_generated.go index 843d895df..d6e8d9f49 100644 --- a/staging/src/kubesphere.io/api/devops/v1alpha1/openapi_generated.go +++ b/staging/src/kubesphere.io/api/devops/v1alpha1/openapi_generated.go @@ -1,4 +1,3 @@ -//go:build !ignore_autogenerated // +build !ignore_autogenerated /* diff --git a/staging/src/kubesphere.io/api/devops/v1alpha3/openapi_generated.go b/staging/src/kubesphere.io/api/devops/v1alpha3/openapi_generated.go index 98e058043..a4af4c317 100644 --- a/staging/src/kubesphere.io/api/devops/v1alpha3/openapi_generated.go +++ b/staging/src/kubesphere.io/api/devops/v1alpha3/openapi_generated.go @@ -1,4 +1,3 @@ -//go:build !ignore_autogenerated // +build !ignore_autogenerated /* diff --git a/staging/src/kubesphere.io/api/network/v1alpha1/openapi_generated.go b/staging/src/kubesphere.io/api/network/v1alpha1/openapi_generated.go index 27b9a168d..33e77053b 100644 --- a/staging/src/kubesphere.io/api/network/v1alpha1/openapi_generated.go +++ b/staging/src/kubesphere.io/api/network/v1alpha1/openapi_generated.go @@ -1,4 +1,3 @@ -//go:build !ignore_autogenerated // +build !ignore_autogenerated /* diff --git a/staging/src/kubesphere.io/api/servicemesh/v1alpha2/openapi_generated.go b/staging/src/kubesphere.io/api/servicemesh/v1alpha2/openapi_generated.go index 2efcfd414..8592b77eb 100644 --- a/staging/src/kubesphere.io/api/servicemesh/v1alpha2/openapi_generated.go +++ b/staging/src/kubesphere.io/api/servicemesh/v1alpha2/openapi_generated.go @@ -1,4 +1,3 @@ -//go:build !ignore_autogenerated // +build !ignore_autogenerated /* diff --git a/staging/src/kubesphere.io/api/tenant/v1alpha1/openapi_generated.go b/staging/src/kubesphere.io/api/tenant/v1alpha1/openapi_generated.go index f0de7f3ad..a28e755d1 100644 --- a/staging/src/kubesphere.io/api/tenant/v1alpha1/openapi_generated.go +++ b/staging/src/kubesphere.io/api/tenant/v1alpha1/openapi_generated.go @@ -1,4 +1,3 @@ -//go:build !ignore_autogenerated // +build !ignore_autogenerated /* diff --git a/test/e2e/framework/iam/utils.go b/test/e2e/framework/iam/utils.go index a833be6cf..8eec5bc4c 100644 --- a/test/e2e/framework/iam/utils.go +++ b/test/e2e/framework/iam/utils.go @@ -17,10 +17,6 @@ limitations under the License. package iam import ( - "context" - "fmt" - - "golang.org/x/oauth2" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/rest" "kubesphere.io/client-go/client" @@ -53,13 +49,3 @@ func NewRestClient(user, passsword string) (*restclient.RestClient, error) { return restclient.NewForConfig(config) } - -func getToken(host, user, password string) (*oauth2.Token, error) { - config := &oauth2.Config{ - Endpoint: oauth2.Endpoint{ - TokenURL: fmt.Sprintf("%s/oauth/token", host), - AuthStyle: oauth2.AuthStyleInParams, - }, - } - return config.PasswordCredentialsToken(context.TODO(), user, password) -} diff --git a/test/e2e/framework/workspace/fixtures.go b/test/e2e/framework/workspace/fixtures.go index 5784467b9..5883c2ba9 100644 --- a/test/e2e/framework/workspace/fixtures.go +++ b/test/e2e/framework/workspace/fixtures.go @@ -38,10 +38,8 @@ func NewWorkspaceTemplate(name string, manager string, hosts ...string) *tenantv clusters := []fedb1.GenericClusterReference{} - if hosts != nil { - for _, h := range hosts { - clusters = append(clusters, fedb1.GenericClusterReference{Name: h}) - } + for _, h := range hosts { + clusters = append(clusters, fedb1.GenericClusterReference{Name: h}) } return &tenantv1alpha2.WorkspaceTemplate{ diff --git a/tools/cmd/doc-gen/main.go b/tools/cmd/doc-gen/main.go index 58d27c1f0..88af7ba6b 100644 --- a/tools/cmd/doc-gen/main.go +++ b/tools/cmd/doc-gen/main.go @@ -17,14 +17,12 @@ limitations under the License. package main import ( - "bytes" "encoding/json" "flag" "fmt" "io/ioutil" "log" - "github.com/emicklei/go-restful" restfulspec "github.com/emicklei/go-restful-openapi" "github.com/go-openapi/loads" "github.com/go-openapi/spec" @@ -127,8 +125,8 @@ func generateSwaggerJson() []byte { urlruntime.Must(operationsv1alpha2.AddToContainer(container, clientsets.Kubernetes())) urlruntime.Must(resourcesv1alpha2.AddToContainer(container, clientsets.Kubernetes(), informerFactory, "")) urlruntime.Must(resourcesv1alpha3.AddToContainer(container, informerFactory, nil)) - urlruntime.Must(tenantv1alpha2.AddToContainer(container, informerFactory, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)) - urlruntime.Must(tenantv1alpha3.AddToContainer(container, informerFactory, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)) + urlruntime.Must(tenantv1alpha2.AddToContainer(container, informerFactory, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)) + urlruntime.Must(tenantv1alpha3.AddToContainer(container, informerFactory, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)) urlruntime.Must(terminalv1alpha2.AddToContainer(container, clientsets.Kubernetes(), nil, nil, nil)) urlruntime.Must(metricsv1alpha2.AddToContainer(nil, container, clientsets.Kubernetes(), nil)) urlruntime.Must(networkv1alpha2.AddToContainer(container, "")) @@ -257,7 +255,7 @@ func generateSwaggerJson() []byte { }) data, _ := json.MarshalIndent(swagger, "", " ") - err := ioutil.WriteFile(output, data, 420) + err := ioutil.WriteFile(output, data, 0644) if err != nil { log.Fatal(err) } @@ -294,13 +292,3 @@ func enrichSwaggerObject(swo *spec.Swagger) { } swo.Security = []map[string][]string{{"jwt": []string{}}} } - -func apiTree(container *restful.Container) { - buf := bytes.NewBufferString("\n") - for _, ws := range container.RegisteredWebServices() { - for _, route := range ws.Routes() { - buf.WriteString(fmt.Sprintf("%s %s\n", route.Method, route.Path)) - } - } - log.Println(buf.String()) -}