From 8d8d94978bc4e7dd1e3a90c857c3e38e51755659 Mon Sep 17 00:00:00 2001 From: WillardHu Date: Fri, 17 Jan 2025 10:53:52 +0800 Subject: [PATCH] Update client generation tools, remove k8s dependency, fix lint issues Signed-off-by: WillardHu --- .github/workflows/main.yaml | 14 +-- .golangci.yml | 56 ++++++++++-- build/gm/Dockerfile | 4 +- build/lc/Dockerfile | 4 +- hack/generate-groups.sh | 27 ++++-- hack/make-rules/lint.sh | 2 +- hack/update-codegen.sh | 30 +++--- hack/update-vendor-licenses.sh | 50 ++++------ hack/update-vendor.sh | 1 + hack/verify-vendor.sh | 4 +- .../sedna/v1alpha1/zz_generated.deepcopy.go | 1 + pkg/client/clientset/versioned/clientset.go | 41 +++++++-- pkg/client/clientset/versioned/doc.go | 20 ---- .../versioned/fake/clientset_generated.go | 5 +- .../clientset/versioned/fake/register.go | 14 +-- .../clientset/versioned/scheme/register.go | 14 +-- .../typed/sedna/v1alpha1/fake/fake_dataset.go | 7 +- .../fake/fake_featureextractionservice.go | 7 +- .../fake/fake_federatedlearningjob.go | 7 +- .../fake/fake_incrementallearningjob.go | 7 +- .../fake/fake_jointinferenceservice.go | 7 +- .../v1alpha1/fake/fake_lifelonglearningjob.go | 7 +- .../typed/sedna/v1alpha1/fake/fake_model.go | 7 +- .../v1alpha1/fake/fake_objectsearchservice.go | 7 +- .../fake/fake_objecttrackingservice.go | 7 +- .../typed/sedna/v1alpha1/fake/fake_reidjob.go | 7 +- .../v1alpha1/fake/fake_videoanalyticsjob.go | 7 +- .../typed/sedna/v1alpha1/sedna_client.go | 20 +++- .../informers/externalversions/factory.go | 91 ++++++++++++++++++- .../featureextractionservice.go | 3 +- .../federatedlearning/federatedlearningjob.go | 6 +- .../incrementallearningjob.go | 3 +- .../jointinference/jointinferenceservice.go | 3 +- .../lifelonglearning/lifelonglearningjob.go | 3 +- .../controllers/lifelonglearning/upstream.go | 4 +- .../objectsearch/objectsearchservice.go | 3 +- pkg/globalmanager/controllers/reid/reidjob.go | 6 +- .../videoanalytics/videoanalyticsjob.go | 6 +- pkg/globalmanager/runtime/worker.go | 5 +- .../incrementallearningjob.go | 4 +- pkg/localcontroller/server/server.go | 2 +- test/e2e/framework/framework.go | 2 +- test/e2e/framework/log.go | 8 +- vendor/gorm.io/gorm/License | 21 ----- 44 files changed, 327 insertions(+), 227 deletions(-) delete mode 100644 pkg/client/clientset/versioned/doc.go delete mode 100644 vendor/gorm.io/gorm/License diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b6ac18a6b..83c464892 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -21,7 +21,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.16.x + go-version: 1.22.9 - name: Checkout code uses: actions/checkout@v2 @@ -57,7 +57,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.16.x + go-version: 1.22.9 - uses: actions/cache@v2 with: @@ -78,7 +78,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.16.x + go-version: 1.22.9 - uses: actions/cache@v2 with: @@ -102,7 +102,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.16.x + go-version: 1.22.9 - uses: actions/cache@v2 with: @@ -114,7 +114,7 @@ jobs: # since this ubuntu-latest os has already kind/kubectl/jq(see https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2004-Readme.md), # but kind v0.19.0 has different api with v0.18.0, so here to reinstall kind v0.18.0 sudo apt-get install -y jq - go get sigs.k8s.io/kind@$(curl -s https://api.github.com/repos/kubernetes-sigs/kind/releases/97518847 | jq -r .tag_name) + go install sigs.k8s.io/kind@$(curl -s https://api.github.com/repos/kubernetes-sigs/kind/releases/97518847 | jq -r .tag_name) kind version type kubectl || { curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl @@ -137,7 +137,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.16.x + go-version: 1.22.9 - uses: actions/cache@v2 with: @@ -158,7 +158,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.16.x + go-version: 1.22.9 - uses: actions/cache@v2 with: diff --git a/.golangci.yml b/.golangci.yml index 88791b05b..5f95a3ed8 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -12,21 +12,49 @@ run: # exit code when at least one issue was found, default is 1 issues-exit-code: 1 - # which dirs to skip: issues from them won't be reported; - # can use regexp here: generated.*, regexp is applied on full path; - # default value is empty list, but default dirs are skipped independently - # from this option's value (see skip-dirs-use-default). - # "/" will be replaced by current OS file path separator to properly work - # on Windows. - skip-dirs: +issues: + # Which dirs to exclude: issues from them won't be reported. + # Can use regexp here: `generated.*`, regexp is applied on full path, + # including the path prefix if one is set. + # Default dirs are skipped independently of this option's value (see exclude-dirs-use-default). + # "/" will be replaced by current OS file path separator to properly work on Windows. + # Default: [] + exclude-dirs: - vendor - fake - externalversions + exclude-dirs-use-default: true # output configuration options output: - # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number" - format: colored-line-number + # The formats used to render issues. + # Formats: + # - `colored-line-number` + # - `line-number` + # - `json` + # - `colored-tab` + # - `tab` + # - `html` + # - `checkstyle` + # - `code-climate` + # - `junit-xml` + # - `junit-xml-extended` + # - `github-actions` + # - `teamcity` + # - `sarif` + # Output path can be either `stdout`, `stderr` or path to the file to write to. + # + # For the CLI flag (`--out-format`), multiple formats can be specified by separating them by comma. + # The output can be specified for each of them by separating format name and path by colon symbol. + # Example: "--out-format=checkstyle:report.xml,json:stdout,colored-line-number" + # The CLI flag (`--out-format`) override the configuration file. + # + # Default: + # formats: + # - format: colored-line-number + # path: stdout + formats: + - format: colored-line-number # print lines of code with issue, default is true print-issued-lines: true @@ -41,13 +69,21 @@ linters-settings: misspell: ignore-words: - mosquitto + revive: + rules: + - name: unused-parameter + severity: warning + disabled: true + - name: unused-receiver + severity: warning + disabled: true linters: disable-all: true enable: - goconst - gofmt - - golint + - revive - gosimple - govet - misspell diff --git a/build/gm/Dockerfile b/build/gm/Dockerfile index 3b31fda9f..73d7aea01 100644 --- a/build/gm/Dockerfile +++ b/build/gm/Dockerfile @@ -14,7 +14,7 @@ # Add cross buildx improvement # _speed_buildx_for_go_ -FROM golang:1.16-alpine3.15 AS builder +FROM golang:1.22.9-alpine3.19 AS builder LABEL stage=builder ARG GO_LDFLAGS @@ -31,7 +31,7 @@ RUN make build WHAT=gm GO_LDFLAGS=$GO_LDFLAGS OUT_DIR=_output # ALT: just using go build # RUN CGO_ENABLED=0 go build -o _output/bin/sedna-gm -ldflags "$GO_LDFLAGS -w -s" cmd/sedna-gm/sedna-gm.go -FROM alpine:3.11 +FROM alpine:3.19 COPY --from=builder /code/_output/bin/sedna-gm /usr/local/bin/sedna-gm diff --git a/build/lc/Dockerfile b/build/lc/Dockerfile index 71b4f7aae..b6bceeffb 100644 --- a/build/lc/Dockerfile +++ b/build/lc/Dockerfile @@ -15,7 +15,7 @@ # Add cross buildx improvement # LC has built sqlite3 which requires CGO with CGO_ENABLED=1 # _speed_buildx_for_cgo_alpine_ -FROM golang:1.16-alpine3.15 AS builder +FROM golang:1.22.9-alpine3.19 AS builder LABEL stage=builder ARG GO_LDFLAGS @@ -30,7 +30,7 @@ COPY . . RUN make build WHAT=lc GO_LDFLAGS=$GO_LDFLAGS OUT_DIR=_output -FROM alpine:3.11 +FROM alpine:3.19 COPY --from=builder /code/_output/bin/sedna-lc /usr/local/bin/sedna-lc diff --git a/hack/generate-groups.sh b/hack/generate-groups.sh index fa89d3c70..6bc94368e 100755 --- a/hack/generate-groups.sh +++ b/hack/generate-groups.sh @@ -47,7 +47,7 @@ shift 4 # To support running this script from anywhere, we have to first cd into this directory # so we can install the tools. cd "$(dirname "${0}")" - GO111MODULE=on go install k8s.io/code-generator/cmd/{defaulter-gen,client-gen,lister-gen,informer-gen,deepcopy-gen} + GOFLAGS=-mod=vendor go install k8s.io/code-generator/cmd/{defaulter-gen,client-gen,lister-gen,informer-gen,deepcopy-gen} ) function codegen::join() { local IFS="$1"; shift; echo "$*"; } @@ -65,25 +65,34 @@ done if [ "${GENS}" = "all" ] || grep -qw "deepcopy" <<<"${GENS}"; then echo "Generating deepcopy funcs" - "${GOPATH}/bin/deepcopy-gen" --input-dirs "$(codegen::join , "${FQ_APIS[@]}")" -O zz_generated.deepcopy --bounding-dirs "${APIS_PKG}" "$@" + "${GOPATH}/bin/deepcopy-gen" --output-file zz_generated.deepcopy.go "${FQ_APIS[@]}" "$@" fi if [ "${GENS}" = "all" ] || grep -qw "client" <<<"${GENS}"; then echo "Generating clientset for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}" - "${GOPATH}/bin/client-gen" --clientset-name "${CLIENTSET_NAME_VERSIONED:-versioned}" --input-base "" --input "$(codegen::join , "${FQ_APIS[@]}")" --output-package "${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}" "$@" + "${GOPATH}/bin/client-gen" \ + --clientset-name "${CLIENTSET_NAME_VERSIONED:-versioned}" \ + --input-base "" \ + --input "$(codegen::join , "${FQ_APIS[@]}")" \ + --output-pkg "${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}" \ + --output-dir "pkg/client/${CLIENTSET_PKG_NAME:-clientset}" \ + "$@" fi if [ "${GENS}" = "all" ] || grep -qw "lister" <<<"${GENS}"; then echo "Generating listers for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/listers" - "${GOPATH}/bin/lister-gen" --input-dirs "$(codegen::join , "${FQ_APIS[@]}")" --output-package "${OUTPUT_PKG}/listers" "$@" + "${GOPATH}/bin/lister-gen" \ + --output-pkg "${OUTPUT_PKG}/listers" "$@" \ + --output-dir "pkg/client/listers" \ + "${FQ_APIS[@]}" "$@" fi if [ "${GENS}" = "all" ] || grep -qw "informer" <<<"${GENS}"; then echo "Generating informers for ${GROUPS_WITH_VERSIONS} at ${OUTPUT_PKG}/informers" "${GOPATH}/bin/informer-gen" \ - --input-dirs "$(codegen::join , "${FQ_APIS[@]}")" \ - --versioned-clientset-package "${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}/${CLIENTSET_NAME_VERSIONED:-versioned}" \ - --listers-package "${OUTPUT_PKG}/listers" \ - --output-package "${OUTPUT_PKG}/informers" \ - "$@" + --versioned-clientset-package "${OUTPUT_PKG}/${CLIENTSET_PKG_NAME:-clientset}/${CLIENTSET_NAME_VERSIONED:-versioned}" \ + --listers-package "${OUTPUT_PKG}/listers" \ + --output-pkg "${OUTPUT_PKG}/informers" \ + --output-dir "pkg/client/informers" \ + "${FQ_APIS[@]}" "$@" fi diff --git a/hack/make-rules/lint.sh b/hack/make-rules/lint.sh index 2244d2f42..a7bbf7d25 100755 --- a/hack/make-rules/lint.sh +++ b/hack/make-rules/lint.sh @@ -26,7 +26,7 @@ export PATH=$PATH:$(go env GOPATH)/bin install_golangci-lint() { echo "installing golangci-lint." - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.34.1 + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.54.2 if [[ $? -ne 0 ]]; then echo "failed to install golangci-lint, exiting." exit 1 diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh index 2f9c32083..746fb460d 100755 --- a/hack/update-codegen.sh +++ b/hack/update-codegen.sh @@ -23,20 +23,20 @@ SEDNA_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" source ${SEDNA_ROOT}/hack/lib/init.sh ${SEDNA_ROOT}/hack/generate-groups.sh "deepcopy,client,informer,lister" \ -${SEDNA_GO_PACKAGE}/pkg/client ${SEDNA_GO_PACKAGE}/pkg/apis \ -"sedna:v1alpha1" \ ---go-header-file ${SEDNA_ROOT}/hack/boilerplate/boilerplate.generatego.txt + ${SEDNA_GO_PACKAGE}/pkg/client ${SEDNA_GO_PACKAGE}/pkg/apis \ + "sedna:v1alpha1" \ + --go-header-file ${SEDNA_ROOT}/hack/boilerplate/boilerplate.generatego.txt # Check if Sedna home is different from the standard directory where GO projects are located -if ! [[ "${GOPATH}/src/${SEDNA_GO_PACKAGE}/" -ef "${SEDNA_ROOT}/" ]]; then - # Copy generated code into SEDNA_ROOT - echo "Warning: ${SEDNA_ROOT} not included in $GOPATH which is required by code-gen" - echo "Moving generated code from ${GOPATH}/src/${SEDNA_GO_PACKAGE}/pkg/ to ${SEDNA_ROOT}/" - rsync -a ${GOPATH}/src/${SEDNA_GO_PACKAGE}/pkg/{client,apis} ${SEDNA_ROOT}/pkg - if [ $? -eq 0 ]; then - echo "Copy successful!" - rm -rf ${GOPATH}/src/${SEDNA_GO_PACKAGE}/pkg/{client,apis} - else - echo "Error during copy of the generated code!" >&2 - fi -fi \ No newline at end of file +# if ! [[ "${GOPATH}/src/${SEDNA_GO_PACKAGE}/" -ef "${SEDNA_ROOT}/" ]]; then +# # Copy generated code into SEDNA_ROOT +# echo "Warning: ${SEDNA_ROOT} not included in $GOPATH which is required by code-gen" +# echo "Moving generated code from ${GOPATH}/src/${SEDNA_GO_PACKAGE}/pkg/ to ${SEDNA_ROOT}/" +# rsync -a ${GOPATH}/src/${SEDNA_GO_PACKAGE}/pkg/{client,apis} ${SEDNA_ROOT}/pkg +# if [ $? -eq 0 ]; then +# echo "Copy successful!" +# rm -rf ${GOPATH}/src/${SEDNA_GO_PACKAGE}/pkg/{client,apis} +# else +# echo "Error during copy of the generated code!" >&2 +# fi +# fi \ No newline at end of file diff --git a/hack/update-vendor-licenses.sh b/hack/update-vendor-licenses.sh index f46fd2534..42d16fcae 100755 --- a/hack/update-vendor-licenses.sh +++ b/hack/update-vendor-licenses.sh @@ -31,15 +31,14 @@ # KubeEdge Authors: # - File derived from kubernetes v1.19.0-beta.2 # - Changed KUBE_ROOT value to use absolute path -# - skip license for k8s.io/klog set -o errexit set -o nounset set -o pipefail -KUBE_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" -source "${KUBE_ROOT}/hack/lib/util.sh" +KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. +source "${KUBE_ROOT}/hack/lib/init.sh" export LANG=C export LC_ALL=C @@ -143,7 +142,7 @@ process_content () { ############################################################################# export GO111MODULE=on -export GOFLAGS=-mod=mod +export GOFLAGS=-mod=readonly # Check bash version if (( BASH_VERSINFO[0] < 4 )); then @@ -165,7 +164,7 @@ cd "${LICENSE_ROOT}" kube::util::ensure-temp-dir -# Save the genreated LICENSE file for each package temporarily +# Save the generated LICENSE file for each package temporarily TMP_LICENSE_FILE="${KUBE_TEMP}/LICENSES.$$" # The directory to save all the LICENSE files @@ -183,7 +182,7 @@ declare -Ag CONTENT if [ -f "${LICENSE_ROOT}/LICENSE" ]; then ( echo "================================================================================" - echo "= Sedna licensed under: =" + echo "= KubeEdge licensed under: =" echo cat "${LICENSE_ROOT}/LICENSE" echo @@ -193,8 +192,10 @@ if [ -f "${LICENSE_ROOT}/LICENSE" ]; then mv "${TMP_LICENSE_FILE}" "${TMP_LICENSES_DIR}/LICENSE" fi +# Capture all module dependencies +modules=$(go list -m -json all | jq -r .Path | sort -f) # Loop through every vendored package -for PACKAGE in $(go list -m -json all | jq -r .Path | sort -f); do +for PACKAGE in ${modules}; do if [[ -e "staging/src/${PACKAGE}" ]]; then echo "${PACKAGE} is a staging package, skipping" >&2 continue @@ -203,34 +204,15 @@ for PACKAGE in $(go list -m -json all | jq -r .Path | sort -f); do echo "${PACKAGE} doesn't exist in ${DEPS_DIR}, skipping" >&2 continue fi - if [[ "${PACKAGE}" = "sigs.k8s.io/structured-merge-diff" ]]; then - # this package doesn't exist, but has v3 subdirectory as a different package - # so it can't be filtered by the previous rule - # temporarily treat this way until find out a better rule - echo "${PACKAGE}, temporarily skipping" >&2 - continue - fi - if [[ "${PACKAGE}" = "github.com/cespare/xxhash" ]]; then - # there are 2 versions v1 and v2 under 2 folders indirectly used - # so it can't be filtered by the previous rule - # temporarily treat this way until find out a better rule - echo "${PACKAGE}, temporarily skipping" >&2 - continue - fi - if [[ "${PACKAGE}" = "k8s.io/klog" ]]; then - # this package doesn't use, but has v2 subdirectory as a different package - # so it can't be filtered by the previous rule - # temporarily treat this way until find out a better rule - echo "${PACKAGE}, temporarily skipping" >&2 - continue - fi - if [[ "${PACKAGE}" = "github.com/emicklei/go-restful" ]]; then - # this package doesn't use, but has v3 subdirectory as a different package - # so it can't be filtered by the previous rule - # temporarily treat this way until find out a better rule - echo "${PACKAGE}, temporarily skipping" >&2 - continue + # if there are no files vendored under this package... + if [[ -z "$(find "${DEPS_DIR}/${PACKAGE}" -mindepth 1 -maxdepth 1 -type f)" ]]; then + # and we have at least the same number of submodules as subdirectories... + if [[ "$(find "${DEPS_DIR}/${PACKAGE}/" -mindepth 1 -maxdepth 1 -type d | wc -l)" -le "$(echo "${modules}" | grep -cE "^${PACKAGE}/")" ]]; then + echo "Only submodules of ${PACKAGE} are vendored, skipping" >&2 + continue + fi fi + echo "${PACKAGE}" process_content "${PACKAGE}" LICENSE diff --git a/hack/update-vendor.sh b/hack/update-vendor.sh index 2a0ce92d0..365e79310 100755 --- a/hack/update-vendor.sh +++ b/hack/update-vendor.sh @@ -4,6 +4,7 @@ set -o errexit set -o nounset set -o pipefail + echo "running 'go mod tidy'" go mod tidy diff --git a/hack/verify-vendor.sh b/hack/verify-vendor.sh index d9881c844..6677246cc 100755 --- a/hack/verify-vendor.sh +++ b/hack/verify-vendor.sh @@ -8,7 +8,9 @@ SEDNA_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" UPDATE_SCRIPT=hack/update-vendor.sh ${SEDNA_ROOT}/${UPDATE_SCRIPT} - + +git status + if git status --short 2>/dev/null | grep -qE 'go\.mod|go\.sum|vendor/'; then echo "FAILED: vendor verify failed." >&2 echo "Please run the command to update your vendor directories: $UPDATE_SCRIPT" >&2 diff --git a/pkg/apis/sedna/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/sedna/v1alpha1/zz_generated.deepcopy.go index 92cbe5017..d797b6a23 100644 --- a/pkg/apis/sedna/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/sedna/v1alpha1/zz_generated.deepcopy.go @@ -1,3 +1,4 @@ +//go:build !ignore_autogenerated // +build !ignore_autogenerated /* diff --git a/pkg/client/clientset/versioned/clientset.go b/pkg/client/clientset/versioned/clientset.go index ad5d1f11d..451419d86 100644 --- a/pkg/client/clientset/versioned/clientset.go +++ b/pkg/client/clientset/versioned/clientset.go @@ -20,6 +20,7 @@ package versioned import ( "fmt" + "net/http" sednav1alpha1 "github.com/kubeedge/sedna/pkg/client/clientset/versioned/typed/sedna/v1alpha1" discovery "k8s.io/client-go/discovery" @@ -32,8 +33,7 @@ type Interface interface { SednaV1alpha1() sednav1alpha1.SednaV1alpha1Interface } -// Clientset contains the clients for groups. Each group has exactly one -// version included in a Clientset. +// Clientset contains the clients for groups. type Clientset struct { *discovery.DiscoveryClient sednaV1alpha1 *sednav1alpha1.SednaV1alpha1Client @@ -55,22 +55,45 @@ func (c *Clientset) Discovery() discovery.DiscoveryInterface { // NewForConfig creates a new Clientset for the given config. // If config's RateLimiter is not set and QPS and Burst are acceptable, // NewForConfig will generate a rate-limiter in configShallowCopy. +// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient), +// where httpClient was generated with rest.HTTPClientFor(c). func NewForConfig(c *rest.Config) (*Clientset, error) { configShallowCopy := *c + + if configShallowCopy.UserAgent == "" { + configShallowCopy.UserAgent = rest.DefaultKubernetesUserAgent() + } + + // share the transport between all clients + httpClient, err := rest.HTTPClientFor(&configShallowCopy) + if err != nil { + return nil, err + } + + return NewForConfigAndClient(&configShallowCopy, httpClient) +} + +// NewForConfigAndClient creates a new Clientset for the given config and http client. +// Note the http client provided takes precedence over the configured transport values. +// If config's RateLimiter is not set and QPS and Burst are acceptable, +// NewForConfigAndClient will generate a rate-limiter in configShallowCopy. +func NewForConfigAndClient(c *rest.Config, httpClient *http.Client) (*Clientset, error) { + configShallowCopy := *c if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { if configShallowCopy.Burst <= 0 { return nil, fmt.Errorf("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0") } configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) } + var cs Clientset var err error - cs.sednaV1alpha1, err = sednav1alpha1.NewForConfig(&configShallowCopy) + cs.sednaV1alpha1, err = sednav1alpha1.NewForConfigAndClient(&configShallowCopy, httpClient) if err != nil { return nil, err } - cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy) + cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfigAndClient(&configShallowCopy, httpClient) if err != nil { return nil, err } @@ -80,11 +103,11 @@ func NewForConfig(c *rest.Config) (*Clientset, error) { // NewForConfigOrDie creates a new Clientset for the given config and // panics if there is an error in the config. func NewForConfigOrDie(c *rest.Config) *Clientset { - var cs Clientset - cs.sednaV1alpha1 = sednav1alpha1.NewForConfigOrDie(c) - - cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) - return &cs + cs, err := NewForConfig(c) + if err != nil { + panic(err) + } + return cs } // New creates a new Clientset for the given RESTClient. diff --git a/pkg/client/clientset/versioned/doc.go b/pkg/client/clientset/versioned/doc.go deleted file mode 100644 index 50cc25fd6..000000000 --- a/pkg/client/clientset/versioned/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The KubeEdge Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// This package has the automatically generated clientset. -package versioned diff --git a/pkg/client/clientset/versioned/fake/clientset_generated.go b/pkg/client/clientset/versioned/fake/clientset_generated.go index 46d12adad..fc98fe038 100644 --- a/pkg/client/clientset/versioned/fake/clientset_generated.go +++ b/pkg/client/clientset/versioned/fake/clientset_generated.go @@ -74,7 +74,10 @@ func (c *Clientset) Tracker() testing.ObjectTracker { return c.tracker } -var _ clientset.Interface = &Clientset{} +var ( + _ clientset.Interface = &Clientset{} + _ testing.FakeClient = &Clientset{} +) // SednaV1alpha1 retrieves the SednaV1alpha1Client func (c *Clientset) SednaV1alpha1() sednav1alpha1.SednaV1alpha1Interface { diff --git a/pkg/client/clientset/versioned/fake/register.go b/pkg/client/clientset/versioned/fake/register.go index 2777b817a..bc5c0bb32 100644 --- a/pkg/client/clientset/versioned/fake/register.go +++ b/pkg/client/clientset/versioned/fake/register.go @@ -37,14 +37,14 @@ var localSchemeBuilder = runtime.SchemeBuilder{ // AddToScheme adds all types of this clientset into the given scheme. This allows composition // of clientsets, like in: // -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) +// import ( +// "k8s.io/client-go/kubernetes" +// clientsetscheme "k8s.io/client-go/kubernetes/scheme" +// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" +// ) // -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// kclientset, _ := kubernetes.NewForConfig(c) +// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) // // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types // correctly. diff --git a/pkg/client/clientset/versioned/scheme/register.go b/pkg/client/clientset/versioned/scheme/register.go index 9f106bbef..afdccc7f7 100644 --- a/pkg/client/clientset/versioned/scheme/register.go +++ b/pkg/client/clientset/versioned/scheme/register.go @@ -37,14 +37,14 @@ var localSchemeBuilder = runtime.SchemeBuilder{ // AddToScheme adds all types of this clientset into the given scheme. This allows composition // of clientsets, like in: // -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) +// import ( +// "k8s.io/client-go/kubernetes" +// clientsetscheme "k8s.io/client-go/kubernetes/scheme" +// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" +// ) // -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// kclientset, _ := kubernetes.NewForConfig(c) +// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) // // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types // correctly. diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_dataset.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_dataset.go index 64be1a759..f6091dfae 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_dataset.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_dataset.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeDatasets struct { ns string } -var datasetsResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "datasets"} +var datasetsResource = v1alpha1.SchemeGroupVersion.WithResource("datasets") -var datasetsKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "Dataset"} +var datasetsKind = v1alpha1.SchemeGroupVersion.WithKind("Dataset") // Get takes name of the dataset, and returns the corresponding dataset object, and an error if there is any. func (c *FakeDatasets) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.Dataset, err error) { @@ -117,7 +116,7 @@ func (c *FakeDatasets) UpdateStatus(ctx context.Context, dataset *v1alpha1.Datas // Delete takes name of the dataset and deletes it. Returns an error if one occurs. func (c *FakeDatasets) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(datasetsResource, c.ns, name), &v1alpha1.Dataset{}) + Invokes(testing.NewDeleteActionWithOptions(datasetsResource, c.ns, name, opts), &v1alpha1.Dataset{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_featureextractionservice.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_featureextractionservice.go index c1056888f..d5dd01976 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_featureextractionservice.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_featureextractionservice.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeFeatureExtractionServices struct { ns string } -var featureextractionservicesResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "featureextractionservices"} +var featureextractionservicesResource = v1alpha1.SchemeGroupVersion.WithResource("featureextractionservices") -var featureextractionservicesKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "FeatureExtractionService"} +var featureextractionservicesKind = v1alpha1.SchemeGroupVersion.WithKind("FeatureExtractionService") // Get takes name of the featureExtractionService, and returns the corresponding featureExtractionService object, and an error if there is any. func (c *FakeFeatureExtractionServices) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.FeatureExtractionService, err error) { @@ -117,7 +116,7 @@ func (c *FakeFeatureExtractionServices) UpdateStatus(ctx context.Context, featur // Delete takes name of the featureExtractionService and deletes it. Returns an error if one occurs. func (c *FakeFeatureExtractionServices) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(featureextractionservicesResource, c.ns, name), &v1alpha1.FeatureExtractionService{}) + Invokes(testing.NewDeleteActionWithOptions(featureextractionservicesResource, c.ns, name, opts), &v1alpha1.FeatureExtractionService{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_federatedlearningjob.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_federatedlearningjob.go index bee7327ac..56abb6768 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_federatedlearningjob.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_federatedlearningjob.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeFederatedLearningJobs struct { ns string } -var federatedlearningjobsResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "federatedlearningjobs"} +var federatedlearningjobsResource = v1alpha1.SchemeGroupVersion.WithResource("federatedlearningjobs") -var federatedlearningjobsKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "FederatedLearningJob"} +var federatedlearningjobsKind = v1alpha1.SchemeGroupVersion.WithKind("FederatedLearningJob") // Get takes name of the federatedLearningJob, and returns the corresponding federatedLearningJob object, and an error if there is any. func (c *FakeFederatedLearningJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.FederatedLearningJob, err error) { @@ -117,7 +116,7 @@ func (c *FakeFederatedLearningJobs) UpdateStatus(ctx context.Context, federatedL // Delete takes name of the federatedLearningJob and deletes it. Returns an error if one occurs. func (c *FakeFederatedLearningJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(federatedlearningjobsResource, c.ns, name), &v1alpha1.FederatedLearningJob{}) + Invokes(testing.NewDeleteActionWithOptions(federatedlearningjobsResource, c.ns, name, opts), &v1alpha1.FederatedLearningJob{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_incrementallearningjob.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_incrementallearningjob.go index ae8c31bc8..3065d4388 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_incrementallearningjob.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_incrementallearningjob.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeIncrementalLearningJobs struct { ns string } -var incrementallearningjobsResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "incrementallearningjobs"} +var incrementallearningjobsResource = v1alpha1.SchemeGroupVersion.WithResource("incrementallearningjobs") -var incrementallearningjobsKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "IncrementalLearningJob"} +var incrementallearningjobsKind = v1alpha1.SchemeGroupVersion.WithKind("IncrementalLearningJob") // Get takes name of the incrementalLearningJob, and returns the corresponding incrementalLearningJob object, and an error if there is any. func (c *FakeIncrementalLearningJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.IncrementalLearningJob, err error) { @@ -117,7 +116,7 @@ func (c *FakeIncrementalLearningJobs) UpdateStatus(ctx context.Context, incremen // Delete takes name of the incrementalLearningJob and deletes it. Returns an error if one occurs. func (c *FakeIncrementalLearningJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(incrementallearningjobsResource, c.ns, name), &v1alpha1.IncrementalLearningJob{}) + Invokes(testing.NewDeleteActionWithOptions(incrementallearningjobsResource, c.ns, name, opts), &v1alpha1.IncrementalLearningJob{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_jointinferenceservice.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_jointinferenceservice.go index e1e33d80d..dce5749db 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_jointinferenceservice.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_jointinferenceservice.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeJointInferenceServices struct { ns string } -var jointinferenceservicesResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "jointinferenceservices"} +var jointinferenceservicesResource = v1alpha1.SchemeGroupVersion.WithResource("jointinferenceservices") -var jointinferenceservicesKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "JointInferenceService"} +var jointinferenceservicesKind = v1alpha1.SchemeGroupVersion.WithKind("JointInferenceService") // Get takes name of the jointInferenceService, and returns the corresponding jointInferenceService object, and an error if there is any. func (c *FakeJointInferenceServices) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.JointInferenceService, err error) { @@ -117,7 +116,7 @@ func (c *FakeJointInferenceServices) UpdateStatus(ctx context.Context, jointInfe // Delete takes name of the jointInferenceService and deletes it. Returns an error if one occurs. func (c *FakeJointInferenceServices) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(jointinferenceservicesResource, c.ns, name), &v1alpha1.JointInferenceService{}) + Invokes(testing.NewDeleteActionWithOptions(jointinferenceservicesResource, c.ns, name, opts), &v1alpha1.JointInferenceService{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_lifelonglearningjob.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_lifelonglearningjob.go index 28dbe23f3..4db4e6a65 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_lifelonglearningjob.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_lifelonglearningjob.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeLifelongLearningJobs struct { ns string } -var lifelonglearningjobsResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "lifelonglearningjobs"} +var lifelonglearningjobsResource = v1alpha1.SchemeGroupVersion.WithResource("lifelonglearningjobs") -var lifelonglearningjobsKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "LifelongLearningJob"} +var lifelonglearningjobsKind = v1alpha1.SchemeGroupVersion.WithKind("LifelongLearningJob") // Get takes name of the lifelongLearningJob, and returns the corresponding lifelongLearningJob object, and an error if there is any. func (c *FakeLifelongLearningJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.LifelongLearningJob, err error) { @@ -117,7 +116,7 @@ func (c *FakeLifelongLearningJobs) UpdateStatus(ctx context.Context, lifelongLea // Delete takes name of the lifelongLearningJob and deletes it. Returns an error if one occurs. func (c *FakeLifelongLearningJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(lifelonglearningjobsResource, c.ns, name), &v1alpha1.LifelongLearningJob{}) + Invokes(testing.NewDeleteActionWithOptions(lifelonglearningjobsResource, c.ns, name, opts), &v1alpha1.LifelongLearningJob{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_model.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_model.go index 023447a02..804ba05ed 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_model.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_model.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeModels struct { ns string } -var modelsResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "models"} +var modelsResource = v1alpha1.SchemeGroupVersion.WithResource("models") -var modelsKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "Model"} +var modelsKind = v1alpha1.SchemeGroupVersion.WithKind("Model") // Get takes name of the model, and returns the corresponding model object, and an error if there is any. func (c *FakeModels) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.Model, err error) { @@ -117,7 +116,7 @@ func (c *FakeModels) UpdateStatus(ctx context.Context, model *v1alpha1.Model, op // Delete takes name of the model and deletes it. Returns an error if one occurs. func (c *FakeModels) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(modelsResource, c.ns, name), &v1alpha1.Model{}) + Invokes(testing.NewDeleteActionWithOptions(modelsResource, c.ns, name, opts), &v1alpha1.Model{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_objectsearchservice.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_objectsearchservice.go index de5211500..d3afbae62 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_objectsearchservice.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_objectsearchservice.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeObjectSearchServices struct { ns string } -var objectsearchservicesResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "objectsearchservices"} +var objectsearchservicesResource = v1alpha1.SchemeGroupVersion.WithResource("objectsearchservices") -var objectsearchservicesKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "ObjectSearchService"} +var objectsearchservicesKind = v1alpha1.SchemeGroupVersion.WithKind("ObjectSearchService") // Get takes name of the objectSearchService, and returns the corresponding objectSearchService object, and an error if there is any. func (c *FakeObjectSearchServices) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ObjectSearchService, err error) { @@ -117,7 +116,7 @@ func (c *FakeObjectSearchServices) UpdateStatus(ctx context.Context, objectSearc // Delete takes name of the objectSearchService and deletes it. Returns an error if one occurs. func (c *FakeObjectSearchServices) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(objectsearchservicesResource, c.ns, name), &v1alpha1.ObjectSearchService{}) + Invokes(testing.NewDeleteActionWithOptions(objectsearchservicesResource, c.ns, name, opts), &v1alpha1.ObjectSearchService{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_objecttrackingservice.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_objecttrackingservice.go index d3f25a546..4235ee339 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_objecttrackingservice.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_objecttrackingservice.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeObjectTrackingServices struct { ns string } -var objecttrackingservicesResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "objecttrackingservices"} +var objecttrackingservicesResource = v1alpha1.SchemeGroupVersion.WithResource("objecttrackingservices") -var objecttrackingservicesKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "ObjectTrackingService"} +var objecttrackingservicesKind = v1alpha1.SchemeGroupVersion.WithKind("ObjectTrackingService") // Get takes name of the objectTrackingService, and returns the corresponding objectTrackingService object, and an error if there is any. func (c *FakeObjectTrackingServices) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ObjectTrackingService, err error) { @@ -117,7 +116,7 @@ func (c *FakeObjectTrackingServices) UpdateStatus(ctx context.Context, objectTra // Delete takes name of the objectTrackingService and deletes it. Returns an error if one occurs. func (c *FakeObjectTrackingServices) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(objecttrackingservicesResource, c.ns, name), &v1alpha1.ObjectTrackingService{}) + Invokes(testing.NewDeleteActionWithOptions(objecttrackingservicesResource, c.ns, name, opts), &v1alpha1.ObjectTrackingService{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_reidjob.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_reidjob.go index 169526364..b492e1de4 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_reidjob.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_reidjob.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeReidJobs struct { ns string } -var reidjobsResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "reidjobs"} +var reidjobsResource = v1alpha1.SchemeGroupVersion.WithResource("reidjobs") -var reidjobsKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "ReidJob"} +var reidjobsKind = v1alpha1.SchemeGroupVersion.WithKind("ReidJob") // Get takes name of the reidJob, and returns the corresponding reidJob object, and an error if there is any. func (c *FakeReidJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ReidJob, err error) { @@ -117,7 +116,7 @@ func (c *FakeReidJobs) UpdateStatus(ctx context.Context, reidJob *v1alpha1.ReidJ // Delete takes name of the reidJob and deletes it. Returns an error if one occurs. func (c *FakeReidJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(reidjobsResource, c.ns, name), &v1alpha1.ReidJob{}) + Invokes(testing.NewDeleteActionWithOptions(reidjobsResource, c.ns, name, opts), &v1alpha1.ReidJob{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_videoanalyticsjob.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_videoanalyticsjob.go index f2cff4a68..a180928c2 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_videoanalyticsjob.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/fake/fake_videoanalyticsjob.go @@ -24,7 +24,6 @@ import ( v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" testing "k8s.io/client-go/testing" @@ -36,9 +35,9 @@ type FakeVideoAnalyticsJobs struct { ns string } -var videoanalyticsjobsResource = schema.GroupVersionResource{Group: "sedna.io", Version: "v1alpha1", Resource: "videoanalyticsjobs"} +var videoanalyticsjobsResource = v1alpha1.SchemeGroupVersion.WithResource("videoanalyticsjobs") -var videoanalyticsjobsKind = schema.GroupVersionKind{Group: "sedna.io", Version: "v1alpha1", Kind: "VideoAnalyticsJob"} +var videoanalyticsjobsKind = v1alpha1.SchemeGroupVersion.WithKind("VideoAnalyticsJob") // Get takes name of the videoAnalyticsJob, and returns the corresponding videoAnalyticsJob object, and an error if there is any. func (c *FakeVideoAnalyticsJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.VideoAnalyticsJob, err error) { @@ -117,7 +116,7 @@ func (c *FakeVideoAnalyticsJobs) UpdateStatus(ctx context.Context, videoAnalytic // Delete takes name of the videoAnalyticsJob and deletes it. Returns an error if one occurs. func (c *FakeVideoAnalyticsJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { _, err := c.Fake. - Invokes(testing.NewDeleteAction(videoanalyticsjobsResource, c.ns, name), &v1alpha1.VideoAnalyticsJob{}) + Invokes(testing.NewDeleteActionWithOptions(videoanalyticsjobsResource, c.ns, name, opts), &v1alpha1.VideoAnalyticsJob{}) return err } diff --git a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/sedna_client.go b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/sedna_client.go index 22b125e49..968f76973 100644 --- a/pkg/client/clientset/versioned/typed/sedna/v1alpha1/sedna_client.go +++ b/pkg/client/clientset/versioned/typed/sedna/v1alpha1/sedna_client.go @@ -19,6 +19,8 @@ limitations under the License. package v1alpha1 import ( + "net/http" + v1alpha1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" "github.com/kubeedge/sedna/pkg/client/clientset/versioned/scheme" rest "k8s.io/client-go/rest" @@ -89,12 +91,28 @@ func (c *SednaV1alpha1Client) VideoAnalyticsJobs(namespace string) VideoAnalytic } // NewForConfig creates a new SednaV1alpha1Client for the given config. +// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient), +// where httpClient was generated with rest.HTTPClientFor(c). func NewForConfig(c *rest.Config) (*SednaV1alpha1Client, error) { config := *c if err := setConfigDefaults(&config); err != nil { return nil, err } - client, err := rest.RESTClientFor(&config) + httpClient, err := rest.HTTPClientFor(&config) + if err != nil { + return nil, err + } + return NewForConfigAndClient(&config, httpClient) +} + +// NewForConfigAndClient creates a new SednaV1alpha1Client for the given config and http client. +// Note the http client provided takes precedence over the configured transport values. +func NewForConfigAndClient(c *rest.Config, h *http.Client) (*SednaV1alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientForConfigAndClient(&config, h) if err != nil { return nil, err } diff --git a/pkg/client/informers/externalversions/factory.go b/pkg/client/informers/externalversions/factory.go index 2618b9185..316e3a64d 100644 --- a/pkg/client/informers/externalversions/factory.go +++ b/pkg/client/informers/externalversions/factory.go @@ -42,11 +42,17 @@ type sharedInformerFactory struct { lock sync.Mutex defaultResync time.Duration customResync map[reflect.Type]time.Duration + transform cache.TransformFunc informers map[reflect.Type]cache.SharedIndexInformer // startedInformers is used for tracking which informers have been started. // This allows Start() to be called multiple times safely. startedInformers map[reflect.Type]bool + // wg tracks how many goroutines were started. + wg sync.WaitGroup + // shuttingDown is true when Shutdown has been called. It may still be running + // because it needs to wait for goroutines. + shuttingDown bool } // WithCustomResyncConfig sets a custom resync period for the specified informer types. @@ -75,6 +81,14 @@ func WithNamespace(namespace string) SharedInformerOption { } } +// WithTransform sets a transform on all informers. +func WithTransform(transform cache.TransformFunc) SharedInformerOption { + return func(factory *sharedInformerFactory) *sharedInformerFactory { + factory.transform = transform + return factory + } +} + // NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces. func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory { return NewSharedInformerFactoryWithOptions(client, defaultResync) @@ -107,20 +121,39 @@ func NewSharedInformerFactoryWithOptions(client versioned.Interface, defaultResy return factory } -// Start initializes all requested informers. func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) { f.lock.Lock() defer f.lock.Unlock() + if f.shuttingDown { + return + } + for informerType, informer := range f.informers { if !f.startedInformers[informerType] { - go informer.Run(stopCh) + f.wg.Add(1) + // We need a new variable in each loop iteration, + // otherwise the goroutine would use the loop variable + // and that keeps changing. + informer := informer + go func() { + defer f.wg.Done() + informer.Run(stopCh) + }() f.startedInformers[informerType] = true } } } -// WaitForCacheSync waits for all started informers' cache were synced. +func (f *sharedInformerFactory) Shutdown() { + f.lock.Lock() + f.shuttingDown = true + f.lock.Unlock() + + // Will return immediately if there is nothing to wait for. + f.wg.Wait() +} + func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool { informers := func() map[reflect.Type]cache.SharedIndexInformer { f.lock.Lock() @@ -142,7 +175,7 @@ func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{}) map[ref return res } -// InternalInformerFor returns the SharedIndexInformer for obj using an internal +// InformerFor returns the SharedIndexInformer for obj using an internal // client. func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer { f.lock.Lock() @@ -160,6 +193,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal } informer = newFunc(f.client, resyncPeriod) + informer.SetTransform(f.transform) f.informers[informerType] = informer return informer @@ -167,11 +201,58 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal // SharedInformerFactory provides shared informers for resources in all known // API group versions. +// +// It is typically used like this: +// +// ctx, cancel := context.Background() +// defer cancel() +// factory := NewSharedInformerFactory(client, resyncPeriod) +// defer factory.WaitForStop() // Returns immediately if nothing was started. +// genericInformer := factory.ForResource(resource) +// typedInformer := factory.SomeAPIGroup().V1().SomeType() +// factory.Start(ctx.Done()) // Start processing these informers. +// synced := factory.WaitForCacheSync(ctx.Done()) +// for v, ok := range synced { +// if !ok { +// fmt.Fprintf(os.Stderr, "caches failed to sync: %v", v) +// return +// } +// } +// +// // Creating informers can also be created after Start, but then +// // Start must be called again: +// anotherGenericInformer := factory.ForResource(resource) +// factory.Start(ctx.Done()) type SharedInformerFactory interface { internalinterfaces.SharedInformerFactory - ForResource(resource schema.GroupVersionResource) (GenericInformer, error) + + // Start initializes all requested informers. They are handled in goroutines + // which run until the stop channel gets closed. + Start(stopCh <-chan struct{}) + + // Shutdown marks a factory as shutting down. At that point no new + // informers can be started anymore and Start will return without + // doing anything. + // + // In addition, Shutdown blocks until all goroutines have terminated. For that + // to happen, the close channel(s) that they were started with must be closed, + // either before Shutdown gets called or while it is waiting. + // + // Shutdown may be called multiple times, even concurrently. All such calls will + // block until all goroutines have terminated. + Shutdown() + + // WaitForCacheSync blocks until all started informers' caches were synced + // or the stop channel gets closed. WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool + // ForResource gives generic access to a shared informer of the matching type. + ForResource(resource schema.GroupVersionResource) (GenericInformer, error) + + // InformerFor returns the SharedIndexInformer for obj using an internal + // client. + InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer + Sedna() sedna.Interface } diff --git a/pkg/globalmanager/controllers/featureextraction/featureextractionservice.go b/pkg/globalmanager/controllers/featureextraction/featureextractionservice.go index fe721334e..378581ab2 100644 --- a/pkg/globalmanager/controllers/featureextraction/featureextractionservice.go +++ b/pkg/globalmanager/controllers/featureextraction/featureextractionservice.go @@ -40,7 +40,6 @@ import ( "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" - k8scontroller "k8s.io/kubernetes/pkg/controller" sednav1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" sednaclientset "github.com/kubeedge/sedna/pkg/client/clientset/versioned/typed/sedna/v1alpha1" @@ -186,7 +185,7 @@ func (c *Controller) updateDeployment(old, cur interface{}) { // immediate tells the controller to update the status right away, and should // happen ONLY when there was a successful pod run. func (c *Controller) enqueueController(obj interface{}, immediate bool) { - key, err := k8scontroller.KeyFunc(obj) + key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { klog.Warningf("Couldn't get key for object %+v: %v", obj, err) return diff --git a/pkg/globalmanager/controllers/federatedlearning/federatedlearningjob.go b/pkg/globalmanager/controllers/federatedlearning/federatedlearningjob.go index c12e8a95c..c9efd85a6 100644 --- a/pkg/globalmanager/controllers/federatedlearning/federatedlearningjob.go +++ b/pkg/globalmanager/controllers/federatedlearning/federatedlearningjob.go @@ -39,13 +39,13 @@ import ( "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" - k8scontroller "k8s.io/kubernetes/pkg/controller" sednav1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" sednaclientset "github.com/kubeedge/sedna/pkg/client/clientset/versioned/typed/sedna/v1alpha1" sednav1listers "github.com/kubeedge/sedna/pkg/client/listers/sedna/v1alpha1" "github.com/kubeedge/sedna/pkg/globalmanager/config" "github.com/kubeedge/sedna/pkg/globalmanager/runtime" + "github.com/kubeedge/sedna/pkg/globalmanager/utils" ) const ( @@ -250,7 +250,7 @@ func (c *Controller) deletePod(obj interface{}) { // immediate tells the controller to update the status right away, and should // happen ONLY when there was a successful pod run. func (c *Controller) enqueueController(obj interface{}, immediate bool) { - key, err := k8scontroller.KeyFunc(obj) + key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { klog.Warningf("Couldn't get key for object %+v: %v", obj, err) return @@ -331,7 +331,7 @@ func (c *Controller) sync(key string) (bool, error) { return false, err } - activePods := k8scontroller.FilterActivePods(pods) + activePods := utils.FilterActivePods(pods) active := int32(len(activePods)) var activeAgg int32 var activeTrain int32 diff --git a/pkg/globalmanager/controllers/incrementallearning/incrementallearningjob.go b/pkg/globalmanager/controllers/incrementallearning/incrementallearningjob.go index 33185d19f..e93d5ac9f 100644 --- a/pkg/globalmanager/controllers/incrementallearning/incrementallearningjob.go +++ b/pkg/globalmanager/controllers/incrementallearning/incrementallearningjob.go @@ -38,7 +38,6 @@ import ( "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" - k8scontroller "k8s.io/kubernetes/pkg/controller" sednav1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" sednaclientset "github.com/kubeedge/sedna/pkg/client/clientset/versioned/typed/sedna/v1alpha1" @@ -192,7 +191,7 @@ func (c *Controller) deletePod(obj interface{}) { // immediate tells the controller to update the status right away, and should // happen ONLY when there was a successful pod run. func (c *Controller) enqueueController(obj interface{}, immediate bool) { - key, err := k8scontroller.KeyFunc(obj) + key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { utilruntime.HandleError(fmt.Errorf("Couldn't get key for object %+v: %v", obj, err)) return diff --git a/pkg/globalmanager/controllers/jointinference/jointinferenceservice.go b/pkg/globalmanager/controllers/jointinference/jointinferenceservice.go index b6a70479d..f8bf304a0 100644 --- a/pkg/globalmanager/controllers/jointinference/jointinferenceservice.go +++ b/pkg/globalmanager/controllers/jointinference/jointinferenceservice.go @@ -41,7 +41,6 @@ import ( "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" - k8scontroller "k8s.io/kubernetes/pkg/controller" sednav1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" sednaclientset "github.com/kubeedge/sedna/pkg/client/clientset/versioned/typed/sedna/v1alpha1" @@ -121,7 +120,7 @@ func (c *Controller) Run(stopCh <-chan struct{}) { // immediate tells the controller to update the status right away, and should // happen ONLY when there was a successful pod run. func (c *Controller) enqueueController(obj interface{}, immediate bool) { - key, err := k8scontroller.KeyFunc(obj) + key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { klog.Warningf("Couldn't get key for object %+v: %v", obj, err) return diff --git a/pkg/globalmanager/controllers/lifelonglearning/lifelonglearningjob.go b/pkg/globalmanager/controllers/lifelonglearning/lifelonglearningjob.go index 85b8ff4c7..ffea10287 100644 --- a/pkg/globalmanager/controllers/lifelonglearning/lifelonglearningjob.go +++ b/pkg/globalmanager/controllers/lifelonglearning/lifelonglearningjob.go @@ -39,7 +39,6 @@ import ( "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" - k8scontroller "k8s.io/kubernetes/pkg/controller" sednav1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" sednaclientset "github.com/kubeedge/sedna/pkg/client/clientset/versioned/typed/sedna/v1alpha1" @@ -190,7 +189,7 @@ func (c *Controller) deletePod(obj interface{}) { // immediate tells the controller to update the status right away, and should // happen ONLY when there was a successful pod run. func (c *Controller) enqueueController(obj interface{}, immediate bool) { - key, err := k8scontroller.KeyFunc(obj) + key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { utilruntime.HandleError(fmt.Errorf("Couldn't get key for object %+v: %v", obj, err)) return diff --git a/pkg/globalmanager/controllers/lifelonglearning/upstream.go b/pkg/globalmanager/controllers/lifelonglearning/upstream.go index f2abb6432..152e03e60 100644 --- a/pkg/globalmanager/controllers/lifelonglearning/upstream.go +++ b/pkg/globalmanager/controllers/lifelonglearning/upstream.go @@ -222,13 +222,13 @@ func (c *Controller) updateFromEdge(name, namespace, operation string, content [ err = c.updateStatusKnowledgeBase(name, namespace, condData) if err != nil { - klog.Errorf("failed to update KnowledgeBase, err:%w", err) + klog.Errorf("failed to update KnowledgeBase, err: %v", err) return err } err = c.appendStatusCondition(name, namespace, cond) if err != nil { - klog.Errorf("failed to append condition, err:%w", err) + klog.Errorf("failed to append condition, err: %v", err) return err } return nil diff --git a/pkg/globalmanager/controllers/objectsearch/objectsearchservice.go b/pkg/globalmanager/controllers/objectsearch/objectsearchservice.go index 0da2cad4b..9cf9437ea 100644 --- a/pkg/globalmanager/controllers/objectsearch/objectsearchservice.go +++ b/pkg/globalmanager/controllers/objectsearch/objectsearchservice.go @@ -37,7 +37,6 @@ import ( "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" - k8scontroller "k8s.io/kubernetes/pkg/controller" sednav1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" sednaclientset "github.com/kubeedge/sedna/pkg/client/clientset/versioned/typed/sedna/v1alpha1" @@ -264,7 +263,7 @@ func (c *Controller) updateDeployment(old, cur interface{}) { // immediate tells the controller to update the status right away, and should // happen ONLY when there was a successful pod run. func (c *Controller) enqueueController(obj interface{}, immediate bool) { - key, err := k8scontroller.KeyFunc(obj) + key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { klog.Warningf("Couldn't get key for object %+v: %v", obj, err) return diff --git a/pkg/globalmanager/controllers/reid/reidjob.go b/pkg/globalmanager/controllers/reid/reidjob.go index f6577bbef..7dc07d5e6 100644 --- a/pkg/globalmanager/controllers/reid/reidjob.go +++ b/pkg/globalmanager/controllers/reid/reidjob.go @@ -37,13 +37,13 @@ import ( "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" - k8scontroller "k8s.io/kubernetes/pkg/controller" sednav1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" sednaclientset "github.com/kubeedge/sedna/pkg/client/clientset/versioned/typed/sedna/v1alpha1" sednav1listers "github.com/kubeedge/sedna/pkg/client/listers/sedna/v1alpha1" "github.com/kubeedge/sedna/pkg/globalmanager/config" "github.com/kubeedge/sedna/pkg/globalmanager/runtime" + "github.com/kubeedge/sedna/pkg/globalmanager/utils" ) const ( @@ -195,7 +195,7 @@ func (c *Controller) deletePod(obj interface{}) { // immediate tells the controller to update the status right away, and should // happen ONLY when there was a successful pod run. func (c *Controller) enqueueController(obj interface{}, immediate bool) { - key, err := k8scontroller.KeyFunc(obj) + key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { klog.Warningf("Couldn't get key for object %+v: %v", obj, err) return @@ -276,7 +276,7 @@ func (c *Controller) sync(key string) (bool, error) { return false, err } - activePods := k8scontroller.FilterActivePods(pods) + activePods := utils.FilterActivePods(pods) active := int32(len(activePods)) succeeded, failed := countPods(pods) conditions := len(job.Status.Conditions) diff --git a/pkg/globalmanager/controllers/videoanalytics/videoanalyticsjob.go b/pkg/globalmanager/controllers/videoanalytics/videoanalyticsjob.go index 22fd0d339..36b774691 100644 --- a/pkg/globalmanager/controllers/videoanalytics/videoanalyticsjob.go +++ b/pkg/globalmanager/controllers/videoanalytics/videoanalyticsjob.go @@ -37,13 +37,13 @@ import ( "k8s.io/client-go/tools/record" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" - k8scontroller "k8s.io/kubernetes/pkg/controller" sednav1 "github.com/kubeedge/sedna/pkg/apis/sedna/v1alpha1" sednaclientset "github.com/kubeedge/sedna/pkg/client/clientset/versioned/typed/sedna/v1alpha1" sednav1listers "github.com/kubeedge/sedna/pkg/client/listers/sedna/v1alpha1" "github.com/kubeedge/sedna/pkg/globalmanager/config" "github.com/kubeedge/sedna/pkg/globalmanager/runtime" + "github.com/kubeedge/sedna/pkg/globalmanager/utils" ) const ( @@ -195,7 +195,7 @@ func (c *Controller) deletePod(obj interface{}) { // immediate tells the controller to update the status right away, and should // happen ONLY when there was a successful pod run. func (c *Controller) enqueueController(obj interface{}, immediate bool) { - key, err := k8scontroller.KeyFunc(obj) + key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) if err != nil { klog.Warningf("Couldn't get key for object %+v: %v", obj, err) return @@ -276,7 +276,7 @@ func (c *Controller) sync(key string) (bool, error) { return false, err } - activePods := k8scontroller.FilterActivePods(pods) + activePods := utils.FilterActivePods(pods) active := int32(len(activePods)) succeeded, failed := countPods(pods) conditions := len(job.Status.Conditions) diff --git a/pkg/globalmanager/runtime/worker.go b/pkg/globalmanager/runtime/worker.go index f4be905af..52795d3d5 100644 --- a/pkg/globalmanager/runtime/worker.go +++ b/pkg/globalmanager/runtime/worker.go @@ -14,7 +14,8 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/client-go/kubernetes" "k8s.io/klog/v2" - k8scontroller "k8s.io/kubernetes/pkg/controller" + + "github.com/kubeedge/sedna/pkg/globalmanager/utils" ) type WorkerMount struct { @@ -174,7 +175,7 @@ func injectWorkerParam(pod *v1.Pod, workerParam *WorkerParam, object CommonInter // CreatePodWithTemplate creates and returns a pod object given a crd object, pod template, and workerParam func CreatePodWithTemplate(client kubernetes.Interface, object CommonInterface, spec *v1.PodTemplateSpec, workerParam *WorkerParam) (*v1.Pod, error) { objectKind := object.GroupVersionKind() - pod, _ := k8scontroller.GetPodFromTemplate(spec, object, metav1.NewControllerRef(object, objectKind)) + pod, _ := utils.GetPodFromTemplate(spec, object, metav1.NewControllerRef(object, objectKind)) injectWorkerParam(pod, workerParam, object) createdPod, err := client.CoreV1().Pods(object.GetNamespace()).Create(context.TODO(), pod, metav1.CreateOptions{}) diff --git a/pkg/localcontroller/managers/incrementallearning/incrementallearningjob.go b/pkg/localcontroller/managers/incrementallearning/incrementallearningjob.go index a0cffdbdd..ef6d53294 100644 --- a/pkg/localcontroller/managers/incrementallearning/incrementallearningjob.go +++ b/pkg/localcontroller/managers/incrementallearning/incrementallearningjob.go @@ -431,7 +431,7 @@ func (im *Manager) startJob(name string) { err = im.initJob(job, name) if err != nil { - klog.Errorf("failed to init job (name=%s): %+v", name) + klog.Errorf("failed to init job (name=%s), err: %v", name, err) return } @@ -757,7 +757,7 @@ func (im *Manager) getModelFromJobConditions(job *Job, jobStage sednav1.ILJobSta getModel := func(initModel *Model, models []Model) *Model { for _, m := range models { if m.Format == initModel.Format { - if initModel.Devices != nil && len(m.Devices) == 1 { + if len(initModel.Devices) > 0 && len(m.Devices) == 1 { for _, d := range initModel.Devices { if m.Devices[0] == d { return &m diff --git a/pkg/localcontroller/server/server.go b/pkg/localcontroller/server/server.go index be6c3a7b4..3db8b0d62 100644 --- a/pkg/localcontroller/server/server.go +++ b/pkg/localcontroller/server/server.go @@ -108,7 +108,7 @@ func (s *Server) messageHandler(request *restful.Request, response *restful.Resp msg = fmt.Sprintf("read worker(name=%s) message body failed, error: %v", workerName, err) } - klog.Errorf(msg) + klog.Error(msg) err = s.reply(response, http.StatusBadRequest, msg) if err != nil { klog.Errorf("reply messge to worker(name=%s) failed, error: %v", workerName, err) diff --git a/test/e2e/framework/framework.go b/test/e2e/framework/framework.go index 13279bbfc..f88914be5 100644 --- a/test/e2e/framework/framework.go +++ b/test/e2e/framework/framework.go @@ -185,7 +185,7 @@ func (f *Framework) AfterEach() { for namespaceKey, namespaceErr := range nsDeletionErrors { messages = append(messages, fmt.Sprintf("Couldn't delete ns: %q: %s (%#v)", namespaceKey, namespaceErr, namespaceErr)) } - Failf(strings.Join(messages, ",")) + Fail(strings.Join(messages, ",")) } }() diff --git a/test/e2e/framework/log.go b/test/e2e/framework/log.go index f73f05a2b..d415ed32b 100644 --- a/test/e2e/framework/log.go +++ b/test/e2e/framework/log.go @@ -68,10 +68,10 @@ var codeFilterRE = regexp.MustCompile(`/github.com/onsi/ginkgo/`) // entries coming from Ginkgo. // // This is a modified copy of PruneStack in https://github.com/onsi/ginkgo/blob/f90f37d87fa6b1dd9625e2b1e83c23ffae3de228/internal/codelocation/code_location.go#L25: -// - simplified API and thus renamed (calls debug.Stack() instead of taking a parameter) -// - source code filtering updated to be specific to Kubernetes -// - optimized to use bytes and in-place slice filtering from -// https://github.com/golang/go/wiki/SliceTricks#filter-in-place +// - simplified API and thus renamed (calls debug.Stack() instead of taking a parameter) +// - source code filtering updated to be specific to Kubernetes +// - optimized to use bytes and in-place slice filtering from +// https://github.com/golang/go/wiki/SliceTricks#filter-in-place func PrunedStack(skip int) []byte { fullStackTrace := debug.Stack() stack := bytes.Split(fullStackTrace, []byte("\n")) diff --git a/vendor/gorm.io/gorm/License b/vendor/gorm.io/gorm/License deleted file mode 100644 index 037e1653e..000000000 --- a/vendor/gorm.io/gorm/License +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-NOW Jinzhu - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE.