openpitrix crd
Signed-off-by: LiHui <andrewli@yunify.com> delete helm repo, release and app Signed-off-by: LiHui <andrewli@yunify.com> Fix Dockerfile Signed-off-by: LiHui <andrewli@yunify.com> add unit test for category controller Signed-off-by: LiHui <andrewli@yunify.com> resource api Signed-off-by: LiHui <andrewli@yunify.com> miscellaneous Signed-off-by: LiHui <andrewli@yunify.com> resource api Signed-off-by: LiHui <andrewli@yunify.com> add s3 repo indx Signed-off-by: LiHui <andrewli@yunify.com> attachment api Signed-off-by: LiHui <andrewli@yunify.com> repo controller test Signed-off-by: LiHui <andrewli@yunify.com> application controller test Signed-off-by: LiHui <andrewli@yunify.com> release metric Signed-off-by: LiHui <andrewli@yunify.com> helm release controller test Signed-off-by: LiHui <andrewli@yunify.com> move constants to /pkg/apis/application Signed-off-by: LiHui <andrewli@yunify.com> remove unused code Signed-off-by: LiHui <andrewli@yunify.com> add license header Signed-off-by: LiHui <andrewli@yunify.com> Fix bugs Signed-off-by: LiHui <andrewli@yunify.com> cluster cluent Signed-off-by: LiHui <andrewli@yunify.com> format code Signed-off-by: LiHui <andrewli@yunify.com> move workspace,cluster from spec to labels Signed-off-by: LiHui <andrewli@yunify.com> add license header Signed-off-by: LiHui <andrewli@yunify.com> openpitrix test Signed-off-by: LiHui <andrewli@yunify.com> add worksapce labels for app in appstore Signed-off-by: LiHui <andrewli@yunify.com>
This commit is contained in:
2
Makefile
2
Makefile
@@ -88,7 +88,7 @@ docker-build-no-test: ks-apiserver ks-controller-manager
|
|||||||
|
|
||||||
# Run tests
|
# Run tests
|
||||||
test: fmt vet
|
test: fmt vet
|
||||||
export KUBEBUILDER_CONTROLPLANE_START_TIMEOUT=1m; go test ./pkg/... ./cmd/... -covermode=atomic -coverprofile=coverage.txt
|
export KUBEBUILDER_CONTROLPLANE_START_TIMEOUT=2m; go test ./pkg/... ./cmd/... -covermode=atomic -coverprofile=coverage.txt
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
# Copyright 2020 The KubeSphere Authors. All rights reserved.
|
# Copyright 2020 The KubeSphere Authors. All rights reserved.
|
||||||
# Use of this source code is governed by an Apache license
|
# Use of this source code is governed by an Apache license
|
||||||
# that can be found in the LICENSE file.
|
# that can be found in the LICENSE file.
|
||||||
|
FROM alpine/helm:3.4.2 as helm-base
|
||||||
|
|
||||||
FROM alpine:3.11
|
FROM alpine:3.11
|
||||||
|
|
||||||
RUN apk add --no-cache ca-certificates
|
RUN apk add --no-cache ca-certificates
|
||||||
|
COPY --from=helm-base /usr/bin/helm /usr/bin/helm
|
||||||
# To speed up building process, we copy binary directly from make
|
# To speed up building process, we copy binary directly from make
|
||||||
# result instead of building it again, so make sure you run the
|
# result instead of building it again, so make sure you run the
|
||||||
# following command first before building docker image
|
# following command first before building docker image
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
# Copyright 2020 The KubeSphere Authors. All rights reserved.
|
# Copyright 2020 The KubeSphere Authors. All rights reserved.
|
||||||
# Use of this source code is governed by an Apache license
|
# Use of this source code is governed by an Apache license
|
||||||
# that can be found in the LICENSE file.
|
# that can be found in the LICENSE file.
|
||||||
|
FROM alpine/helm:3.4.2 as helm-base
|
||||||
|
|
||||||
FROM alpine:3.11
|
FROM alpine:3.11
|
||||||
|
|
||||||
RUN apk add --no-cache ca-certificates
|
RUN apk add --no-cache ca-certificates
|
||||||
|
COPY --from=helm-base /usr/bin/helm /usr/bin/helm
|
||||||
COPY /bin/cmd/controller-manager /usr/local/bin/
|
COPY /bin/cmd/controller-manager /usr/local/bin/
|
||||||
|
|
||||||
EXPOSE 8443 8080
|
EXPOSE 8443 8080
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ import (
|
|||||||
"kubesphere.io/kubesphere/pkg/simple/client/multicluster"
|
"kubesphere.io/kubesphere/pkg/simple/client/multicluster"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/network"
|
"kubesphere.io/kubesphere/pkg/simple/client/network"
|
||||||
ippoolclient "kubesphere.io/kubesphere/pkg/simple/client/network/ippool"
|
ippoolclient "kubesphere.io/kubesphere/pkg/simple/client/network/ippool"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/s3"
|
"kubesphere.io/kubesphere/pkg/simple/client/s3"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/manager"
|
"sigs.k8s.io/controller-runtime/pkg/manager"
|
||||||
"sigs.k8s.io/kubefed/pkg/controller/util"
|
"sigs.k8s.io/kubefed/pkg/controller/util"
|
||||||
@@ -66,7 +65,6 @@ func addControllers(
|
|||||||
ldapClient ldapclient.Interface,
|
ldapClient ldapclient.Interface,
|
||||||
options *k8s.KubernetesOptions,
|
options *k8s.KubernetesOptions,
|
||||||
authenticationOptions *authoptions.AuthenticationOptions,
|
authenticationOptions *authoptions.AuthenticationOptions,
|
||||||
openpitrixClient openpitrix.Client,
|
|
||||||
multiClusterOptions *multicluster.Options,
|
multiClusterOptions *multicluster.Options,
|
||||||
networkOptions *network.Options,
|
networkOptions *network.Options,
|
||||||
serviceMeshEnabled bool,
|
serviceMeshEnabled bool,
|
||||||
@@ -233,7 +231,6 @@ func addControllers(
|
|||||||
client.Config(),
|
client.Config(),
|
||||||
kubesphereInformer.Cluster().V1alpha1().Clusters(),
|
kubesphereInformer.Cluster().V1alpha1().Clusters(),
|
||||||
client.KubeSphere().ClusterV1alpha1().Clusters(),
|
client.KubeSphere().ClusterV1alpha1().Clusters(),
|
||||||
openpitrixClient,
|
|
||||||
multiClusterOptions.ClusterControllerResyncSecond)
|
multiClusterOptions.ClusterControllerResyncSecond)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,12 +18,9 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"kubesphere.io/kubesphere/pkg/controller/application"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
|
||||||
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
||||||
cliflag "k8s.io/component-base/cli/flag"
|
cliflag "k8s.io/component-base/cli/flag"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
@@ -31,8 +28,13 @@ import (
|
|||||||
"kubesphere.io/kubesphere/cmd/controller-manager/app/options"
|
"kubesphere.io/kubesphere/cmd/controller-manager/app/options"
|
||||||
"kubesphere.io/kubesphere/pkg/apis"
|
"kubesphere.io/kubesphere/pkg/apis"
|
||||||
controllerconfig "kubesphere.io/kubesphere/pkg/apiserver/config"
|
controllerconfig "kubesphere.io/kubesphere/pkg/apiserver/config"
|
||||||
|
"kubesphere.io/kubesphere/pkg/controller/application"
|
||||||
"kubesphere.io/kubesphere/pkg/controller/namespace"
|
"kubesphere.io/kubesphere/pkg/controller/namespace"
|
||||||
"kubesphere.io/kubesphere/pkg/controller/network/webhooks"
|
"kubesphere.io/kubesphere/pkg/controller/network/webhooks"
|
||||||
|
"kubesphere.io/kubesphere/pkg/controller/openpitrix/helmapplication"
|
||||||
|
"kubesphere.io/kubesphere/pkg/controller/openpitrix/helmcategory"
|
||||||
|
"kubesphere.io/kubesphere/pkg/controller/openpitrix/helmrelease"
|
||||||
|
"kubesphere.io/kubesphere/pkg/controller/openpitrix/helmrepo"
|
||||||
"kubesphere.io/kubesphere/pkg/controller/quota"
|
"kubesphere.io/kubesphere/pkg/controller/quota"
|
||||||
"kubesphere.io/kubesphere/pkg/controller/serviceaccount"
|
"kubesphere.io/kubesphere/pkg/controller/serviceaccount"
|
||||||
"kubesphere.io/kubesphere/pkg/controller/user"
|
"kubesphere.io/kubesphere/pkg/controller/user"
|
||||||
@@ -45,10 +47,10 @@ import (
|
|||||||
"kubesphere.io/kubesphere/pkg/simple/client/devops/jenkins"
|
"kubesphere.io/kubesphere/pkg/simple/client/devops/jenkins"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
|
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
|
||||||
ldapclient "kubesphere.io/kubesphere/pkg/simple/client/ldap"
|
ldapclient "kubesphere.io/kubesphere/pkg/simple/client/ldap"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/s3"
|
"kubesphere.io/kubesphere/pkg/simple/client/s3"
|
||||||
"kubesphere.io/kubesphere/pkg/utils/metrics"
|
"kubesphere.io/kubesphere/pkg/utils/metrics"
|
||||||
"kubesphere.io/kubesphere/pkg/utils/term"
|
"kubesphere.io/kubesphere/pkg/utils/term"
|
||||||
|
"os"
|
||||||
ctrl "sigs.k8s.io/controller-runtime"
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/manager"
|
"sigs.k8s.io/controller-runtime/pkg/manager"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/runtime/signals"
|
"sigs.k8s.io/controller-runtime/pkg/runtime/signals"
|
||||||
@@ -142,14 +144,6 @@ func run(s *options.KubeSphereControllerManagerOptions, stopCh <-chan struct{})
|
|||||||
klog.Warning("ks-controller-manager starts without ldap provided, it will not sync user into ldap")
|
klog.Warning("ks-controller-manager starts without ldap provided, it will not sync user into ldap")
|
||||||
}
|
}
|
||||||
|
|
||||||
var openpitrixClient openpitrix.Client
|
|
||||||
if s.OpenPitrixOptions != nil && !s.OpenPitrixOptions.IsEmpty() {
|
|
||||||
openpitrixClient, err = openpitrix.NewClient(s.OpenPitrixOptions)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to connect to openpitrix, please check openpitrix status, error: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var s3Client s3.Interface
|
var s3Client s3.Interface
|
||||||
if s.S3Options != nil && len(s.S3Options.Endpoint) != 0 {
|
if s.S3Options != nil && len(s.S3Options.Endpoint) != 0 {
|
||||||
s3Client, err = s3.NewS3Client(s.S3Options)
|
s3Client, err = s3.NewS3Client(s.S3Options)
|
||||||
@@ -224,6 +218,41 @@ func run(s *options.KubeSphereControllerManagerOptions, stopCh <-chan struct{})
|
|||||||
klog.Fatalf("Unable to create namespace controller: %v", err)
|
klog.Fatalf("Unable to create namespace controller: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = helmrepo.Add(mgr)
|
||||||
|
if err != nil {
|
||||||
|
klog.Fatal("Unable to create helm repo controller")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = helmcategory.Add(mgr)
|
||||||
|
if err != nil {
|
||||||
|
klog.Fatal("Unable to create helm category controller")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !s.OpenPitrixOptions.IsEmpty() {
|
||||||
|
storageClient, err := s3.NewS3Client(s.OpenPitrixOptions.S3Options)
|
||||||
|
if err != nil {
|
||||||
|
klog.Fatalf("failed to connect to s3, please check openpitrix s3 service status, error: %v", err)
|
||||||
|
}
|
||||||
|
err = (&helmapplication.ReconcileHelmApplication{}).SetupWithManager(mgr)
|
||||||
|
if err != nil {
|
||||||
|
klog.Fatalf("Unable to create helm application controller, error: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = (&helmapplication.ReconcileHelmApplicationVersion{}).SetupWithManager(mgr)
|
||||||
|
if err != nil {
|
||||||
|
klog.Fatalf("Unable to create helm application version controller, error: %s ", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = (&helmrelease.ReconcileHelmRelease{
|
||||||
|
StorageClient: storageClient,
|
||||||
|
KsFactory: informerFactory.KubeSphereSharedInformerFactory(),
|
||||||
|
}).SetupWithManager(mgr)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Fatalf("Unable to create helm release controller, error: %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
selector, _ := labels.Parse(s.ApplicationSelector)
|
selector, _ := labels.Parse(s.ApplicationSelector)
|
||||||
applicationReconciler := &application.ApplicationReconciler{
|
applicationReconciler := &application.ApplicationReconciler{
|
||||||
Scheme: mgr.GetScheme(),
|
Scheme: mgr.GetScheme(),
|
||||||
@@ -255,7 +284,6 @@ func run(s *options.KubeSphereControllerManagerOptions, stopCh <-chan struct{})
|
|||||||
ldapClient,
|
ldapClient,
|
||||||
s.KubernetesOptions,
|
s.KubernetesOptions,
|
||||||
s.AuthenticationOptions,
|
s.AuthenticationOptions,
|
||||||
openpitrixClient,
|
|
||||||
s.MultiClusterOptions,
|
s.MultiClusterOptions,
|
||||||
s.NetworkOptions,
|
s.NetworkOptions,
|
||||||
servicemeshEnabled,
|
servicemeshEnabled,
|
||||||
@@ -283,7 +311,9 @@ func run(s *options.KubeSphereControllerManagerOptions, stopCh <-chan struct{})
|
|||||||
hookServer.Register("/validate-quota-kubesphere-io-v1alpha2", &webhook.Admission{Handler: resourceQuotaAdmission})
|
hookServer.Register("/validate-quota-kubesphere-io-v1alpha2", &webhook.Admission{Handler: resourceQuotaAdmission})
|
||||||
|
|
||||||
klog.V(2).Info("registering metrics to the webhook server")
|
klog.V(2).Info("registering metrics to the webhook server")
|
||||||
hookServer.Register("/metrics", metrics.Handler())
|
// Add an extra metric endpoint, so we can use the the same metric definition with ks-apiserver
|
||||||
|
// /kapis/metrics is independent of controller-manager's built-in /metrics
|
||||||
|
mgr.AddMetricsExtraHandler("/kapis/metrics", metrics.Handler())
|
||||||
|
|
||||||
klog.V(0).Info("Starting the controllers.")
|
klog.V(0).Info("Starting the controllers.")
|
||||||
if err = mgr.Start(stopCh); err != nil {
|
if err = mgr.Start(stopCh); err != nil {
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import (
|
|||||||
esclient "kubesphere.io/kubesphere/pkg/simple/client/logging/elasticsearch"
|
esclient "kubesphere.io/kubesphere/pkg/simple/client/logging/elasticsearch"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/monitoring/metricsserver"
|
"kubesphere.io/kubesphere/pkg/simple/client/monitoring/metricsserver"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/monitoring/prometheus"
|
"kubesphere.io/kubesphere/pkg/simple/client/monitoring/prometheus"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/s3"
|
"kubesphere.io/kubesphere/pkg/simple/client/s3"
|
||||||
fakes3 "kubesphere.io/kubesphere/pkg/simple/client/s3/fake"
|
fakes3 "kubesphere.io/kubesphere/pkg/simple/client/s3/fake"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/sonarqube"
|
"kubesphere.io/kubesphere/pkg/simple/client/sonarqube"
|
||||||
@@ -196,14 +195,6 @@ func (s *ServerRunOptions) NewAPIServer(stopCh <-chan struct{}) (*apiserver.APIS
|
|||||||
apiServer.AuditingClient = auditingClient
|
apiServer.AuditingClient = auditingClient
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.OpenPitrixOptions != nil && !s.OpenPitrixOptions.IsEmpty() {
|
|
||||||
opClient, err := openpitrix.NewClient(s.OpenPitrixOptions)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to connect to openpitrix, please check openpitrix status, error: %v", err)
|
|
||||||
}
|
|
||||||
apiServer.OpenpitrixClient = opClient
|
|
||||||
}
|
|
||||||
|
|
||||||
if s.AlertingOptions != nil && (s.AlertingOptions.PrometheusEndpoint != "" || s.AlertingOptions.ThanosRulerEndpoint != "") {
|
if s.AlertingOptions != nil && (s.AlertingOptions.PrometheusEndpoint != "" || s.AlertingOptions.ThanosRulerEndpoint != "") {
|
||||||
alertingClient, err := alerting.NewRuleClient(s.AlertingOptions)
|
alertingClient, err := alerting.NewRuleClient(s.AlertingOptions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
101
config/crds/application.kubesphere.io_helmapplications.yaml
generated
Normal file
101
config/crds/application.kubesphere.io_helmapplications.yaml
generated
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
|
creationTimestamp: null
|
||||||
|
name: helmapplications.application.kubesphere.io
|
||||||
|
spec:
|
||||||
|
group: application.kubesphere.io
|
||||||
|
names:
|
||||||
|
kind: HelmApplication
|
||||||
|
listKind: HelmApplicationList
|
||||||
|
plural: helmapplications
|
||||||
|
shortNames:
|
||||||
|
- happ
|
||||||
|
singular: helmapplication
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.name
|
||||||
|
name: application name
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.labels.kubesphere\.io/workspace
|
||||||
|
name: workspace
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.state
|
||||||
|
name: State
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: HelmApplication is the Schema for the helmapplications API
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: HelmApplicationSpec defines the desired state of HelmApplication
|
||||||
|
properties:
|
||||||
|
abstraction:
|
||||||
|
description: info from frontend
|
||||||
|
type: string
|
||||||
|
appHome:
|
||||||
|
type: string
|
||||||
|
attachments:
|
||||||
|
description: attachments id
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
description:
|
||||||
|
description: description from chart's description or frontend
|
||||||
|
type: string
|
||||||
|
icon:
|
||||||
|
description: The attachment id of the icon
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: the name of the helm application
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: HelmApplicationStatus defines the observed state of HelmApplication
|
||||||
|
properties:
|
||||||
|
latestVersion:
|
||||||
|
description: If this application belong to appStore, latestVersion is the the latest version of the active application version. otherwise latestVersion is the latest version of all application version
|
||||||
|
type: string
|
||||||
|
state:
|
||||||
|
description: 'the state of the helm application: draft, submitted, passed, rejected, suspended, active'
|
||||||
|
type: string
|
||||||
|
statusTime:
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
updateTime:
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- statusTime
|
||||||
|
- updateTime
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
||||||
205
config/crds/application.kubesphere.io_helmapplicationversions.yaml
generated
Normal file
205
config/crds/application.kubesphere.io_helmapplicationversions.yaml
generated
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
|
creationTimestamp: null
|
||||||
|
name: helmapplicationversions.application.kubesphere.io
|
||||||
|
spec:
|
||||||
|
group: application.kubesphere.io
|
||||||
|
names:
|
||||||
|
kind: HelmApplicationVersion
|
||||||
|
listKind: HelmApplicationVersionList
|
||||||
|
plural: helmapplicationversions
|
||||||
|
shortNames:
|
||||||
|
- happver
|
||||||
|
singular: helmapplicationversion
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.name
|
||||||
|
name: application name
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.state
|
||||||
|
name: State
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: HelmApplicationVersion is the Schema for the helmapplicationversions API
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: HelmApplicationVersionSpec defines the desired state of HelmApplicationVersion
|
||||||
|
properties:
|
||||||
|
annotations:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: Annotations are additional mappings uninterpreted by Helm, made available for inspection by other applications.
|
||||||
|
type: object
|
||||||
|
apiVersion:
|
||||||
|
description: The API Version of this chart.
|
||||||
|
type: string
|
||||||
|
appVersion:
|
||||||
|
description: The version of the application enclosed inside of this chart.
|
||||||
|
type: string
|
||||||
|
condition:
|
||||||
|
description: The condition to check to enable chart
|
||||||
|
type: string
|
||||||
|
created:
|
||||||
|
description: chart create time
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
data:
|
||||||
|
description: raw data of chart, it will !!!NOT!!! be save to etcd
|
||||||
|
format: byte
|
||||||
|
type: string
|
||||||
|
dataKey:
|
||||||
|
description: dataKey in the storage
|
||||||
|
type: string
|
||||||
|
dependencies:
|
||||||
|
description: Dependencies are a list of dependencies for a chart.
|
||||||
|
items:
|
||||||
|
description: Dependency describes a chart upon which another chart depends. Dependencies can be used to express developer intent, or to capture the state of a chart.
|
||||||
|
properties:
|
||||||
|
alias:
|
||||||
|
description: Alias usable alias to be used for the chart
|
||||||
|
type: string
|
||||||
|
condition:
|
||||||
|
description: A yaml path that resolves to a boolean, used for enabling/disabling charts (e.g. subchart1.enabled )
|
||||||
|
type: string
|
||||||
|
enabled:
|
||||||
|
description: Enabled bool determines if chart should be loaded
|
||||||
|
type: boolean
|
||||||
|
name:
|
||||||
|
description: Name is the name of the dependency. This must mach the name in the dependency's Chart.yaml.
|
||||||
|
type: string
|
||||||
|
repository:
|
||||||
|
description: The URL to the repository. Appending `index.yaml` to this string should result in a URL that can be used to fetch the repository index.
|
||||||
|
type: string
|
||||||
|
tags:
|
||||||
|
description: Tags can be used to group charts for enabling/disabling together
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
version:
|
||||||
|
description: Version is the version (range) of this chart. A lock file will always produce a single version, while a dependency may contain a semantic version range.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- repository
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
deprecated:
|
||||||
|
description: Whether or not this chart is deprecated
|
||||||
|
type: boolean
|
||||||
|
description:
|
||||||
|
description: A one-sentence description of the chart
|
||||||
|
type: string
|
||||||
|
digest:
|
||||||
|
description: chart digest
|
||||||
|
type: string
|
||||||
|
home:
|
||||||
|
description: The URL to a relevant project page, git repo, or contact person
|
||||||
|
type: string
|
||||||
|
icon:
|
||||||
|
description: The URL to an icon file.
|
||||||
|
type: string
|
||||||
|
keywords:
|
||||||
|
description: A list of string keywords
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
kubeVersion:
|
||||||
|
description: KubeVersion is a SemVer constraint specifying the version of Kubernetes required.
|
||||||
|
type: string
|
||||||
|
maintainers:
|
||||||
|
description: A list of name and URL/email address combinations for the maintainer(s)
|
||||||
|
items:
|
||||||
|
description: Maintainer describes a Chart maintainer.
|
||||||
|
properties:
|
||||||
|
email:
|
||||||
|
description: Email is an optional email address to contact the named maintainer
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name is a user name or organization name
|
||||||
|
type: string
|
||||||
|
url:
|
||||||
|
description: URL is an optional URL to an address for the named maintainer
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
name:
|
||||||
|
description: The name of the chart
|
||||||
|
type: string
|
||||||
|
sources:
|
||||||
|
description: Source is the URL to the source code of this chart
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
tags:
|
||||||
|
description: The tags to check to enable chart
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: 'Specifies the chart type: application or library'
|
||||||
|
type: string
|
||||||
|
urls:
|
||||||
|
description: chart url
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
version:
|
||||||
|
description: A SemVer 2 conformant version string of the chart
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: HelmApplicationVersionStatus defines the observed state of HelmApplicationVersion
|
||||||
|
properties:
|
||||||
|
audit:
|
||||||
|
items:
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
description: audit message
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: audit operator
|
||||||
|
type: string
|
||||||
|
operatorType:
|
||||||
|
type: string
|
||||||
|
state:
|
||||||
|
description: 'audit state: submitted, passed, draft, active, rejected, suspended'
|
||||||
|
type: string
|
||||||
|
time:
|
||||||
|
description: audit time
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- time
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
state:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
||||||
76
config/crds/application.kubesphere.io_helmcategories.yaml
generated
Normal file
76
config/crds/application.kubesphere.io_helmcategories.yaml
generated
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
|
creationTimestamp: null
|
||||||
|
name: helmcategories.application.kubesphere.io
|
||||||
|
spec:
|
||||||
|
group: application.kubesphere.io
|
||||||
|
names:
|
||||||
|
kind: HelmCategory
|
||||||
|
listKind: HelmCategoryList
|
||||||
|
plural: helmcategories
|
||||||
|
shortNames:
|
||||||
|
- hctg
|
||||||
|
singular: helmcategory
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.name
|
||||||
|
name: name
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.total
|
||||||
|
name: total
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: HelmCategory is the Schema for the helmcategories API
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: HelmCategorySpec defines the desired state of HelmRepo
|
||||||
|
properties:
|
||||||
|
description:
|
||||||
|
description: info from frontend
|
||||||
|
type: string
|
||||||
|
locale:
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: name of the category
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
properties:
|
||||||
|
total:
|
||||||
|
description: total helmapplications belong to this category
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- total
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
||||||
145
config/crds/application.kubesphere.io_helmreleases.yaml
generated
Normal file
145
config/crds/application.kubesphere.io_helmreleases.yaml
generated
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
|
creationTimestamp: null
|
||||||
|
name: helmreleases.application.kubesphere.io
|
||||||
|
spec:
|
||||||
|
group: application.kubesphere.io
|
||||||
|
names:
|
||||||
|
kind: HelmRelease
|
||||||
|
listKind: HelmReleaseList
|
||||||
|
plural: helmreleases
|
||||||
|
shortNames:
|
||||||
|
- hrls
|
||||||
|
singular: helmrelease
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.name
|
||||||
|
name: Release Name
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.labels.kubesphere\.io/workspace
|
||||||
|
name: Workspace
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.labels.kubesphere\.io/cluster
|
||||||
|
name: Cluster
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.labels.kubesphere\.io/namespace
|
||||||
|
name: Namespace
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.state
|
||||||
|
name: State
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: HelmRelease is the Schema for the helmreleases API
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: HelmReleaseSpec defines the desired state of HelmRelease
|
||||||
|
properties:
|
||||||
|
appId:
|
||||||
|
description: id of the helmapplication
|
||||||
|
type: string
|
||||||
|
appVerId:
|
||||||
|
description: application version id
|
||||||
|
type: string
|
||||||
|
chartAppVer:
|
||||||
|
description: appVersion from Chart.yaml
|
||||||
|
type: string
|
||||||
|
chartName:
|
||||||
|
description: The name of the chart which will be installed.
|
||||||
|
type: string
|
||||||
|
chartVersion:
|
||||||
|
description: Specify the exact chart version to install. If this is not specified, the latest version is installed
|
||||||
|
type: string
|
||||||
|
description:
|
||||||
|
description: Message got from frontend
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the release
|
||||||
|
type: string
|
||||||
|
repoId:
|
||||||
|
description: id of the repo
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: helm release values.yaml
|
||||||
|
format: byte
|
||||||
|
type: string
|
||||||
|
version:
|
||||||
|
description: expected release version, when this version is not equal status.version, the release need upgrade this filed should be modified when any filed of the spec modified.
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- chartName
|
||||||
|
- chartVersion
|
||||||
|
- name
|
||||||
|
- version
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: HelmReleaseStatus defines the observed state of HelmRelease
|
||||||
|
properties:
|
||||||
|
deployStatus:
|
||||||
|
description: deploy status list of history, which will store at most 10 state
|
||||||
|
items:
|
||||||
|
properties:
|
||||||
|
deployTime:
|
||||||
|
description: deploy time
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: A human readable message indicating details about why the release is in this state.
|
||||||
|
type: string
|
||||||
|
state:
|
||||||
|
description: deploy state
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- deployTime
|
||||||
|
- state
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
lastDeployed:
|
||||||
|
description: last successful deploy time
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
lastUpdate:
|
||||||
|
description: last update time
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: A human readable message indicating details about why the release is in this state.
|
||||||
|
type: string
|
||||||
|
state:
|
||||||
|
description: current state
|
||||||
|
type: string
|
||||||
|
version:
|
||||||
|
description: current release version
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- state
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
||||||
142
config/crds/application.kubesphere.io_helmrepos.yaml
generated
Normal file
142
config/crds/application.kubesphere.io_helmrepos.yaml
generated
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: (devel)
|
||||||
|
creationTimestamp: null
|
||||||
|
name: helmrepos.application.kubesphere.io
|
||||||
|
spec:
|
||||||
|
group: application.kubesphere.io
|
||||||
|
names:
|
||||||
|
kind: HelmRepo
|
||||||
|
listKind: HelmRepoList
|
||||||
|
plural: helmrepos
|
||||||
|
shortNames:
|
||||||
|
- hrepo
|
||||||
|
singular: helmrepo
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.name
|
||||||
|
name: name
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.labels.kubesphere\\.io/workspace
|
||||||
|
name: Workspace
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.url
|
||||||
|
name: url
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.state
|
||||||
|
name: State
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: HelmRepo is the Schema for the helmrepoes API
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: HelmRepoSpec defines the desired state of HelmRepo
|
||||||
|
properties:
|
||||||
|
credential:
|
||||||
|
description: helm repo credential
|
||||||
|
properties:
|
||||||
|
accessKeyID:
|
||||||
|
type: string
|
||||||
|
caFile:
|
||||||
|
description: verify certificates of HTTPS-enabled servers using this CA bundle
|
||||||
|
type: string
|
||||||
|
certFile:
|
||||||
|
description: identify HTTPS client using this SSL certificate file
|
||||||
|
type: string
|
||||||
|
insecureSkipTLSVerify:
|
||||||
|
description: skip tls certificate checks for the repository, default is ture
|
||||||
|
type: boolean
|
||||||
|
keyFile:
|
||||||
|
description: identify HTTPS client using this SSL key file
|
||||||
|
type: string
|
||||||
|
password:
|
||||||
|
description: chart repository password
|
||||||
|
type: string
|
||||||
|
secretAccessKey:
|
||||||
|
type: string
|
||||||
|
username:
|
||||||
|
description: chart repository username
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
description:
|
||||||
|
description: chart repo description from frontend
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: name of the repo
|
||||||
|
type: string
|
||||||
|
syncPeriod:
|
||||||
|
description: sync period in seconds, no sync when SyncPeriod=0, the minimum SyncPeriod is 180s
|
||||||
|
type: integer
|
||||||
|
url:
|
||||||
|
description: helm repo url
|
||||||
|
type: string
|
||||||
|
version:
|
||||||
|
description: expected repo version, when this version is not equal status.version, the repo need upgrade this filed should be modified when any filed of the spec modified.
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- url
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: HelmRepoStatus defines the observed state of HelmRepo
|
||||||
|
properties:
|
||||||
|
data:
|
||||||
|
description: repo index
|
||||||
|
type: string
|
||||||
|
lastUpdateTime:
|
||||||
|
description: status last update time
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
state:
|
||||||
|
description: current state of the repo, successful, failed or syncing
|
||||||
|
type: string
|
||||||
|
syncState:
|
||||||
|
description: sync state list of history, which will store at most 10 state
|
||||||
|
items:
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
description: A human readable message indicating details about why the repo is in this state.
|
||||||
|
type: string
|
||||||
|
state:
|
||||||
|
description: 'last sync state, valid state are: "failed", "success", and ""'
|
||||||
|
type: string
|
||||||
|
syncTime:
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- syncTime
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
version:
|
||||||
|
description: if status.version!=spec.Version, we need sync the repo now
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
||||||
18
go.mod
18
go.mod
@@ -8,8 +8,9 @@ go 1.13
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6
|
code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6
|
||||||
|
github.com/Masterminds/semver/v3 v3.1.0
|
||||||
github.com/PuerkitoBio/goquery v1.5.0
|
github.com/PuerkitoBio/goquery v1.5.0
|
||||||
github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496
|
github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535
|
||||||
github.com/aws/aws-sdk-go v1.33.12
|
github.com/aws/aws-sdk-go v1.33.12
|
||||||
github.com/beevik/etree v1.1.0
|
github.com/beevik/etree v1.1.0
|
||||||
github.com/container-storage-interface/spec v1.2.0
|
github.com/container-storage-interface/spec v1.2.0
|
||||||
@@ -18,7 +19,7 @@ require (
|
|||||||
github.com/davecgh/go-spew v1.1.1
|
github.com/davecgh/go-spew v1.1.1
|
||||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible
|
github.com/dgrijalva/jwt-go v3.2.0+incompatible
|
||||||
github.com/docker/distribution v2.7.1+incompatible
|
github.com/docker/distribution v2.7.1+incompatible
|
||||||
github.com/docker/docker v1.4.2-0.20190822205725-ed20165a37b4
|
github.com/docker/docker v1.4.2-0.20200203170920-46ec8731fbce
|
||||||
github.com/elastic/go-elasticsearch/v5 v5.6.1
|
github.com/elastic/go-elasticsearch/v5 v5.6.1
|
||||||
github.com/elastic/go-elasticsearch/v6 v6.8.2
|
github.com/elastic/go-elasticsearch/v6 v6.8.2
|
||||||
github.com/elastic/go-elasticsearch/v7 v7.3.0
|
github.com/elastic/go-elasticsearch/v7 v7.3.0
|
||||||
@@ -53,7 +54,7 @@ require (
|
|||||||
github.com/onsi/ginkgo v1.14.0
|
github.com/onsi/ginkgo v1.14.0
|
||||||
github.com/onsi/gomega v1.10.1
|
github.com/onsi/gomega v1.10.1
|
||||||
github.com/open-policy-agent/opa v0.18.0
|
github.com/open-policy-agent/opa v0.18.0
|
||||||
github.com/opencontainers/go-digest v1.0.0-rc1
|
github.com/opencontainers/go-digest v1.0.0
|
||||||
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
|
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/projectcalico/kube-controllers v3.8.8+incompatible
|
github.com/projectcalico/kube-controllers v3.8.8+incompatible
|
||||||
@@ -66,6 +67,7 @@ require (
|
|||||||
github.com/prometheus/prometheus v1.8.2-0.20200907175821-8219b442c864
|
github.com/prometheus/prometheus v1.8.2-0.20200907175821-8219b442c864
|
||||||
github.com/sony/sonyflake v1.0.0
|
github.com/sony/sonyflake v1.0.0
|
||||||
github.com/speps/go-hashids v2.0.0+incompatible
|
github.com/speps/go-hashids v2.0.0+incompatible
|
||||||
|
github.com/spf13/afero v1.2.2
|
||||||
github.com/spf13/cobra v1.0.0
|
github.com/spf13/cobra v1.0.0
|
||||||
github.com/spf13/pflag v1.0.5
|
github.com/spf13/pflag v1.0.5
|
||||||
github.com/spf13/viper v1.4.0
|
github.com/spf13/viper v1.4.0
|
||||||
@@ -83,6 +85,7 @@ require (
|
|||||||
gopkg.in/yaml.v2 v2.3.0
|
gopkg.in/yaml.v2 v2.3.0
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776
|
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776
|
||||||
gotest.tools v2.2.0+incompatible
|
gotest.tools v2.2.0+incompatible
|
||||||
|
helm.sh/helm/v3 v3.3.0
|
||||||
istio.io/api v0.0.0-20201113182140-d4b7e3fc2b44
|
istio.io/api v0.0.0-20201113182140-d4b7e3fc2b44
|
||||||
istio.io/client-go v0.0.0-20201113183938-0734e976e785
|
istio.io/client-go v0.0.0-20201113183938-0734e976e785
|
||||||
istio.io/gogo-genproto v0.0.0-20201113182723-5b8563d8a012 // indirect
|
istio.io/gogo-genproto v0.0.0-20201113182723-5b8563d8a012 // indirect
|
||||||
@@ -106,6 +109,7 @@ require (
|
|||||||
sigs.k8s.io/controller-runtime v0.6.4
|
sigs.k8s.io/controller-runtime v0.6.4
|
||||||
sigs.k8s.io/controller-tools v0.4.0
|
sigs.k8s.io/controller-tools v0.4.0
|
||||||
sigs.k8s.io/kubefed v0.4.0
|
sigs.k8s.io/kubefed v0.4.0
|
||||||
|
sigs.k8s.io/yaml v1.2.0
|
||||||
)
|
)
|
||||||
|
|
||||||
replace (
|
replace (
|
||||||
@@ -250,7 +254,7 @@ replace (
|
|||||||
github.com/disintegration/imaging => github.com/disintegration/imaging v1.6.1
|
github.com/disintegration/imaging => github.com/disintegration/imaging v1.6.1
|
||||||
github.com/docker/cli => github.com/docker/cli v0.0.0-20190506213505-d88565df0c2d
|
github.com/docker/cli => github.com/docker/cli v0.0.0-20190506213505-d88565df0c2d
|
||||||
github.com/docker/distribution => github.com/docker/distribution v2.7.1+incompatible
|
github.com/docker/distribution => github.com/docker/distribution v2.7.1+incompatible
|
||||||
github.com/docker/docker => github.com/docker/engine v1.4.2-0.20190822205725-ed20165a37b4
|
github.com/docker/docker => github.com/docker/engine v1.4.2-0.20200203170920-46ec8731fbce
|
||||||
github.com/docker/docker-credential-helpers => github.com/docker/docker-credential-helpers v0.6.1
|
github.com/docker/docker-credential-helpers => github.com/docker/docker-credential-helpers v0.6.1
|
||||||
github.com/docker/go-connections => github.com/docker/go-connections v0.4.0
|
github.com/docker/go-connections => github.com/docker/go-connections v0.4.0
|
||||||
github.com/docker/go-metrics => github.com/docker/go-metrics v0.0.0-20181218153428-b84716841b82
|
github.com/docker/go-metrics => github.com/docker/go-metrics v0.0.0-20181218153428-b84716841b82
|
||||||
@@ -528,7 +532,7 @@ replace (
|
|||||||
github.com/onsi/gomega => github.com/onsi/gomega v1.10.1
|
github.com/onsi/gomega => github.com/onsi/gomega v1.10.1
|
||||||
github.com/op/go-logging => github.com/op/go-logging v0.0.0-20160315200505-970db520ece7
|
github.com/op/go-logging => github.com/op/go-logging v0.0.0-20160315200505-970db520ece7
|
||||||
github.com/open-policy-agent/opa => github.com/open-policy-agent/opa v0.18.0
|
github.com/open-policy-agent/opa => github.com/open-policy-agent/opa v0.18.0
|
||||||
github.com/opencontainers/go-digest => github.com/opencontainers/go-digest v1.0.0-rc1
|
github.com/opencontainers/go-digest => github.com/opencontainers/go-digest v1.0.0
|
||||||
github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.1
|
github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.1
|
||||||
github.com/opencontainers/runc => github.com/opencontainers/runc v0.1.1
|
github.com/opencontainers/runc => github.com/opencontainers/runc v0.1.1
|
||||||
github.com/opentracing-contrib/go-grpc => github.com/opentracing-contrib/go-grpc v0.0.0-20180928155321-4b5a12d3ff02
|
github.com/opentracing-contrib/go-grpc => github.com/opentracing-contrib/go-grpc v0.0.0-20180928155321-4b5a12d3ff02
|
||||||
@@ -661,7 +665,7 @@ replace (
|
|||||||
go.uber.org/multierr => go.uber.org/multierr v1.3.0
|
go.uber.org/multierr => go.uber.org/multierr v1.3.0
|
||||||
go.uber.org/tools => go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee
|
go.uber.org/tools => go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee
|
||||||
go.uber.org/zap => go.uber.org/zap v1.13.0
|
go.uber.org/zap => go.uber.org/zap v1.13.0
|
||||||
golang.org/x/crypto => golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
|
golang.org/x/crypto => golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
|
||||||
golang.org/x/exp => golang.org/x/exp v0.0.0-20190121172915-509febef88a4
|
golang.org/x/exp => golang.org/x/exp v0.0.0-20190121172915-509febef88a4
|
||||||
golang.org/x/image => golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81
|
golang.org/x/image => golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81
|
||||||
golang.org/x/lint => golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f
|
golang.org/x/lint => golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f
|
||||||
@@ -714,7 +718,7 @@ replace (
|
|||||||
gopkg.in/yaml.v2 => gopkg.in/yaml.v2 v2.3.0
|
gopkg.in/yaml.v2 => gopkg.in/yaml.v2 v2.3.0
|
||||||
gopkg.in/yaml.v3 => gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
|
gopkg.in/yaml.v3 => gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
|
||||||
gotest.tools => gotest.tools v2.2.0+incompatible
|
gotest.tools => gotest.tools v2.2.0+incompatible
|
||||||
helm.sh/helm/v3 => helm.sh/helm/v3 v3.0.1
|
helm.sh/helm/v3 => helm.sh/helm/v3 v3.3.0
|
||||||
honnef.co/go/tools => honnef.co/go/tools v0.0.1-2020.1.3
|
honnef.co/go/tools => honnef.co/go/tools v0.0.1-2020.1.3
|
||||||
howett.net/plist => howett.net/plist v0.0.0-20181124034731-591f970eefbb
|
howett.net/plist => howett.net/plist v0.0.0-20181124034731-591f970eefbb
|
||||||
istio.io/api => istio.io/api v0.0.0-20201113182140-d4b7e3fc2b44
|
istio.io/api => istio.io/api v0.0.0-20201113182140-d4b7e3fc2b44
|
||||||
|
|||||||
83
go.sum
83
go.sum
@@ -25,15 +25,16 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
|
|||||||
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
|
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
|
||||||
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
||||||
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
||||||
|
github.com/MakeNowJust/heredoc v0.0.0-20171113091838-e9091a26100e h1:eb0Pzkt15Bm7f2FFYv7sjY7NPFi3cPkS3tv1CcrFBWA=
|
||||||
github.com/MakeNowJust/heredoc v0.0.0-20171113091838-e9091a26100e/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
|
github.com/MakeNowJust/heredoc v0.0.0-20171113091838-e9091a26100e/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
|
||||||
github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
|
github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
|
||||||
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
|
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
|
||||||
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
|
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
|
||||||
|
github.com/Masterminds/semver/v3 v3.0.1 h1:2kKm5lb7dKVrt5TYUiAavE6oFc1cFT0057UVGT+JqLk=
|
||||||
github.com/Masterminds/semver/v3 v3.0.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
|
github.com/Masterminds/semver/v3 v3.0.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
|
||||||
github.com/Masterminds/sprig/v3 v3.0.0/go.mod h1:NEUY/Qq8Gdm2xgYA+NwJM6wmfdRV9xkh8h/Rld20R0U=
|
github.com/Masterminds/sprig/v3 v3.0.0/go.mod h1:NEUY/Qq8Gdm2xgYA+NwJM6wmfdRV9xkh8h/Rld20R0U=
|
||||||
github.com/Masterminds/squirrel v0.0.0-20161115235646-20f192218cf5/go.mod h1:xnKTFzjGUiZtiOagBsfnvomW+nJg2usB1ZpordQWqNM=
|
github.com/Masterminds/squirrel v0.0.0-20161115235646-20f192218cf5/go.mod h1:xnKTFzjGUiZtiOagBsfnvomW+nJg2usB1ZpordQWqNM=
|
||||||
github.com/Masterminds/vcs v1.13.0/go.mod h1:N09YCmOQr6RLxC6UNHzuVwAdodYbbnycGHSmwVJjcKA=
|
github.com/Masterminds/vcs v1.13.0/go.mod h1:N09YCmOQr6RLxC6UNHzuVwAdodYbbnycGHSmwVJjcKA=
|
||||||
github.com/Microsoft/go-winio v0.4.12 h1:xAfWHN1IrQ0NJ9TBC0KBZoqLjzDTr1ML+4MywiUOryc=
|
|
||||||
github.com/Microsoft/go-winio v0.4.12/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
|
github.com/Microsoft/go-winio v0.4.12/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
|
||||||
github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg=
|
github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg=
|
||||||
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
|
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
|
||||||
@@ -55,7 +56,6 @@ github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/
|
|||||||
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
|
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
|
||||||
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
|
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
|
||||||
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
|
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
|
||||||
github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs=
|
|
||||||
github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
|
github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
|
||||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
|
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
|
||||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
@@ -66,7 +66,6 @@ github.com/aliyun/aliyun-oss-go-sdk v2.0.4+incompatible/go.mod h1:T/Aws4fEfogEE9
|
|||||||
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
|
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
|
||||||
github.com/andybalholm/cascadia v1.0.0 h1:hOCXnnZ5A+3eVDX8pvgl4kofXv2ELss0bKcqRySc45o=
|
github.com/andybalholm/cascadia v1.0.0 h1:hOCXnnZ5A+3eVDX8pvgl4kofXv2ELss0bKcqRySc45o=
|
||||||
github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||||
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=
|
|
||||||
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
|
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
|
||||||
github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q=
|
github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q=
|
||||||
github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0=
|
github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0=
|
||||||
@@ -90,11 +89,9 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
|||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||||
github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k=
|
github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k=
|
||||||
github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=
|
|
||||||
github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
|
github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
|
||||||
github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs=
|
github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs=
|
||||||
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||||
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=
|
|
||||||
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
|
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
|
||||||
github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c=
|
github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c=
|
||||||
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
|
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
|
||||||
@@ -124,9 +121,7 @@ github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp
|
|||||||
github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
|
github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
|
||||||
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
|
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
|
||||||
github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk=
|
github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk=
|
||||||
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y=
|
|
||||||
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
|
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
|
||||||
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w=
|
|
||||||
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
|
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
|
||||||
github.com/container-storage-interface/spec v1.2.0 h1:bD9KIVgaVKKkQ/UbVUY9kCaH/CJbhNxe0eeB4JeJV2s=
|
github.com/container-storage-interface/spec v1.2.0 h1:bD9KIVgaVKKkQ/UbVUY9kCaH/CJbhNxe0eeB4JeJV2s=
|
||||||
github.com/container-storage-interface/spec v1.2.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4=
|
github.com/container-storage-interface/spec v1.2.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4=
|
||||||
@@ -141,7 +136,6 @@ github.com/coreos/etcd v3.3.17+incompatible h1:f/Z3EoDSx1yjaIjLQGo1diYUlQYSBrrAQ
|
|||||||
github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||||
github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM=
|
github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM=
|
||||||
github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
|
github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
|
||||||
github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
|
|
||||||
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||||
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c=
|
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c=
|
||||||
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||||
@@ -165,7 +159,6 @@ github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhr
|
|||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE=
|
github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE=
|
||||||
github.com/deckarep/golang-set v1.7.1 h1:SCQV0S6gTtp6itiFrTqI+pfmJ4LN85S1YzhDf9rTHJQ=
|
|
||||||
github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ=
|
github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ=
|
||||||
github.com/deislabs/oras v0.7.0/go.mod h1:sqMKPG3tMyIX9xwXUBRLhZ24o+uT4y6jgBD2RzUTKDM=
|
github.com/deislabs/oras v0.7.0/go.mod h1:sqMKPG3tMyIX9xwXUBRLhZ24o+uT4y6jgBD2RzUTKDM=
|
||||||
github.com/denisenkom/go-mssqldb v0.0.0-20190204142019-df6d76eb9289/go.mod h1:xN/JuLBIz4bjkxNmByTiV1IbhfnYb6oo99phBn4Eqhc=
|
github.com/denisenkom/go-mssqldb v0.0.0-20190204142019-df6d76eb9289/go.mod h1:xN/JuLBIz4bjkxNmByTiV1IbhfnYb6oo99phBn4Eqhc=
|
||||||
@@ -181,8 +174,8 @@ github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BU
|
|||||||
github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
|
github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
|
||||||
github.com/docker/docker-credential-helpers v0.6.1 h1:Dq4iIfcM7cNtddhLVWe9h4QDjsi4OER3Z8voPu/I52g=
|
github.com/docker/docker-credential-helpers v0.6.1 h1:Dq4iIfcM7cNtddhLVWe9h4QDjsi4OER3Z8voPu/I52g=
|
||||||
github.com/docker/docker-credential-helpers v0.6.1/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y=
|
github.com/docker/docker-credential-helpers v0.6.1/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y=
|
||||||
github.com/docker/engine v1.4.2-0.20190822205725-ed20165a37b4 h1:+VAGRKyn9Ca+ckzV/PJsaRO7UXO9KQjFmSffcSDrWdE=
|
github.com/docker/engine v1.4.2-0.20200203170920-46ec8731fbce h1:9Etplkui0JcHdExVif7vMl/Q8aqOde4FWtfTW7VcVsk=
|
||||||
github.com/docker/engine v1.4.2-0.20190822205725-ed20165a37b4/go.mod h1:3CPr2caMgTHxxIAZgEMd3uLYPDlRvPqCpyeRf6ncPcY=
|
github.com/docker/engine v1.4.2-0.20200203170920-46ec8731fbce/go.mod h1:3CPr2caMgTHxxIAZgEMd3uLYPDlRvPqCpyeRf6ncPcY=
|
||||||
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
|
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
|
||||||
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
|
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
|
||||||
github.com/docker/go-metrics v0.0.0-20181218153428-b84716841b82 h1:X0fj836zx99zFu83v/M79DuBn84IL/Syx1SY6Y5ZEMA=
|
github.com/docker/go-metrics v0.0.0-20181218153428-b84716841b82 h1:X0fj836zx99zFu83v/M79DuBn84IL/Syx1SY6Y5ZEMA=
|
||||||
@@ -193,7 +186,6 @@ github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNE
|
|||||||
github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c h1:ZfSZ3P3BedhKGUhzj7BQlPSU4OvT6tfOKe3DVHzOA7s=
|
github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c h1:ZfSZ3P3BedhKGUhzj7BQlPSU4OvT6tfOKe3DVHzOA7s=
|
||||||
github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
|
github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
|
||||||
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
|
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
|
||||||
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
|
|
||||||
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||||
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
|
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
|
||||||
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
|
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
|
||||||
@@ -209,9 +201,7 @@ github.com/elastic/go-elasticsearch/v7 v7.3.0 h1:H29Nqf9cB9dVxX6LwS+zTDC2D4t9s+8
|
|||||||
github.com/elastic/go-elasticsearch/v7 v7.3.0/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4=
|
github.com/elastic/go-elasticsearch/v7 v7.3.0/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4=
|
||||||
github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0=
|
github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0=
|
||||||
github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss=
|
github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss=
|
||||||
github.com/elazarl/goproxy v0.0.0-20200315184450-1f3cb6622dad h1:zPs0fNF2Io1Qytf92EI2CDJ9oCXZr+NmjEVexrUEdq4=
|
|
||||||
github.com/elazarl/goproxy v0.0.0-20200315184450-1f3cb6622dad/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
|
github.com/elazarl/goproxy v0.0.0-20200315184450-1f3cb6622dad/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
|
||||||
github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2 h1:dWB6v3RcOy03t/bUadywsbyrQwCqZeNIEX6M1OtSZOM=
|
|
||||||
github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8=
|
github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8=
|
||||||
github.com/ema/qdisc v0.0.0-20190904071900-b82c76788043/go.mod h1:ix4kG2zvdUd8kEKSW0ZTr1XLks0epFpI4j745DXxlNE=
|
github.com/ema/qdisc v0.0.0-20190904071900-b82c76788043/go.mod h1:ix4kG2zvdUd8kEKSW0ZTr1XLks0epFpI4j745DXxlNE=
|
||||||
github.com/emicklei/go-restful v2.14.3+incompatible h1:i59XyRHAxKCVBw3vHzQlpP/+pi89wH1v1HL+RKyVgxk=
|
github.com/emicklei/go-restful v2.14.3+incompatible h1:i59XyRHAxKCVBw3vHzQlpP/+pi89wH1v1HL+RKyVgxk=
|
||||||
@@ -226,18 +216,16 @@ github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a
|
|||||||
github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses=
|
github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses=
|
||||||
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||||
github.com/evanphx/json-patch/v5 v5.0.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
|
github.com/evanphx/json-patch/v5 v5.0.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
|
||||||
|
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM=
|
||||||
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4=
|
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4=
|
||||||
github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc=
|
github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc=
|
||||||
github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8=
|
|
||||||
github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc=
|
github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc=
|
||||||
github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=
|
|
||||||
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||||
github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
|
github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
|
||||||
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
|
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
|
||||||
github.com/fatih/structtag v1.1.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
|
github.com/fatih/structtag v1.1.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
|
||||||
github.com/felixge/fgprof v0.9.1/go.mod h1:7/HK6JFtFaARhIljgP2IV8rJLIoHDoOYoUphsnGvqxE=
|
github.com/felixge/fgprof v0.9.1/go.mod h1:7/HK6JFtFaARhIljgP2IV8rJLIoHDoOYoUphsnGvqxE=
|
||||||
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||||
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=
|
|
||||||
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
|
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
|
||||||
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
||||||
github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
|
github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
|
||||||
@@ -250,7 +238,6 @@ github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
|
|||||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||||
github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s=
|
github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s=
|
||||||
github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM=
|
github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM=
|
||||||
github.com/gliderlabs/ssh v0.1.1 h1:j3L6gSLQalDETeEg/Jg0mGY0/y/N6zI2xX1978P0Uqw=
|
|
||||||
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
|
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
|
||||||
github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
|
github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
|
||||||
github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
|
github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
|
||||||
@@ -262,7 +249,6 @@ github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih
|
|||||||
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
|
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
|
||||||
github.com/go-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg=
|
github.com/go-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg=
|
||||||
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
||||||
github.com/go-logr/zapr v0.1.1 h1:qXBXPDdNncunGs7XeEpsJt8wCjYBygluzfdLO0G5baE=
|
|
||||||
github.com/go-logr/zapr v0.1.1/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk=
|
github.com/go-logr/zapr v0.1.1/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk=
|
||||||
github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
|
github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
|
||||||
github.com/go-openapi/analysis v0.19.10 h1:5BHISBAXOc/aJK25irLZnx2D3s6WyYaY9D4gmuz9fdE=
|
github.com/go-openapi/analysis v0.19.10 h1:5BHISBAXOc/aJK25irLZnx2D3s6WyYaY9D4gmuz9fdE=
|
||||||
@@ -296,7 +282,6 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me
|
|||||||
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
|
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
|
||||||
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
|
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
|
||||||
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
||||||
github.com/gobuffalo/flect v0.2.0 h1:EWCvMGGxOjsgwlWaP+f4+Hh6yrrte7JeFL2S6b+0hdM=
|
|
||||||
github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80=
|
github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80=
|
||||||
github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
|
github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
|
||||||
github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
|
github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
|
||||||
@@ -315,6 +300,7 @@ github.com/gocql/gocql v0.0.0-20200526081602-cd04bd7f22a7/go.mod h1:DL0ekTmBSTdl
|
|||||||
github.com/gocraft/dbr v0.0.0-20180507214907-a0fd650918f6 h1:kumyNm8Vr8cbVm/aLQYTbDE3SKCbbn5HEVoDp/Dyyfc=
|
github.com/gocraft/dbr v0.0.0-20180507214907-a0fd650918f6 h1:kumyNm8Vr8cbVm/aLQYTbDE3SKCbbn5HEVoDp/Dyyfc=
|
||||||
github.com/gocraft/dbr v0.0.0-20180507214907-a0fd650918f6/go.mod h1:K/9g3pPouf13kP5K7pdriQEJAy272R9yXuWuDIEWJTM=
|
github.com/gocraft/dbr v0.0.0-20180507214907-a0fd650918f6/go.mod h1:K/9g3pPouf13kP5K7pdriQEJAy272R9yXuWuDIEWJTM=
|
||||||
github.com/godbus/dbus v0.0.0-20190402143921-271e53dc4968/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
|
github.com/godbus/dbus v0.0.0-20190402143921-271e53dc4968/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
|
||||||
|
github.com/godror/godror v0.13.3/go.mod h1:2ouUT4kdhUBk7TAkHWD4SN0CdI0pgEQbo8FVHhbSKWg=
|
||||||
github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
||||||
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
||||||
github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI=
|
github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI=
|
||||||
@@ -367,13 +353,12 @@ github.com/gophercloud/gophercloud v0.10.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU8
|
|||||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||||
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
|
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
|
||||||
github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
|
github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
|
||||||
github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
|
|
||||||
github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
||||||
github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
|
github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
|
||||||
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
github.com/gosuri/uitable v0.0.1/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo=
|
github.com/gosuri/uitable v0.0.1/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo=
|
||||||
|
github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f h1:ShTPMJQes6tubcjzGMODIVG5hlrCeImaBnZzKF2N8SM=
|
||||||
github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg=
|
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE=
|
github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||||
@@ -409,7 +394,6 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK
|
|||||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg=
|
github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg=
|
||||||
github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||||
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
|
|
||||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||||
github.com/influxdata/flux v0.65.0/go.mod h1:BwN2XG2lMszOoquQaFdPET8FRQfrXiZsWmcMO9rkaVY=
|
github.com/influxdata/flux v0.65.0/go.mod h1:BwN2XG2lMszOoquQaFdPET8FRQfrXiZsWmcMO9rkaVY=
|
||||||
github.com/influxdata/influxdb v1.8.0/go.mod h1:SIzcnsjaHRFpmlxpJ4S3NT64qtEKYweNTUMb/vh0OMQ=
|
github.com/influxdata/influxdb v1.8.0/go.mod h1:SIzcnsjaHRFpmlxpJ4S3NT64qtEKYweNTUMb/vh0OMQ=
|
||||||
@@ -430,9 +414,9 @@ github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a/go.mod h1:h+uFLl
|
|||||||
github.com/jinzhu/now v1.0.0/go.mod h1:oHTiXerJ20+SfYcrdlBO7rzZRJWGwSTQ0iUY2jI6Gfc=
|
github.com/jinzhu/now v1.0.0/go.mod h1:oHTiXerJ20+SfYcrdlBO7rzZRJWGwSTQ0iUY2jI6Gfc=
|
||||||
github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2yCeUc=
|
github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2yCeUc=
|
||||||
github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik=
|
github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik=
|
||||||
|
github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
|
||||||
github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak=
|
github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak=
|
||||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
||||||
github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
|
|
||||||
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||||
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
||||||
github.com/jsimonetti/rtnetlink v0.0.0-20200117123717-f846d4f6c1f4/go.mod h1:WGuG/smIU4J/54PblvSbh+xvCZmpJnFgr3ds6Z55XMQ=
|
github.com/jsimonetti/rtnetlink v0.0.0-20200117123717-f846d4f6c1f4/go.mod h1:WGuG/smIU4J/54PblvSbh+xvCZmpJnFgr3ds6Z55XMQ=
|
||||||
@@ -448,7 +432,6 @@ github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E
|
|||||||
github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0=
|
github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0=
|
||||||
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
||||||
github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
|
github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
|
||||||
github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
|
|
||||||
github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
|
github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
|
||||||
github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e h1:RgQk53JHp/Cjunrr1WlsXSZpqXn+uREuHvUVcK82CV8=
|
github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e h1:RgQk53JHp/Cjunrr1WlsXSZpqXn+uREuHvUVcK82CV8=
|
||||||
github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
|
github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
|
||||||
@@ -460,14 +443,10 @@ github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM52
|
|||||||
github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg=
|
github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg=
|
||||||
github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
||||||
github.com/knq/sysutil v0.0.0-20191005231841-15668db23d08/go.mod h1:dFWs1zEqDjFtnBXsd1vPOZaLsESovai349994nHx3e0=
|
github.com/knq/sysutil v0.0.0-20191005231841-15668db23d08/go.mod h1:dFWs1zEqDjFtnBXsd1vPOZaLsESovai349994nHx3e0=
|
||||||
github.com/koding/multiconfig v0.0.0-20171124222453-69c27309b2d7 h1:SWlt7BoQNASbhTUD0Oy5yysI2seJ7vWuGUp///OM4TM=
|
|
||||||
github.com/koding/multiconfig v0.0.0-20171124222453-69c27309b2d7/go.mod h1:Y2SaZf2Rzd0pXkLVhLlCiAXFCLSXAIbTKDivVgff/AM=
|
github.com/koding/multiconfig v0.0.0-20171124222453-69c27309b2d7/go.mod h1:Y2SaZf2Rzd0pXkLVhLlCiAXFCLSXAIbTKDivVgff/AM=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=
|
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||||
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
|
|
||||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||||
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
|
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
|
||||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/kshvakov/clickhouse v1.3.5/go.mod h1:DMzX7FxRymoNkVgizH0DWAL8Cur7wHLgx3MUnGwJqpE=
|
github.com/kshvakov/clickhouse v1.3.5/go.mod h1:DMzX7FxRymoNkVgizH0DWAL8Cur7wHLgx3MUnGwJqpE=
|
||||||
github.com/kubernetes-csi/external-snapshotter/client/v3 v3.0.0 h1:OYDCOjVcx/5wNzlZ/At8otRibUlw0T6R0xOD31f32bw=
|
github.com/kubernetes-csi/external-snapshotter/client/v3 v3.0.0 h1:OYDCOjVcx/5wNzlZ/At8otRibUlw0T6R0xOD31f32bw=
|
||||||
@@ -477,7 +456,6 @@ github.com/kubesphere/sonargo v0.0.2/go.mod h1:ww8n9ANlDXhX5PBZ18iaRnCgEkXN0GMml
|
|||||||
github.com/kylelemons/godebug v0.0.0-20160406211939-eadb3ce320cb/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
|
github.com/kylelemons/godebug v0.0.0-20160406211939-eadb3ce320cb/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
|
||||||
github.com/leanovate/gopter v0.2.4/go.mod h1:gNcbPWNEWRe4lm+bycKqxUYoH5uoVje5SkOJ3uoLer8=
|
github.com/leanovate/gopter v0.2.4/go.mod h1:gNcbPWNEWRe4lm+bycKqxUYoH5uoVje5SkOJ3uoLer8=
|
||||||
github.com/leodido/go-urn v0.0.0-20181204092800-a67a23e1c1af/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw=
|
github.com/leodido/go-urn v0.0.0-20181204092800-a67a23e1c1af/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw=
|
||||||
github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
|
|
||||||
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||||
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
|
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
|
||||||
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
|
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
|
||||||
@@ -492,14 +470,12 @@ github.com/mailru/easyjson v0.7.1 h1:mdxE1MF9o53iCb2Ghj1VfWvh7ZOwHpnVG/xwXrV90U8
|
|||||||
github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
|
github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
|
||||||
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
|
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
|
||||||
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
|
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
|
||||||
github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=
|
|
||||||
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||||
github.com/mattn/go-ieproxy v0.0.0-20191113090002-7c0f6868bffe/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E=
|
github.com/mattn/go-ieproxy v0.0.0-20191113090002-7c0f6868bffe/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E=
|
||||||
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
|
|
||||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||||
|
github.com/mattn/go-oci8 v0.0.7/go.mod h1:wjDx6Xm9q7dFtHJvIlrI99JytznLw5wQ4R+9mNXJwGI=
|
||||||
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||||
github.com/mattn/go-shellwords v1.0.5/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
|
github.com/mattn/go-shellwords v1.0.5/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
|
||||||
github.com/mattn/go-sqlite3 v1.11.0 h1:LDdKkqtYlom37fkvqs8rMPFKAMe8+SgjbwZ6ex1/A/Q=
|
|
||||||
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
||||||
github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
|
github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
|
||||||
github.com/mattn/go-xmlrpc v0.0.3/go.mod h1:mqc2dz7tP5x5BKlCahN/n+hs7OSZKJkS9JsHNBRlrxA=
|
github.com/mattn/go-xmlrpc v0.0.3/go.mod h1:mqc2dz7tP5x5BKlCahN/n+hs7OSZKJkS9JsHNBRlrxA=
|
||||||
@@ -518,6 +494,7 @@ github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFW
|
|||||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||||
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
||||||
|
github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=
|
||||||
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
||||||
github.com/mitchellh/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
|
github.com/mitchellh/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
|
||||||
github.com/mitchellh/mapstructure v1.2.2 h1:dxe5oCinTXiTIcfgmZecdCzPmAJKd46KsCWc35r0TV4=
|
github.com/mitchellh/mapstructure v1.2.2 h1:dxe5oCinTXiTIcfgmZecdCzPmAJKd46KsCWc35r0TV4=
|
||||||
@@ -529,7 +506,6 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
|
|||||||
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
|
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
|
||||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
||||||
github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c h1:nXxl5PrvVm2L/wCy8dQu6DMTwH4oIuGN8GJDAlqDdVE=
|
|
||||||
github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
|
github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
|
||||||
github.com/mozillazg/go-cos v0.13.0/go.mod h1:Zp6DvvXn0RUOXGJ2chmWt2bLEqRAnJnS3DnAZsJsoaE=
|
github.com/mozillazg/go-cos v0.13.0/go.mod h1:Zp6DvvXn0RUOXGJ2chmWt2bLEqRAnJnS3DnAZsJsoaE=
|
||||||
github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60=
|
github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60=
|
||||||
@@ -560,8 +536,8 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y
|
|||||||
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
|
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
|
||||||
github.com/open-policy-agent/opa v0.18.0 h1:EC81mO3/517Kq5brJHydqKE5MLzJ+4cdJvUQKxLzHy8=
|
github.com/open-policy-agent/opa v0.18.0 h1:EC81mO3/517Kq5brJHydqKE5MLzJ+4cdJvUQKxLzHy8=
|
||||||
github.com/open-policy-agent/opa v0.18.0/go.mod h1:6pC1cMYDI92i9EY/GoA2m+HcZlcCrh3jbfny5F7JVTA=
|
github.com/open-policy-agent/opa v0.18.0/go.mod h1:6pC1cMYDI92i9EY/GoA2m+HcZlcCrh3jbfny5F7JVTA=
|
||||||
github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ=
|
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||||
github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
|
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||||
github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
|
github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
|
||||||
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
|
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
|
||||||
github.com/opencontainers/runc v0.1.1 h1:GlxAyO6x8rfZYN9Tt0Kti5a/cP41iuiO2yYT0IJGY8Y=
|
github.com/opencontainers/runc v0.1.1 h1:GlxAyO6x8rfZYN9Tt0Kti5a/cP41iuiO2yYT0IJGY8Y=
|
||||||
@@ -585,6 +561,7 @@ github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtb
|
|||||||
github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI=
|
github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI=
|
||||||
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
|
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
|
||||||
github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
|
github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
|
||||||
|
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
|
||||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
|
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
|
||||||
github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc=
|
github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc=
|
||||||
github.com/phayes/freeport v0.0.0-20171002181615-b8543db493a5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
|
github.com/phayes/freeport v0.0.0-20171002181615-b8543db493a5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
|
||||||
@@ -599,11 +576,8 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr
|
|||||||
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021 h1:0XM1XL/OFFJjXsYXlG30spTkV/E9+gmd5GD1w2HE8xM=
|
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021 h1:0XM1XL/OFFJjXsYXlG30spTkV/E9+gmd5GD1w2HE8xM=
|
||||||
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
|
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
|
||||||
github.com/pquerna/ffjson v0.0.0-20190813045741-dac163c6c0a9/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M=
|
github.com/pquerna/ffjson v0.0.0-20190813045741-dac163c6c0a9/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M=
|
||||||
github.com/projectcalico/go-json v0.0.0-20161128004156-6219dc7339ba h1:aaF2byUCZhzszHsfPEr2M3qcU4ibtD/yk/il2R7T1PU=
|
|
||||||
github.com/projectcalico/go-json v0.0.0-20161128004156-6219dc7339ba/go.mod h1:q8EdCgBdMQzgiX/uk4GXLWLk+gIHd1a7mWUAamJKDb4=
|
github.com/projectcalico/go-json v0.0.0-20161128004156-6219dc7339ba/go.mod h1:q8EdCgBdMQzgiX/uk4GXLWLk+gIHd1a7mWUAamJKDb4=
|
||||||
github.com/projectcalico/go-yaml v0.0.0-20161201183616-955bc3e451ef h1:Di9BaA9apb6DEstin8RdhKmlzQG76UMbmjPzjCVkMpc=
|
|
||||||
github.com/projectcalico/go-yaml v0.0.0-20161201183616-955bc3e451ef/go.mod h1:1Ra2BftSa7Go38Gbq1q0bfmBFSSgUv+Cdc3SY8IL/C0=
|
github.com/projectcalico/go-yaml v0.0.0-20161201183616-955bc3e451ef/go.mod h1:1Ra2BftSa7Go38Gbq1q0bfmBFSSgUv+Cdc3SY8IL/C0=
|
||||||
github.com/projectcalico/go-yaml-wrapper v0.0.0-20161127220527-598e54215bee h1:yVWsNSlAuYoJ0CznHsYRPiFgsotoj07k00k5rQvGlHM=
|
|
||||||
github.com/projectcalico/go-yaml-wrapper v0.0.0-20161127220527-598e54215bee/go.mod h1:UgC0aTQ2KMDxlX3lU/stndk7DMUBJqzN40yFiILHgxc=
|
github.com/projectcalico/go-yaml-wrapper v0.0.0-20161127220527-598e54215bee/go.mod h1:UgC0aTQ2KMDxlX3lU/stndk7DMUBJqzN40yFiILHgxc=
|
||||||
github.com/projectcalico/kube-controllers v3.8.8+incompatible h1:ZbCg0wJ+gd7i81CB6vOASiUN//oR4ZBl+wEdy0Vk1uI=
|
github.com/projectcalico/kube-controllers v3.8.8+incompatible h1:ZbCg0wJ+gd7i81CB6vOASiUN//oR4ZBl+wEdy0Vk1uI=
|
||||||
github.com/projectcalico/kube-controllers v3.8.8+incompatible/go.mod h1:ZEafKeKN5wiNARRw1LZP8l10uEfp04C7redU848MMZw=
|
github.com/projectcalico/kube-controllers v3.8.8+incompatible/go.mod h1:ZEafKeKN5wiNARRw1LZP8l10uEfp04C7redU848MMZw=
|
||||||
@@ -637,6 +611,8 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So
|
|||||||
github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc=
|
github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc=
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
||||||
|
github.com/rubenv/sql-migrate v0.0.0-20200616145509-8d140a17f351/go.mod h1:DCgfY80j8GYL7MLEfvcpSFvjD0L5yZq/aZUJmhZklyg=
|
||||||
|
github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
|
||||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||||
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
||||||
@@ -658,13 +634,11 @@ github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4
|
|||||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||||
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||||
github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=
|
|
||||||
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
|
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
|
||||||
github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
|
github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
|
||||||
github.com/sony/sonyflake v0.0.0-20181109022403-6d5bd6181009 h1:3wBL/e/qjpSYaXacpbIV+Bsj/nwQ4UO1llG/av54zzw=
|
github.com/sony/sonyflake v0.0.0-20181109022403-6d5bd6181009 h1:3wBL/e/qjpSYaXacpbIV+Bsj/nwQ4UO1llG/av54zzw=
|
||||||
github.com/sony/sonyflake v0.0.0-20181109022403-6d5bd6181009/go.mod h1:dVvZuWJd174umvm5g8CmZD6S2GWwHKtpK/0ZPHswuNo=
|
github.com/sony/sonyflake v0.0.0-20181109022403-6d5bd6181009/go.mod h1:dVvZuWJd174umvm5g8CmZD6S2GWwHKtpK/0ZPHswuNo=
|
||||||
github.com/soundcloud/go-runit v0.0.0-20150630195641-06ad41a06c4a/go.mod h1:LeFCbQYJ3KJlPs/FvPz2dy1tkpxyeNESVyCNNzRXFR0=
|
github.com/soundcloud/go-runit v0.0.0-20150630195641-06ad41a06c4a/go.mod h1:LeFCbQYJ3KJlPs/FvPz2dy1tkpxyeNESVyCNNzRXFR0=
|
||||||
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
|
|
||||||
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||||
github.com/speps/go-hashids v2.0.0+incompatible h1:kSfxGfESueJKTx0mpER9Y/1XHl+FVQjtCqRyYcviFbw=
|
github.com/speps/go-hashids v2.0.0+incompatible h1:kSfxGfESueJKTx0mpER9Y/1XHl+FVQjtCqRyYcviFbw=
|
||||||
github.com/speps/go-hashids v2.0.0+incompatible/go.mod h1:P7hqPzMdnZOfyIk+xrlG1QaSMw+gCBdHKsBDnhpaZvc=
|
github.com/speps/go-hashids v2.0.0+incompatible/go.mod h1:P7hqPzMdnZOfyIk+xrlG1QaSMw+gCBdHKsBDnhpaZvc=
|
||||||
@@ -685,13 +659,10 @@ github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jW
|
|||||||
github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
|
github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
|
||||||
github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
|
github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
|
||||||
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
|
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
|
||||||
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
github.com/thanos-io/thanos v0.13.1-0.20200910143741-e0b7f7b32e9c/go.mod h1:1IzeMKiS+pvxbG2M6ZJyi8ZHaAQKXNjDbP2gjhPbSXE=
|
github.com/thanos-io/thanos v0.13.1-0.20200910143741-e0b7f7b32e9c/go.mod h1:1IzeMKiS+pvxbG2M6ZJyi8ZHaAQKXNjDbP2gjhPbSXE=
|
||||||
github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
|
|
||||||
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
||||||
github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
|
github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
|
||||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ=
|
|
||||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||||
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
|
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
|
||||||
github.com/uber/jaeger-client-go v2.23.0+incompatible h1:o2g11IUBdEsSZVzF3k7+bahLmxRP/dbOoW4zQ30UlKE=
|
github.com/uber/jaeger-client-go v2.23.0+incompatible h1:o2g11IUBdEsSZVzF3k7+bahLmxRP/dbOoW4zQ30UlKE=
|
||||||
@@ -714,7 +685,6 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2
|
|||||||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
|
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
|
||||||
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
||||||
github.com/xenolf/lego v0.3.2-0.20160613233155-a9d8cec0e656/go.mod h1:fwiGnfsIjG7OHPfOvgK7Y/Qo6+2Ox0iozjNTkZICKbY=
|
github.com/xenolf/lego v0.3.2-0.20160613233155-a9d8cec0e656/go.mod h1:fwiGnfsIjG7OHPfOvgK7Y/Qo6+2Ox0iozjNTkZICKbY=
|
||||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
|
|
||||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||||
github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8=
|
github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8=
|
||||||
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
||||||
@@ -724,12 +694,12 @@ github.com/yashtewari/glob-intersection v0.0.0-20180916065949-5c77d914dd0b/go.mo
|
|||||||
github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
|
github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
|
||||||
github.com/yvasiyarov/gorelic v0.0.6/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
|
github.com/yvasiyarov/gorelic v0.0.6/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
|
||||||
github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
|
github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
|
||||||
|
github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
|
||||||
gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE=
|
gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE=
|
||||||
go.elastic.co/apm v1.5.0/go.mod h1:OdB9sPtM6Vt7oz3VXt7+KR96i9li74qrxBGHTQygFvk=
|
go.elastic.co/apm v1.5.0/go.mod h1:OdB9sPtM6Vt7oz3VXt7+KR96i9li74qrxBGHTQygFvk=
|
||||||
go.elastic.co/apm/module/apmhttp v1.5.0/go.mod h1:1FbmNuyD3ddauwzgVwFB0fqY6KbZt3JkV187tGCYYhY=
|
go.elastic.co/apm/module/apmhttp v1.5.0/go.mod h1:1FbmNuyD3ddauwzgVwFB0fqY6KbZt3JkV187tGCYYhY=
|
||||||
go.elastic.co/apm/module/apmot v1.5.0/go.mod h1:d2KYwhJParTpyw2WnTNy8geNlHKKFX+4oK3YLlsesWE=
|
go.elastic.co/apm/module/apmot v1.5.0/go.mod h1:d2KYwhJParTpyw2WnTNy8geNlHKKFX+4oK3YLlsesWE=
|
||||||
go.elastic.co/fastjson v1.0.0/go.mod h1:PmeUOMMtLHQr9ZS9J9owrAVg0FkaZDRZJEFTTGHtchs=
|
go.elastic.co/fastjson v1.0.0/go.mod h1:PmeUOMMtLHQr9ZS9J9owrAVg0FkaZDRZJEFTTGHtchs=
|
||||||
go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk=
|
|
||||||
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
||||||
go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0=
|
go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0=
|
||||||
go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
|
go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
|
||||||
@@ -742,15 +712,13 @@ go.uber.org/automaxprocs v1.2.0/go.mod h1:YfO3fm683kQpzETxlTGZhGIVmXAhaw3gxeBADb
|
|||||||
go.uber.org/goleak v1.1.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
|
go.uber.org/goleak v1.1.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
|
||||||
go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc=
|
go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc=
|
||||||
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
|
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
|
||||||
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
|
|
||||||
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
|
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
|
||||||
go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU=
|
go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU=
|
||||||
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
|
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
|
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
|
||||||
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f h1:hX65Cu3JDlGH3uEdK7I99Ii+9kjD6mvnnpfLdEAH0x4=
|
|
||||||
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
|
||||||
@@ -765,7 +733,6 @@ golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
|||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20190710153321-831012c29e42 h1:4IOeC7p+OItq3+O5BWkcmVu2uBe3jekXau5S4QZX9DU=
|
|
||||||
golang.org/x/tools v0.0.0-20190710153321-831012c29e42/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI=
|
golang.org/x/tools v0.0.0-20190710153321-831012c29e42/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
@@ -775,7 +742,6 @@ gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU=
|
|||||||
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
|
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
|
||||||
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
|
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
|
||||||
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc=
|
|
||||||
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||||
google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb h1:nAFaltAMbNVA0rixtwvdnqgSVLX3HFUUvMkEklmzbYM=
|
google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb h1:nAFaltAMbNVA0rixtwvdnqgSVLX3HFUUvMkEklmzbYM=
|
||||||
google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
@@ -803,6 +769,7 @@ gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8
|
|||||||
gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
|
gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
|
||||||
gopkg.in/go-playground/validator.v9 v9.27.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
|
gopkg.in/go-playground/validator.v9 v9.27.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
|
||||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
|
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
|
||||||
|
gopkg.in/gorp.v1 v1.7.2/go.mod h1:Wo3h+DBQZIxATwftsglhdD/62zRFPhGhTiu5jUJmCaw=
|
||||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
||||||
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||||
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
@@ -814,7 +781,6 @@ gopkg.in/square/go-jose.v2 v2.4.0 h1:0kXPskUMGAXXWJlP05ktEMOV0vmzFQUWw6d+aZJQU8A
|
|||||||
gopkg.in/square/go-jose.v2 v2.4.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
|
gopkg.in/square/go-jose.v2 v2.4.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
|
||||||
gopkg.in/src-d/go-billy.v4 v4.3.0 h1:KtlZ4c1OWbIs4jCv5ZXrTqG8EQocr0g/d4DjNg70aek=
|
gopkg.in/src-d/go-billy.v4 v4.3.0 h1:KtlZ4c1OWbIs4jCv5ZXrTqG8EQocr0g/d4DjNg70aek=
|
||||||
gopkg.in/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk=
|
gopkg.in/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk=
|
||||||
gopkg.in/src-d/go-git-fixtures.v3 v3.1.1 h1:XWW/s5W18RaJpmo1l0IYGqXKuJITWRFuA45iOf1dKJs=
|
|
||||||
gopkg.in/src-d/go-git-fixtures.v3 v3.1.1/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g=
|
gopkg.in/src-d/go-git-fixtures.v3 v3.1.1/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g=
|
||||||
gopkg.in/src-d/go-git.v4 v4.11.0 h1:cJwWgJ0DXifrNrXM6RGN1Y2yR60Rr1zQ9Q5DX5S9qgU=
|
gopkg.in/src-d/go-git.v4 v4.11.0 h1:cJwWgJ0DXifrNrXM6RGN1Y2yR60Rr1zQ9Q5DX5S9qgU=
|
||||||
gopkg.in/src-d/go-git.v4 v4.11.0/go.mod h1:Vtut8izDyrM8BUVQnzJ+YvmNcem2J89EmfZYCkLokZk=
|
gopkg.in/src-d/go-git.v4 v4.11.0/go.mod h1:Vtut8izDyrM8BUVQnzJ+YvmNcem2J89EmfZYCkLokZk=
|
||||||
@@ -827,10 +793,9 @@ gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
|
|||||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
|
|
||||||
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
|
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
|
||||||
helm.sh/helm/v3 v3.0.1/go.mod h1:sI7B9yfvMgxtTPMWdk1jSKJ2aa59UyP9qhPydqW6mgo=
|
helm.sh/helm/v3 v3.3.0 h1:7BUpW5NI1pauKDnIh0ju53pNc3Ra/UyqqBr0b5OgBwY=
|
||||||
honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U=
|
helm.sh/helm/v3 v3.3.0/go.mod h1:cWRDbGk4EiIL0/+jN0GI8T7m96Cps81/ta1kcacl85g=
|
||||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||||
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
|
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
|
||||||
istio.io/api v0.0.0-20201113182140-d4b7e3fc2b44 h1:mfs4UJtpH8ElVEohFZw39qDGv9gg7TOkYVTwJZGQ5Yc=
|
istio.io/api v0.0.0-20201113182140-d4b7e3fc2b44 h1:mfs4UJtpH8ElVEohFZw39qDGv9gg7TOkYVTwJZGQ5Yc=
|
||||||
@@ -851,11 +816,9 @@ k8s.io/cli-runtime v0.18.6 h1:I8BkH5NyqMQ4zqUBmpXJ1LxIqpCH88H/1edPkPVWzjQ=
|
|||||||
k8s.io/cli-runtime v0.18.6/go.mod h1:+G/WTNqHgUv636e5y7rhOQ7epUbRXnwmPnhOhD6t9uM=
|
k8s.io/cli-runtime v0.18.6/go.mod h1:+G/WTNqHgUv636e5y7rhOQ7epUbRXnwmPnhOhD6t9uM=
|
||||||
k8s.io/client-go v0.18.6 h1:I+oWqJbibLSGsZj8Xs8F0aWVXJVIoUHWaaJV3kUN/Zw=
|
k8s.io/client-go v0.18.6 h1:I+oWqJbibLSGsZj8Xs8F0aWVXJVIoUHWaaJV3kUN/Zw=
|
||||||
k8s.io/client-go v0.18.6/go.mod h1:/fwtGLjYMS1MaM5oi+eXhKwG+1UHidUEXRh6cNsdO0Q=
|
k8s.io/client-go v0.18.6/go.mod h1:/fwtGLjYMS1MaM5oi+eXhKwG+1UHidUEXRh6cNsdO0Q=
|
||||||
k8s.io/code-generator v0.18.6 h1:QdfvGfs4gUCS1dru+rLbCKIFxYEV0IRfF8MXwY/ozLk=
|
|
||||||
k8s.io/code-generator v0.18.6/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c=
|
k8s.io/code-generator v0.18.6/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c=
|
||||||
k8s.io/component-base v0.18.6 h1:Wd6cHGwJN2qpufnirVOB3oMhyhbioGsKEi5HeDBsV+s=
|
k8s.io/component-base v0.18.6 h1:Wd6cHGwJN2qpufnirVOB3oMhyhbioGsKEi5HeDBsV+s=
|
||||||
k8s.io/component-base v0.18.6/go.mod h1:knSVsibPR5K6EW2XOjEHik6sdU5nCvKMrzMt2D4In14=
|
k8s.io/component-base v0.18.6/go.mod h1:knSVsibPR5K6EW2XOjEHik6sdU5nCvKMrzMt2D4In14=
|
||||||
k8s.io/gengo v0.0.0-20200114144118-36b2048a9120 h1:RPscN6KhmG54S33L+lr3GS+oD1jmchIU0ll519K6FA4=
|
|
||||||
k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
||||||
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
|
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
|
||||||
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
|
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
|
||||||
@@ -869,9 +832,7 @@ k8s.io/metrics v0.18.6 h1:IRMCn0KKNhbOSnxNZ+MhooRi8c67iIMjpGkKpm6oqOM=
|
|||||||
k8s.io/metrics v0.18.6/go.mod h1:iAwGeabusQNO3duHDM7BBExTUB8L+iq8PM7N9EtQw6g=
|
k8s.io/metrics v0.18.6/go.mod h1:iAwGeabusQNO3duHDM7BBExTUB8L+iq8PM7N9EtQw6g=
|
||||||
k8s.io/utils v0.0.0-20200603063816-c1c6865ac451 h1:v8ud2Up6QK1lNOKFgiIVrZdMg7MpmSnvtrOieolJKoE=
|
k8s.io/utils v0.0.0-20200603063816-c1c6865ac451 h1:v8ud2Up6QK1lNOKFgiIVrZdMg7MpmSnvtrOieolJKoE=
|
||||||
k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||||
kubesphere.io/im v0.1.0 h1:Isu/WBOawUb4fzSlQeD1f6Vbq9pqFS0PmDg8v8iFYaY=
|
|
||||||
kubesphere.io/im v0.1.0/go.mod h1:DHJj/JngMUFyaXecLjBPXj/zk5Oi7ifIixLRp0qJkyA=
|
kubesphere.io/im v0.1.0/go.mod h1:DHJj/JngMUFyaXecLjBPXj/zk5Oi7ifIixLRp0qJkyA=
|
||||||
openpitrix.io/iam v0.1.0 h1:cb1mCusim7EGeoXEfuaVa1m7Co/pzim3keoxxKdv944=
|
|
||||||
openpitrix.io/iam v0.1.0/go.mod h1:EcZE8CPBg+1fEKCDEhpsIZ8isWWO7javpu84mSqoVn4=
|
openpitrix.io/iam v0.1.0/go.mod h1:EcZE8CPBg+1fEKCDEhpsIZ8isWWO7javpu84mSqoVn4=
|
||||||
openpitrix.io/libqueue v0.4.1/go.mod h1:qUuS2viIR86Fm1rLfLRFMMAyltUeGxNt8zoCNkmf/Gk=
|
openpitrix.io/libqueue v0.4.1/go.mod h1:qUuS2viIR86Fm1rLfLRFMMAyltUeGxNt8zoCNkmf/Gk=
|
||||||
openpitrix.io/logger v0.1.0/go.mod h1:SV8Btt2cTSmeL9H/1XCkYmQ+WQ2upVY4e0wlr07RP28=
|
openpitrix.io/logger v0.1.0/go.mod h1:SV8Btt2cTSmeL9H/1XCkYmQ+WQ2upVY4e0wlr07RP28=
|
||||||
@@ -890,11 +851,11 @@ sigs.k8s.io/application v0.8.4-0.20201016185654-c8e2959e57a0 h1:cH3Q4uNycL9Lgzly
|
|||||||
sigs.k8s.io/application v0.8.4-0.20201016185654-c8e2959e57a0/go.mod h1:wdTrELsIgKk8lnlRaoKWao9YpLelXpABdEgCM1aEEE4=
|
sigs.k8s.io/application v0.8.4-0.20201016185654-c8e2959e57a0/go.mod h1:wdTrELsIgKk8lnlRaoKWao9YpLelXpABdEgCM1aEEE4=
|
||||||
sigs.k8s.io/controller-runtime v0.6.4 h1:4013CKsBs5bEqo+LevzDett+LLxag/FjQWG94nVZ/9g=
|
sigs.k8s.io/controller-runtime v0.6.4 h1:4013CKsBs5bEqo+LevzDett+LLxag/FjQWG94nVZ/9g=
|
||||||
sigs.k8s.io/controller-runtime v0.6.4/go.mod h1:WlZNXcM0++oyaQt4B7C2lEE5JYRs8vJUzRP4N4JpdAY=
|
sigs.k8s.io/controller-runtime v0.6.4/go.mod h1:WlZNXcM0++oyaQt4B7C2lEE5JYRs8vJUzRP4N4JpdAY=
|
||||||
sigs.k8s.io/controller-tools v0.4.0 h1:9zIdrc6q9RKke8+DnVPVBVZ+cfF9L0TwM01cxNnklYo=
|
|
||||||
sigs.k8s.io/controller-tools v0.4.0/go.mod h1:G9rHdZMVlBDocIxGkK3jHLWqcTMNvveypYJwrvYKjWU=
|
sigs.k8s.io/controller-tools v0.4.0/go.mod h1:G9rHdZMVlBDocIxGkK3jHLWqcTMNvveypYJwrvYKjWU=
|
||||||
sigs.k8s.io/kind v0.8.1/go.mod h1:oNKTxUVPYkV9lWzY6CVMNluVq8cBsyq+UgPJdvA3uu4=
|
sigs.k8s.io/kind v0.8.1/go.mod h1:oNKTxUVPYkV9lWzY6CVMNluVq8cBsyq+UgPJdvA3uu4=
|
||||||
sigs.k8s.io/kubefed v0.4.0 h1:eNZ5SpblUBQEzPHs8XtAjEwmkbs498IhrGvqzdynHOY=
|
sigs.k8s.io/kubefed v0.4.0 h1:eNZ5SpblUBQEzPHs8XtAjEwmkbs498IhrGvqzdynHOY=
|
||||||
sigs.k8s.io/kubefed v0.4.0/go.mod h1:YBq2sF7Usjfh1xmop6E7k+5USBYfhB5IMLitCoOnOkM=
|
sigs.k8s.io/kubefed v0.4.0/go.mod h1:YBq2sF7Usjfh1xmop6E7k+5USBYfhB5IMLitCoOnOkM=
|
||||||
|
sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0=
|
||||||
sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
|
sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
|
||||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E=
|
sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E=
|
||||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
|
sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
GV="network:v1alpha1 servicemesh:v1alpha2 tenant:v1alpha1 tenant:v1alpha2 devops:v1alpha1 iam:v1alpha2 devops:v1alpha3 cluster:v1alpha1 storage:v1alpha1 auditing:v1alpha1 types:v1beta1 quota:v1alpha2"
|
|
||||||
|
GV="network:v1alpha1 servicemesh:v1alpha2 tenant:v1alpha1 tenant:v1alpha2 devops:v1alpha1 iam:v1alpha2 devops:v1alpha3 cluster:v1alpha1 storage:v1alpha1 auditing:v1alpha1 types:v1beta1 quota:v1alpha2 application:v1alpha1"
|
||||||
|
|
||||||
rm -rf ./pkg/client
|
rm -rf ./pkg/client
|
||||||
./hack/generate_group.sh "client,lister,informer" kubesphere.io/kubesphere/pkg/client kubesphere.io/kubesphere/pkg/apis "$GV" --output-base=./ -h "$PWD/hack/boilerplate.go.txt"
|
./hack/generate_group.sh "client,lister,informer" kubesphere.io/kubesphere/pkg/client kubesphere.io/kubesphere/pkg/apis "$GV" --output-base=./ -h "$PWD/hack/boilerplate.go.txt"
|
||||||
|
|||||||
25
pkg/apis/addtoscheme_application_v1alpha1.go
Normal file
25
pkg/apis/addtoscheme_application_v1alpha1.go
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package apis
|
||||||
|
|
||||||
|
import (
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
AddToSchemes = append(AddToSchemes, v1alpha1.SchemeBuilder.AddToScheme)
|
||||||
|
}
|
||||||
28
pkg/apis/application/crdinstall/install.go
Normal file
28
pkg/apis/application/crdinstall/install.go
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package crdinstall
|
||||||
|
|
||||||
|
import (
|
||||||
|
k8sruntime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
urlruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Install(scheme *k8sruntime.Scheme) {
|
||||||
|
urlruntime.Must(v1alpha1.AddToScheme(scheme))
|
||||||
|
urlruntime.Must(scheme.SetVersionPriority(v1alpha1.SchemeGroupVersion))
|
||||||
|
}
|
||||||
17
pkg/apis/application/group.go
Normal file
17
pkg/apis/application/group.go
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package application
|
||||||
61
pkg/apis/application/v1alpha1/constants.go
Normal file
61
pkg/apis/application/v1alpha1/constants.go
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
const (
|
||||||
|
MsgLen = 512
|
||||||
|
HelmRepoSyncStateLen = 10
|
||||||
|
|
||||||
|
// app version state
|
||||||
|
StateDraft = "draft"
|
||||||
|
StateSubmitted = "submitted"
|
||||||
|
StatePassed = "passed"
|
||||||
|
StateRejected = "rejected"
|
||||||
|
StateSuspended = "suspended"
|
||||||
|
StateActive = "active"
|
||||||
|
|
||||||
|
// repo state
|
||||||
|
RepoStateSuccessful = "successful"
|
||||||
|
RepoStateFailed = "failed"
|
||||||
|
RepoStateSyncing = "syncing"
|
||||||
|
|
||||||
|
// helm release state
|
||||||
|
HelmStatusActive = "active"
|
||||||
|
HelmStatusCreating = "creating"
|
||||||
|
HelmStatusDeleting = "deleting"
|
||||||
|
HelmStatusUpgrading = "upgrading"
|
||||||
|
HelmStatusRollbacking = "rollbacking"
|
||||||
|
HelmStatusPending = "pending"
|
||||||
|
HelmStatusSuccessful = "successful"
|
||||||
|
HelmStatusFailed = "failed"
|
||||||
|
|
||||||
|
AttachmentTypeScreenshot = "screenshot"
|
||||||
|
AttachmentTypeIcon = "icon"
|
||||||
|
|
||||||
|
HelmApplicationAppStoreSuffix = "-store"
|
||||||
|
HelmApplicationIdPrefix = "app-"
|
||||||
|
HelmRepoIdPrefix = "repo-"
|
||||||
|
HelmApplicationVersionIdPrefix = "appv-"
|
||||||
|
HelmCategoryIdPrefix = "ctg-"
|
||||||
|
HelmAttachmentPrefix = "att-"
|
||||||
|
HelmReleasePrefix = "rls-"
|
||||||
|
UncategorizedName = "uncategorized"
|
||||||
|
UncategorizedId = "ctg-uncategorized"
|
||||||
|
AppStoreRepoId = "repo-helm"
|
||||||
|
|
||||||
|
OriginWorkspaceLabelKey = "kubesphere.io/workspace-origin"
|
||||||
|
)
|
||||||
20
pkg/apis/application/v1alpha1/doc.go
Normal file
20
pkg/apis/application/v1alpha1/doc.go
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen=package,register
|
||||||
|
// +groupName=application.kubesphere.io
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
128
pkg/apis/application/v1alpha1/helmapplication_types.go
Normal file
128
pkg/apis/application/v1alpha1/helmapplication_types.go
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/constants"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ResourceKindHelmApplication = "HelmApplication"
|
||||||
|
ResourceSingularHelmApplication = "helmapplication"
|
||||||
|
ResourcePluralHelmApplication = "helmapplications"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmApplicationSpec defines the desired state of HelmApplication
|
||||||
|
type HelmApplicationSpec struct {
|
||||||
|
// the name of the helm application
|
||||||
|
Name string `json:"name"`
|
||||||
|
// description from chart's description or frontend
|
||||||
|
Description string `json:"description,omitempty"`
|
||||||
|
// attachments id
|
||||||
|
Attachments []string `json:"attachments,omitempty"`
|
||||||
|
// info from frontend
|
||||||
|
Abstraction string `json:"abstraction,omitempty"`
|
||||||
|
AppHome string `json:"appHome,omitempty"`
|
||||||
|
// The attachment id of the icon
|
||||||
|
Icon string `json:"icon,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmApplicationStatus defines the observed state of HelmApplication
|
||||||
|
type HelmApplicationStatus struct {
|
||||||
|
// If this application belong to appStore, latestVersion is the the latest version of the active application version.
|
||||||
|
// otherwise latestVersion is the latest version of all application version
|
||||||
|
LatestVersion string `json:"latestVersion,omitempty"`
|
||||||
|
// the state of the helm application: draft, submitted, passed, rejected, suspended, active
|
||||||
|
State string `json:"state,omitempty"`
|
||||||
|
UpdateTime *metav1.Time `json:"updateTime"`
|
||||||
|
StatusTime *metav1.Time `json:"statusTime"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +kubebuilder:object:root=true
|
||||||
|
// +kubebuilder:resource:scope=Cluster,shortName=happ
|
||||||
|
// +kubebuilder:subresource:status
|
||||||
|
// +kubebuilder:printcolumn:name="application name",type=string,JSONPath=`.spec.name`
|
||||||
|
// +kubebuilder:printcolumn:name="workspace",type="string",JSONPath=".metadata.labels.kubesphere\\.io/workspace"
|
||||||
|
// +kubebuilder:printcolumn:name="State",type="string",JSONPath=".status.state"
|
||||||
|
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
|
||||||
|
// +genclient
|
||||||
|
// +genclient:nonNamespaced
|
||||||
|
|
||||||
|
// HelmApplication is the Schema for the helmapplications API
|
||||||
|
type HelmApplication struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Spec HelmApplicationSpec `json:"spec,omitempty"`
|
||||||
|
Status HelmApplicationStatus `json:"status,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +kubebuilder:object:root=true
|
||||||
|
|
||||||
|
// HelmApplicationList contains a list of HelmApplication
|
||||||
|
type HelmApplicationList struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
metav1.ListMeta `json:"metadata,omitempty"`
|
||||||
|
Items []HelmApplication `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
SchemeBuilder.Register(&HelmApplication{}, &HelmApplicationList{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplication) GetTrueName() string {
|
||||||
|
return in.Spec.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplication) GetHelmRepoId() string {
|
||||||
|
return getValue(in.Labels, constants.ChartRepoIdLabelKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplication) GetHelmApplicationId() string {
|
||||||
|
return strings.TrimSuffix(in.Name, HelmApplicationAppStoreSuffix)
|
||||||
|
}
|
||||||
|
func (in *HelmApplication) GetHelmCategoryId() string {
|
||||||
|
return getValue(in.Labels, constants.CategoryIdLabelKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplication) GetWorkspace() string {
|
||||||
|
ws := getValue(in.Labels, constants.WorkspaceLabelKey)
|
||||||
|
if ws == "" {
|
||||||
|
return getValue(in.Labels, OriginWorkspaceLabelKey)
|
||||||
|
}
|
||||||
|
return ws
|
||||||
|
}
|
||||||
|
|
||||||
|
func getValue(m map[string]string, key string) string {
|
||||||
|
if m == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return m[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplication) GetCategoryId() string {
|
||||||
|
return getValue(in.Labels, constants.CategoryIdLabelKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplication) State() string {
|
||||||
|
if in.Status.State == "" {
|
||||||
|
return StateDraft
|
||||||
|
}
|
||||||
|
return in.Status.State
|
||||||
|
}
|
||||||
229
pkg/apis/application/v1alpha1/helmapplicationversion_types.go
Normal file
229
pkg/apis/application/v1alpha1/helmapplicationversion_types.go
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/constants"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ResourceKindHelmApplicationVersion = "HelmApplicationVersion"
|
||||||
|
ResourceSingularHelmApplicationVersion = "helmapplicationversion"
|
||||||
|
ResourcePluralHelmApplicationVersion = "helmapplicationversions"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmApplicationVersionSpec defines the desired state of HelmApplicationVersion
|
||||||
|
type HelmApplicationVersionSpec struct {
|
||||||
|
// metadata from chart
|
||||||
|
*Metadata `json:",inline"`
|
||||||
|
// chart url
|
||||||
|
URLs []string `json:"urls,omitempty"`
|
||||||
|
// raw data of chart, it will !!!NOT!!! be save to etcd
|
||||||
|
Data []byte `json:"data,omitempty"`
|
||||||
|
|
||||||
|
// dataKey in the storage
|
||||||
|
DataKey string `json:"dataKey,omitempty"`
|
||||||
|
|
||||||
|
// chart create time
|
||||||
|
Created *metav1.Time `json:"created,omitempty"`
|
||||||
|
|
||||||
|
// chart digest
|
||||||
|
Digest string `json:"digest,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmApplicationVersionStatus defines the observed state of HelmApplicationVersion
|
||||||
|
type HelmApplicationVersionStatus struct {
|
||||||
|
State string `json:"state,omitempty"`
|
||||||
|
Audit []Audit `json:"audit,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +kubebuilder:object:root=true
|
||||||
|
// +kubebuilder:resource:scope=Cluster,shortName=happver
|
||||||
|
// +kubebuilder:subresource:status
|
||||||
|
// +kubebuilder:printcolumn:name="application name",type=string,JSONPath=`.spec.name`
|
||||||
|
// +kubebuilder:printcolumn:name="State",type="string",JSONPath=".status.state"
|
||||||
|
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
|
||||||
|
// +genclient
|
||||||
|
// +genclient:nonNamespaced
|
||||||
|
|
||||||
|
// HelmApplicationVersion is the Schema for the helmapplicationversions API
|
||||||
|
type HelmApplicationVersion struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Spec HelmApplicationVersionSpec `json:"spec,omitempty"`
|
||||||
|
Status HelmApplicationVersionStatus `json:"status,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Maintainer describes a Chart maintainer.
|
||||||
|
type Maintainer struct {
|
||||||
|
// Name is a user name or organization name
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
// Email is an optional email address to contact the named maintainer
|
||||||
|
Email string `json:"email,omitempty"`
|
||||||
|
// URL is an optional URL to an address for the named maintainer
|
||||||
|
URL string `json:"url,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Metadata for a Chart file. This models the structure of a Chart.yaml file.
|
||||||
|
type Metadata struct {
|
||||||
|
// The name of the chart
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
// The URL to a relevant project page, git repo, or contact person
|
||||||
|
Home string `json:"home,omitempty"`
|
||||||
|
// Source is the URL to the source code of this chart
|
||||||
|
Sources []string `json:"sources,omitempty"`
|
||||||
|
// A SemVer 2 conformant version string of the chart
|
||||||
|
Version string `json:"version,omitempty"`
|
||||||
|
// A one-sentence description of the chart
|
||||||
|
Description string `json:"description,omitempty"`
|
||||||
|
// A list of string keywords
|
||||||
|
Keywords []string `json:"keywords,omitempty"`
|
||||||
|
// A list of name and URL/email address combinations for the maintainer(s)
|
||||||
|
Maintainers []*Maintainer `json:"maintainers,omitempty"`
|
||||||
|
// The URL to an icon file.
|
||||||
|
Icon string `json:"icon,omitempty"`
|
||||||
|
// The API Version of this chart.
|
||||||
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
|
// The condition to check to enable chart
|
||||||
|
Condition string `json:"condition,omitempty"`
|
||||||
|
// The tags to check to enable chart
|
||||||
|
Tags string `json:"tags,omitempty"`
|
||||||
|
// The version of the application enclosed inside of this chart.
|
||||||
|
AppVersion string `json:"appVersion,omitempty"`
|
||||||
|
// Whether or not this chart is deprecated
|
||||||
|
Deprecated bool `json:"deprecated,omitempty"`
|
||||||
|
// Annotations are additional mappings uninterpreted by Helm,
|
||||||
|
// made available for inspection by other applications.
|
||||||
|
Annotations map[string]string `json:"annotations,omitempty"`
|
||||||
|
// KubeVersion is a SemVer constraint specifying the version of Kubernetes required.
|
||||||
|
KubeVersion string `json:"kubeVersion,omitempty"`
|
||||||
|
// Dependencies are a list of dependencies for a chart.
|
||||||
|
Dependencies []*Dependency `json:"dependencies,omitempty"`
|
||||||
|
// Specifies the chart type: application or library
|
||||||
|
Type string `json:"type,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Audit struct {
|
||||||
|
// audit message
|
||||||
|
Message string `json:"message,omitempty"`
|
||||||
|
// audit state: submitted, passed, draft, active, rejected, suspended
|
||||||
|
State string `json:"state,omitempty"`
|
||||||
|
// audit time
|
||||||
|
Time metav1.Time `json:"time"`
|
||||||
|
// audit operator
|
||||||
|
Operator string `json:"operator,omitempty"`
|
||||||
|
OperatorType string `json:"operatorType,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dependency describes a chart upon which another chart depends.
|
||||||
|
// Dependencies can be used to express developer intent, or to capture the state
|
||||||
|
// of a chart.
|
||||||
|
type Dependency struct {
|
||||||
|
// Name is the name of the dependency.
|
||||||
|
// This must mach the name in the dependency's Chart.yaml.
|
||||||
|
Name string `json:"name"`
|
||||||
|
// Version is the version (range) of this chart.
|
||||||
|
// A lock file will always produce a single version, while a dependency
|
||||||
|
// may contain a semantic version range.
|
||||||
|
Version string `json:"version,omitempty"`
|
||||||
|
// The URL to the repository.
|
||||||
|
// Appending `index.yaml` to this string should result in a URL that can be
|
||||||
|
// used to fetch the repository index.
|
||||||
|
Repository string `json:"repository"`
|
||||||
|
// A yaml path that resolves to a boolean, used for enabling/disabling charts (e.g. subchart1.enabled )
|
||||||
|
Condition string `json:"condition,omitempty"`
|
||||||
|
// Tags can be used to group charts for enabling/disabling together
|
||||||
|
Tags []string `json:"tags,omitempty"`
|
||||||
|
// Enabled bool determines if chart should be loaded
|
||||||
|
Enabled bool `json:"enabled,omitempty"`
|
||||||
|
// ImportValues holds the mapping of source values to parent key to be imported. Each item can be a
|
||||||
|
// string or pair of child/parent sublist items.
|
||||||
|
// ImportValues []interface{} `json:"import_values,omitempty"`
|
||||||
|
|
||||||
|
// Alias usable alias to be used for the chart
|
||||||
|
Alias string `json:"alias,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +kubebuilder:object:root=true
|
||||||
|
|
||||||
|
// HelmApplicationVersionList contains a list of HelmApplicationVersion
|
||||||
|
type HelmApplicationVersionList struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
metav1.ListMeta `json:"metadata,omitempty"`
|
||||||
|
Items []HelmApplicationVersion `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
SchemeBuilder.Register(&HelmApplicationVersion{}, &HelmApplicationVersionList{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) GetCreator() string {
|
||||||
|
return getValue(in.Annotations, constants.CreatorAnnotationKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) GetHelmApplicationVersionId() string {
|
||||||
|
return in.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) GetWorkspace() string {
|
||||||
|
return getValue(in.Labels, constants.WorkspaceLabelKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) GetVersionName() string {
|
||||||
|
appV := in.GetChartAppVersion()
|
||||||
|
if appV != "" {
|
||||||
|
return fmt.Sprintf("%s [%s]", in.GetChartVersion(), appV)
|
||||||
|
} else {
|
||||||
|
return in.GetChartVersion()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) GetHelmApplicationId() string {
|
||||||
|
return getValue(in.Labels, constants.ChartApplicationIdLabelKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) GetSemver() string {
|
||||||
|
return strings.Split(in.GetVersionName(), " ")[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) GetTrueName() string {
|
||||||
|
return in.Spec.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) GetChartVersion() string {
|
||||||
|
return in.Spec.Version
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) GetChartAppVersion() string {
|
||||||
|
return in.Spec.AppVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) GetHelmRepoId() string {
|
||||||
|
return getValue(in.Labels, constants.ChartRepoIdLabelKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmApplicationVersion) State() string {
|
||||||
|
if in.Status.State == "" {
|
||||||
|
return StateDraft
|
||||||
|
}
|
||||||
|
|
||||||
|
return in.Status.State
|
||||||
|
}
|
||||||
79
pkg/apis/application/v1alpha1/helmcategory_types.go
Normal file
79
pkg/apis/application/v1alpha1/helmcategory_types.go
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ResourceKindHelmCategory = "HelmCategory"
|
||||||
|
ResourceSingularHelmCategory = "helmcategory"
|
||||||
|
ResourcePluralHelmCategory = "helmcategories"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmCategorySpec defines the desired state of HelmRepo
|
||||||
|
type HelmCategorySpec struct {
|
||||||
|
// name of the category
|
||||||
|
Name string `json:"name"`
|
||||||
|
// info from frontend
|
||||||
|
Description string `json:"description,omitempty"`
|
||||||
|
Locale string `json:"locale,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +kubebuilder:object:root=true
|
||||||
|
// +kubebuilder:resource:scope=Cluster,shortName=hctg
|
||||||
|
// +kubebuilder:subresource:status
|
||||||
|
// +kubebuilder:printcolumn:name="name",type=string,JSONPath=`.spec.name`
|
||||||
|
// +kubebuilder:printcolumn:name="total",type=string,JSONPath=`.status.total`
|
||||||
|
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
|
||||||
|
// +genclient
|
||||||
|
// +genclient:nonNamespaced
|
||||||
|
|
||||||
|
// HelmCategory is the Schema for the helmcategories API
|
||||||
|
type HelmCategory struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Spec HelmCategorySpec `json:"spec,omitempty"`
|
||||||
|
Status HelmCategoryStatus `json:"status,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HelmCategoryStatus struct {
|
||||||
|
// total helmapplications belong to this category
|
||||||
|
Total int `json:"total"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +kubebuilder:object:root=true
|
||||||
|
|
||||||
|
// HelmCategoryList contains a list of HelmCategory
|
||||||
|
type HelmCategoryList struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
metav1.ListMeta `json:"metadata,omitempty"`
|
||||||
|
Items []HelmCategory `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmCategory) GetTrueName() string {
|
||||||
|
if in == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return in.Spec.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
SchemeBuilder.Register(&HelmCategory{}, &HelmCategoryList{})
|
||||||
|
}
|
||||||
150
pkg/apis/application/v1alpha1/helmrelease_types.go
Normal file
150
pkg/apis/application/v1alpha1/helmrelease_types.go
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/constants"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ResourceKindHelmRelease = "HelmRelease"
|
||||||
|
ResourceSingularHelmRelease = "helmrelease"
|
||||||
|
ResourcePluralHelmRelease = "helmreleases"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmReleaseSpec defines the desired state of HelmRelease
|
||||||
|
type HelmReleaseSpec struct {
|
||||||
|
// Name of the release
|
||||||
|
Name string `json:"name"`
|
||||||
|
// Message got from frontend
|
||||||
|
Description string `json:"description,omitempty"`
|
||||||
|
// helm release values.yaml
|
||||||
|
Values []byte `json:"values,omitempty"`
|
||||||
|
// The name of the chart which will be installed.
|
||||||
|
ChartName string `json:"chartName"`
|
||||||
|
// Specify the exact chart version to install. If this is not specified, the latest version is installed
|
||||||
|
ChartVersion string `json:"chartVersion"`
|
||||||
|
// appVersion from Chart.yaml
|
||||||
|
ChartAppVersion string `json:"chartAppVer,omitempty"`
|
||||||
|
// id of the repo
|
||||||
|
RepoId string `json:"repoId,omitempty"`
|
||||||
|
// id of the helmapplication
|
||||||
|
ApplicationId string `json:"appId,omitempty"`
|
||||||
|
// application version id
|
||||||
|
ApplicationVersionId string `json:"appVerId,omitempty"`
|
||||||
|
// expected release version, when this version is not equal status.version, the release need upgrade
|
||||||
|
// this filed should be modified when any filed of the spec modified.
|
||||||
|
Version int `json:"version"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HelmReleaseDeployStatus struct {
|
||||||
|
// A human readable message indicating details about why the release is in this state.
|
||||||
|
Message string `json:"message,omitempty"`
|
||||||
|
// deploy state
|
||||||
|
State string `json:"state"`
|
||||||
|
// deploy time
|
||||||
|
Time metav1.Time `json:"deployTime"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmReleaseStatus defines the observed state of HelmRelease
|
||||||
|
type HelmReleaseStatus struct {
|
||||||
|
// current state
|
||||||
|
State string `json:"state"`
|
||||||
|
// A human readable message indicating details about why the release is in this state.
|
||||||
|
Message string `json:"message,omitempty"`
|
||||||
|
// current release version
|
||||||
|
Version int `json:"version,omitempty"`
|
||||||
|
// deploy status list of history, which will store at most 10 state
|
||||||
|
DeployStatus []HelmReleaseDeployStatus `json:"deployStatus,omitempty"`
|
||||||
|
// last update time
|
||||||
|
LastUpdate metav1.Time `json:"lastUpdate,omitempty"`
|
||||||
|
// last successful deploy time
|
||||||
|
LastDeployed *metav1.Time `json:"lastDeployed,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +kubebuilder:object:root=true
|
||||||
|
// +kubebuilder:resource:scope=Cluster,shortName=hrls
|
||||||
|
// +kubebuilder:subresource:status
|
||||||
|
// +kubebuilder:printcolumn:name="Release Name",type=string,JSONPath=".spec.name"
|
||||||
|
// +kubebuilder:printcolumn:name="Workspace",type="string",JSONPath=".metadata.labels.kubesphere\\.io/workspace"
|
||||||
|
// +kubebuilder:printcolumn:name="Cluster",type="string",JSONPath=".metadata.labels.kubesphere\\.io/cluster"
|
||||||
|
// +kubebuilder:printcolumn:name="Namespace",type="string",JSONPath=".metadata.labels.kubesphere\\.io/namespace"
|
||||||
|
// +kubebuilder:printcolumn:name="State",type="string",JSONPath=".status.state"
|
||||||
|
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
|
||||||
|
// +genclient
|
||||||
|
// +genclient:nonNamespaced
|
||||||
|
|
||||||
|
// HelmRelease is the Schema for the helmreleases API
|
||||||
|
type HelmRelease struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Spec HelmReleaseSpec `json:"spec,omitempty"`
|
||||||
|
Status HelmReleaseStatus `json:"status,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +kubebuilder:object:root=true
|
||||||
|
|
||||||
|
// HelmReleaseList contains a list of HelmRelease
|
||||||
|
type HelmReleaseList struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
metav1.ListMeta `json:"metadata,omitempty"`
|
||||||
|
Items []HelmRelease `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
SchemeBuilder.Register(&HelmRelease{}, &HelmReleaseList{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRelease) GetCreator() string {
|
||||||
|
return getValue(in.Annotations, constants.CreatorAnnotationKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRelease) GetTrueName() string {
|
||||||
|
return in.Spec.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRelease) GetChartVersionName() string {
|
||||||
|
appV := in.GetChartAppVersion()
|
||||||
|
if appV != "" {
|
||||||
|
return fmt.Sprintf("%s [%s]", in.GetChartVersion(), appV)
|
||||||
|
} else {
|
||||||
|
return in.GetChartVersion()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRelease) GetChartAppVersion() string {
|
||||||
|
return in.Spec.ChartAppVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRelease) GetChartVersion() string {
|
||||||
|
return in.Spec.ChartVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRelease) GetRlsCluster() string {
|
||||||
|
return getValue(in.Labels, constants.ClusterNameLabelKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRelease) GetWorkspace() string {
|
||||||
|
return getValue(in.Labels, constants.WorkspaceLabelKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRelease) GetRlsNamespace() string {
|
||||||
|
return getValue(in.Labels, constants.NamespaceLabelKey)
|
||||||
|
}
|
||||||
138
pkg/apis/application/v1alpha1/helmrepo_types.go
Normal file
138
pkg/apis/application/v1alpha1/helmrepo_types.go
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/constants"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ResourceKindHelmRepo = "HelmRepo"
|
||||||
|
ResourceSingularHelmRepo = "helmrepo"
|
||||||
|
ResourcePluralHelmRepo = "helmrepos"
|
||||||
|
)
|
||||||
|
|
||||||
|
type HelmRepoCredential struct {
|
||||||
|
// chart repository username
|
||||||
|
Username string `json:"username,omitempty"`
|
||||||
|
// chart repository password
|
||||||
|
Password string `json:"password,omitempty"`
|
||||||
|
// identify HTTPS client using this SSL certificate file
|
||||||
|
CertFile string `json:"certFile,omitempty"`
|
||||||
|
// identify HTTPS client using this SSL key file
|
||||||
|
KeyFile string `json:"keyFile,omitempty"`
|
||||||
|
// verify certificates of HTTPS-enabled servers using this CA bundle
|
||||||
|
CAFile string `json:"caFile,omitempty"`
|
||||||
|
// skip tls certificate checks for the repository, default is ture
|
||||||
|
InsecureSkipTLSVerify *bool `json:"insecureSkipTLSVerify,omitempty"`
|
||||||
|
|
||||||
|
S3Config `json:",inline"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type S3Config struct {
|
||||||
|
AccessKeyID string `json:"accessKeyID,omitempty"`
|
||||||
|
SecretAccessKey string `json:"secretAccessKey,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmRepoSpec defines the desired state of HelmRepo
|
||||||
|
type HelmRepoSpec struct {
|
||||||
|
// name of the repo
|
||||||
|
Name string `json:"name"`
|
||||||
|
// helm repo url
|
||||||
|
Url string `json:"url"`
|
||||||
|
// helm repo credential
|
||||||
|
Credential HelmRepoCredential `json:"credential,omitempty"`
|
||||||
|
// chart repo description from frontend
|
||||||
|
Description string `json:"description,omitempty"`
|
||||||
|
// sync period in seconds, no sync when SyncPeriod=0, the minimum SyncPeriod is 180s
|
||||||
|
SyncPeriod int `json:"syncPeriod,omitempty"`
|
||||||
|
// expected repo version, when this version is not equal status.version, the repo need upgrade
|
||||||
|
// this filed should be modified when any filed of the spec modified.
|
||||||
|
Version int `json:"version,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HelmRepoSyncState struct {
|
||||||
|
// last sync state, valid state are: "failed", "success", and ""
|
||||||
|
State string `json:"state,omitempty"`
|
||||||
|
// A human readable message indicating details about why the repo is in this state.
|
||||||
|
Message string `json:"message,omitempty"`
|
||||||
|
SyncTime *metav1.Time `json:"syncTime"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmRepoStatus defines the observed state of HelmRepo
|
||||||
|
type HelmRepoStatus struct {
|
||||||
|
// repo index
|
||||||
|
Data string `json:"data,omitempty"`
|
||||||
|
// status last update time
|
||||||
|
LastUpdateTime *metav1.Time `json:"lastUpdateTime,omitempty"`
|
||||||
|
// current state of the repo, successful, failed or syncing
|
||||||
|
State string `json:"state,omitempty"`
|
||||||
|
// sync state list of history, which will store at most 10 state
|
||||||
|
SyncState []HelmRepoSyncState `json:"syncState,omitempty"`
|
||||||
|
// if status.version!=spec.Version, we need sync the repo now
|
||||||
|
Version int `json:"version,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +kubebuilder:object:root=true
|
||||||
|
// +kubebuilder:resource:scope=Cluster,path=helmrepos,shortName=hrepo
|
||||||
|
// +kubebuilder:subresource:status
|
||||||
|
// +kubebuilder:printcolumn:name="name",type=string,JSONPath=`.spec.name`
|
||||||
|
// +kubebuilder:printcolumn:name="Workspace",type=string,JSONPath=`.metadata.labels.kubesphere\\.io/workspace`
|
||||||
|
// +kubebuilder:printcolumn:name="url",type=string,JSONPath=`.spec.url`
|
||||||
|
// +kubebuilder:printcolumn:name="State",type="string",JSONPath=".status.state"
|
||||||
|
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
|
||||||
|
// +genclient
|
||||||
|
// +genclient:nonNamespaced
|
||||||
|
|
||||||
|
// HelmRepo is the Schema for the helmrepoes API
|
||||||
|
type HelmRepo struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Spec HelmRepoSpec `json:"spec,omitempty"`
|
||||||
|
Status HelmRepoStatus `json:"status,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +kubebuilder:object:root=true
|
||||||
|
|
||||||
|
// HelmRepoList contains a list of HelmRepo
|
||||||
|
type HelmRepoList struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
metav1.ListMeta `json:"metadata,omitempty"`
|
||||||
|
Items []HelmRepo `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
SchemeBuilder.Register(&HelmRepo{}, &HelmRepoList{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRepo) GetTrueName() string {
|
||||||
|
return in.Spec.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRepo) GetHelmRepoId() string {
|
||||||
|
return in.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRepo) GetWorkspace() string {
|
||||||
|
return getValue(in.Labels, constants.WorkspaceLabelKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *HelmRepo) GetCreator() string {
|
||||||
|
return getValue(in.Annotations, constants.CreatorAnnotationKey)
|
||||||
|
}
|
||||||
40
pkg/apis/application/v1alpha1/register.go
Normal file
40
pkg/apis/application/v1alpha1/register.go
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Package v1alpha1 contains API Schema definitions for the application v1alpha1 API group
|
||||||
|
// +kubebuilder:object:generate=true
|
||||||
|
// +groupName=application.kubesphere.io
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/scheme"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// SchemeGroupVersion is group version used to register these objects
|
||||||
|
SchemeGroupVersion = schema.GroupVersion{Group: "application.kubesphere.io", Version: "v1alpha1"}
|
||||||
|
|
||||||
|
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
|
||||||
|
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
|
||||||
|
|
||||||
|
// AddToScheme adds the types in this group-version to the given scheme.
|
||||||
|
AddToScheme = SchemeBuilder.AddToScheme
|
||||||
|
)
|
||||||
|
|
||||||
|
func Resource(resource string) schema.GroupResource {
|
||||||
|
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||||
|
}
|
||||||
714
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go
generated
Normal file
714
pkg/apis/application/v1alpha1/zz_generated.deepcopy.go
generated
Normal file
@@ -0,0 +1,714 @@
|
|||||||
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *Audit) DeepCopyInto(out *Audit) {
|
||||||
|
*out = *in
|
||||||
|
in.Time.DeepCopyInto(&out.Time)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Audit.
|
||||||
|
func (in *Audit) DeepCopy() *Audit {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(Audit)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *Dependency) DeepCopyInto(out *Dependency) {
|
||||||
|
*out = *in
|
||||||
|
if in.Tags != nil {
|
||||||
|
in, out := &in.Tags, &out.Tags
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Dependency.
|
||||||
|
func (in *Dependency) DeepCopy() *Dependency {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(Dependency)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmApplication) DeepCopyInto(out *HelmApplication) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmApplication.
|
||||||
|
func (in *HelmApplication) DeepCopy() *HelmApplication {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmApplication)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HelmApplication) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmApplicationList) DeepCopyInto(out *HelmApplicationList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]HelmApplication, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmApplicationList.
|
||||||
|
func (in *HelmApplicationList) DeepCopy() *HelmApplicationList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmApplicationList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HelmApplicationList) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmApplicationSpec) DeepCopyInto(out *HelmApplicationSpec) {
|
||||||
|
*out = *in
|
||||||
|
if in.Attachments != nil {
|
||||||
|
in, out := &in.Attachments, &out.Attachments
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmApplicationSpec.
|
||||||
|
func (in *HelmApplicationSpec) DeepCopy() *HelmApplicationSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmApplicationSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmApplicationStatus) DeepCopyInto(out *HelmApplicationStatus) {
|
||||||
|
*out = *in
|
||||||
|
if in.UpdateTime != nil {
|
||||||
|
in, out := &in.UpdateTime, &out.UpdateTime
|
||||||
|
*out = (*in).DeepCopy()
|
||||||
|
}
|
||||||
|
if in.StatusTime != nil {
|
||||||
|
in, out := &in.StatusTime, &out.StatusTime
|
||||||
|
*out = (*in).DeepCopy()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmApplicationStatus.
|
||||||
|
func (in *HelmApplicationStatus) DeepCopy() *HelmApplicationStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmApplicationStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmApplicationVersion) DeepCopyInto(out *HelmApplicationVersion) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmApplicationVersion.
|
||||||
|
func (in *HelmApplicationVersion) DeepCopy() *HelmApplicationVersion {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmApplicationVersion)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HelmApplicationVersion) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmApplicationVersionList) DeepCopyInto(out *HelmApplicationVersionList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]HelmApplicationVersion, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmApplicationVersionList.
|
||||||
|
func (in *HelmApplicationVersionList) DeepCopy() *HelmApplicationVersionList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmApplicationVersionList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HelmApplicationVersionList) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmApplicationVersionSpec) DeepCopyInto(out *HelmApplicationVersionSpec) {
|
||||||
|
*out = *in
|
||||||
|
if in.Metadata != nil {
|
||||||
|
in, out := &in.Metadata, &out.Metadata
|
||||||
|
*out = new(Metadata)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.URLs != nil {
|
||||||
|
in, out := &in.URLs, &out.URLs
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
if in.Data != nil {
|
||||||
|
in, out := &in.Data, &out.Data
|
||||||
|
*out = make([]byte, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
if in.Created != nil {
|
||||||
|
in, out := &in.Created, &out.Created
|
||||||
|
*out = (*in).DeepCopy()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmApplicationVersionSpec.
|
||||||
|
func (in *HelmApplicationVersionSpec) DeepCopy() *HelmApplicationVersionSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmApplicationVersionSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmApplicationVersionStatus) DeepCopyInto(out *HelmApplicationVersionStatus) {
|
||||||
|
*out = *in
|
||||||
|
if in.Audit != nil {
|
||||||
|
in, out := &in.Audit, &out.Audit
|
||||||
|
*out = make([]Audit, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmApplicationVersionStatus.
|
||||||
|
func (in *HelmApplicationVersionStatus) DeepCopy() *HelmApplicationVersionStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmApplicationVersionStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmCategory) DeepCopyInto(out *HelmCategory) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
|
out.Spec = in.Spec
|
||||||
|
out.Status = in.Status
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmCategory.
|
||||||
|
func (in *HelmCategory) DeepCopy() *HelmCategory {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmCategory)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HelmCategory) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmCategoryList) DeepCopyInto(out *HelmCategoryList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]HelmCategory, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmCategoryList.
|
||||||
|
func (in *HelmCategoryList) DeepCopy() *HelmCategoryList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmCategoryList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HelmCategoryList) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmCategorySpec) DeepCopyInto(out *HelmCategorySpec) {
|
||||||
|
*out = *in
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmCategorySpec.
|
||||||
|
func (in *HelmCategorySpec) DeepCopy() *HelmCategorySpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmCategorySpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmCategoryStatus) DeepCopyInto(out *HelmCategoryStatus) {
|
||||||
|
*out = *in
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmCategoryStatus.
|
||||||
|
func (in *HelmCategoryStatus) DeepCopy() *HelmCategoryStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmCategoryStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmRelease) DeepCopyInto(out *HelmRelease) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmRelease.
|
||||||
|
func (in *HelmRelease) DeepCopy() *HelmRelease {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmRelease)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HelmRelease) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmReleaseDeployStatus) DeepCopyInto(out *HelmReleaseDeployStatus) {
|
||||||
|
*out = *in
|
||||||
|
in.Time.DeepCopyInto(&out.Time)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmReleaseDeployStatus.
|
||||||
|
func (in *HelmReleaseDeployStatus) DeepCopy() *HelmReleaseDeployStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmReleaseDeployStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmReleaseList) DeepCopyInto(out *HelmReleaseList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]HelmRelease, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmReleaseList.
|
||||||
|
func (in *HelmReleaseList) DeepCopy() *HelmReleaseList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmReleaseList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HelmReleaseList) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmReleaseSpec) DeepCopyInto(out *HelmReleaseSpec) {
|
||||||
|
*out = *in
|
||||||
|
if in.Values != nil {
|
||||||
|
in, out := &in.Values, &out.Values
|
||||||
|
*out = make([]byte, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmReleaseSpec.
|
||||||
|
func (in *HelmReleaseSpec) DeepCopy() *HelmReleaseSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmReleaseSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmReleaseStatus) DeepCopyInto(out *HelmReleaseStatus) {
|
||||||
|
*out = *in
|
||||||
|
if in.DeployStatus != nil {
|
||||||
|
in, out := &in.DeployStatus, &out.DeployStatus
|
||||||
|
*out = make([]HelmReleaseDeployStatus, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
in.LastUpdate.DeepCopyInto(&out.LastUpdate)
|
||||||
|
if in.LastDeployed != nil {
|
||||||
|
in, out := &in.LastDeployed, &out.LastDeployed
|
||||||
|
*out = (*in).DeepCopy()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmReleaseStatus.
|
||||||
|
func (in *HelmReleaseStatus) DeepCopy() *HelmReleaseStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmReleaseStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmRepo) DeepCopyInto(out *HelmRepo) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmRepo.
|
||||||
|
func (in *HelmRepo) DeepCopy() *HelmRepo {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmRepo)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HelmRepo) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmRepoCredential) DeepCopyInto(out *HelmRepoCredential) {
|
||||||
|
*out = *in
|
||||||
|
if in.InsecureSkipTLSVerify != nil {
|
||||||
|
in, out := &in.InsecureSkipTLSVerify, &out.InsecureSkipTLSVerify
|
||||||
|
*out = new(bool)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
out.S3Config = in.S3Config
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmRepoCredential.
|
||||||
|
func (in *HelmRepoCredential) DeepCopy() *HelmRepoCredential {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmRepoCredential)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmRepoList) DeepCopyInto(out *HelmRepoList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]HelmRepo, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmRepoList.
|
||||||
|
func (in *HelmRepoList) DeepCopy() *HelmRepoList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmRepoList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HelmRepoList) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmRepoSpec) DeepCopyInto(out *HelmRepoSpec) {
|
||||||
|
*out = *in
|
||||||
|
in.Credential.DeepCopyInto(&out.Credential)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmRepoSpec.
|
||||||
|
func (in *HelmRepoSpec) DeepCopy() *HelmRepoSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmRepoSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmRepoStatus) DeepCopyInto(out *HelmRepoStatus) {
|
||||||
|
*out = *in
|
||||||
|
if in.LastUpdateTime != nil {
|
||||||
|
in, out := &in.LastUpdateTime, &out.LastUpdateTime
|
||||||
|
*out = (*in).DeepCopy()
|
||||||
|
}
|
||||||
|
if in.SyncState != nil {
|
||||||
|
in, out := &in.SyncState, &out.SyncState
|
||||||
|
*out = make([]HelmRepoSyncState, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmRepoStatus.
|
||||||
|
func (in *HelmRepoStatus) DeepCopy() *HelmRepoStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmRepoStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HelmRepoSyncState) DeepCopyInto(out *HelmRepoSyncState) {
|
||||||
|
*out = *in
|
||||||
|
if in.SyncTime != nil {
|
||||||
|
in, out := &in.SyncTime, &out.SyncTime
|
||||||
|
*out = (*in).DeepCopy()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmRepoSyncState.
|
||||||
|
func (in *HelmRepoSyncState) DeepCopy() *HelmRepoSyncState {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HelmRepoSyncState)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *Maintainer) DeepCopyInto(out *Maintainer) {
|
||||||
|
*out = *in
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Maintainer.
|
||||||
|
func (in *Maintainer) DeepCopy() *Maintainer {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(Maintainer)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *Metadata) DeepCopyInto(out *Metadata) {
|
||||||
|
*out = *in
|
||||||
|
if in.Sources != nil {
|
||||||
|
in, out := &in.Sources, &out.Sources
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
if in.Keywords != nil {
|
||||||
|
in, out := &in.Keywords, &out.Keywords
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
if in.Maintainers != nil {
|
||||||
|
in, out := &in.Maintainers, &out.Maintainers
|
||||||
|
*out = make([]*Maintainer, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
if (*in)[i] != nil {
|
||||||
|
in, out := &(*in)[i], &(*out)[i]
|
||||||
|
*out = new(Maintainer)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if in.Annotations != nil {
|
||||||
|
in, out := &in.Annotations, &out.Annotations
|
||||||
|
*out = make(map[string]string, len(*in))
|
||||||
|
for key, val := range *in {
|
||||||
|
(*out)[key] = val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if in.Dependencies != nil {
|
||||||
|
in, out := &in.Dependencies, &out.Dependencies
|
||||||
|
*out = make([]*Dependency, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
if (*in)[i] != nil {
|
||||||
|
in, out := &(*in)[i], &(*out)[i]
|
||||||
|
*out = new(Dependency)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metadata.
|
||||||
|
func (in *Metadata) DeepCopy() *Metadata {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(Metadata)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *S3Config) DeepCopyInto(out *S3Config) {
|
||||||
|
*out = *in
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3Config.
|
||||||
|
func (in *S3Config) DeepCopy() *S3Config {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(S3Config)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
@@ -16,7 +16,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
@@ -31,7 +31,6 @@ func (in *Cluster) DeepCopyInto(out *Cluster) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
in.Status.DeepCopyInto(&out.Status)
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.
|
||||||
@@ -57,7 +56,6 @@ func (in *ClusterCondition) DeepCopyInto(out *ClusterCondition) {
|
|||||||
*out = *in
|
*out = *in
|
||||||
in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
|
in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
|
||||||
in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
|
in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCondition.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCondition.
|
||||||
@@ -82,7 +80,6 @@ func (in *ClusterList) DeepCopyInto(out *ClusterList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterList.
|
||||||
@@ -107,7 +104,6 @@ func (in *ClusterList) DeepCopyObject() runtime.Object {
|
|||||||
func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
|
func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Connection.DeepCopyInto(&out.Connection)
|
in.Connection.DeepCopyInto(&out.Connection)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec.
|
||||||
@@ -147,7 +143,6 @@ func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus) {
|
|||||||
(*out)[key] = val
|
(*out)[key] = val
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.
|
||||||
@@ -168,7 +163,6 @@ func (in *Connection) DeepCopyInto(out *Connection) {
|
|||||||
*out = make([]byte, len(*in))
|
*out = make([]byte, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Connection.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Connection.
|
||||||
|
|||||||
37
pkg/apis/devops/v1alpha1/zz_generated.deepcopy.go
generated
37
pkg/apis/devops/v1alpha1/zz_generated.deepcopy.go
generated
@@ -16,12 +16,12 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
v1 "k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -33,7 +33,6 @@ func (in *AuthConfig) DeepCopyInto(out *AuthConfig) {
|
|||||||
*out = new(v1.LocalObjectReference)
|
*out = new(v1.LocalObjectReference)
|
||||||
**out = **in
|
**out = **in
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthConfig.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthConfig.
|
||||||
@@ -49,7 +48,6 @@ func (in *AuthConfig) DeepCopy() *AuthConfig {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *CGroupLimits) DeepCopyInto(out *CGroupLimits) {
|
func (in *CGroupLimits) DeepCopyInto(out *CGroupLimits) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CGroupLimits.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CGroupLimits.
|
||||||
@@ -77,7 +75,6 @@ func (in *ContainerConfig) DeepCopyInto(out *ContainerConfig) {
|
|||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerConfig.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerConfig.
|
||||||
@@ -103,7 +100,6 @@ func (in *ContainerInfo) DeepCopyInto(out *ContainerInfo) {
|
|||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerInfo.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerInfo.
|
||||||
@@ -119,7 +115,6 @@ func (in *ContainerInfo) DeepCopy() *ContainerInfo {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *DockerConfig) DeepCopyInto(out *DockerConfig) {
|
func (in *DockerConfig) DeepCopyInto(out *DockerConfig) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DockerConfig.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DockerConfig.
|
||||||
@@ -135,7 +130,6 @@ func (in *DockerConfig) DeepCopy() *DockerConfig {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *DockerConfigEntry) DeepCopyInto(out *DockerConfigEntry) {
|
func (in *DockerConfigEntry) DeepCopyInto(out *DockerConfigEntry) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DockerConfigEntry.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DockerConfigEntry.
|
||||||
@@ -158,7 +152,6 @@ func (in *DockerConfigJson) DeepCopyInto(out *DockerConfigJson) {
|
|||||||
(*out)[key] = val
|
(*out)[key] = val
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DockerConfigJson.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DockerConfigJson.
|
||||||
@@ -179,7 +172,6 @@ func (in DockerConfigMap) DeepCopyInto(out *DockerConfigMap) {
|
|||||||
for key, val := range *in {
|
for key, val := range *in {
|
||||||
(*out)[key] = val
|
(*out)[key] = val
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,7 +188,6 @@ func (in DockerConfigMap) DeepCopy() DockerConfigMap {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *EnvironmentSpec) DeepCopyInto(out *EnvironmentSpec) {
|
func (in *EnvironmentSpec) DeepCopyInto(out *EnvironmentSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvironmentSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvironmentSpec.
|
||||||
@@ -217,7 +208,6 @@ func (in *Parameter) DeepCopyInto(out *Parameter) {
|
|||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Parameter.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Parameter.
|
||||||
@@ -233,7 +223,6 @@ func (in *Parameter) DeepCopy() *Parameter {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *ProxyConfig) DeepCopyInto(out *ProxyConfig) {
|
func (in *ProxyConfig) DeepCopyInto(out *ProxyConfig) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProxyConfig.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProxyConfig.
|
||||||
@@ -259,7 +248,6 @@ func (in *S2iAutoScale) DeepCopyInto(out *S2iAutoScale) {
|
|||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iAutoScale.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iAutoScale.
|
||||||
@@ -279,7 +267,6 @@ func (in *S2iBinary) DeepCopyInto(out *S2iBinary) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
out.Status = in.Status
|
out.Status = in.Status
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBinary.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBinary.
|
||||||
@@ -312,7 +299,6 @@ func (in *S2iBinaryList) DeepCopyInto(out *S2iBinaryList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBinaryList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBinaryList.
|
||||||
@@ -340,7 +326,6 @@ func (in *S2iBinarySpec) DeepCopyInto(out *S2iBinarySpec) {
|
|||||||
in, out := &in.UploadTimeStamp, &out.UploadTimeStamp
|
in, out := &in.UploadTimeStamp, &out.UploadTimeStamp
|
||||||
*out = (*in).DeepCopy()
|
*out = (*in).DeepCopy()
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBinarySpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBinarySpec.
|
||||||
@@ -356,7 +341,6 @@ func (in *S2iBinarySpec) DeepCopy() *S2iBinarySpec {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *S2iBinaryStatus) DeepCopyInto(out *S2iBinaryStatus) {
|
func (in *S2iBinaryStatus) DeepCopyInto(out *S2iBinaryStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBinaryStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBinaryStatus.
|
||||||
@@ -377,7 +361,6 @@ func (in *S2iBuildResult) DeepCopyInto(out *S2iBuildResult) {
|
|||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuildResult.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuildResult.
|
||||||
@@ -393,7 +376,6 @@ func (in *S2iBuildResult) DeepCopy() *S2iBuildResult {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *S2iBuildSource) DeepCopyInto(out *S2iBuildSource) {
|
func (in *S2iBuildSource) DeepCopyInto(out *S2iBuildSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuildSource.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuildSource.
|
||||||
@@ -413,7 +395,6 @@ func (in *S2iBuilder) DeepCopyInto(out *S2iBuilder) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
in.Status.DeepCopyInto(&out.Status)
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilder.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilder.
|
||||||
@@ -446,7 +427,6 @@ func (in *S2iBuilderList) DeepCopyInto(out *S2iBuilderList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderList.
|
||||||
@@ -480,7 +460,6 @@ func (in *S2iBuilderSpec) DeepCopyInto(out *S2iBuilderSpec) {
|
|||||||
*out = new(UserDefineTemplate)
|
*out = new(UserDefineTemplate)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderSpec.
|
||||||
@@ -505,7 +484,6 @@ func (in *S2iBuilderStatus) DeepCopyInto(out *S2iBuilderStatus) {
|
|||||||
in, out := &in.LastRunStartTime, &out.LastRunStartTime
|
in, out := &in.LastRunStartTime, &out.LastRunStartTime
|
||||||
*out = (*in).DeepCopy()
|
*out = (*in).DeepCopy()
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderStatus.
|
||||||
@@ -525,7 +503,6 @@ func (in *S2iBuilderTemplate) DeepCopyInto(out *S2iBuilderTemplate) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
out.Status = in.Status
|
out.Status = in.Status
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderTemplate.
|
||||||
@@ -558,7 +535,6 @@ func (in *S2iBuilderTemplateList) DeepCopyInto(out *S2iBuilderTemplateList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderTemplateList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderTemplateList.
|
||||||
@@ -596,7 +572,6 @@ func (in *S2iBuilderTemplateSpec) DeepCopyInto(out *S2iBuilderTemplateSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderTemplateSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderTemplateSpec.
|
||||||
@@ -612,7 +587,6 @@ func (in *S2iBuilderTemplateSpec) DeepCopy() *S2iBuilderTemplateSpec {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *S2iBuilderTemplateStatus) DeepCopyInto(out *S2iBuilderTemplateStatus) {
|
func (in *S2iBuilderTemplateStatus) DeepCopyInto(out *S2iBuilderTemplateStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderTemplateStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iBuilderTemplateStatus.
|
||||||
@@ -715,7 +689,6 @@ func (in *S2iConfig) DeepCopyInto(out *S2iConfig) {
|
|||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iConfig.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iConfig.
|
||||||
@@ -735,7 +708,6 @@ func (in *S2iRun) DeepCopyInto(out *S2iRun) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
out.Spec = in.Spec
|
out.Spec = in.Spec
|
||||||
in.Status.DeepCopyInto(&out.Status)
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iRun.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iRun.
|
||||||
@@ -768,7 +740,6 @@ func (in *S2iRunList) DeepCopyInto(out *S2iRunList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iRunList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iRunList.
|
||||||
@@ -792,7 +763,6 @@ func (in *S2iRunList) DeepCopyObject() runtime.Object {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *S2iRunSpec) DeepCopyInto(out *S2iRunSpec) {
|
func (in *S2iRunSpec) DeepCopyInto(out *S2iRunSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iRunSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iRunSpec.
|
||||||
@@ -826,7 +796,6 @@ func (in *S2iRunStatus) DeepCopyInto(out *S2iRunStatus) {
|
|||||||
*out = new(S2iBuildSource)
|
*out = new(S2iBuildSource)
|
||||||
**out = **in
|
**out = **in
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iRunStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S2iRunStatus.
|
||||||
@@ -849,7 +818,6 @@ func (in *UserDefineTemplate) DeepCopyInto(out *UserDefineTemplate) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserDefineTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserDefineTemplate.
|
||||||
@@ -865,7 +833,6 @@ func (in *UserDefineTemplate) DeepCopy() *UserDefineTemplate {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *VolumeSpec) DeepCopyInto(out *VolumeSpec) {
|
func (in *VolumeSpec) DeepCopyInto(out *VolumeSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSpec.
|
||||||
|
|||||||
42
pkg/apis/iam/v1alpha2/zz_generated.deepcopy.go
generated
42
pkg/apis/iam/v1alpha2/zz_generated.deepcopy.go
generated
@@ -16,19 +16,18 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha2
|
package v1alpha2
|
||||||
|
|
||||||
import (
|
import (
|
||||||
v1 "k8s.io/api/rbac/v1"
|
"k8s.io/api/rbac/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *Cluster) DeepCopyInto(out *Cluster) {
|
func (in *Cluster) DeepCopyInto(out *Cluster) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.
|
||||||
@@ -51,7 +50,6 @@ func (in *ClusterSelector) DeepCopyInto(out *ClusterSelector) {
|
|||||||
(*out)[key] = val
|
(*out)[key] = val
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSelector.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSelector.
|
||||||
@@ -70,7 +68,6 @@ func (in *FederatedRole) DeepCopyInto(out *FederatedRole) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedRole.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedRole.
|
||||||
@@ -89,7 +86,6 @@ func (in *FederatedRoleBinding) DeepCopyInto(out *FederatedRoleBinding) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedRoleBinding.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedRoleBinding.
|
||||||
@@ -107,7 +103,6 @@ func (in *FederatedRoleBindingSpec) DeepCopyInto(out *FederatedRoleBindingSpec)
|
|||||||
*out = *in
|
*out = *in
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
in.Placement.DeepCopyInto(&out.Placement)
|
in.Placement.DeepCopyInto(&out.Placement)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedRoleBindingSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedRoleBindingSpec.
|
||||||
@@ -125,7 +120,6 @@ func (in *FederatedRoleSpec) DeepCopyInto(out *FederatedRoleSpec) {
|
|||||||
*out = *in
|
*out = *in
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
in.Placement.DeepCopyInto(&out.Placement)
|
in.Placement.DeepCopyInto(&out.Placement)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedRoleSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedRoleSpec.
|
||||||
@@ -144,7 +138,6 @@ func (in *FederatedUser) DeepCopyInto(out *FederatedUser) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedUser.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedUser.
|
||||||
@@ -162,7 +155,6 @@ func (in *FederatedUserSpec) DeepCopyInto(out *FederatedUserSpec) {
|
|||||||
*out = *in
|
*out = *in
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
in.Placement.DeepCopyInto(&out.Placement)
|
in.Placement.DeepCopyInto(&out.Placement)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedUserSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedUserSpec.
|
||||||
@@ -187,7 +179,6 @@ func (in *GlobalRole) DeepCopyInto(out *GlobalRole) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRole.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRole.
|
||||||
@@ -219,7 +210,6 @@ func (in *GlobalRoleBinding) DeepCopyInto(out *GlobalRoleBinding) {
|
|||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
out.RoleRef = in.RoleRef
|
out.RoleRef = in.RoleRef
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRoleBinding.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRoleBinding.
|
||||||
@@ -252,7 +242,6 @@ func (in *GlobalRoleBindingList) DeepCopyInto(out *GlobalRoleBindingList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRoleBindingList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRoleBindingList.
|
||||||
@@ -285,7 +274,6 @@ func (in *GlobalRoleList) DeepCopyInto(out *GlobalRoleList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRoleList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRoleList.
|
||||||
@@ -313,7 +301,6 @@ func (in *Group) DeepCopyInto(out *Group) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
out.Spec = in.Spec
|
out.Spec = in.Spec
|
||||||
out.Status = in.Status
|
out.Status = in.Status
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Group.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Group.
|
||||||
@@ -345,7 +332,6 @@ func (in *GroupBinding) DeepCopyInto(out *GroupBinding) {
|
|||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupBinding.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupBinding.
|
||||||
@@ -378,7 +364,6 @@ func (in *GroupBindingList) DeepCopyInto(out *GroupBindingList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupBindingList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupBindingList.
|
||||||
@@ -411,7 +396,6 @@ func (in *GroupList) DeepCopyInto(out *GroupList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupList.
|
||||||
@@ -435,7 +419,6 @@ func (in *GroupList) DeepCopyObject() runtime.Object {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *GroupRef) DeepCopyInto(out *GroupRef) {
|
func (in *GroupRef) DeepCopyInto(out *GroupRef) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupRef.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupRef.
|
||||||
@@ -451,7 +434,6 @@ func (in *GroupRef) DeepCopy() *GroupRef {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *GroupSpec) DeepCopyInto(out *GroupSpec) {
|
func (in *GroupSpec) DeepCopyInto(out *GroupSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupSpec.
|
||||||
@@ -467,7 +449,6 @@ func (in *GroupSpec) DeepCopy() *GroupSpec {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *GroupStatus) DeepCopyInto(out *GroupStatus) {
|
func (in *GroupStatus) DeepCopyInto(out *GroupStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupStatus.
|
||||||
@@ -486,7 +467,6 @@ func (in *LoginRecord) DeepCopyInto(out *LoginRecord) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
out.Spec = in.Spec
|
out.Spec = in.Spec
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoginRecord.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoginRecord.
|
||||||
@@ -519,7 +499,6 @@ func (in *LoginRecordList) DeepCopyInto(out *LoginRecordList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoginRecordList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoginRecordList.
|
||||||
@@ -543,7 +522,6 @@ func (in *LoginRecordList) DeepCopyObject() runtime.Object {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *LoginRecordSpec) DeepCopyInto(out *LoginRecordSpec) {
|
func (in *LoginRecordSpec) DeepCopyInto(out *LoginRecordSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoginRecordSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoginRecordSpec.
|
||||||
@@ -565,7 +543,6 @@ func (in *Placement) DeepCopyInto(out *Placement) {
|
|||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
in.ClusterSelector.DeepCopyInto(&out.ClusterSelector)
|
in.ClusterSelector.DeepCopyInto(&out.ClusterSelector)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Placement.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Placement.
|
||||||
@@ -584,7 +561,6 @@ func (in *RoleBase) DeepCopyInto(out *RoleBase) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Role.DeepCopyInto(&out.Role)
|
in.Role.DeepCopyInto(&out.Role)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBase.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBase.
|
||||||
@@ -617,7 +593,6 @@ func (in *RoleBaseList) DeepCopyInto(out *RoleBaseList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBaseList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBaseList.
|
||||||
@@ -648,7 +623,6 @@ func (in *RoleBindingTemplate) DeepCopyInto(out *RoleBindingTemplate) {
|
|||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
out.RoleRef = in.RoleRef
|
out.RoleRef = in.RoleRef
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBindingTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBindingTemplate.
|
||||||
@@ -672,7 +646,6 @@ func (in *RoleTemplate) DeepCopyInto(out *RoleTemplate) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleTemplate.
|
||||||
@@ -692,7 +665,6 @@ func (in *User) DeepCopyInto(out *User) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
in.Status.DeepCopyInto(&out.Status)
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new User.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new User.
|
||||||
@@ -725,7 +697,6 @@ func (in *UserList) DeepCopyInto(out *UserList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserList.
|
||||||
@@ -754,7 +725,6 @@ func (in *UserSpec) DeepCopyInto(out *UserSpec) {
|
|||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserSpec.
|
||||||
@@ -783,7 +753,6 @@ func (in *UserStatus) DeepCopyInto(out *UserStatus) {
|
|||||||
in, out := &in.LastLoginTime, &out.LastLoginTime
|
in, out := &in.LastLoginTime, &out.LastLoginTime
|
||||||
*out = (*in).DeepCopy()
|
*out = (*in).DeepCopy()
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserStatus.
|
||||||
@@ -802,7 +771,6 @@ func (in *UserTemplate) DeepCopyInto(out *UserTemplate) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
in.Status.DeepCopyInto(&out.Status)
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserTemplate.
|
||||||
@@ -827,7 +795,6 @@ func (in *WorkspaceRole) DeepCopyInto(out *WorkspaceRole) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRole.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRole.
|
||||||
@@ -859,7 +826,6 @@ func (in *WorkspaceRoleBinding) DeepCopyInto(out *WorkspaceRoleBinding) {
|
|||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
out.RoleRef = in.RoleRef
|
out.RoleRef = in.RoleRef
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRoleBinding.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRoleBinding.
|
||||||
@@ -892,7 +858,6 @@ func (in *WorkspaceRoleBindingList) DeepCopyInto(out *WorkspaceRoleBindingList)
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRoleBindingList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRoleBindingList.
|
||||||
@@ -925,7 +890,6 @@ func (in *WorkspaceRoleList) DeepCopyInto(out *WorkspaceRoleList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRoleList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRoleList.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package calicov3
|
package calicov3
|
||||||
|
|
||||||
@@ -30,7 +30,6 @@ func (in *BlockAffinity) DeepCopyInto(out *BlockAffinity) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
out.Spec = in.Spec
|
out.Spec = in.Spec
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockAffinity.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockAffinity.
|
||||||
@@ -63,7 +62,6 @@ func (in *BlockAffinityList) DeepCopyInto(out *BlockAffinityList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockAffinityList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockAffinityList.
|
||||||
@@ -90,7 +88,6 @@ func (in *IPAMBlock) DeepCopyInto(out *IPAMBlock) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAMBlock.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAMBlock.
|
||||||
@@ -123,7 +120,6 @@ func (in *IPAMBlockList) DeepCopyInto(out *IPAMBlockList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAMBlockList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAMBlockList.
|
||||||
@@ -150,7 +146,6 @@ func (in *IPPool) DeepCopyInto(out *IPPool) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPPool.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPPool.
|
||||||
@@ -183,7 +178,6 @@ func (in *IPPoolList) DeepCopyInto(out *IPPoolList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPPoolList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPPoolList.
|
||||||
|
|||||||
@@ -16,12 +16,12 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha2
|
package v1alpha2
|
||||||
|
|
||||||
import (
|
import (
|
||||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
"k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -30,7 +30,6 @@ func (in *DestinationRuleSpecTemplate) DeepCopyInto(out *DestinationRuleSpecTemp
|
|||||||
*out = *in
|
*out = *in
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DestinationRuleSpecTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DestinationRuleSpecTemplate.
|
||||||
@@ -50,7 +49,6 @@ func (in *ServicePolicy) DeepCopyInto(out *ServicePolicy) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
in.Status.DeepCopyInto(&out.Status)
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePolicy.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePolicy.
|
||||||
@@ -76,7 +74,6 @@ func (in *ServicePolicyCondition) DeepCopyInto(out *ServicePolicyCondition) {
|
|||||||
*out = *in
|
*out = *in
|
||||||
in.LastProbeTime.DeepCopyInto(&out.LastProbeTime)
|
in.LastProbeTime.DeepCopyInto(&out.LastProbeTime)
|
||||||
in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
|
in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePolicyCondition.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePolicyCondition.
|
||||||
@@ -101,7 +98,6 @@ func (in *ServicePolicyList) DeepCopyInto(out *ServicePolicyList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePolicyList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePolicyList.
|
||||||
@@ -131,7 +127,6 @@ func (in *ServicePolicySpec) DeepCopyInto(out *ServicePolicySpec) {
|
|||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePolicySpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePolicySpec.
|
||||||
@@ -162,7 +157,6 @@ func (in *ServicePolicyStatus) DeepCopyInto(out *ServicePolicyStatus) {
|
|||||||
in, out := &in.CompletionTime, &out.CompletionTime
|
in, out := &in.CompletionTime, &out.CompletionTime
|
||||||
*out = (*in).DeepCopy()
|
*out = (*in).DeepCopy()
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePolicyStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePolicyStatus.
|
||||||
@@ -182,7 +176,6 @@ func (in *Strategy) DeepCopyInto(out *Strategy) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
in.Status.DeepCopyInto(&out.Status)
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Strategy.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Strategy.
|
||||||
@@ -208,7 +201,6 @@ func (in *StrategyCondition) DeepCopyInto(out *StrategyCondition) {
|
|||||||
*out = *in
|
*out = *in
|
||||||
in.LastProbeTime.DeepCopyInto(&out.LastProbeTime)
|
in.LastProbeTime.DeepCopyInto(&out.LastProbeTime)
|
||||||
in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
|
in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyCondition.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyCondition.
|
||||||
@@ -233,7 +225,6 @@ func (in *StrategyList) DeepCopyInto(out *StrategyList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyList.
|
||||||
@@ -263,7 +254,6 @@ func (in *StrategySpec) DeepCopyInto(out *StrategySpec) {
|
|||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategySpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategySpec.
|
||||||
@@ -294,7 +284,6 @@ func (in *StrategyStatus) DeepCopyInto(out *StrategyStatus) {
|
|||||||
in, out := &in.CompletionTime, &out.CompletionTime
|
in, out := &in.CompletionTime, &out.CompletionTime
|
||||||
*out = (*in).DeepCopy()
|
*out = (*in).DeepCopy()
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyStatus.
|
||||||
@@ -312,7 +301,6 @@ func (in *VirtualServiceTemplateSpec) DeepCopyInto(out *VirtualServiceTemplateSp
|
|||||||
*out = *in
|
*out = *in
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualServiceTemplateSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualServiceTemplateSpec.
|
||||||
|
|||||||
12
pkg/apis/storage/v1alpha1/zz_generated.deepcopy.go
generated
12
pkg/apis/storage/v1alpha1/zz_generated.deepcopy.go
generated
@@ -16,7 +16,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
@@ -29,7 +29,6 @@ func (in *CapabilityFeatures) DeepCopyInto(out *CapabilityFeatures) {
|
|||||||
*out = *in
|
*out = *in
|
||||||
out.Volume = in.Volume
|
out.Volume = in.Volume
|
||||||
out.Snapshot = in.Snapshot
|
out.Snapshot = in.Snapshot
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CapabilityFeatures.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CapabilityFeatures.
|
||||||
@@ -45,7 +44,6 @@ func (in *CapabilityFeatures) DeepCopy() *CapabilityFeatures {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *PluginInfo) DeepCopyInto(out *PluginInfo) {
|
func (in *PluginInfo) DeepCopyInto(out *PluginInfo) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginInfo.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginInfo.
|
||||||
@@ -64,7 +62,6 @@ func (in *ProvisionerCapability) DeepCopyInto(out *ProvisionerCapability) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
out.Spec = in.Spec
|
out.Spec = in.Spec
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisionerCapability.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisionerCapability.
|
||||||
@@ -97,7 +94,6 @@ func (in *ProvisionerCapabilityList) DeepCopyInto(out *ProvisionerCapabilityList
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisionerCapabilityList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisionerCapabilityList.
|
||||||
@@ -123,7 +119,6 @@ func (in *ProvisionerCapabilitySpec) DeepCopyInto(out *ProvisionerCapabilitySpec
|
|||||||
*out = *in
|
*out = *in
|
||||||
out.PluginInfo = in.PluginInfo
|
out.PluginInfo = in.PluginInfo
|
||||||
out.Features = in.Features
|
out.Features = in.Features
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisionerCapabilitySpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisionerCapabilitySpec.
|
||||||
@@ -139,7 +134,6 @@ func (in *ProvisionerCapabilitySpec) DeepCopy() *ProvisionerCapabilitySpec {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *SnapshotFeature) DeepCopyInto(out *SnapshotFeature) {
|
func (in *SnapshotFeature) DeepCopyInto(out *SnapshotFeature) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SnapshotFeature.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SnapshotFeature.
|
||||||
@@ -158,7 +152,6 @@ func (in *StorageClassCapability) DeepCopyInto(out *StorageClassCapability) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
out.Spec = in.Spec
|
out.Spec = in.Spec
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClassCapability.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClassCapability.
|
||||||
@@ -191,7 +184,6 @@ func (in *StorageClassCapabilityList) DeepCopyInto(out *StorageClassCapabilityLi
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClassCapabilityList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClassCapabilityList.
|
||||||
@@ -216,7 +208,6 @@ func (in *StorageClassCapabilityList) DeepCopyObject() runtime.Object {
|
|||||||
func (in *StorageClassCapabilitySpec) DeepCopyInto(out *StorageClassCapabilitySpec) {
|
func (in *StorageClassCapabilitySpec) DeepCopyInto(out *StorageClassCapabilitySpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.Features = in.Features
|
out.Features = in.Features
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClassCapabilitySpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClassCapabilitySpec.
|
||||||
@@ -232,7 +223,6 @@ func (in *StorageClassCapabilitySpec) DeepCopy() *StorageClassCapabilitySpec {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *VolumeFeature) DeepCopyInto(out *VolumeFeature) {
|
func (in *VolumeFeature) DeepCopyInto(out *VolumeFeature) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeFeature.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeFeature.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
@@ -31,7 +31,6 @@ func (in *Workspace) DeepCopyInto(out *Workspace) {
|
|||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
out.Status = in.Status
|
out.Status = in.Status
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Workspace.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Workspace.
|
||||||
@@ -64,7 +63,6 @@ func (in *WorkspaceList) DeepCopyInto(out *WorkspaceList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceList.
|
||||||
@@ -93,7 +91,6 @@ func (in *WorkspaceSpec) DeepCopyInto(out *WorkspaceSpec) {
|
|||||||
*out = new(bool)
|
*out = new(bool)
|
||||||
**out = **in
|
**out = **in
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceSpec.
|
||||||
@@ -109,7 +106,6 @@ func (in *WorkspaceSpec) DeepCopy() *WorkspaceSpec {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *WorkspaceStatus) DeepCopyInto(out *WorkspaceStatus) {
|
func (in *WorkspaceStatus) DeepCopyInto(out *WorkspaceStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceStatus.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha2
|
package v1alpha2
|
||||||
|
|
||||||
@@ -30,7 +30,6 @@ func (in *WorkspaceTemplate) DeepCopyInto(out *WorkspaceTemplate) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceTemplate.
|
||||||
@@ -63,7 +62,6 @@ func (in *WorkspaceTemplateList) DeepCopyInto(out *WorkspaceTemplateList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceTemplateList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceTemplateList.
|
||||||
|
|||||||
@@ -81,5 +81,6 @@ func init() {
|
|||||||
&FederatedWorkspaceRole{},
|
&FederatedWorkspaceRole{},
|
||||||
&FederatedWorkspaceRoleList{},
|
&FederatedWorkspaceRoleList{},
|
||||||
&FederatedWorkspaceRoleBinding{},
|
&FederatedWorkspaceRoleBinding{},
|
||||||
&FederatedWorkspaceRoleBindingList{})
|
&FederatedWorkspaceRoleBindingList{},
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
142
pkg/apis/types/v1beta1/zz_generated.deepcopy.go
generated
142
pkg/apis/types/v1beta1/zz_generated.deepcopy.go
generated
@@ -16,21 +16,20 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by controller-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1beta1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
v1 "k8s.io/api/rbac/v1"
|
"k8s.io/api/rbac/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *ApplicationTemplate) DeepCopyInto(out *ApplicationTemplate) {
|
func (in *ApplicationTemplate) DeepCopyInto(out *ApplicationTemplate) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationTemplate.
|
||||||
@@ -47,7 +46,6 @@ func (in *ApplicationTemplate) DeepCopy() *ApplicationTemplate {
|
|||||||
func (in *ClusterOverride) DeepCopyInto(out *ClusterOverride) {
|
func (in *ClusterOverride) DeepCopyInto(out *ClusterOverride) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Value.DeepCopyInto(&out.Value)
|
in.Value.DeepCopyInto(&out.Value)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterOverride.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterOverride.
|
||||||
@@ -69,7 +67,6 @@ func (in *ClusterRoleBindingTemplate) DeepCopyInto(out *ClusterRoleBindingTempla
|
|||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
out.RoleRef = in.RoleRef
|
out.RoleRef = in.RoleRef
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleBindingTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleBindingTemplate.
|
||||||
@@ -97,7 +94,6 @@ func (in *ClusterRoleTemplate) DeepCopyInto(out *ClusterRoleTemplate) {
|
|||||||
*out = new(v1.AggregationRule)
|
*out = new(v1.AggregationRule)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleTemplate.
|
||||||
@@ -135,7 +131,6 @@ func (in *ConfigMapTemplate) DeepCopyInto(out *ConfigMapTemplate) {
|
|||||||
(*out)[key] = outVal
|
(*out)[key] = outVal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapTemplate.
|
||||||
@@ -152,7 +147,6 @@ func (in *ConfigMapTemplate) DeepCopy() *ConfigMapTemplate {
|
|||||||
func (in *DeploymentTemplate) DeepCopyInto(out *DeploymentTemplate) {
|
func (in *DeploymentTemplate) DeepCopyInto(out *DeploymentTemplate) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentTemplate.
|
||||||
@@ -176,7 +170,6 @@ func (in *FederatedApplication) DeepCopyInto(out *FederatedApplication) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedApplication.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedApplication.
|
||||||
@@ -209,7 +202,6 @@ func (in *FederatedApplicationList) DeepCopyInto(out *FederatedApplicationList)
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedApplicationList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedApplicationList.
|
||||||
@@ -242,7 +234,6 @@ func (in *FederatedApplicationSpec) DeepCopyInto(out *FederatedApplicationSpec)
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedApplicationSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedApplicationSpec.
|
||||||
@@ -266,7 +257,6 @@ func (in *FederatedClusterRole) DeepCopyInto(out *FederatedClusterRole) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRole.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRole.
|
||||||
@@ -298,7 +288,6 @@ func (in *FederatedClusterRoleBinding) DeepCopyInto(out *FederatedClusterRoleBin
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRoleBinding.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRoleBinding.
|
||||||
@@ -331,7 +320,6 @@ func (in *FederatedClusterRoleBindingList) DeepCopyInto(out *FederatedClusterRol
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRoleBindingList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRoleBindingList.
|
||||||
@@ -364,7 +352,6 @@ func (in *FederatedClusterRoleBindingSpec) DeepCopyInto(out *FederatedClusterRol
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRoleBindingSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRoleBindingSpec.
|
||||||
@@ -389,7 +376,6 @@ func (in *FederatedClusterRoleList) DeepCopyInto(out *FederatedClusterRoleList)
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRoleList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRoleList.
|
||||||
@@ -422,7 +408,6 @@ func (in *FederatedClusterRoleSpec) DeepCopyInto(out *FederatedClusterRoleSpec)
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRoleSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedClusterRoleSpec.
|
||||||
@@ -446,7 +431,6 @@ func (in *FederatedConfigMap) DeepCopyInto(out *FederatedConfigMap) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedConfigMap.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedConfigMap.
|
||||||
@@ -479,7 +463,6 @@ func (in *FederatedConfigMapList) DeepCopyInto(out *FederatedConfigMapList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedConfigMapList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedConfigMapList.
|
||||||
@@ -512,7 +495,6 @@ func (in *FederatedConfigMapSpec) DeepCopyInto(out *FederatedConfigMapSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedConfigMapSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedConfigMapSpec.
|
||||||
@@ -536,7 +518,6 @@ func (in *FederatedDeployment) DeepCopyInto(out *FederatedDeployment) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedDeployment.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedDeployment.
|
||||||
@@ -569,7 +550,6 @@ func (in *FederatedDeploymentList) DeepCopyInto(out *FederatedDeploymentList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedDeploymentList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedDeploymentList.
|
||||||
@@ -602,7 +582,6 @@ func (in *FederatedDeploymentSpec) DeepCopyInto(out *FederatedDeploymentSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedDeploymentSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedDeploymentSpec.
|
||||||
@@ -626,7 +605,6 @@ func (in *FederatedGroup) DeepCopyInto(out *FederatedGroup) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroup.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroup.
|
||||||
@@ -658,7 +636,6 @@ func (in *FederatedGroupBinding) DeepCopyInto(out *FederatedGroupBinding) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroupBinding.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroupBinding.
|
||||||
@@ -691,7 +668,6 @@ func (in *FederatedGroupBindingList) DeepCopyInto(out *FederatedGroupBindingList
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroupBindingList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroupBindingList.
|
||||||
@@ -724,7 +700,6 @@ func (in *FederatedGroupBindingSpec) DeepCopyInto(out *FederatedGroupBindingSpec
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroupBindingSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroupBindingSpec.
|
||||||
@@ -749,7 +724,6 @@ func (in *FederatedGroupList) DeepCopyInto(out *FederatedGroupList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroupList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroupList.
|
||||||
@@ -782,7 +756,6 @@ func (in *FederatedGroupSpec) DeepCopyInto(out *FederatedGroupSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroupSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedGroupSpec.
|
||||||
@@ -806,7 +779,6 @@ func (in *FederatedIngress) DeepCopyInto(out *FederatedIngress) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedIngress.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedIngress.
|
||||||
@@ -839,7 +811,6 @@ func (in *FederatedIngressList) DeepCopyInto(out *FederatedIngressList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedIngressList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedIngressList.
|
||||||
@@ -872,7 +843,6 @@ func (in *FederatedIngressSpec) DeepCopyInto(out *FederatedIngressSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedIngressSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedIngressSpec.
|
||||||
@@ -896,7 +866,6 @@ func (in *FederatedJob) DeepCopyInto(out *FederatedJob) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedJob.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedJob.
|
||||||
@@ -929,7 +898,6 @@ func (in *FederatedJobList) DeepCopyInto(out *FederatedJobList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedJobList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedJobList.
|
||||||
@@ -962,7 +930,6 @@ func (in *FederatedJobSpec) DeepCopyInto(out *FederatedJobSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedJobSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedJobSpec.
|
||||||
@@ -986,7 +953,6 @@ func (in *FederatedLimitRange) DeepCopyInto(out *FederatedLimitRange) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedLimitRange.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedLimitRange.
|
||||||
@@ -1019,7 +985,6 @@ func (in *FederatedLimitRangeList) DeepCopyInto(out *FederatedLimitRangeList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedLimitRangeList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedLimitRangeList.
|
||||||
@@ -1052,7 +1017,6 @@ func (in *FederatedLimitRangeSpec) DeepCopyInto(out *FederatedLimitRangeSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedLimitRangeSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedLimitRangeSpec.
|
||||||
@@ -1076,7 +1040,6 @@ func (in *FederatedNamespace) DeepCopyInto(out *FederatedNamespace) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedNamespace.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedNamespace.
|
||||||
@@ -1109,7 +1072,6 @@ func (in *FederatedNamespaceList) DeepCopyInto(out *FederatedNamespaceList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedNamespaceList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedNamespaceList.
|
||||||
@@ -1142,7 +1104,6 @@ func (in *FederatedNamespaceSpec) DeepCopyInto(out *FederatedNamespaceSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedNamespaceSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedNamespaceSpec.
|
||||||
@@ -1166,7 +1127,6 @@ func (in *FederatedPersistentVolumeClaim) DeepCopyInto(out *FederatedPersistentV
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedPersistentVolumeClaim.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedPersistentVolumeClaim.
|
||||||
@@ -1199,7 +1159,6 @@ func (in *FederatedPersistentVolumeClaimList) DeepCopyInto(out *FederatedPersist
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedPersistentVolumeClaimList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedPersistentVolumeClaimList.
|
||||||
@@ -1232,7 +1191,6 @@ func (in *FederatedPersistentVolumeClaimSpec) DeepCopyInto(out *FederatedPersist
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedPersistentVolumeClaimSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedPersistentVolumeClaimSpec.
|
||||||
@@ -1256,7 +1214,6 @@ func (in *FederatedResourceQuota) DeepCopyInto(out *FederatedResourceQuota) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedResourceQuota.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedResourceQuota.
|
||||||
@@ -1289,7 +1246,6 @@ func (in *FederatedResourceQuotaList) DeepCopyInto(out *FederatedResourceQuotaLi
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedResourceQuotaList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedResourceQuotaList.
|
||||||
@@ -1322,7 +1278,6 @@ func (in *FederatedResourceQuotaSpec) DeepCopyInto(out *FederatedResourceQuotaSp
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedResourceQuotaSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedResourceQuotaSpec.
|
||||||
@@ -1346,7 +1301,6 @@ func (in *FederatedSecret) DeepCopyInto(out *FederatedSecret) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedSecret.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedSecret.
|
||||||
@@ -1379,7 +1333,6 @@ func (in *FederatedSecretList) DeepCopyInto(out *FederatedSecretList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedSecretList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedSecretList.
|
||||||
@@ -1412,7 +1365,6 @@ func (in *FederatedSecretSpec) DeepCopyInto(out *FederatedSecretSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedSecretSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedSecretSpec.
|
||||||
@@ -1436,7 +1388,6 @@ func (in *FederatedService) DeepCopyInto(out *FederatedService) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedService.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedService.
|
||||||
@@ -1469,7 +1420,6 @@ func (in *FederatedServiceList) DeepCopyInto(out *FederatedServiceList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedServiceList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedServiceList.
|
||||||
@@ -1502,7 +1452,6 @@ func (in *FederatedServiceSpec) DeepCopyInto(out *FederatedServiceSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedServiceSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedServiceSpec.
|
||||||
@@ -1526,7 +1475,6 @@ func (in *FederatedStatefulSet) DeepCopyInto(out *FederatedStatefulSet) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedStatefulSet.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedStatefulSet.
|
||||||
@@ -1559,7 +1507,6 @@ func (in *FederatedStatefulSetList) DeepCopyInto(out *FederatedStatefulSetList)
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedStatefulSetList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedStatefulSetList.
|
||||||
@@ -1592,7 +1539,6 @@ func (in *FederatedStatefulSetSpec) DeepCopyInto(out *FederatedStatefulSetSpec)
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedStatefulSetSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedStatefulSetSpec.
|
||||||
@@ -1616,7 +1562,6 @@ func (in *FederatedUser) DeepCopyInto(out *FederatedUser) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedUser.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedUser.
|
||||||
@@ -1649,7 +1594,6 @@ func (in *FederatedUserList) DeepCopyInto(out *FederatedUserList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedUserList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedUserList.
|
||||||
@@ -1682,7 +1626,6 @@ func (in *FederatedUserSpec) DeepCopyInto(out *FederatedUserSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedUserSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedUserSpec.
|
||||||
@@ -1706,7 +1649,6 @@ func (in *FederatedWorkspace) DeepCopyInto(out *FederatedWorkspace) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspace.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspace.
|
||||||
@@ -1739,7 +1681,6 @@ func (in *FederatedWorkspaceList) DeepCopyInto(out *FederatedWorkspaceList) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceList.
|
||||||
@@ -1771,7 +1712,6 @@ func (in *FederatedWorkspaceRole) DeepCopyInto(out *FederatedWorkspaceRole) {
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRole.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRole.
|
||||||
@@ -1803,7 +1743,6 @@ func (in *FederatedWorkspaceRoleBinding) DeepCopyInto(out *FederatedWorkspaceRol
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRoleBinding.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRoleBinding.
|
||||||
@@ -1836,7 +1775,6 @@ func (in *FederatedWorkspaceRoleBindingList) DeepCopyInto(out *FederatedWorkspac
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRoleBindingList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRoleBindingList.
|
||||||
@@ -1869,7 +1807,6 @@ func (in *FederatedWorkspaceRoleBindingSpec) DeepCopyInto(out *FederatedWorkspac
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRoleBindingSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRoleBindingSpec.
|
||||||
@@ -1882,29 +1819,6 @@ func (in *FederatedWorkspaceRoleBindingSpec) DeepCopy() *FederatedWorkspaceRoleB
|
|||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
||||||
func (in *WorkspaceRoleBindingTemplate) DeepCopyInto(out *WorkspaceRoleBindingTemplate) {
|
|
||||||
*out = *in
|
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
|
||||||
if in.Subjects != nil {
|
|
||||||
in, out := &in.Subjects, &out.Subjects
|
|
||||||
*out = make([]v1.Subject, len(*in))
|
|
||||||
copy(*out, *in)
|
|
||||||
}
|
|
||||||
out.RoleRef = in.RoleRef
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRoleBindingTemplate.
|
|
||||||
func (in *WorkspaceRoleBindingTemplate) DeepCopy() *WorkspaceRoleBindingTemplate {
|
|
||||||
if in == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
out := new(WorkspaceRoleBindingTemplate)
|
|
||||||
in.DeepCopyInto(out)
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *FederatedWorkspaceRoleList) DeepCopyInto(out *FederatedWorkspaceRoleList) {
|
func (in *FederatedWorkspaceRoleList) DeepCopyInto(out *FederatedWorkspaceRoleList) {
|
||||||
*out = *in
|
*out = *in
|
||||||
@@ -1917,7 +1831,6 @@ func (in *FederatedWorkspaceRoleList) DeepCopyInto(out *FederatedWorkspaceRoleLi
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRoleList.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRoleList.
|
||||||
@@ -1950,7 +1863,6 @@ func (in *FederatedWorkspaceRoleSpec) DeepCopyInto(out *FederatedWorkspaceRoleSp
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRoleSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceRoleSpec.
|
||||||
@@ -1975,7 +1887,6 @@ func (in *FederatedWorkspaceSpec) DeepCopyInto(out *FederatedWorkspaceSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FederatedWorkspaceSpec.
|
||||||
@@ -1991,7 +1902,6 @@ func (in *FederatedWorkspaceSpec) DeepCopy() *FederatedWorkspaceSpec {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *GenericClusterReference) DeepCopyInto(out *GenericClusterReference) {
|
func (in *GenericClusterReference) DeepCopyInto(out *GenericClusterReference) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericClusterReference.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericClusterReference.
|
||||||
@@ -2007,7 +1917,6 @@ func (in *GenericClusterReference) DeepCopy() *GenericClusterReference {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *GenericClusterStatus) DeepCopyInto(out *GenericClusterStatus) {
|
func (in *GenericClusterStatus) DeepCopyInto(out *GenericClusterStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericClusterStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericClusterStatus.
|
||||||
@@ -2023,7 +1932,6 @@ func (in *GenericClusterStatus) DeepCopy() *GenericClusterStatus {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *GenericCondition) DeepCopyInto(out *GenericCondition) {
|
func (in *GenericCondition) DeepCopyInto(out *GenericCondition) {
|
||||||
*out = *in
|
*out = *in
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericCondition.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericCondition.
|
||||||
@@ -2046,7 +1954,6 @@ func (in *GenericFederatedResource) DeepCopyInto(out *GenericFederatedResource)
|
|||||||
*out = new(GenericFederatedStatus)
|
*out = new(GenericFederatedStatus)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericFederatedResource.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericFederatedResource.
|
||||||
@@ -2078,7 +1985,6 @@ func (in *GenericFederatedStatus) DeepCopyInto(out *GenericFederatedStatus) {
|
|||||||
*out = make([]GenericClusterStatus, len(*in))
|
*out = make([]GenericClusterStatus, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericFederatedStatus.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericFederatedStatus.
|
||||||
@@ -2101,7 +2007,6 @@ func (in *GenericOverride) DeepCopyInto(out *GenericOverride) {
|
|||||||
*out = new(GenericOverrideSpec)
|
*out = new(GenericOverrideSpec)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericOverride.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericOverride.
|
||||||
@@ -2124,7 +2029,6 @@ func (in *GenericOverrideItem) DeepCopyInto(out *GenericOverrideItem) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericOverrideItem.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericOverrideItem.
|
||||||
@@ -2147,7 +2051,6 @@ func (in *GenericOverrideSpec) DeepCopyInto(out *GenericOverrideSpec) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericOverrideSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericOverrideSpec.
|
||||||
@@ -2166,7 +2069,6 @@ func (in *GenericPlacement) DeepCopyInto(out *GenericPlacement) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericPlacement.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericPlacement.
|
||||||
@@ -2192,7 +2094,6 @@ func (in *GenericPlacementFields) DeepCopyInto(out *GenericPlacementFields) {
|
|||||||
*out = new(metav1.LabelSelector)
|
*out = new(metav1.LabelSelector)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericPlacementFields.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericPlacementFields.
|
||||||
@@ -2209,7 +2110,6 @@ func (in *GenericPlacementFields) DeepCopy() *GenericPlacementFields {
|
|||||||
func (in *GenericPlacementSpec) DeepCopyInto(out *GenericPlacementSpec) {
|
func (in *GenericPlacementSpec) DeepCopyInto(out *GenericPlacementSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Placement.DeepCopyInto(&out.Placement)
|
in.Placement.DeepCopyInto(&out.Placement)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericPlacementSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericPlacementSpec.
|
||||||
@@ -2232,7 +2132,6 @@ func (in *GroupBindingTemplate) DeepCopyInto(out *GroupBindingTemplate) {
|
|||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupBindingTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupBindingTemplate.
|
||||||
@@ -2250,7 +2149,6 @@ func (in *GroupTemplate) DeepCopyInto(out *GroupTemplate) {
|
|||||||
*out = *in
|
*out = *in
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
out.Spec = in.Spec
|
out.Spec = in.Spec
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupTemplate.
|
||||||
@@ -2267,7 +2165,6 @@ func (in *GroupTemplate) DeepCopy() *GroupTemplate {
|
|||||||
func (in *IngressTemplate) DeepCopyInto(out *IngressTemplate) {
|
func (in *IngressTemplate) DeepCopyInto(out *IngressTemplate) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressTemplate.
|
||||||
@@ -2284,7 +2181,6 @@ func (in *IngressTemplate) DeepCopy() *IngressTemplate {
|
|||||||
func (in *JobTemplate) DeepCopyInto(out *JobTemplate) {
|
func (in *JobTemplate) DeepCopyInto(out *JobTemplate) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobTemplate.
|
||||||
@@ -2301,7 +2197,6 @@ func (in *JobTemplate) DeepCopy() *JobTemplate {
|
|||||||
func (in *LimitRangeTemplate) DeepCopyInto(out *LimitRangeTemplate) {
|
func (in *LimitRangeTemplate) DeepCopyInto(out *LimitRangeTemplate) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitRangeTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitRangeTemplate.
|
||||||
@@ -2318,7 +2213,6 @@ func (in *LimitRangeTemplate) DeepCopy() *LimitRangeTemplate {
|
|||||||
func (in *NamespaceTemplate) DeepCopyInto(out *NamespaceTemplate) {
|
func (in *NamespaceTemplate) DeepCopyInto(out *NamespaceTemplate) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceTemplate.
|
||||||
@@ -2337,7 +2231,6 @@ func (in *PersistentVolumeClaimTemplate) DeepCopyInto(out *PersistentVolumeClaim
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeClaimTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeClaimTemplate.
|
||||||
@@ -2354,7 +2247,6 @@ func (in *PersistentVolumeClaimTemplate) DeepCopy() *PersistentVolumeClaimTempla
|
|||||||
func (in *ResourceQuotaTemplate) DeepCopyInto(out *ResourceQuotaTemplate) {
|
func (in *ResourceQuotaTemplate) DeepCopyInto(out *ResourceQuotaTemplate) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceQuotaTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceQuotaTemplate.
|
||||||
@@ -2392,7 +2284,6 @@ func (in *SecretTemplate) DeepCopyInto(out *SecretTemplate) {
|
|||||||
(*out)[key] = val
|
(*out)[key] = val
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretTemplate.
|
||||||
@@ -2411,7 +2302,6 @@ func (in *ServiceTemplate) DeepCopyInto(out *ServiceTemplate) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceTemplate.
|
||||||
@@ -2430,7 +2320,6 @@ func (in *StatefulSetTemplate) DeepCopyInto(out *StatefulSetTemplate) {
|
|||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetTemplate.
|
||||||
@@ -2447,7 +2336,6 @@ func (in *StatefulSetTemplate) DeepCopy() *StatefulSetTemplate {
|
|||||||
func (in *UserTemplate) DeepCopyInto(out *UserTemplate) {
|
func (in *UserTemplate) DeepCopyInto(out *UserTemplate) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserTemplate.
|
||||||
@@ -2460,6 +2348,28 @@ func (in *UserTemplate) DeepCopy() *UserTemplate {
|
|||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *WorkspaceRoleBindingTemplate) DeepCopyInto(out *WorkspaceRoleBindingTemplate) {
|
||||||
|
*out = *in
|
||||||
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
|
if in.Subjects != nil {
|
||||||
|
in, out := &in.Subjects, &out.Subjects
|
||||||
|
*out = make([]v1.Subject, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
out.RoleRef = in.RoleRef
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRoleBindingTemplate.
|
||||||
|
func (in *WorkspaceRoleBindingTemplate) DeepCopy() *WorkspaceRoleBindingTemplate {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(WorkspaceRoleBindingTemplate)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *WorkspaceRoleTemplate) DeepCopyInto(out *WorkspaceRoleTemplate) {
|
func (in *WorkspaceRoleTemplate) DeepCopyInto(out *WorkspaceRoleTemplate) {
|
||||||
*out = *in
|
*out = *in
|
||||||
@@ -2471,7 +2381,6 @@ func (in *WorkspaceRoleTemplate) DeepCopyInto(out *WorkspaceRoleTemplate) {
|
|||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRoleTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceRoleTemplate.
|
||||||
@@ -2489,7 +2398,6 @@ func (in *WorkspaceTemplate) DeepCopyInto(out *WorkspaceTemplate) {
|
|||||||
*out = *in
|
*out = *in
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
in.Spec.DeepCopyInto(&out.Spec)
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceTemplate.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceTemplate.
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ import (
|
|||||||
rt "runtime"
|
rt "runtime"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
openpitrixv2alpha1 "kubesphere.io/kubesphere/pkg/kapis/openpitrix/v2alpha1"
|
||||||
|
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/emicklei/go-restful"
|
"github.com/emicklei/go-restful"
|
||||||
@@ -88,7 +90,6 @@ import (
|
|||||||
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
|
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/logging"
|
"kubesphere.io/kubesphere/pkg/simple/client/logging"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/s3"
|
"kubesphere.io/kubesphere/pkg/simple/client/s3"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/sonarqube"
|
"kubesphere.io/kubesphere/pkg/simple/client/sonarqube"
|
||||||
"kubesphere.io/kubesphere/pkg/utils/metrics"
|
"kubesphere.io/kubesphere/pkg/utils/metrics"
|
||||||
@@ -135,9 +136,6 @@ type APIServer struct {
|
|||||||
|
|
||||||
MetricsClient monitoring.Interface
|
MetricsClient monitoring.Interface
|
||||||
|
|
||||||
//
|
|
||||||
OpenpitrixClient openpitrix.Client
|
|
||||||
|
|
||||||
//
|
//
|
||||||
LoggingClient logging.Client
|
LoggingClient logging.Client
|
||||||
|
|
||||||
@@ -215,14 +213,15 @@ func (s *APIServer) installKubeSphereAPIs() {
|
|||||||
|
|
||||||
urlruntime.Must(configv1alpha2.AddToContainer(s.container, s.Config))
|
urlruntime.Must(configv1alpha2.AddToContainer(s.container, s.Config))
|
||||||
urlruntime.Must(resourcev1alpha3.AddToContainer(s.container, s.InformerFactory, s.RuntimeCache))
|
urlruntime.Must(resourcev1alpha3.AddToContainer(s.container, s.InformerFactory, s.RuntimeCache))
|
||||||
urlruntime.Must(monitoringv1alpha3.AddToContainer(s.container, s.KubernetesClient.Kubernetes(), s.MonitoringClient, s.MetricsClient, s.InformerFactory, s.OpenpitrixClient))
|
urlruntime.Must(monitoringv1alpha3.AddToContainer(s.container, s.KubernetesClient.Kubernetes(), s.MonitoringClient, s.MetricsClient, s.InformerFactory))
|
||||||
urlruntime.Must(meteringv1alpha1.AddToContainer(s.container, s.KubernetesClient.Kubernetes(), s.MonitoringClient, s.InformerFactory, s.OpenpitrixClient, s.RuntimeCache))
|
urlruntime.Must(meteringv1alpha1.AddToContainer(s.container, s.KubernetesClient.Kubernetes(), s.MonitoringClient, s.InformerFactory, s.RuntimeCache))
|
||||||
urlruntime.Must(openpitrixv1.AddToContainer(s.container, s.InformerFactory, s.OpenpitrixClient))
|
urlruntime.Must(openpitrixv1.AddToContainer(s.container, s.InformerFactory, s.KubernetesClient.KubeSphere(), s.Config.OpenPitrixOptions))
|
||||||
|
urlruntime.Must(openpitrixv2alpha1.AddToContainer(s.container, s.InformerFactory, s.KubernetesClient.KubeSphere(), s.Config.OpenPitrixOptions))
|
||||||
urlruntime.Must(operationsv1alpha2.AddToContainer(s.container, s.KubernetesClient.Kubernetes()))
|
urlruntime.Must(operationsv1alpha2.AddToContainer(s.container, s.KubernetesClient.Kubernetes()))
|
||||||
urlruntime.Must(resourcesv1alpha2.AddToContainer(s.container, s.KubernetesClient.Kubernetes(), s.InformerFactory,
|
urlruntime.Must(resourcesv1alpha2.AddToContainer(s.container, s.KubernetesClient.Kubernetes(), s.InformerFactory,
|
||||||
s.KubernetesClient.Master()))
|
s.KubernetesClient.Master()))
|
||||||
urlruntime.Must(tenantv1alpha2.AddToContainer(s.container, s.InformerFactory, s.KubernetesClient.Kubernetes(),
|
urlruntime.Must(tenantv1alpha2.AddToContainer(s.container, s.InformerFactory, s.KubernetesClient.Kubernetes(),
|
||||||
s.KubernetesClient.KubeSphere(), s.EventsClient, s.LoggingClient, s.AuditingClient, amOperator, rbacAuthorizer, s.MonitoringClient, s.OpenpitrixClient, s.RuntimeCache))
|
s.KubernetesClient.KubeSphere(), s.EventsClient, s.LoggingClient, s.AuditingClient, amOperator, rbacAuthorizer, s.MonitoringClient, s.RuntimeCache))
|
||||||
urlruntime.Must(terminalv1alpha2.AddToContainer(s.container, s.KubernetesClient.Kubernetes(), s.KubernetesClient.Config()))
|
urlruntime.Must(terminalv1alpha2.AddToContainer(s.container, s.KubernetesClient.Kubernetes(), s.KubernetesClient.Config()))
|
||||||
urlruntime.Must(clusterkapisv1alpha1.AddToContainer(s.container,
|
urlruntime.Must(clusterkapisv1alpha1.AddToContainer(s.container,
|
||||||
s.InformerFactory.KubernetesSharedInformerFactory(),
|
s.InformerFactory.KubernetesSharedInformerFactory(),
|
||||||
@@ -338,8 +337,7 @@ func (s *APIServer) buildHandlerChain(stopCh <-chan struct{}) {
|
|||||||
|
|
||||||
handler = filters.WithAuthorization(handler, authorizers)
|
handler = filters.WithAuthorization(handler, authorizers)
|
||||||
if s.Config.MultiClusterOptions.Enable {
|
if s.Config.MultiClusterOptions.Enable {
|
||||||
clusterDispatcher := dispatch.NewClusterDispatch(s.InformerFactory.KubeSphereSharedInformerFactory().Cluster().V1alpha1().Clusters(),
|
clusterDispatcher := dispatch.NewClusterDispatch(s.InformerFactory.KubeSphereSharedInformerFactory().Cluster().V1alpha1().Clusters())
|
||||||
s.InformerFactory.KubeSphereSharedInformerFactory().Cluster().V1alpha1().Clusters().Lister())
|
|
||||||
handler = filters.WithMultipleClusterDispatcher(handler, clusterDispatcher)
|
handler = filters.WithMultipleClusterDispatcher(handler, clusterDispatcher)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -196,6 +196,14 @@ func (conf *Config) ToMap() map[string]bool {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if name == "openpitrix" {
|
||||||
|
if conf.OpenPitrixOptions.IsEmpty() {
|
||||||
|
result["openpitrix.appstore"] = false
|
||||||
|
} else {
|
||||||
|
result["openpitrix.appstore"] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if c.Field(i).IsNil() {
|
if c.Field(i).IsNil() {
|
||||||
result[name] = false
|
result[name] = false
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -94,12 +94,16 @@ func newTestConfig() (*Config, error) {
|
|||||||
Bucket: "ssss",
|
Bucket: "ssss",
|
||||||
},
|
},
|
||||||
OpenPitrixOptions: &openpitrix.Options{
|
OpenPitrixOptions: &openpitrix.Options{
|
||||||
RuntimeManagerEndpoint: "openpitrix-hyperpitrix.openpitrix-system.svc:9103",
|
S3Options: &s3.Options{
|
||||||
ClusterManagerEndpoint: "openpitrix-hyperpitrix.openpitrix-system.svc:9104",
|
Endpoint: "http://minio.openpitrix-system.svc",
|
||||||
RepoManagerEndpoint: "openpitrix-hyperpitrix.openpitrix-system.svc:9101",
|
Region: "",
|
||||||
AppManagerEndpoint: "openpitrix-hyperpitrix.openpitrix-system.svc:9102",
|
DisableSSL: false,
|
||||||
CategoryManagerEndpoint: "openpitrix-hyperpitrix.openpitrix-system.svc:9113",
|
ForcePathStyle: false,
|
||||||
AttachmentManagerEndpoint: "openpitrix-hyperpitrix.openpitrix-system.svc:9122",
|
AccessKeyID: "ABCDEFGHIJKLMN",
|
||||||
|
SecretAccessKey: "OPQRSTUVWXYZ",
|
||||||
|
SessionToken: "abcdefghijklmn",
|
||||||
|
Bucket: "app",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
NetworkOptions: &network.Options{
|
NetworkOptions: &network.Options{
|
||||||
EnableNetworkPolicy: true,
|
EnableNetworkPolicy: true,
|
||||||
|
|||||||
@@ -18,25 +18,18 @@ package dispatch
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
|
||||||
"net/url"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
corev1 "k8s.io/api/core/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/util/httpstream"
|
"k8s.io/apimachinery/pkg/util/httpstream"
|
||||||
"k8s.io/apimachinery/pkg/util/proxy"
|
"k8s.io/apimachinery/pkg/util/proxy"
|
||||||
"k8s.io/apiserver/pkg/endpoints/handlers/responsewriters"
|
"k8s.io/apiserver/pkg/endpoints/handlers/responsewriters"
|
||||||
"k8s.io/client-go/rest"
|
|
||||||
"k8s.io/client-go/tools/cache"
|
|
||||||
"k8s.io/client-go/tools/clientcmd"
|
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/clusterclient"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/apis/cluster/v1alpha1"
|
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/apis/cluster/v1alpha1"
|
||||||
"kubesphere.io/kubesphere/pkg/apiserver/request"
|
"kubesphere.io/kubesphere/pkg/apiserver/request"
|
||||||
clusterinformer "kubesphere.io/kubesphere/pkg/client/informers/externalversions/cluster/v1alpha1"
|
clusterinformer "kubesphere.io/kubesphere/pkg/client/informers/externalversions/cluster/v1alpha1"
|
||||||
clusterlister "kubesphere.io/kubesphere/pkg/client/listers/cluster/v1alpha1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const proxyURLFormat = "/api/v1/namespaces/kubesphere-system/services/:ks-apiserver:/proxy%s"
|
const proxyURLFormat = "/api/v1/namespaces/kubesphere-system/services/:ks-apiserver:/proxy%s"
|
||||||
@@ -48,48 +41,12 @@ type Dispatcher interface {
|
|||||||
Dispatch(w http.ResponseWriter, req *http.Request, handler http.Handler)
|
Dispatch(w http.ResponseWriter, req *http.Request, handler http.Handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
type innerCluster struct {
|
|
||||||
kubernetesURL *url.URL
|
|
||||||
kubesphereURL *url.URL
|
|
||||||
transport http.RoundTripper
|
|
||||||
}
|
|
||||||
|
|
||||||
type clusterDispatch struct {
|
type clusterDispatch struct {
|
||||||
clusterLister clusterlister.ClusterLister
|
clusterclient.ClusterClients
|
||||||
|
|
||||||
// dispatcher will build a in memory cluster cache to speed things up
|
|
||||||
innerClusters map[string]*innerCluster
|
|
||||||
|
|
||||||
clusterInformerSynced cache.InformerSynced
|
|
||||||
|
|
||||||
mutex sync.RWMutex
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewClusterDispatch(clusterInformer clusterinformer.ClusterInformer, clusterLister clusterlister.ClusterLister) Dispatcher {
|
func NewClusterDispatch(clusterInformer clusterinformer.ClusterInformer) Dispatcher {
|
||||||
clusterDispatcher := &clusterDispatch{
|
return &clusterDispatch{clusterclient.NewClusterClient(clusterInformer)}
|
||||||
clusterLister: clusterLister,
|
|
||||||
innerClusters: make(map[string]*innerCluster),
|
|
||||||
mutex: sync.RWMutex{},
|
|
||||||
}
|
|
||||||
|
|
||||||
clusterDispatcher.clusterInformerSynced = clusterInformer.Informer().HasSynced
|
|
||||||
clusterInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
|
|
||||||
AddFunc: clusterDispatcher.updateInnerClusters,
|
|
||||||
UpdateFunc: func(oldObj, newObj interface{}) {
|
|
||||||
clusterDispatcher.updateInnerClusters(newObj)
|
|
||||||
},
|
|
||||||
DeleteFunc: func(obj interface{}) {
|
|
||||||
cluster := obj.(*clusterv1alpha1.Cluster)
|
|
||||||
clusterDispatcher.mutex.Lock()
|
|
||||||
if _, ok := clusterDispatcher.innerClusters[cluster.Name]; ok {
|
|
||||||
delete(clusterDispatcher.innerClusters, cluster.Name)
|
|
||||||
}
|
|
||||||
clusterDispatcher.mutex.Unlock()
|
|
||||||
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
return clusterDispatcher
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dispatch dispatch requests to designated cluster
|
// Dispatch dispatch requests to designated cluster
|
||||||
@@ -102,7 +59,7 @@ func (c *clusterDispatch) Dispatch(w http.ResponseWriter, req *http.Request, han
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
cluster, err := c.clusterLister.Get(info.Cluster)
|
cluster, err := c.Get(info.Cluster)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.IsNotFound(err) {
|
if errors.IsNotFound(err) {
|
||||||
http.Error(w, fmt.Sprintf("cluster %s not found", info.Cluster), http.StatusNotFound)
|
http.Error(w, fmt.Sprintf("cluster %s not found", info.Cluster), http.StatusNotFound)
|
||||||
@@ -113,18 +70,18 @@ func (c *clusterDispatch) Dispatch(w http.ResponseWriter, req *http.Request, han
|
|||||||
}
|
}
|
||||||
|
|
||||||
// request cluster is host cluster, no need go through agent
|
// request cluster is host cluster, no need go through agent
|
||||||
if isClusterHostCluster(cluster) {
|
if c.IsHostCluster(cluster) {
|
||||||
req.URL.Path = strings.Replace(req.URL.Path, fmt.Sprintf("/clusters/%s", info.Cluster), "", 1)
|
req.URL.Path = strings.Replace(req.URL.Path, fmt.Sprintf("/clusters/%s", info.Cluster), "", 1)
|
||||||
handler.ServeHTTP(w, req)
|
handler.ServeHTTP(w, req)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !isClusterReady(cluster) {
|
if !c.IsClusterReady(cluster) {
|
||||||
http.Error(w, fmt.Sprintf("cluster %s is not ready", cluster.Name), http.StatusInternalServerError)
|
http.Error(w, fmt.Sprintf("cluster %s is not ready", cluster.Name), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
innCluster := c.getInnerCluster(cluster.Name)
|
innCluster := c.GetInnerCluster(cluster.Name)
|
||||||
if innCluster == nil {
|
if innCluster == nil {
|
||||||
http.Error(w, fmt.Sprintf("cluster %s is not ready", cluster.Name), http.StatusInternalServerError)
|
http.Error(w, fmt.Sprintf("cluster %s is not ready", cluster.Name), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
@@ -141,10 +98,10 @@ func (c *clusterDispatch) Dispatch(w http.ResponseWriter, req *http.Request, han
|
|||||||
if cluster.Spec.Connection.Type == clusterv1alpha1.ConnectionTypeDirect &&
|
if cluster.Spec.Connection.Type == clusterv1alpha1.ConnectionTypeDirect &&
|
||||||
len(cluster.Spec.Connection.KubeSphereAPIEndpoint) == 0 {
|
len(cluster.Spec.Connection.KubeSphereAPIEndpoint) == 0 {
|
||||||
|
|
||||||
u.Scheme = innCluster.kubernetesURL.Scheme
|
u.Scheme = innCluster.KubernetesURL.Scheme
|
||||||
u.Host = innCluster.kubernetesURL.Host
|
u.Host = innCluster.KubernetesURL.Host
|
||||||
u.Path = fmt.Sprintf(proxyURLFormat, u.Path)
|
u.Path = fmt.Sprintf(proxyURLFormat, u.Path)
|
||||||
transport = innCluster.transport
|
transport = innCluster.Transport
|
||||||
|
|
||||||
// The reason we need this is kube-apiserver doesn't behave like a standard proxy, it will strip
|
// The reason we need this is kube-apiserver doesn't behave like a standard proxy, it will strip
|
||||||
// authorization header of proxy requests. Use custom header to avoid stripping by kube-apiserver.
|
// authorization header of proxy requests. Use custom header to avoid stripping by kube-apiserver.
|
||||||
@@ -178,8 +135,8 @@ func (c *clusterDispatch) Dispatch(w http.ResponseWriter, req *http.Request, han
|
|||||||
} else {
|
} else {
|
||||||
// everything else goes to ks-apiserver, since our ks-apiserver has the ability to proxy kube-apiserver requests
|
// everything else goes to ks-apiserver, since our ks-apiserver has the ability to proxy kube-apiserver requests
|
||||||
|
|
||||||
u.Host = innCluster.kubesphereURL.Host
|
u.Host = innCluster.KubesphereURL.Host
|
||||||
u.Scheme = innCluster.kubesphereURL.Scheme
|
u.Scheme = innCluster.KubesphereURL.Scheme
|
||||||
}
|
}
|
||||||
|
|
||||||
httpProxy := proxy.NewUpgradeAwareHandler(&u, transport, false, false, c)
|
httpProxy := proxy.NewUpgradeAwareHandler(&u, transport, false, false, c)
|
||||||
@@ -190,73 +147,3 @@ func (c *clusterDispatch) Dispatch(w http.ResponseWriter, req *http.Request, han
|
|||||||
func (c *clusterDispatch) Error(w http.ResponseWriter, req *http.Request, err error) {
|
func (c *clusterDispatch) Error(w http.ResponseWriter, req *http.Request, err error) {
|
||||||
responsewriters.InternalError(w, req, err)
|
responsewriters.InternalError(w, req, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *clusterDispatch) getInnerCluster(name string) *innerCluster {
|
|
||||||
c.mutex.RLock()
|
|
||||||
defer c.mutex.RUnlock()
|
|
||||||
if cluster, ok := c.innerClusters[name]; ok {
|
|
||||||
return cluster
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *clusterDispatch) updateInnerClusters(obj interface{}) {
|
|
||||||
cluster := obj.(*clusterv1alpha1.Cluster)
|
|
||||||
|
|
||||||
kubernetesEndpoint, err := url.Parse(cluster.Spec.Connection.KubernetesAPIEndpoint)
|
|
||||||
if err != nil {
|
|
||||||
klog.Errorf("Parse kubernetes apiserver endpoint %s failed, %v", cluster.Spec.Connection.KubernetesAPIEndpoint, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
kubesphereEndpoint, err := url.Parse(cluster.Spec.Connection.KubeSphereAPIEndpoint)
|
|
||||||
if err != nil {
|
|
||||||
klog.Errorf("Parse kubesphere apiserver endpoint %s failed, %v", cluster.Spec.Connection.KubeSphereAPIEndpoint, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// prepare for
|
|
||||||
clientConfig, err := clientcmd.NewClientConfigFromBytes(cluster.Spec.Connection.KubeConfig)
|
|
||||||
if err != nil {
|
|
||||||
klog.Errorf("Unable to create client config from kubeconfig bytes, %#v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
clusterConfig, err := clientConfig.ClientConfig()
|
|
||||||
if err != nil {
|
|
||||||
klog.Errorf("Failed to get client config, %#v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
transport, err := rest.TransportFor(clusterConfig)
|
|
||||||
if err != nil {
|
|
||||||
klog.Errorf("Create transport failed, %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.mutex.Lock()
|
|
||||||
c.innerClusters[cluster.Name] = &innerCluster{
|
|
||||||
kubernetesURL: kubernetesEndpoint,
|
|
||||||
kubesphereURL: kubesphereEndpoint,
|
|
||||||
transport: transport,
|
|
||||||
}
|
|
||||||
c.mutex.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func isClusterReady(cluster *clusterv1alpha1.Cluster) bool {
|
|
||||||
for _, condition := range cluster.Status.Conditions {
|
|
||||||
if condition.Type == clusterv1alpha1.ClusterReady && condition.Status == corev1.ConditionTrue {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func isClusterHostCluster(cluster *clusterv1alpha1.Cluster) bool {
|
|
||||||
if _, ok := cluster.Labels[clusterv1alpha1.HostCluster]; ok {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ type ContainerBuilder []func(c *restful.Container) error
|
|||||||
|
|
||||||
const MimeMergePatchJson = "application/merge-patch+json"
|
const MimeMergePatchJson = "application/merge-patch+json"
|
||||||
const MimeJsonPatchJson = "application/json-patch+json"
|
const MimeJsonPatchJson = "application/json-patch+json"
|
||||||
|
const MimeMultipartFormData = "multipart/form-data"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
restful.RegisterEntityAccessor(MimeMergePatchJson, restful.NewEntityAccessorJSON(restful.MIME_JSON))
|
restful.RegisterEntityAccessor(MimeMergePatchJson, restful.NewEntityAccessorJSON(restful.MIME_JSON))
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import (
|
|||||||
discovery "k8s.io/client-go/discovery"
|
discovery "k8s.io/client-go/discovery"
|
||||||
rest "k8s.io/client-go/rest"
|
rest "k8s.io/client-go/rest"
|
||||||
flowcontrol "k8s.io/client-go/util/flowcontrol"
|
flowcontrol "k8s.io/client-go/util/flowcontrol"
|
||||||
|
applicationv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/application/v1alpha1"
|
||||||
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/auditing/v1alpha1"
|
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/auditing/v1alpha1"
|
||||||
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/cluster/v1alpha1"
|
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/cluster/v1alpha1"
|
||||||
devopsv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/devops/v1alpha1"
|
devopsv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/devops/v1alpha1"
|
||||||
@@ -40,6 +41,7 @@ import (
|
|||||||
|
|
||||||
type Interface interface {
|
type Interface interface {
|
||||||
Discovery() discovery.DiscoveryInterface
|
Discovery() discovery.DiscoveryInterface
|
||||||
|
ApplicationV1alpha1() applicationv1alpha1.ApplicationV1alpha1Interface
|
||||||
AuditingV1alpha1() auditingv1alpha1.AuditingV1alpha1Interface
|
AuditingV1alpha1() auditingv1alpha1.AuditingV1alpha1Interface
|
||||||
ClusterV1alpha1() clusterv1alpha1.ClusterV1alpha1Interface
|
ClusterV1alpha1() clusterv1alpha1.ClusterV1alpha1Interface
|
||||||
DevopsV1alpha1() devopsv1alpha1.DevopsV1alpha1Interface
|
DevopsV1alpha1() devopsv1alpha1.DevopsV1alpha1Interface
|
||||||
@@ -58,6 +60,7 @@ type Interface interface {
|
|||||||
// version included in a Clientset.
|
// version included in a Clientset.
|
||||||
type Clientset struct {
|
type Clientset struct {
|
||||||
*discovery.DiscoveryClient
|
*discovery.DiscoveryClient
|
||||||
|
applicationV1alpha1 *applicationv1alpha1.ApplicationV1alpha1Client
|
||||||
auditingV1alpha1 *auditingv1alpha1.AuditingV1alpha1Client
|
auditingV1alpha1 *auditingv1alpha1.AuditingV1alpha1Client
|
||||||
clusterV1alpha1 *clusterv1alpha1.ClusterV1alpha1Client
|
clusterV1alpha1 *clusterv1alpha1.ClusterV1alpha1Client
|
||||||
devopsV1alpha1 *devopsv1alpha1.DevopsV1alpha1Client
|
devopsV1alpha1 *devopsv1alpha1.DevopsV1alpha1Client
|
||||||
@@ -72,6 +75,11 @@ type Clientset struct {
|
|||||||
typesV1beta1 *typesv1beta1.TypesV1beta1Client
|
typesV1beta1 *typesv1beta1.TypesV1beta1Client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ApplicationV1alpha1 retrieves the ApplicationV1alpha1Client
|
||||||
|
func (c *Clientset) ApplicationV1alpha1() applicationv1alpha1.ApplicationV1alpha1Interface {
|
||||||
|
return c.applicationV1alpha1
|
||||||
|
}
|
||||||
|
|
||||||
// AuditingV1alpha1 retrieves the AuditingV1alpha1Client
|
// AuditingV1alpha1 retrieves the AuditingV1alpha1Client
|
||||||
func (c *Clientset) AuditingV1alpha1() auditingv1alpha1.AuditingV1alpha1Interface {
|
func (c *Clientset) AuditingV1alpha1() auditingv1alpha1.AuditingV1alpha1Interface {
|
||||||
return c.auditingV1alpha1
|
return c.auditingV1alpha1
|
||||||
@@ -153,6 +161,10 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
|
|||||||
}
|
}
|
||||||
var cs Clientset
|
var cs Clientset
|
||||||
var err error
|
var err error
|
||||||
|
cs.applicationV1alpha1, err = applicationv1alpha1.NewForConfig(&configShallowCopy)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
cs.auditingV1alpha1, err = auditingv1alpha1.NewForConfig(&configShallowCopy)
|
cs.auditingV1alpha1, err = auditingv1alpha1.NewForConfig(&configShallowCopy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -213,6 +225,7 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
|
|||||||
// panics if there is an error in the config.
|
// panics if there is an error in the config.
|
||||||
func NewForConfigOrDie(c *rest.Config) *Clientset {
|
func NewForConfigOrDie(c *rest.Config) *Clientset {
|
||||||
var cs Clientset
|
var cs Clientset
|
||||||
|
cs.applicationV1alpha1 = applicationv1alpha1.NewForConfigOrDie(c)
|
||||||
cs.auditingV1alpha1 = auditingv1alpha1.NewForConfigOrDie(c)
|
cs.auditingV1alpha1 = auditingv1alpha1.NewForConfigOrDie(c)
|
||||||
cs.clusterV1alpha1 = clusterv1alpha1.NewForConfigOrDie(c)
|
cs.clusterV1alpha1 = clusterv1alpha1.NewForConfigOrDie(c)
|
||||||
cs.devopsV1alpha1 = devopsv1alpha1.NewForConfigOrDie(c)
|
cs.devopsV1alpha1 = devopsv1alpha1.NewForConfigOrDie(c)
|
||||||
@@ -233,6 +246,7 @@ func NewForConfigOrDie(c *rest.Config) *Clientset {
|
|||||||
// New creates a new Clientset for the given RESTClient.
|
// New creates a new Clientset for the given RESTClient.
|
||||||
func New(c rest.Interface) *Clientset {
|
func New(c rest.Interface) *Clientset {
|
||||||
var cs Clientset
|
var cs Clientset
|
||||||
|
cs.applicationV1alpha1 = applicationv1alpha1.New(c)
|
||||||
cs.auditingV1alpha1 = auditingv1alpha1.New(c)
|
cs.auditingV1alpha1 = auditingv1alpha1.New(c)
|
||||||
cs.clusterV1alpha1 = clusterv1alpha1.New(c)
|
cs.clusterV1alpha1 = clusterv1alpha1.New(c)
|
||||||
cs.devopsV1alpha1 = devopsv1alpha1.New(c)
|
cs.devopsV1alpha1 = devopsv1alpha1.New(c)
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ import (
|
|||||||
fakediscovery "k8s.io/client-go/discovery/fake"
|
fakediscovery "k8s.io/client-go/discovery/fake"
|
||||||
"k8s.io/client-go/testing"
|
"k8s.io/client-go/testing"
|
||||||
clientset "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
clientset "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||||
|
applicationv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/application/v1alpha1"
|
||||||
|
fakeapplicationv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/application/v1alpha1/fake"
|
||||||
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/auditing/v1alpha1"
|
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/auditing/v1alpha1"
|
||||||
fakeauditingv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/auditing/v1alpha1/fake"
|
fakeauditingv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/auditing/v1alpha1/fake"
|
||||||
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/cluster/v1alpha1"
|
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/cluster/v1alpha1"
|
||||||
@@ -98,6 +100,11 @@ func (c *Clientset) Tracker() testing.ObjectTracker {
|
|||||||
|
|
||||||
var _ clientset.Interface = &Clientset{}
|
var _ clientset.Interface = &Clientset{}
|
||||||
|
|
||||||
|
// ApplicationV1alpha1 retrieves the ApplicationV1alpha1Client
|
||||||
|
func (c *Clientset) ApplicationV1alpha1() applicationv1alpha1.ApplicationV1alpha1Interface {
|
||||||
|
return &fakeapplicationv1alpha1.FakeApplicationV1alpha1{Fake: &c.Fake}
|
||||||
|
}
|
||||||
|
|
||||||
// AuditingV1alpha1 retrieves the AuditingV1alpha1Client
|
// AuditingV1alpha1 retrieves the AuditingV1alpha1Client
|
||||||
func (c *Clientset) AuditingV1alpha1() auditingv1alpha1.AuditingV1alpha1Interface {
|
func (c *Clientset) AuditingV1alpha1() auditingv1alpha1.AuditingV1alpha1Interface {
|
||||||
return &fakeauditingv1alpha1.FakeAuditingV1alpha1{Fake: &c.Fake}
|
return &fakeauditingv1alpha1.FakeAuditingV1alpha1{Fake: &c.Fake}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import (
|
|||||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
|
applicationv1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/apis/auditing/v1alpha1"
|
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/apis/auditing/v1alpha1"
|
||||||
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/apis/cluster/v1alpha1"
|
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/apis/cluster/v1alpha1"
|
||||||
devopsv1alpha1 "kubesphere.io/kubesphere/pkg/apis/devops/v1alpha1"
|
devopsv1alpha1 "kubesphere.io/kubesphere/pkg/apis/devops/v1alpha1"
|
||||||
@@ -42,6 +43,7 @@ var scheme = runtime.NewScheme()
|
|||||||
var codecs = serializer.NewCodecFactory(scheme)
|
var codecs = serializer.NewCodecFactory(scheme)
|
||||||
var parameterCodec = runtime.NewParameterCodec(scheme)
|
var parameterCodec = runtime.NewParameterCodec(scheme)
|
||||||
var localSchemeBuilder = runtime.SchemeBuilder{
|
var localSchemeBuilder = runtime.SchemeBuilder{
|
||||||
|
applicationv1alpha1.AddToScheme,
|
||||||
auditingv1alpha1.AddToScheme,
|
auditingv1alpha1.AddToScheme,
|
||||||
clusterv1alpha1.AddToScheme,
|
clusterv1alpha1.AddToScheme,
|
||||||
devopsv1alpha1.AddToScheme,
|
devopsv1alpha1.AddToScheme,
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import (
|
|||||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
|
applicationv1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/apis/auditing/v1alpha1"
|
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/apis/auditing/v1alpha1"
|
||||||
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/apis/cluster/v1alpha1"
|
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/apis/cluster/v1alpha1"
|
||||||
devopsv1alpha1 "kubesphere.io/kubesphere/pkg/apis/devops/v1alpha1"
|
devopsv1alpha1 "kubesphere.io/kubesphere/pkg/apis/devops/v1alpha1"
|
||||||
@@ -42,6 +43,7 @@ var Scheme = runtime.NewScheme()
|
|||||||
var Codecs = serializer.NewCodecFactory(Scheme)
|
var Codecs = serializer.NewCodecFactory(Scheme)
|
||||||
var ParameterCodec = runtime.NewParameterCodec(Scheme)
|
var ParameterCodec = runtime.NewParameterCodec(Scheme)
|
||||||
var localSchemeBuilder = runtime.SchemeBuilder{
|
var localSchemeBuilder = runtime.SchemeBuilder{
|
||||||
|
applicationv1alpha1.AddToScheme,
|
||||||
auditingv1alpha1.AddToScheme,
|
auditingv1alpha1.AddToScheme,
|
||||||
clusterv1alpha1.AddToScheme,
|
clusterv1alpha1.AddToScheme,
|
||||||
devopsv1alpha1.AddToScheme,
|
devopsv1alpha1.AddToScheme,
|
||||||
|
|||||||
@@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
rest "k8s.io/client-go/rest"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/client/clientset/versioned/scheme"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ApplicationV1alpha1Interface interface {
|
||||||
|
RESTClient() rest.Interface
|
||||||
|
HelmApplicationsGetter
|
||||||
|
HelmApplicationVersionsGetter
|
||||||
|
HelmCategoriesGetter
|
||||||
|
HelmReleasesGetter
|
||||||
|
HelmReposGetter
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApplicationV1alpha1Client is used to interact with features provided by the application.kubesphere.io group.
|
||||||
|
type ApplicationV1alpha1Client struct {
|
||||||
|
restClient rest.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *ApplicationV1alpha1Client) HelmApplications() HelmApplicationInterface {
|
||||||
|
return newHelmApplications(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *ApplicationV1alpha1Client) HelmApplicationVersions() HelmApplicationVersionInterface {
|
||||||
|
return newHelmApplicationVersions(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *ApplicationV1alpha1Client) HelmCategories() HelmCategoryInterface {
|
||||||
|
return newHelmCategories(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *ApplicationV1alpha1Client) HelmReleases() HelmReleaseInterface {
|
||||||
|
return newHelmReleases(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *ApplicationV1alpha1Client) HelmRepos() HelmRepoInterface {
|
||||||
|
return newHelmRepos(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewForConfig creates a new ApplicationV1alpha1Client for the given config.
|
||||||
|
func NewForConfig(c *rest.Config) (*ApplicationV1alpha1Client, error) {
|
||||||
|
config := *c
|
||||||
|
if err := setConfigDefaults(&config); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
client, err := rest.RESTClientFor(&config)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &ApplicationV1alpha1Client{client}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewForConfigOrDie creates a new ApplicationV1alpha1Client for the given config and
|
||||||
|
// panics if there is an error in the config.
|
||||||
|
func NewForConfigOrDie(c *rest.Config) *ApplicationV1alpha1Client {
|
||||||
|
client, err := NewForConfig(c)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
|
// New creates a new ApplicationV1alpha1Client for the given RESTClient.
|
||||||
|
func New(c rest.Interface) *ApplicationV1alpha1Client {
|
||||||
|
return &ApplicationV1alpha1Client{c}
|
||||||
|
}
|
||||||
|
|
||||||
|
func setConfigDefaults(config *rest.Config) error {
|
||||||
|
gv := v1alpha1.SchemeGroupVersion
|
||||||
|
config.GroupVersion = &gv
|
||||||
|
config.APIPath = "/apis"
|
||||||
|
config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
|
||||||
|
|
||||||
|
if config.UserAgent == "" {
|
||||||
|
config.UserAgent = rest.DefaultKubernetesUserAgent()
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// RESTClient returns a RESTClient that is used to communicate
|
||||||
|
// with API server by this client implementation.
|
||||||
|
func (c *ApplicationV1alpha1Client) RESTClient() rest.Interface {
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return c.restClient
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 typed clients.
|
||||||
|
package v1alpha1
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
// Package fake has the automatically generated clients.
|
||||||
|
package fake
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
rest "k8s.io/client-go/rest"
|
||||||
|
testing "k8s.io/client-go/testing"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
type FakeApplicationV1alpha1 struct {
|
||||||
|
*testing.Fake
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeApplicationV1alpha1) HelmApplications() v1alpha1.HelmApplicationInterface {
|
||||||
|
return &FakeHelmApplications{c}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeApplicationV1alpha1) HelmApplicationVersions() v1alpha1.HelmApplicationVersionInterface {
|
||||||
|
return &FakeHelmApplicationVersions{c}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeApplicationV1alpha1) HelmCategories() v1alpha1.HelmCategoryInterface {
|
||||||
|
return &FakeHelmCategories{c}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeApplicationV1alpha1) HelmReleases() v1alpha1.HelmReleaseInterface {
|
||||||
|
return &FakeHelmReleases{c}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeApplicationV1alpha1) HelmRepos() v1alpha1.HelmRepoInterface {
|
||||||
|
return &FakeHelmRepos{c}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RESTClient returns a RESTClient that is used to communicate
|
||||||
|
// with API server by this client implementation.
|
||||||
|
func (c *FakeApplicationV1alpha1) RESTClient() rest.Interface {
|
||||||
|
var ret *rest.RESTClient
|
||||||
|
return ret
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
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"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeHelmApplications implements HelmApplicationInterface
|
||||||
|
type FakeHelmApplications struct {
|
||||||
|
Fake *FakeApplicationV1alpha1
|
||||||
|
}
|
||||||
|
|
||||||
|
var helmapplicationsResource = schema.GroupVersionResource{Group: "application.kubesphere.io", Version: "v1alpha1", Resource: "helmapplications"}
|
||||||
|
|
||||||
|
var helmapplicationsKind = schema.GroupVersionKind{Group: "application.kubesphere.io", Version: "v1alpha1", Kind: "HelmApplication"}
|
||||||
|
|
||||||
|
// Get takes name of the helmApplication, and returns the corresponding helmApplication object, and an error if there is any.
|
||||||
|
func (c *FakeHelmApplications) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.HelmApplication, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootGetAction(helmapplicationsResource, name), &v1alpha1.HelmApplication{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplication), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of HelmApplications that match those selectors.
|
||||||
|
func (c *FakeHelmApplications) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.HelmApplicationList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootListAction(helmapplicationsResource, helmapplicationsKind, opts), &v1alpha1.HelmApplicationList{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1alpha1.HelmApplicationList{ListMeta: obj.(*v1alpha1.HelmApplicationList).ListMeta}
|
||||||
|
for _, item := range obj.(*v1alpha1.HelmApplicationList).Items {
|
||||||
|
if label.Matches(labels.Set(item.Labels)) {
|
||||||
|
list.Items = append(list.Items, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested helmApplications.
|
||||||
|
func (c *FakeHelmApplications) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(testing.NewRootWatchAction(helmapplicationsResource, opts))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a helmApplication and creates it. Returns the server's representation of the helmApplication, and an error, if there is any.
|
||||||
|
func (c *FakeHelmApplications) Create(ctx context.Context, helmApplication *v1alpha1.HelmApplication, opts v1.CreateOptions) (result *v1alpha1.HelmApplication, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootCreateAction(helmapplicationsResource, helmApplication), &v1alpha1.HelmApplication{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplication), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a helmApplication and updates it. Returns the server's representation of the helmApplication, and an error, if there is any.
|
||||||
|
func (c *FakeHelmApplications) Update(ctx context.Context, helmApplication *v1alpha1.HelmApplication, opts v1.UpdateOptions) (result *v1alpha1.HelmApplication, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootUpdateAction(helmapplicationsResource, helmApplication), &v1alpha1.HelmApplication{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplication), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *FakeHelmApplications) UpdateStatus(ctx context.Context, helmApplication *v1alpha1.HelmApplication, opts v1.UpdateOptions) (*v1alpha1.HelmApplication, error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootUpdateSubresourceAction(helmapplicationsResource, "status", helmApplication), &v1alpha1.HelmApplication{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplication), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the helmApplication and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *FakeHelmApplications) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootDeleteAction(helmapplicationsResource, name), &v1alpha1.HelmApplication{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *FakeHelmApplications) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
action := testing.NewRootDeleteCollectionAction(helmapplicationsResource, listOpts)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1alpha1.HelmApplicationList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched helmApplication.
|
||||||
|
func (c *FakeHelmApplications) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmApplication, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootPatchSubresourceAction(helmapplicationsResource, name, pt, data, subresources...), &v1alpha1.HelmApplication{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplication), err
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
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"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeHelmApplicationVersions implements HelmApplicationVersionInterface
|
||||||
|
type FakeHelmApplicationVersions struct {
|
||||||
|
Fake *FakeApplicationV1alpha1
|
||||||
|
}
|
||||||
|
|
||||||
|
var helmapplicationversionsResource = schema.GroupVersionResource{Group: "application.kubesphere.io", Version: "v1alpha1", Resource: "helmapplicationversions"}
|
||||||
|
|
||||||
|
var helmapplicationversionsKind = schema.GroupVersionKind{Group: "application.kubesphere.io", Version: "v1alpha1", Kind: "HelmApplicationVersion"}
|
||||||
|
|
||||||
|
// Get takes name of the helmApplicationVersion, and returns the corresponding helmApplicationVersion object, and an error if there is any.
|
||||||
|
func (c *FakeHelmApplicationVersions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.HelmApplicationVersion, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootGetAction(helmapplicationversionsResource, name), &v1alpha1.HelmApplicationVersion{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplicationVersion), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of HelmApplicationVersions that match those selectors.
|
||||||
|
func (c *FakeHelmApplicationVersions) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.HelmApplicationVersionList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootListAction(helmapplicationversionsResource, helmapplicationversionsKind, opts), &v1alpha1.HelmApplicationVersionList{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1alpha1.HelmApplicationVersionList{ListMeta: obj.(*v1alpha1.HelmApplicationVersionList).ListMeta}
|
||||||
|
for _, item := range obj.(*v1alpha1.HelmApplicationVersionList).Items {
|
||||||
|
if label.Matches(labels.Set(item.Labels)) {
|
||||||
|
list.Items = append(list.Items, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested helmApplicationVersions.
|
||||||
|
func (c *FakeHelmApplicationVersions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(testing.NewRootWatchAction(helmapplicationversionsResource, opts))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a helmApplicationVersion and creates it. Returns the server's representation of the helmApplicationVersion, and an error, if there is any.
|
||||||
|
func (c *FakeHelmApplicationVersions) Create(ctx context.Context, helmApplicationVersion *v1alpha1.HelmApplicationVersion, opts v1.CreateOptions) (result *v1alpha1.HelmApplicationVersion, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootCreateAction(helmapplicationversionsResource, helmApplicationVersion), &v1alpha1.HelmApplicationVersion{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplicationVersion), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a helmApplicationVersion and updates it. Returns the server's representation of the helmApplicationVersion, and an error, if there is any.
|
||||||
|
func (c *FakeHelmApplicationVersions) Update(ctx context.Context, helmApplicationVersion *v1alpha1.HelmApplicationVersion, opts v1.UpdateOptions) (result *v1alpha1.HelmApplicationVersion, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootUpdateAction(helmapplicationversionsResource, helmApplicationVersion), &v1alpha1.HelmApplicationVersion{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplicationVersion), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *FakeHelmApplicationVersions) UpdateStatus(ctx context.Context, helmApplicationVersion *v1alpha1.HelmApplicationVersion, opts v1.UpdateOptions) (*v1alpha1.HelmApplicationVersion, error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootUpdateSubresourceAction(helmapplicationversionsResource, "status", helmApplicationVersion), &v1alpha1.HelmApplicationVersion{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplicationVersion), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the helmApplicationVersion and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *FakeHelmApplicationVersions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootDeleteAction(helmapplicationversionsResource, name), &v1alpha1.HelmApplicationVersion{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *FakeHelmApplicationVersions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
action := testing.NewRootDeleteCollectionAction(helmapplicationversionsResource, listOpts)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1alpha1.HelmApplicationVersionList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched helmApplicationVersion.
|
||||||
|
func (c *FakeHelmApplicationVersions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmApplicationVersion, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootPatchSubresourceAction(helmapplicationversionsResource, name, pt, data, subresources...), &v1alpha1.HelmApplicationVersion{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplicationVersion), err
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
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"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeHelmCategories implements HelmCategoryInterface
|
||||||
|
type FakeHelmCategories struct {
|
||||||
|
Fake *FakeApplicationV1alpha1
|
||||||
|
}
|
||||||
|
|
||||||
|
var helmcategoriesResource = schema.GroupVersionResource{Group: "application.kubesphere.io", Version: "v1alpha1", Resource: "helmcategories"}
|
||||||
|
|
||||||
|
var helmcategoriesKind = schema.GroupVersionKind{Group: "application.kubesphere.io", Version: "v1alpha1", Kind: "HelmCategory"}
|
||||||
|
|
||||||
|
// Get takes name of the helmCategory, and returns the corresponding helmCategory object, and an error if there is any.
|
||||||
|
func (c *FakeHelmCategories) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.HelmCategory, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootGetAction(helmcategoriesResource, name), &v1alpha1.HelmCategory{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmCategory), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of HelmCategories that match those selectors.
|
||||||
|
func (c *FakeHelmCategories) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.HelmCategoryList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootListAction(helmcategoriesResource, helmcategoriesKind, opts), &v1alpha1.HelmCategoryList{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1alpha1.HelmCategoryList{ListMeta: obj.(*v1alpha1.HelmCategoryList).ListMeta}
|
||||||
|
for _, item := range obj.(*v1alpha1.HelmCategoryList).Items {
|
||||||
|
if label.Matches(labels.Set(item.Labels)) {
|
||||||
|
list.Items = append(list.Items, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested helmCategories.
|
||||||
|
func (c *FakeHelmCategories) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(testing.NewRootWatchAction(helmcategoriesResource, opts))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a helmCategory and creates it. Returns the server's representation of the helmCategory, and an error, if there is any.
|
||||||
|
func (c *FakeHelmCategories) Create(ctx context.Context, helmCategory *v1alpha1.HelmCategory, opts v1.CreateOptions) (result *v1alpha1.HelmCategory, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootCreateAction(helmcategoriesResource, helmCategory), &v1alpha1.HelmCategory{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmCategory), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a helmCategory and updates it. Returns the server's representation of the helmCategory, and an error, if there is any.
|
||||||
|
func (c *FakeHelmCategories) Update(ctx context.Context, helmCategory *v1alpha1.HelmCategory, opts v1.UpdateOptions) (result *v1alpha1.HelmCategory, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootUpdateAction(helmcategoriesResource, helmCategory), &v1alpha1.HelmCategory{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmCategory), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *FakeHelmCategories) UpdateStatus(ctx context.Context, helmCategory *v1alpha1.HelmCategory, opts v1.UpdateOptions) (*v1alpha1.HelmCategory, error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootUpdateSubresourceAction(helmcategoriesResource, "status", helmCategory), &v1alpha1.HelmCategory{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmCategory), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the helmCategory and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *FakeHelmCategories) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootDeleteAction(helmcategoriesResource, name), &v1alpha1.HelmCategory{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *FakeHelmCategories) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
action := testing.NewRootDeleteCollectionAction(helmcategoriesResource, listOpts)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1alpha1.HelmCategoryList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched helmCategory.
|
||||||
|
func (c *FakeHelmCategories) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmCategory, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootPatchSubresourceAction(helmcategoriesResource, name, pt, data, subresources...), &v1alpha1.HelmCategory{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmCategory), err
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
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"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeHelmReleases implements HelmReleaseInterface
|
||||||
|
type FakeHelmReleases struct {
|
||||||
|
Fake *FakeApplicationV1alpha1
|
||||||
|
}
|
||||||
|
|
||||||
|
var helmreleasesResource = schema.GroupVersionResource{Group: "application.kubesphere.io", Version: "v1alpha1", Resource: "helmreleases"}
|
||||||
|
|
||||||
|
var helmreleasesKind = schema.GroupVersionKind{Group: "application.kubesphere.io", Version: "v1alpha1", Kind: "HelmRelease"}
|
||||||
|
|
||||||
|
// Get takes name of the helmRelease, and returns the corresponding helmRelease object, and an error if there is any.
|
||||||
|
func (c *FakeHelmReleases) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.HelmRelease, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootGetAction(helmreleasesResource, name), &v1alpha1.HelmRelease{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRelease), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of HelmReleases that match those selectors.
|
||||||
|
func (c *FakeHelmReleases) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.HelmReleaseList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootListAction(helmreleasesResource, helmreleasesKind, opts), &v1alpha1.HelmReleaseList{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1alpha1.HelmReleaseList{ListMeta: obj.(*v1alpha1.HelmReleaseList).ListMeta}
|
||||||
|
for _, item := range obj.(*v1alpha1.HelmReleaseList).Items {
|
||||||
|
if label.Matches(labels.Set(item.Labels)) {
|
||||||
|
list.Items = append(list.Items, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested helmReleases.
|
||||||
|
func (c *FakeHelmReleases) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(testing.NewRootWatchAction(helmreleasesResource, opts))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a helmRelease and creates it. Returns the server's representation of the helmRelease, and an error, if there is any.
|
||||||
|
func (c *FakeHelmReleases) Create(ctx context.Context, helmRelease *v1alpha1.HelmRelease, opts v1.CreateOptions) (result *v1alpha1.HelmRelease, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootCreateAction(helmreleasesResource, helmRelease), &v1alpha1.HelmRelease{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRelease), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a helmRelease and updates it. Returns the server's representation of the helmRelease, and an error, if there is any.
|
||||||
|
func (c *FakeHelmReleases) Update(ctx context.Context, helmRelease *v1alpha1.HelmRelease, opts v1.UpdateOptions) (result *v1alpha1.HelmRelease, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootUpdateAction(helmreleasesResource, helmRelease), &v1alpha1.HelmRelease{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRelease), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *FakeHelmReleases) UpdateStatus(ctx context.Context, helmRelease *v1alpha1.HelmRelease, opts v1.UpdateOptions) (*v1alpha1.HelmRelease, error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootUpdateSubresourceAction(helmreleasesResource, "status", helmRelease), &v1alpha1.HelmRelease{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRelease), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the helmRelease and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *FakeHelmReleases) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootDeleteAction(helmreleasesResource, name), &v1alpha1.HelmRelease{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *FakeHelmReleases) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
action := testing.NewRootDeleteCollectionAction(helmreleasesResource, listOpts)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1alpha1.HelmReleaseList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched helmRelease.
|
||||||
|
func (c *FakeHelmReleases) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmRelease, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootPatchSubresourceAction(helmreleasesResource, name, pt, data, subresources...), &v1alpha1.HelmRelease{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRelease), err
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
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"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeHelmRepos implements HelmRepoInterface
|
||||||
|
type FakeHelmRepos struct {
|
||||||
|
Fake *FakeApplicationV1alpha1
|
||||||
|
}
|
||||||
|
|
||||||
|
var helmreposResource = schema.GroupVersionResource{Group: "application.kubesphere.io", Version: "v1alpha1", Resource: "helmrepos"}
|
||||||
|
|
||||||
|
var helmreposKind = schema.GroupVersionKind{Group: "application.kubesphere.io", Version: "v1alpha1", Kind: "HelmRepo"}
|
||||||
|
|
||||||
|
// Get takes name of the helmRepo, and returns the corresponding helmRepo object, and an error if there is any.
|
||||||
|
func (c *FakeHelmRepos) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.HelmRepo, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootGetAction(helmreposResource, name), &v1alpha1.HelmRepo{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRepo), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of HelmRepos that match those selectors.
|
||||||
|
func (c *FakeHelmRepos) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.HelmRepoList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootListAction(helmreposResource, helmreposKind, opts), &v1alpha1.HelmRepoList{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1alpha1.HelmRepoList{ListMeta: obj.(*v1alpha1.HelmRepoList).ListMeta}
|
||||||
|
for _, item := range obj.(*v1alpha1.HelmRepoList).Items {
|
||||||
|
if label.Matches(labels.Set(item.Labels)) {
|
||||||
|
list.Items = append(list.Items, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested helmRepos.
|
||||||
|
func (c *FakeHelmRepos) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(testing.NewRootWatchAction(helmreposResource, opts))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a helmRepo and creates it. Returns the server's representation of the helmRepo, and an error, if there is any.
|
||||||
|
func (c *FakeHelmRepos) Create(ctx context.Context, helmRepo *v1alpha1.HelmRepo, opts v1.CreateOptions) (result *v1alpha1.HelmRepo, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootCreateAction(helmreposResource, helmRepo), &v1alpha1.HelmRepo{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRepo), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a helmRepo and updates it. Returns the server's representation of the helmRepo, and an error, if there is any.
|
||||||
|
func (c *FakeHelmRepos) Update(ctx context.Context, helmRepo *v1alpha1.HelmRepo, opts v1.UpdateOptions) (result *v1alpha1.HelmRepo, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootUpdateAction(helmreposResource, helmRepo), &v1alpha1.HelmRepo{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRepo), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *FakeHelmRepos) UpdateStatus(ctx context.Context, helmRepo *v1alpha1.HelmRepo, opts v1.UpdateOptions) (*v1alpha1.HelmRepo, error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootUpdateSubresourceAction(helmreposResource, "status", helmRepo), &v1alpha1.HelmRepo{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRepo), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the helmRepo and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *FakeHelmRepos) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootDeleteAction(helmreposResource, name), &v1alpha1.HelmRepo{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *FakeHelmRepos) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
action := testing.NewRootDeleteCollectionAction(helmreposResource, listOpts)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1alpha1.HelmRepoList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched helmRepo.
|
||||||
|
func (c *FakeHelmRepos) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmRepo, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewRootPatchSubresourceAction(helmreposResource, name, pt, data, subresources...), &v1alpha1.HelmRepo{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRepo), err
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
type HelmApplicationExpansion interface{}
|
||||||
|
|
||||||
|
type HelmApplicationVersionExpansion interface{}
|
||||||
|
|
||||||
|
type HelmCategoryExpansion interface{}
|
||||||
|
|
||||||
|
type HelmReleaseExpansion interface{}
|
||||||
|
|
||||||
|
type HelmRepoExpansion interface{}
|
||||||
@@ -0,0 +1,184 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
types "k8s.io/apimachinery/pkg/types"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
rest "k8s.io/client-go/rest"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
scheme "kubesphere.io/kubesphere/pkg/client/clientset/versioned/scheme"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmApplicationsGetter has a method to return a HelmApplicationInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type HelmApplicationsGetter interface {
|
||||||
|
HelmApplications() HelmApplicationInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmApplicationInterface has methods to work with HelmApplication resources.
|
||||||
|
type HelmApplicationInterface interface {
|
||||||
|
Create(ctx context.Context, helmApplication *v1alpha1.HelmApplication, opts v1.CreateOptions) (*v1alpha1.HelmApplication, error)
|
||||||
|
Update(ctx context.Context, helmApplication *v1alpha1.HelmApplication, opts v1.UpdateOptions) (*v1alpha1.HelmApplication, error)
|
||||||
|
UpdateStatus(ctx context.Context, helmApplication *v1alpha1.HelmApplication, opts v1.UpdateOptions) (*v1alpha1.HelmApplication, error)
|
||||||
|
Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
|
||||||
|
DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
|
||||||
|
Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.HelmApplication, error)
|
||||||
|
List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.HelmApplicationList, error)
|
||||||
|
Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
|
||||||
|
Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmApplication, err error)
|
||||||
|
HelmApplicationExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// helmApplications implements HelmApplicationInterface
|
||||||
|
type helmApplications struct {
|
||||||
|
client rest.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
// newHelmApplications returns a HelmApplications
|
||||||
|
func newHelmApplications(c *ApplicationV1alpha1Client) *helmApplications {
|
||||||
|
return &helmApplications{
|
||||||
|
client: c.RESTClient(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the helmApplication, and returns the corresponding helmApplication object, and an error if there is any.
|
||||||
|
func (c *helmApplications) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.HelmApplication, err error) {
|
||||||
|
result = &v1alpha1.HelmApplication{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("helmapplications").
|
||||||
|
Name(name).
|
||||||
|
VersionedParams(&options, scheme.ParameterCodec).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of HelmApplications that match those selectors.
|
||||||
|
func (c *helmApplications) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.HelmApplicationList, err error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
result = &v1alpha1.HelmApplicationList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("helmapplications").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested helmApplications.
|
||||||
|
func (c *helmApplications) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
opts.Watch = true
|
||||||
|
return c.client.Get().
|
||||||
|
Resource("helmapplications").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Watch(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a helmApplication and creates it. Returns the server's representation of the helmApplication, and an error, if there is any.
|
||||||
|
func (c *helmApplications) Create(ctx context.Context, helmApplication *v1alpha1.HelmApplication, opts v1.CreateOptions) (result *v1alpha1.HelmApplication, err error) {
|
||||||
|
result = &v1alpha1.HelmApplication{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Resource("helmapplications").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmApplication).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a helmApplication and updates it. Returns the server's representation of the helmApplication, and an error, if there is any.
|
||||||
|
func (c *helmApplications) Update(ctx context.Context, helmApplication *v1alpha1.HelmApplication, opts v1.UpdateOptions) (result *v1alpha1.HelmApplication, err error) {
|
||||||
|
result = &v1alpha1.HelmApplication{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("helmapplications").
|
||||||
|
Name(helmApplication.Name).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmApplication).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *helmApplications) UpdateStatus(ctx context.Context, helmApplication *v1alpha1.HelmApplication, opts v1.UpdateOptions) (result *v1alpha1.HelmApplication, err error) {
|
||||||
|
result = &v1alpha1.HelmApplication{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("helmapplications").
|
||||||
|
Name(helmApplication.Name).
|
||||||
|
SubResource("status").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmApplication).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the helmApplication and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *helmApplications) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("helmapplications").
|
||||||
|
Name(name).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *helmApplications) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
var timeout time.Duration
|
||||||
|
if listOpts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("helmapplications").
|
||||||
|
VersionedParams(&listOpts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched helmApplication.
|
||||||
|
func (c *helmApplications) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmApplication, err error) {
|
||||||
|
result = &v1alpha1.HelmApplication{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Resource("helmapplications").
|
||||||
|
Name(name).
|
||||||
|
SubResource(subresources...).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(data).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -0,0 +1,184 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
types "k8s.io/apimachinery/pkg/types"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
rest "k8s.io/client-go/rest"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
scheme "kubesphere.io/kubesphere/pkg/client/clientset/versioned/scheme"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmApplicationVersionsGetter has a method to return a HelmApplicationVersionInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type HelmApplicationVersionsGetter interface {
|
||||||
|
HelmApplicationVersions() HelmApplicationVersionInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmApplicationVersionInterface has methods to work with HelmApplicationVersion resources.
|
||||||
|
type HelmApplicationVersionInterface interface {
|
||||||
|
Create(ctx context.Context, helmApplicationVersion *v1alpha1.HelmApplicationVersion, opts v1.CreateOptions) (*v1alpha1.HelmApplicationVersion, error)
|
||||||
|
Update(ctx context.Context, helmApplicationVersion *v1alpha1.HelmApplicationVersion, opts v1.UpdateOptions) (*v1alpha1.HelmApplicationVersion, error)
|
||||||
|
UpdateStatus(ctx context.Context, helmApplicationVersion *v1alpha1.HelmApplicationVersion, opts v1.UpdateOptions) (*v1alpha1.HelmApplicationVersion, error)
|
||||||
|
Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
|
||||||
|
DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
|
||||||
|
Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.HelmApplicationVersion, error)
|
||||||
|
List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.HelmApplicationVersionList, error)
|
||||||
|
Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
|
||||||
|
Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmApplicationVersion, err error)
|
||||||
|
HelmApplicationVersionExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// helmApplicationVersions implements HelmApplicationVersionInterface
|
||||||
|
type helmApplicationVersions struct {
|
||||||
|
client rest.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
// newHelmApplicationVersions returns a HelmApplicationVersions
|
||||||
|
func newHelmApplicationVersions(c *ApplicationV1alpha1Client) *helmApplicationVersions {
|
||||||
|
return &helmApplicationVersions{
|
||||||
|
client: c.RESTClient(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the helmApplicationVersion, and returns the corresponding helmApplicationVersion object, and an error if there is any.
|
||||||
|
func (c *helmApplicationVersions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.HelmApplicationVersion, err error) {
|
||||||
|
result = &v1alpha1.HelmApplicationVersion{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("helmapplicationversions").
|
||||||
|
Name(name).
|
||||||
|
VersionedParams(&options, scheme.ParameterCodec).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of HelmApplicationVersions that match those selectors.
|
||||||
|
func (c *helmApplicationVersions) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.HelmApplicationVersionList, err error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
result = &v1alpha1.HelmApplicationVersionList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("helmapplicationversions").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested helmApplicationVersions.
|
||||||
|
func (c *helmApplicationVersions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
opts.Watch = true
|
||||||
|
return c.client.Get().
|
||||||
|
Resource("helmapplicationversions").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Watch(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a helmApplicationVersion and creates it. Returns the server's representation of the helmApplicationVersion, and an error, if there is any.
|
||||||
|
func (c *helmApplicationVersions) Create(ctx context.Context, helmApplicationVersion *v1alpha1.HelmApplicationVersion, opts v1.CreateOptions) (result *v1alpha1.HelmApplicationVersion, err error) {
|
||||||
|
result = &v1alpha1.HelmApplicationVersion{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Resource("helmapplicationversions").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmApplicationVersion).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a helmApplicationVersion and updates it. Returns the server's representation of the helmApplicationVersion, and an error, if there is any.
|
||||||
|
func (c *helmApplicationVersions) Update(ctx context.Context, helmApplicationVersion *v1alpha1.HelmApplicationVersion, opts v1.UpdateOptions) (result *v1alpha1.HelmApplicationVersion, err error) {
|
||||||
|
result = &v1alpha1.HelmApplicationVersion{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("helmapplicationversions").
|
||||||
|
Name(helmApplicationVersion.Name).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmApplicationVersion).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *helmApplicationVersions) UpdateStatus(ctx context.Context, helmApplicationVersion *v1alpha1.HelmApplicationVersion, opts v1.UpdateOptions) (result *v1alpha1.HelmApplicationVersion, err error) {
|
||||||
|
result = &v1alpha1.HelmApplicationVersion{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("helmapplicationversions").
|
||||||
|
Name(helmApplicationVersion.Name).
|
||||||
|
SubResource("status").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmApplicationVersion).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the helmApplicationVersion and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *helmApplicationVersions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("helmapplicationversions").
|
||||||
|
Name(name).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *helmApplicationVersions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
var timeout time.Duration
|
||||||
|
if listOpts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("helmapplicationversions").
|
||||||
|
VersionedParams(&listOpts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched helmApplicationVersion.
|
||||||
|
func (c *helmApplicationVersions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmApplicationVersion, err error) {
|
||||||
|
result = &v1alpha1.HelmApplicationVersion{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Resource("helmapplicationversions").
|
||||||
|
Name(name).
|
||||||
|
SubResource(subresources...).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(data).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -0,0 +1,184 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
types "k8s.io/apimachinery/pkg/types"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
rest "k8s.io/client-go/rest"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
scheme "kubesphere.io/kubesphere/pkg/client/clientset/versioned/scheme"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmCategoriesGetter has a method to return a HelmCategoryInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type HelmCategoriesGetter interface {
|
||||||
|
HelmCategories() HelmCategoryInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmCategoryInterface has methods to work with HelmCategory resources.
|
||||||
|
type HelmCategoryInterface interface {
|
||||||
|
Create(ctx context.Context, helmCategory *v1alpha1.HelmCategory, opts v1.CreateOptions) (*v1alpha1.HelmCategory, error)
|
||||||
|
Update(ctx context.Context, helmCategory *v1alpha1.HelmCategory, opts v1.UpdateOptions) (*v1alpha1.HelmCategory, error)
|
||||||
|
UpdateStatus(ctx context.Context, helmCategory *v1alpha1.HelmCategory, opts v1.UpdateOptions) (*v1alpha1.HelmCategory, error)
|
||||||
|
Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
|
||||||
|
DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
|
||||||
|
Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.HelmCategory, error)
|
||||||
|
List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.HelmCategoryList, error)
|
||||||
|
Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
|
||||||
|
Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmCategory, err error)
|
||||||
|
HelmCategoryExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// helmCategories implements HelmCategoryInterface
|
||||||
|
type helmCategories struct {
|
||||||
|
client rest.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
// newHelmCategories returns a HelmCategories
|
||||||
|
func newHelmCategories(c *ApplicationV1alpha1Client) *helmCategories {
|
||||||
|
return &helmCategories{
|
||||||
|
client: c.RESTClient(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the helmCategory, and returns the corresponding helmCategory object, and an error if there is any.
|
||||||
|
func (c *helmCategories) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.HelmCategory, err error) {
|
||||||
|
result = &v1alpha1.HelmCategory{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("helmcategories").
|
||||||
|
Name(name).
|
||||||
|
VersionedParams(&options, scheme.ParameterCodec).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of HelmCategories that match those selectors.
|
||||||
|
func (c *helmCategories) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.HelmCategoryList, err error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
result = &v1alpha1.HelmCategoryList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("helmcategories").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested helmCategories.
|
||||||
|
func (c *helmCategories) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
opts.Watch = true
|
||||||
|
return c.client.Get().
|
||||||
|
Resource("helmcategories").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Watch(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a helmCategory and creates it. Returns the server's representation of the helmCategory, and an error, if there is any.
|
||||||
|
func (c *helmCategories) Create(ctx context.Context, helmCategory *v1alpha1.HelmCategory, opts v1.CreateOptions) (result *v1alpha1.HelmCategory, err error) {
|
||||||
|
result = &v1alpha1.HelmCategory{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Resource("helmcategories").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmCategory).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a helmCategory and updates it. Returns the server's representation of the helmCategory, and an error, if there is any.
|
||||||
|
func (c *helmCategories) Update(ctx context.Context, helmCategory *v1alpha1.HelmCategory, opts v1.UpdateOptions) (result *v1alpha1.HelmCategory, err error) {
|
||||||
|
result = &v1alpha1.HelmCategory{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("helmcategories").
|
||||||
|
Name(helmCategory.Name).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmCategory).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *helmCategories) UpdateStatus(ctx context.Context, helmCategory *v1alpha1.HelmCategory, opts v1.UpdateOptions) (result *v1alpha1.HelmCategory, err error) {
|
||||||
|
result = &v1alpha1.HelmCategory{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("helmcategories").
|
||||||
|
Name(helmCategory.Name).
|
||||||
|
SubResource("status").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmCategory).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the helmCategory and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *helmCategories) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("helmcategories").
|
||||||
|
Name(name).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *helmCategories) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
var timeout time.Duration
|
||||||
|
if listOpts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("helmcategories").
|
||||||
|
VersionedParams(&listOpts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched helmCategory.
|
||||||
|
func (c *helmCategories) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmCategory, err error) {
|
||||||
|
result = &v1alpha1.HelmCategory{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Resource("helmcategories").
|
||||||
|
Name(name).
|
||||||
|
SubResource(subresources...).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(data).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -0,0 +1,184 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
types "k8s.io/apimachinery/pkg/types"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
rest "k8s.io/client-go/rest"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
scheme "kubesphere.io/kubesphere/pkg/client/clientset/versioned/scheme"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmReleasesGetter has a method to return a HelmReleaseInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type HelmReleasesGetter interface {
|
||||||
|
HelmReleases() HelmReleaseInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmReleaseInterface has methods to work with HelmRelease resources.
|
||||||
|
type HelmReleaseInterface interface {
|
||||||
|
Create(ctx context.Context, helmRelease *v1alpha1.HelmRelease, opts v1.CreateOptions) (*v1alpha1.HelmRelease, error)
|
||||||
|
Update(ctx context.Context, helmRelease *v1alpha1.HelmRelease, opts v1.UpdateOptions) (*v1alpha1.HelmRelease, error)
|
||||||
|
UpdateStatus(ctx context.Context, helmRelease *v1alpha1.HelmRelease, opts v1.UpdateOptions) (*v1alpha1.HelmRelease, error)
|
||||||
|
Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
|
||||||
|
DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
|
||||||
|
Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.HelmRelease, error)
|
||||||
|
List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.HelmReleaseList, error)
|
||||||
|
Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
|
||||||
|
Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmRelease, err error)
|
||||||
|
HelmReleaseExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// helmReleases implements HelmReleaseInterface
|
||||||
|
type helmReleases struct {
|
||||||
|
client rest.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
// newHelmReleases returns a HelmReleases
|
||||||
|
func newHelmReleases(c *ApplicationV1alpha1Client) *helmReleases {
|
||||||
|
return &helmReleases{
|
||||||
|
client: c.RESTClient(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the helmRelease, and returns the corresponding helmRelease object, and an error if there is any.
|
||||||
|
func (c *helmReleases) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.HelmRelease, err error) {
|
||||||
|
result = &v1alpha1.HelmRelease{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("helmreleases").
|
||||||
|
Name(name).
|
||||||
|
VersionedParams(&options, scheme.ParameterCodec).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of HelmReleases that match those selectors.
|
||||||
|
func (c *helmReleases) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.HelmReleaseList, err error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
result = &v1alpha1.HelmReleaseList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("helmreleases").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested helmReleases.
|
||||||
|
func (c *helmReleases) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
opts.Watch = true
|
||||||
|
return c.client.Get().
|
||||||
|
Resource("helmreleases").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Watch(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a helmRelease and creates it. Returns the server's representation of the helmRelease, and an error, if there is any.
|
||||||
|
func (c *helmReleases) Create(ctx context.Context, helmRelease *v1alpha1.HelmRelease, opts v1.CreateOptions) (result *v1alpha1.HelmRelease, err error) {
|
||||||
|
result = &v1alpha1.HelmRelease{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Resource("helmreleases").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmRelease).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a helmRelease and updates it. Returns the server's representation of the helmRelease, and an error, if there is any.
|
||||||
|
func (c *helmReleases) Update(ctx context.Context, helmRelease *v1alpha1.HelmRelease, opts v1.UpdateOptions) (result *v1alpha1.HelmRelease, err error) {
|
||||||
|
result = &v1alpha1.HelmRelease{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("helmreleases").
|
||||||
|
Name(helmRelease.Name).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmRelease).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *helmReleases) UpdateStatus(ctx context.Context, helmRelease *v1alpha1.HelmRelease, opts v1.UpdateOptions) (result *v1alpha1.HelmRelease, err error) {
|
||||||
|
result = &v1alpha1.HelmRelease{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("helmreleases").
|
||||||
|
Name(helmRelease.Name).
|
||||||
|
SubResource("status").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmRelease).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the helmRelease and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *helmReleases) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("helmreleases").
|
||||||
|
Name(name).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *helmReleases) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
var timeout time.Duration
|
||||||
|
if listOpts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("helmreleases").
|
||||||
|
VersionedParams(&listOpts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched helmRelease.
|
||||||
|
func (c *helmReleases) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmRelease, err error) {
|
||||||
|
result = &v1alpha1.HelmRelease{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Resource("helmreleases").
|
||||||
|
Name(name).
|
||||||
|
SubResource(subresources...).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(data).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -0,0 +1,184 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
types "k8s.io/apimachinery/pkg/types"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
rest "k8s.io/client-go/rest"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
scheme "kubesphere.io/kubesphere/pkg/client/clientset/versioned/scheme"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmReposGetter has a method to return a HelmRepoInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type HelmReposGetter interface {
|
||||||
|
HelmRepos() HelmRepoInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmRepoInterface has methods to work with HelmRepo resources.
|
||||||
|
type HelmRepoInterface interface {
|
||||||
|
Create(ctx context.Context, helmRepo *v1alpha1.HelmRepo, opts v1.CreateOptions) (*v1alpha1.HelmRepo, error)
|
||||||
|
Update(ctx context.Context, helmRepo *v1alpha1.HelmRepo, opts v1.UpdateOptions) (*v1alpha1.HelmRepo, error)
|
||||||
|
UpdateStatus(ctx context.Context, helmRepo *v1alpha1.HelmRepo, opts v1.UpdateOptions) (*v1alpha1.HelmRepo, error)
|
||||||
|
Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
|
||||||
|
DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
|
||||||
|
Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.HelmRepo, error)
|
||||||
|
List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.HelmRepoList, error)
|
||||||
|
Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
|
||||||
|
Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmRepo, err error)
|
||||||
|
HelmRepoExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// helmRepos implements HelmRepoInterface
|
||||||
|
type helmRepos struct {
|
||||||
|
client rest.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
// newHelmRepos returns a HelmRepos
|
||||||
|
func newHelmRepos(c *ApplicationV1alpha1Client) *helmRepos {
|
||||||
|
return &helmRepos{
|
||||||
|
client: c.RESTClient(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the helmRepo, and returns the corresponding helmRepo object, and an error if there is any.
|
||||||
|
func (c *helmRepos) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.HelmRepo, err error) {
|
||||||
|
result = &v1alpha1.HelmRepo{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("helmrepos").
|
||||||
|
Name(name).
|
||||||
|
VersionedParams(&options, scheme.ParameterCodec).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of HelmRepos that match those selectors.
|
||||||
|
func (c *helmRepos) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.HelmRepoList, err error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
result = &v1alpha1.HelmRepoList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("helmrepos").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested helmRepos.
|
||||||
|
func (c *helmRepos) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
opts.Watch = true
|
||||||
|
return c.client.Get().
|
||||||
|
Resource("helmrepos").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Watch(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a helmRepo and creates it. Returns the server's representation of the helmRepo, and an error, if there is any.
|
||||||
|
func (c *helmRepos) Create(ctx context.Context, helmRepo *v1alpha1.HelmRepo, opts v1.CreateOptions) (result *v1alpha1.HelmRepo, err error) {
|
||||||
|
result = &v1alpha1.HelmRepo{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Resource("helmrepos").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmRepo).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a helmRepo and updates it. Returns the server's representation of the helmRepo, and an error, if there is any.
|
||||||
|
func (c *helmRepos) Update(ctx context.Context, helmRepo *v1alpha1.HelmRepo, opts v1.UpdateOptions) (result *v1alpha1.HelmRepo, err error) {
|
||||||
|
result = &v1alpha1.HelmRepo{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("helmrepos").
|
||||||
|
Name(helmRepo.Name).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmRepo).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *helmRepos) UpdateStatus(ctx context.Context, helmRepo *v1alpha1.HelmRepo, opts v1.UpdateOptions) (result *v1alpha1.HelmRepo, err error) {
|
||||||
|
result = &v1alpha1.HelmRepo{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("helmrepos").
|
||||||
|
Name(helmRepo.Name).
|
||||||
|
SubResource("status").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(helmRepo).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the helmRepo and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *helmRepos) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("helmrepos").
|
||||||
|
Name(name).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *helmRepos) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
var timeout time.Duration
|
||||||
|
if listOpts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("helmrepos").
|
||||||
|
VersionedParams(&listOpts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched helmRepo.
|
||||||
|
func (c *helmRepos) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.HelmRepo, err error) {
|
||||||
|
result = &v1alpha1.HelmRepo{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Resource("helmrepos").
|
||||||
|
Name(name).
|
||||||
|
SubResource(subresources...).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(data).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 informer-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package application
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/client/informers/externalversions/application/v1alpha1"
|
||||||
|
internalinterfaces "kubesphere.io/kubesphere/pkg/client/informers/externalversions/internalinterfaces"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Interface provides access to each of this group's versions.
|
||||||
|
type Interface interface {
|
||||||
|
// V1alpha1 provides access to shared informers for resources in V1alpha1.
|
||||||
|
V1alpha1() v1alpha1.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
type group struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
namespace string
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
// New returns a new Interface.
|
||||||
|
func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
|
||||||
|
return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// V1alpha1 returns a new v1alpha1.Interface.
|
||||||
|
func (g *group) V1alpha1() v1alpha1.Interface {
|
||||||
|
return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions)
|
||||||
|
}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 informer-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
cache "k8s.io/client-go/tools/cache"
|
||||||
|
applicationv1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
versioned "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||||
|
internalinterfaces "kubesphere.io/kubesphere/pkg/client/informers/externalversions/internalinterfaces"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/client/listers/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmApplicationInformer provides access to a shared informer and lister for
|
||||||
|
// HelmApplications.
|
||||||
|
type HelmApplicationInformer interface {
|
||||||
|
Informer() cache.SharedIndexInformer
|
||||||
|
Lister() v1alpha1.HelmApplicationLister
|
||||||
|
}
|
||||||
|
|
||||||
|
type helmApplicationInformer struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHelmApplicationInformer constructs a new informer for HelmApplication type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewHelmApplicationInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredHelmApplicationInformer(client, resyncPeriod, indexers, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFilteredHelmApplicationInformer constructs a new informer for HelmApplication type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewFilteredHelmApplicationInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
|
||||||
|
return cache.NewSharedIndexInformer(
|
||||||
|
&cache.ListWatch{
|
||||||
|
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ApplicationV1alpha1().HelmApplications().List(context.TODO(), options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ApplicationV1alpha1().HelmApplications().Watch(context.TODO(), options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&applicationv1alpha1.HelmApplication{},
|
||||||
|
resyncPeriod,
|
||||||
|
indexers,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmApplicationInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredHelmApplicationInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmApplicationInformer) Informer() cache.SharedIndexInformer {
|
||||||
|
return f.factory.InformerFor(&applicationv1alpha1.HelmApplication{}, f.defaultInformer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmApplicationInformer) Lister() v1alpha1.HelmApplicationLister {
|
||||||
|
return v1alpha1.NewHelmApplicationLister(f.Informer().GetIndexer())
|
||||||
|
}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 informer-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
cache "k8s.io/client-go/tools/cache"
|
||||||
|
applicationv1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
versioned "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||||
|
internalinterfaces "kubesphere.io/kubesphere/pkg/client/informers/externalversions/internalinterfaces"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/client/listers/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmApplicationVersionInformer provides access to a shared informer and lister for
|
||||||
|
// HelmApplicationVersions.
|
||||||
|
type HelmApplicationVersionInformer interface {
|
||||||
|
Informer() cache.SharedIndexInformer
|
||||||
|
Lister() v1alpha1.HelmApplicationVersionLister
|
||||||
|
}
|
||||||
|
|
||||||
|
type helmApplicationVersionInformer struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHelmApplicationVersionInformer constructs a new informer for HelmApplicationVersion type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewHelmApplicationVersionInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredHelmApplicationVersionInformer(client, resyncPeriod, indexers, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFilteredHelmApplicationVersionInformer constructs a new informer for HelmApplicationVersion type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewFilteredHelmApplicationVersionInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
|
||||||
|
return cache.NewSharedIndexInformer(
|
||||||
|
&cache.ListWatch{
|
||||||
|
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ApplicationV1alpha1().HelmApplicationVersions().List(context.TODO(), options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ApplicationV1alpha1().HelmApplicationVersions().Watch(context.TODO(), options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&applicationv1alpha1.HelmApplicationVersion{},
|
||||||
|
resyncPeriod,
|
||||||
|
indexers,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmApplicationVersionInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredHelmApplicationVersionInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmApplicationVersionInformer) Informer() cache.SharedIndexInformer {
|
||||||
|
return f.factory.InformerFor(&applicationv1alpha1.HelmApplicationVersion{}, f.defaultInformer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmApplicationVersionInformer) Lister() v1alpha1.HelmApplicationVersionLister {
|
||||||
|
return v1alpha1.NewHelmApplicationVersionLister(f.Informer().GetIndexer())
|
||||||
|
}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 informer-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
cache "k8s.io/client-go/tools/cache"
|
||||||
|
applicationv1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
versioned "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||||
|
internalinterfaces "kubesphere.io/kubesphere/pkg/client/informers/externalversions/internalinterfaces"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/client/listers/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmCategoryInformer provides access to a shared informer and lister for
|
||||||
|
// HelmCategories.
|
||||||
|
type HelmCategoryInformer interface {
|
||||||
|
Informer() cache.SharedIndexInformer
|
||||||
|
Lister() v1alpha1.HelmCategoryLister
|
||||||
|
}
|
||||||
|
|
||||||
|
type helmCategoryInformer struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHelmCategoryInformer constructs a new informer for HelmCategory type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewHelmCategoryInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredHelmCategoryInformer(client, resyncPeriod, indexers, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFilteredHelmCategoryInformer constructs a new informer for HelmCategory type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewFilteredHelmCategoryInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
|
||||||
|
return cache.NewSharedIndexInformer(
|
||||||
|
&cache.ListWatch{
|
||||||
|
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ApplicationV1alpha1().HelmCategories().List(context.TODO(), options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ApplicationV1alpha1().HelmCategories().Watch(context.TODO(), options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&applicationv1alpha1.HelmCategory{},
|
||||||
|
resyncPeriod,
|
||||||
|
indexers,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmCategoryInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredHelmCategoryInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmCategoryInformer) Informer() cache.SharedIndexInformer {
|
||||||
|
return f.factory.InformerFor(&applicationv1alpha1.HelmCategory{}, f.defaultInformer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmCategoryInformer) Lister() v1alpha1.HelmCategoryLister {
|
||||||
|
return v1alpha1.NewHelmCategoryLister(f.Informer().GetIndexer())
|
||||||
|
}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 informer-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
cache "k8s.io/client-go/tools/cache"
|
||||||
|
applicationv1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
versioned "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||||
|
internalinterfaces "kubesphere.io/kubesphere/pkg/client/informers/externalversions/internalinterfaces"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/client/listers/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmReleaseInformer provides access to a shared informer and lister for
|
||||||
|
// HelmReleases.
|
||||||
|
type HelmReleaseInformer interface {
|
||||||
|
Informer() cache.SharedIndexInformer
|
||||||
|
Lister() v1alpha1.HelmReleaseLister
|
||||||
|
}
|
||||||
|
|
||||||
|
type helmReleaseInformer struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHelmReleaseInformer constructs a new informer for HelmRelease type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewHelmReleaseInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredHelmReleaseInformer(client, resyncPeriod, indexers, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFilteredHelmReleaseInformer constructs a new informer for HelmRelease type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewFilteredHelmReleaseInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
|
||||||
|
return cache.NewSharedIndexInformer(
|
||||||
|
&cache.ListWatch{
|
||||||
|
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ApplicationV1alpha1().HelmReleases().List(context.TODO(), options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ApplicationV1alpha1().HelmReleases().Watch(context.TODO(), options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&applicationv1alpha1.HelmRelease{},
|
||||||
|
resyncPeriod,
|
||||||
|
indexers,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmReleaseInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredHelmReleaseInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmReleaseInformer) Informer() cache.SharedIndexInformer {
|
||||||
|
return f.factory.InformerFor(&applicationv1alpha1.HelmRelease{}, f.defaultInformer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmReleaseInformer) Lister() v1alpha1.HelmReleaseLister {
|
||||||
|
return v1alpha1.NewHelmReleaseLister(f.Informer().GetIndexer())
|
||||||
|
}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 informer-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
cache "k8s.io/client-go/tools/cache"
|
||||||
|
applicationv1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
versioned "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||||
|
internalinterfaces "kubesphere.io/kubesphere/pkg/client/informers/externalversions/internalinterfaces"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/client/listers/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmRepoInformer provides access to a shared informer and lister for
|
||||||
|
// HelmRepos.
|
||||||
|
type HelmRepoInformer interface {
|
||||||
|
Informer() cache.SharedIndexInformer
|
||||||
|
Lister() v1alpha1.HelmRepoLister
|
||||||
|
}
|
||||||
|
|
||||||
|
type helmRepoInformer struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHelmRepoInformer constructs a new informer for HelmRepo type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewHelmRepoInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredHelmRepoInformer(client, resyncPeriod, indexers, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFilteredHelmRepoInformer constructs a new informer for HelmRepo type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewFilteredHelmRepoInformer(client versioned.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
|
||||||
|
return cache.NewSharedIndexInformer(
|
||||||
|
&cache.ListWatch{
|
||||||
|
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ApplicationV1alpha1().HelmRepos().List(context.TODO(), options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ApplicationV1alpha1().HelmRepos().Watch(context.TODO(), options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&applicationv1alpha1.HelmRepo{},
|
||||||
|
resyncPeriod,
|
||||||
|
indexers,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmRepoInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredHelmRepoInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmRepoInformer) Informer() cache.SharedIndexInformer {
|
||||||
|
return f.factory.InformerFor(&applicationv1alpha1.HelmRepo{}, f.defaultInformer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *helmRepoInformer) Lister() v1alpha1.HelmRepoLister {
|
||||||
|
return v1alpha1.NewHelmRepoLister(f.Informer().GetIndexer())
|
||||||
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 informer-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
internalinterfaces "kubesphere.io/kubesphere/pkg/client/informers/externalversions/internalinterfaces"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Interface provides access to all the informers in this group version.
|
||||||
|
type Interface interface {
|
||||||
|
// HelmApplications returns a HelmApplicationInformer.
|
||||||
|
HelmApplications() HelmApplicationInformer
|
||||||
|
// HelmApplicationVersions returns a HelmApplicationVersionInformer.
|
||||||
|
HelmApplicationVersions() HelmApplicationVersionInformer
|
||||||
|
// HelmCategories returns a HelmCategoryInformer.
|
||||||
|
HelmCategories() HelmCategoryInformer
|
||||||
|
// HelmReleases returns a HelmReleaseInformer.
|
||||||
|
HelmReleases() HelmReleaseInformer
|
||||||
|
// HelmRepos returns a HelmRepoInformer.
|
||||||
|
HelmRepos() HelmRepoInformer
|
||||||
|
}
|
||||||
|
|
||||||
|
type version struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
namespace string
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
// New returns a new Interface.
|
||||||
|
func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
|
||||||
|
return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmApplications returns a HelmApplicationInformer.
|
||||||
|
func (v *version) HelmApplications() HelmApplicationInformer {
|
||||||
|
return &helmApplicationInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmApplicationVersions returns a HelmApplicationVersionInformer.
|
||||||
|
func (v *version) HelmApplicationVersions() HelmApplicationVersionInformer {
|
||||||
|
return &helmApplicationVersionInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmCategories returns a HelmCategoryInformer.
|
||||||
|
func (v *version) HelmCategories() HelmCategoryInformer {
|
||||||
|
return &helmCategoryInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmReleases returns a HelmReleaseInformer.
|
||||||
|
func (v *version) HelmReleases() HelmReleaseInformer {
|
||||||
|
return &helmReleaseInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HelmRepos returns a HelmRepoInformer.
|
||||||
|
func (v *version) HelmRepos() HelmRepoInformer {
|
||||||
|
return &helmRepoInformer{factory: v.factory, tweakListOptions: v.tweakListOptions}
|
||||||
|
}
|
||||||
@@ -28,6 +28,7 @@ import (
|
|||||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
cache "k8s.io/client-go/tools/cache"
|
cache "k8s.io/client-go/tools/cache"
|
||||||
versioned "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
versioned "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||||
|
application "kubesphere.io/kubesphere/pkg/client/informers/externalversions/application"
|
||||||
auditing "kubesphere.io/kubesphere/pkg/client/informers/externalversions/auditing"
|
auditing "kubesphere.io/kubesphere/pkg/client/informers/externalversions/auditing"
|
||||||
cluster "kubesphere.io/kubesphere/pkg/client/informers/externalversions/cluster"
|
cluster "kubesphere.io/kubesphere/pkg/client/informers/externalversions/cluster"
|
||||||
devops "kubesphere.io/kubesphere/pkg/client/informers/externalversions/devops"
|
devops "kubesphere.io/kubesphere/pkg/client/informers/externalversions/devops"
|
||||||
@@ -181,6 +182,7 @@ type SharedInformerFactory interface {
|
|||||||
ForResource(resource schema.GroupVersionResource) (GenericInformer, error)
|
ForResource(resource schema.GroupVersionResource) (GenericInformer, error)
|
||||||
WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool
|
WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool
|
||||||
|
|
||||||
|
Application() application.Interface
|
||||||
Auditing() auditing.Interface
|
Auditing() auditing.Interface
|
||||||
Cluster() cluster.Interface
|
Cluster() cluster.Interface
|
||||||
Devops() devops.Interface
|
Devops() devops.Interface
|
||||||
@@ -193,6 +195,10 @@ type SharedInformerFactory interface {
|
|||||||
Types() types.Interface
|
Types() types.Interface
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *sharedInformerFactory) Application() application.Interface {
|
||||||
|
return application.New(f, f.namespace, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
func (f *sharedInformerFactory) Auditing() auditing.Interface {
|
func (f *sharedInformerFactory) Auditing() auditing.Interface {
|
||||||
return auditing.New(f, f.namespace, f.tweakListOptions)
|
return auditing.New(f, f.namespace, f.tweakListOptions)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ import (
|
|||||||
|
|
||||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
cache "k8s.io/client-go/tools/cache"
|
cache "k8s.io/client-go/tools/cache"
|
||||||
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/auditing/v1alpha1"
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/apis/auditing/v1alpha1"
|
||||||
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/apis/cluster/v1alpha1"
|
clusterv1alpha1 "kubesphere.io/kubesphere/pkg/apis/cluster/v1alpha1"
|
||||||
devopsv1alpha1 "kubesphere.io/kubesphere/pkg/apis/devops/v1alpha1"
|
devopsv1alpha1 "kubesphere.io/kubesphere/pkg/apis/devops/v1alpha1"
|
||||||
v1alpha3 "kubesphere.io/kubesphere/pkg/apis/devops/v1alpha3"
|
v1alpha3 "kubesphere.io/kubesphere/pkg/apis/devops/v1alpha3"
|
||||||
@@ -63,10 +64,22 @@ func (f *genericInformer) Lister() cache.GenericLister {
|
|||||||
// TODO extend this to unknown resources with a client pool
|
// TODO extend this to unknown resources with a client pool
|
||||||
func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) {
|
func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) {
|
||||||
switch resource {
|
switch resource {
|
||||||
// Group=auditing.kubesphere.io, Version=v1alpha1
|
// Group=application.kubesphere.io, Version=v1alpha1
|
||||||
case v1alpha1.SchemeGroupVersion.WithResource("rules"):
|
case v1alpha1.SchemeGroupVersion.WithResource("helmapplications"):
|
||||||
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Application().V1alpha1().HelmApplications().Informer()}, nil
|
||||||
|
case v1alpha1.SchemeGroupVersion.WithResource("helmapplicationversions"):
|
||||||
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Application().V1alpha1().HelmApplicationVersions().Informer()}, nil
|
||||||
|
case v1alpha1.SchemeGroupVersion.WithResource("helmcategories"):
|
||||||
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Application().V1alpha1().HelmCategories().Informer()}, nil
|
||||||
|
case v1alpha1.SchemeGroupVersion.WithResource("helmreleases"):
|
||||||
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Application().V1alpha1().HelmReleases().Informer()}, nil
|
||||||
|
case v1alpha1.SchemeGroupVersion.WithResource("helmrepos"):
|
||||||
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Application().V1alpha1().HelmRepos().Informer()}, nil
|
||||||
|
|
||||||
|
// Group=auditing.kubesphere.io, Version=v1alpha1
|
||||||
|
case auditingv1alpha1.SchemeGroupVersion.WithResource("rules"):
|
||||||
return &genericInformer{resource: resource.GroupResource(), informer: f.Auditing().V1alpha1().Rules().Informer()}, nil
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Auditing().V1alpha1().Rules().Informer()}, nil
|
||||||
case v1alpha1.SchemeGroupVersion.WithResource("webhooks"):
|
case auditingv1alpha1.SchemeGroupVersion.WithResource("webhooks"):
|
||||||
return &genericInformer{resource: resource.GroupResource(), informer: f.Auditing().V1alpha1().Webhooks().Informer()}, nil
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Auditing().V1alpha1().Webhooks().Informer()}, nil
|
||||||
|
|
||||||
// Group=cluster.kubesphere.io, Version=v1alpha1
|
// Group=cluster.kubesphere.io, Version=v1alpha1
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 lister-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
// HelmApplicationListerExpansion allows custom methods to be added to
|
||||||
|
// HelmApplicationLister.
|
||||||
|
type HelmApplicationListerExpansion interface{}
|
||||||
|
|
||||||
|
// HelmApplicationVersionListerExpansion allows custom methods to be added to
|
||||||
|
// HelmApplicationVersionLister.
|
||||||
|
type HelmApplicationVersionListerExpansion interface{}
|
||||||
|
|
||||||
|
// HelmCategoryListerExpansion allows custom methods to be added to
|
||||||
|
// HelmCategoryLister.
|
||||||
|
type HelmCategoryListerExpansion interface{}
|
||||||
|
|
||||||
|
// HelmReleaseListerExpansion allows custom methods to be added to
|
||||||
|
// HelmReleaseLister.
|
||||||
|
type HelmReleaseListerExpansion interface{}
|
||||||
|
|
||||||
|
// HelmRepoListerExpansion allows custom methods to be added to
|
||||||
|
// HelmRepoLister.
|
||||||
|
type HelmRepoListerExpansion interface{}
|
||||||
65
pkg/client/listers/application/v1alpha1/helmapplication.go
Normal file
65
pkg/client/listers/application/v1alpha1/helmapplication.go
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 lister-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmApplicationLister helps list HelmApplications.
|
||||||
|
type HelmApplicationLister interface {
|
||||||
|
// List lists all HelmApplications in the indexer.
|
||||||
|
List(selector labels.Selector) (ret []*v1alpha1.HelmApplication, err error)
|
||||||
|
// Get retrieves the HelmApplication from the index for a given name.
|
||||||
|
Get(name string) (*v1alpha1.HelmApplication, error)
|
||||||
|
HelmApplicationListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// helmApplicationLister implements the HelmApplicationLister interface.
|
||||||
|
type helmApplicationLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHelmApplicationLister returns a new HelmApplicationLister.
|
||||||
|
func NewHelmApplicationLister(indexer cache.Indexer) HelmApplicationLister {
|
||||||
|
return &helmApplicationLister{indexer: indexer}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all HelmApplications in the indexer.
|
||||||
|
func (s *helmApplicationLister) List(selector labels.Selector) (ret []*v1alpha1.HelmApplication, err error) {
|
||||||
|
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1alpha1.HelmApplication))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get retrieves the HelmApplication from the index for a given name.
|
||||||
|
func (s *helmApplicationLister) Get(name string) (*v1alpha1.HelmApplication, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(v1alpha1.Resource("helmapplication"), name)
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplication), nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 lister-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmApplicationVersionLister helps list HelmApplicationVersions.
|
||||||
|
type HelmApplicationVersionLister interface {
|
||||||
|
// List lists all HelmApplicationVersions in the indexer.
|
||||||
|
List(selector labels.Selector) (ret []*v1alpha1.HelmApplicationVersion, err error)
|
||||||
|
// Get retrieves the HelmApplicationVersion from the index for a given name.
|
||||||
|
Get(name string) (*v1alpha1.HelmApplicationVersion, error)
|
||||||
|
HelmApplicationVersionListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// helmApplicationVersionLister implements the HelmApplicationVersionLister interface.
|
||||||
|
type helmApplicationVersionLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHelmApplicationVersionLister returns a new HelmApplicationVersionLister.
|
||||||
|
func NewHelmApplicationVersionLister(indexer cache.Indexer) HelmApplicationVersionLister {
|
||||||
|
return &helmApplicationVersionLister{indexer: indexer}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all HelmApplicationVersions in the indexer.
|
||||||
|
func (s *helmApplicationVersionLister) List(selector labels.Selector) (ret []*v1alpha1.HelmApplicationVersion, err error) {
|
||||||
|
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1alpha1.HelmApplicationVersion))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get retrieves the HelmApplicationVersion from the index for a given name.
|
||||||
|
func (s *helmApplicationVersionLister) Get(name string) (*v1alpha1.HelmApplicationVersion, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(v1alpha1.Resource("helmapplicationversion"), name)
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmApplicationVersion), nil
|
||||||
|
}
|
||||||
65
pkg/client/listers/application/v1alpha1/helmcategory.go
Normal file
65
pkg/client/listers/application/v1alpha1/helmcategory.go
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 lister-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmCategoryLister helps list HelmCategories.
|
||||||
|
type HelmCategoryLister interface {
|
||||||
|
// List lists all HelmCategories in the indexer.
|
||||||
|
List(selector labels.Selector) (ret []*v1alpha1.HelmCategory, err error)
|
||||||
|
// Get retrieves the HelmCategory from the index for a given name.
|
||||||
|
Get(name string) (*v1alpha1.HelmCategory, error)
|
||||||
|
HelmCategoryListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// helmCategoryLister implements the HelmCategoryLister interface.
|
||||||
|
type helmCategoryLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHelmCategoryLister returns a new HelmCategoryLister.
|
||||||
|
func NewHelmCategoryLister(indexer cache.Indexer) HelmCategoryLister {
|
||||||
|
return &helmCategoryLister{indexer: indexer}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all HelmCategories in the indexer.
|
||||||
|
func (s *helmCategoryLister) List(selector labels.Selector) (ret []*v1alpha1.HelmCategory, err error) {
|
||||||
|
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1alpha1.HelmCategory))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get retrieves the HelmCategory from the index for a given name.
|
||||||
|
func (s *helmCategoryLister) Get(name string) (*v1alpha1.HelmCategory, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(v1alpha1.Resource("helmcategory"), name)
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmCategory), nil
|
||||||
|
}
|
||||||
65
pkg/client/listers/application/v1alpha1/helmrelease.go
Normal file
65
pkg/client/listers/application/v1alpha1/helmrelease.go
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 lister-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmReleaseLister helps list HelmReleases.
|
||||||
|
type HelmReleaseLister interface {
|
||||||
|
// List lists all HelmReleases in the indexer.
|
||||||
|
List(selector labels.Selector) (ret []*v1alpha1.HelmRelease, err error)
|
||||||
|
// Get retrieves the HelmRelease from the index for a given name.
|
||||||
|
Get(name string) (*v1alpha1.HelmRelease, error)
|
||||||
|
HelmReleaseListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// helmReleaseLister implements the HelmReleaseLister interface.
|
||||||
|
type helmReleaseLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHelmReleaseLister returns a new HelmReleaseLister.
|
||||||
|
func NewHelmReleaseLister(indexer cache.Indexer) HelmReleaseLister {
|
||||||
|
return &helmReleaseLister{indexer: indexer}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all HelmReleases in the indexer.
|
||||||
|
func (s *helmReleaseLister) List(selector labels.Selector) (ret []*v1alpha1.HelmRelease, err error) {
|
||||||
|
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1alpha1.HelmRelease))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get retrieves the HelmRelease from the index for a given name.
|
||||||
|
func (s *helmReleaseLister) Get(name string) (*v1alpha1.HelmRelease, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(v1alpha1.Resource("helmrelease"), name)
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRelease), nil
|
||||||
|
}
|
||||||
65
pkg/client/listers/application/v1alpha1/helmrepo.go
Normal file
65
pkg/client/listers/application/v1alpha1/helmrepo.go
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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 lister-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
v1alpha1 "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HelmRepoLister helps list HelmRepos.
|
||||||
|
type HelmRepoLister interface {
|
||||||
|
// List lists all HelmRepos in the indexer.
|
||||||
|
List(selector labels.Selector) (ret []*v1alpha1.HelmRepo, err error)
|
||||||
|
// Get retrieves the HelmRepo from the index for a given name.
|
||||||
|
Get(name string) (*v1alpha1.HelmRepo, error)
|
||||||
|
HelmRepoListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// helmRepoLister implements the HelmRepoLister interface.
|
||||||
|
type helmRepoLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewHelmRepoLister returns a new HelmRepoLister.
|
||||||
|
func NewHelmRepoLister(indexer cache.Indexer) HelmRepoLister {
|
||||||
|
return &helmRepoLister{indexer: indexer}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all HelmRepos in the indexer.
|
||||||
|
func (s *helmRepoLister) List(selector labels.Selector) (ret []*v1alpha1.HelmRepo, err error) {
|
||||||
|
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1alpha1.HelmRepo))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get retrieves the HelmRepo from the index for a given name.
|
||||||
|
func (s *helmRepoLister) Get(name string) (*v1alpha1.HelmRepo, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(v1alpha1.Resource("helmrepo"), name)
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.HelmRepo), nil
|
||||||
|
}
|
||||||
@@ -32,14 +32,19 @@ const (
|
|||||||
AdminUserName = "admin"
|
AdminUserName = "admin"
|
||||||
IngressControllerPrefix = "kubesphere-router-"
|
IngressControllerPrefix = "kubesphere-router-"
|
||||||
|
|
||||||
WorkspaceLabelKey = "kubesphere.io/workspace"
|
ClusterNameLabelKey = "kubesphere.io/cluster"
|
||||||
NamespaceLabelKey = "kubesphere.io/namespace"
|
NameLabelKey = "kubesphere.io/name"
|
||||||
DisplayNameAnnotationKey = "kubesphere.io/alias-name"
|
WorkspaceLabelKey = "kubesphere.io/workspace"
|
||||||
DescriptionAnnotationKey = "kubesphere.io/description"
|
NamespaceLabelKey = "kubesphere.io/namespace"
|
||||||
CreatorAnnotationKey = "kubesphere.io/creator"
|
DisplayNameAnnotationKey = "kubesphere.io/alias-name"
|
||||||
UsernameLabelKey = "kubesphere.io/username"
|
ChartRepoIdLabelKey = "application.kubesphere.io/repo-id"
|
||||||
DevOpsProjectLabelKey = "kubesphere.io/devopsproject"
|
ChartApplicationIdLabelKey = "application.kubesphere.io/app-id"
|
||||||
KubefedManagedLabel = "kubefed.io/managed"
|
ChartApplicationVersionIdLabelKey = "application.kubesphere.io/app-version-id"
|
||||||
|
CategoryIdLabelKey = "application.kubesphere.io/app-category-id"
|
||||||
|
CreatorAnnotationKey = "kubesphere.io/creator"
|
||||||
|
UsernameLabelKey = "kubesphere.io/username"
|
||||||
|
DevOpsProjectLabelKey = "kubesphere.io/devopsproject"
|
||||||
|
KubefedManagedLabel = "kubefed.io/managed"
|
||||||
|
|
||||||
UserNameHeader = "X-Token-Username"
|
UserNameHeader = "X-Token-Username"
|
||||||
|
|
||||||
@@ -58,6 +63,7 @@ const (
|
|||||||
DevOpsProjectRoleTag = "DevOps Project Role"
|
DevOpsProjectRoleTag = "DevOps Project Role"
|
||||||
NamespaceRoleTag = "Namespace Role"
|
NamespaceRoleTag = "Namespace Role"
|
||||||
|
|
||||||
|
OpenpitrixTag = "OpenPitrix Resources"
|
||||||
OpenpitrixAppInstanceTag = "App Instance"
|
OpenpitrixAppInstanceTag = "App Instance"
|
||||||
OpenpitrixAppTemplateTag = "App Template"
|
OpenpitrixAppTemplateTag = "App Template"
|
||||||
OpenpitrixCategoryTag = "Category"
|
OpenpitrixCategoryTag = "Category"
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ import (
|
|||||||
clusterclient "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/cluster/v1alpha1"
|
clusterclient "kubesphere.io/kubesphere/pkg/client/clientset/versioned/typed/cluster/v1alpha1"
|
||||||
clusterinformer "kubesphere.io/kubesphere/pkg/client/informers/externalversions/cluster/v1alpha1"
|
clusterinformer "kubesphere.io/kubesphere/pkg/client/informers/externalversions/cluster/v1alpha1"
|
||||||
clusterlister "kubesphere.io/kubesphere/pkg/client/listers/cluster/v1alpha1"
|
clusterlister "kubesphere.io/kubesphere/pkg/client/listers/cluster/v1alpha1"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Cluster controller only runs under multicluster mode. Cluster controller is following below steps,
|
// Cluster controller only runs under multicluster mode. Cluster controller is following below steps,
|
||||||
@@ -145,8 +144,6 @@ type clusterController struct {
|
|||||||
clusterLister clusterlister.ClusterLister
|
clusterLister clusterlister.ClusterLister
|
||||||
clusterHasSynced cache.InformerSynced
|
clusterHasSynced cache.InformerSynced
|
||||||
|
|
||||||
openpitrixClient openpitrix.Client
|
|
||||||
|
|
||||||
queue workqueue.RateLimitingInterface
|
queue workqueue.RateLimitingInterface
|
||||||
|
|
||||||
workerLoopPeriod time.Duration
|
workerLoopPeriod time.Duration
|
||||||
@@ -163,7 +160,6 @@ func NewClusterController(
|
|||||||
config *rest.Config,
|
config *rest.Config,
|
||||||
clusterInformer clusterinformer.ClusterInformer,
|
clusterInformer clusterinformer.ClusterInformer,
|
||||||
clusterClient clusterclient.ClusterInterface,
|
clusterClient clusterclient.ClusterInterface,
|
||||||
openpitrixClient openpitrix.Client,
|
|
||||||
resyncPeriod time.Duration,
|
resyncPeriod time.Duration,
|
||||||
) *clusterController {
|
) *clusterController {
|
||||||
|
|
||||||
@@ -180,7 +176,6 @@ func NewClusterController(
|
|||||||
client: client,
|
client: client,
|
||||||
hostConfig: config,
|
hostConfig: config,
|
||||||
clusterClient: clusterClient,
|
clusterClient: clusterClient,
|
||||||
openpitrixClient: openpitrixClient,
|
|
||||||
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "cluster"),
|
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "cluster"),
|
||||||
workerLoopPeriod: time.Second,
|
workerLoopPeriod: time.Second,
|
||||||
clusterMap: make(map[string]*clusterData),
|
clusterMap: make(map[string]*clusterData),
|
||||||
@@ -471,18 +466,6 @@ func (c *clusterController) syncCluster(key string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// clean up openpitrix runtime of the cluster
|
|
||||||
if _, ok := cluster.Annotations[openpitrixRuntime]; ok {
|
|
||||||
if c.openpitrixClient != nil {
|
|
||||||
err = c.openpitrixClient.CleanupRuntime(cluster.Name)
|
|
||||||
if err != nil {
|
|
||||||
klog.Errorf("Unable to delete openpitrix for cluster %s, error %v", cluster.Name, err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
delete(cluster.Annotations, openpitrixRuntime)
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove our cluster finalizer
|
// remove our cluster finalizer
|
||||||
finalizers := sets.NewString(cluster.ObjectMeta.Finalizers...)
|
finalizers := sets.NewString(cluster.ObjectMeta.Finalizers...)
|
||||||
finalizers.Delete(clusterv1alpha1.Finalizer)
|
finalizers.Delete(clusterv1alpha1.Finalizer)
|
||||||
@@ -585,22 +568,6 @@ func (c *clusterController) syncCluster(key string) error {
|
|||||||
cluster.Labels[clusterv1alpha1.HostCluster] = ""
|
cluster.Labels[clusterv1alpha1.HostCluster] = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.openpitrixClient != nil { // OpenPitrix is enabled, create runtime
|
|
||||||
if cluster.GetAnnotations() == nil {
|
|
||||||
cluster.Annotations = make(map[string]string)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, ok = cluster.Annotations[openpitrixRuntime]; !ok {
|
|
||||||
err = c.openpitrixClient.UpsertRuntime(cluster.Name, string(cluster.Spec.Connection.KubeConfig))
|
|
||||||
if err != nil {
|
|
||||||
klog.Errorf("Failed to create runtime for cluster %s, error %v", cluster.Name, err)
|
|
||||||
return err
|
|
||||||
} else {
|
|
||||||
cluster.Annotations[openpitrixRuntime] = cluster.Name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if !reflect.DeepEqual(oldCluster, cluster) {
|
if !reflect.DeepEqual(oldCluster, cluster) {
|
||||||
_, err = c.clusterClient.Update(context.TODO(), cluster, metav1.UpdateOptions{})
|
_, err = c.clusterClient.Update(context.TODO(), cluster, metav1.UpdateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -0,0 +1,176 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package helmapplication
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
"k8s.io/klog"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/constants"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/sliceutil"
|
||||||
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
registerMetrics()
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
helmApplicationControllerName = "helm-application-controller"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ reconcile.Reconciler = &ReconcileHelmApplication{}
|
||||||
|
|
||||||
|
// ReconcileHelmApplication reconciles a federated helm application object
|
||||||
|
type ReconcileHelmApplication struct {
|
||||||
|
client.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
appFinalizer = "helmapplication.application.kubesphere.io"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (r *ReconcileHelmApplication) Reconcile(request reconcile.Request) (reconcile.Result, error) {
|
||||||
|
klog.V(4).Info("sync helm application")
|
||||||
|
|
||||||
|
rootCtx := context.Background()
|
||||||
|
app := &v1alpha1.HelmApplication{}
|
||||||
|
err := r.Client.Get(rootCtx, request.NamespacedName, app)
|
||||||
|
if err != nil {
|
||||||
|
if apierrors.IsNotFound(err) {
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if app.DeletionTimestamp == nil {
|
||||||
|
// new app, update finalizer
|
||||||
|
if !sliceutil.HasString(app.ObjectMeta.Finalizers, appFinalizer) {
|
||||||
|
app.ObjectMeta.Finalizers = append(app.ObjectMeta.Finalizers, appFinalizer)
|
||||||
|
if err := r.Update(rootCtx, app); err != nil {
|
||||||
|
return ctrl.Result{}, err
|
||||||
|
}
|
||||||
|
// create app success
|
||||||
|
appOperationTotal.WithLabelValues("creation", app.GetTrueName(), strconv.FormatBool(inAppStore(app))).Inc()
|
||||||
|
}
|
||||||
|
|
||||||
|
if !inAppStore(app) {
|
||||||
|
if app.Status.State == v1alpha1.StateActive ||
|
||||||
|
app.Status.State == v1alpha1.StateSuspended {
|
||||||
|
return reconcile.Result{}, r.createAppCopyInAppStore(rootCtx, app)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// delete app copy in appStore
|
||||||
|
if !inAppStore(app) {
|
||||||
|
if err := r.deleteAppCopyInAppStore(rootCtx, app.Name); err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
app.ObjectMeta.Finalizers = sliceutil.RemoveString(app.ObjectMeta.Finalizers, func(item string) bool {
|
||||||
|
return item == appFinalizer
|
||||||
|
})
|
||||||
|
klog.V(4).Info("update app")
|
||||||
|
if err := r.Update(rootCtx, app); err != nil {
|
||||||
|
klog.Errorf("update app failed, error: %s", err)
|
||||||
|
return ctrl.Result{}, err
|
||||||
|
} else {
|
||||||
|
// delete app success
|
||||||
|
appOperationTotal.WithLabelValues("deletion", app.GetTrueName(), strconv.FormatBool(inAppStore(app))).Inc()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmApplication) deleteAppCopyInAppStore(ctx context.Context, name string) error {
|
||||||
|
appInStore := &v1alpha1.HelmApplication{}
|
||||||
|
err := r.Client.Get(ctx, types.NamespacedName{Name: fmt.Sprintf("%s%s", name, v1alpha1.HelmApplicationAppStoreSuffix)}, appInStore)
|
||||||
|
if err != nil {
|
||||||
|
if !apierrors.IsNotFound(err) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = r.Delete(ctx, appInStore)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// create a application copy in app store
|
||||||
|
func (r *ReconcileHelmApplication) createAppCopyInAppStore(ctx context.Context, from *v1alpha1.HelmApplication) error {
|
||||||
|
name := fmt.Sprintf("%s%s", from.Name, v1alpha1.HelmApplicationAppStoreSuffix)
|
||||||
|
|
||||||
|
app := &v1alpha1.HelmApplication{}
|
||||||
|
err := r.Get(ctx, types.NamespacedName{Name: name}, app)
|
||||||
|
if err != nil && !apierrors.IsNotFound(err) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if app.Name == "" {
|
||||||
|
app.Name = name
|
||||||
|
labels := from.Labels
|
||||||
|
if len(labels) == 0 {
|
||||||
|
labels = make(map[string]string, 3)
|
||||||
|
}
|
||||||
|
labels[constants.ChartRepoIdLabelKey] = v1alpha1.AppStoreRepoId
|
||||||
|
|
||||||
|
// assign a category to app
|
||||||
|
if labels[constants.CategoryIdLabelKey] == "" {
|
||||||
|
labels[constants.CategoryIdLabelKey] = v1alpha1.UncategorizedId
|
||||||
|
}
|
||||||
|
labels[v1alpha1.OriginWorkspaceLabelKey] = from.GetWorkspace()
|
||||||
|
|
||||||
|
// apps in store are global resource.
|
||||||
|
delete(labels, constants.WorkspaceLabelKey)
|
||||||
|
app.Labels = labels
|
||||||
|
|
||||||
|
app.Spec = *from.Spec.DeepCopy()
|
||||||
|
|
||||||
|
err = r.Create(context.TODO(), app)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if app.Status.State == "" {
|
||||||
|
// update status if needed
|
||||||
|
return updateHelmApplicationStatus(r.Client, from.Name, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmApplication) SetupWithManager(mgr ctrl.Manager) error {
|
||||||
|
r.Client = mgr.GetClient()
|
||||||
|
|
||||||
|
return ctrl.NewControllerManagedBy(mgr).
|
||||||
|
For(&v1alpha1.HelmApplication{}).Complete(r)
|
||||||
|
}
|
||||||
|
|
||||||
|
func inAppStore(app *v1alpha1.HelmApplication) bool {
|
||||||
|
return strings.HasSuffix(app.Name, v1alpha1.HelmApplicationAppStoreSuffix)
|
||||||
|
}
|
||||||
@@ -0,0 +1,283 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package helmapplication
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"github.com/Masterminds/semver/v3"
|
||||||
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
"k8s.io/klog"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/constants"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/sliceutil"
|
||||||
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
HelmAppVersionFinalizer = "helmappversion.application.kubesphere.io"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ reconcile.Reconciler = &ReconcileHelmApplicationVersion{}
|
||||||
|
|
||||||
|
// ReconcileHelmApplicationVersion reconciles a helm application version object
|
||||||
|
type ReconcileHelmApplicationVersion struct {
|
||||||
|
client.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reconcile reads that state of the cluster for a helmapplicationversions object and makes changes based on the state read
|
||||||
|
// and what is in the helmapplicationversions.Spec
|
||||||
|
func (r *ReconcileHelmApplicationVersion) Reconcile(request reconcile.Request) (reconcile.Result, error) {
|
||||||
|
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))
|
||||||
|
}()
|
||||||
|
|
||||||
|
appVersion := &v1alpha1.HelmApplicationVersion{}
|
||||||
|
err := r.Client.Get(context.TODO(), request.NamespacedName, appVersion)
|
||||||
|
if err != nil {
|
||||||
|
if apierrors.IsNotFound(err) {
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
// Error reading the object - requeue the request.
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if appVersion.ObjectMeta.DeletionTimestamp.IsZero() {
|
||||||
|
|
||||||
|
if appVersion.Status.State == "" {
|
||||||
|
// set status to draft
|
||||||
|
return reconcile.Result{}, r.updateStatus(appVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !sliceutil.HasString(appVersion.ObjectMeta.Finalizers, HelmAppVersionFinalizer) {
|
||||||
|
appVersion.ObjectMeta.Finalizers = append(appVersion.ObjectMeta.Finalizers, HelmAppVersionFinalizer)
|
||||||
|
if err := r.Update(context.Background(), appVersion); err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
} else {
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// The object is being deleted
|
||||||
|
if sliceutil.HasString(appVersion.ObjectMeta.Finalizers, HelmAppVersionFinalizer) {
|
||||||
|
// update related helm application
|
||||||
|
err = updateHelmApplicationStatus(r.Client, appVersion.GetHelmApplicationId(), false)
|
||||||
|
if err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = updateHelmApplicationStatus(r.Client, appVersion.GetHelmApplicationId(), true)
|
||||||
|
if err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete HelmApplicationVersion
|
||||||
|
appVersion.ObjectMeta.Finalizers = sliceutil.RemoveString(appVersion.ObjectMeta.Finalizers, func(item string) bool {
|
||||||
|
if item == HelmAppVersionFinalizer {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
if err := r.Update(context.Background(), appVersion); err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// update related helm application
|
||||||
|
err = updateHelmApplicationStatus(r.Client, appVersion.GetHelmApplicationId(), false)
|
||||||
|
if err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if appVersion.Status.State == v1alpha1.StateActive {
|
||||||
|
// add labels to helm application version
|
||||||
|
// The label will exists forever, since this helmapplicationversion's state only can be active and suspend.
|
||||||
|
if appVersion.GetHelmRepoId() == "" {
|
||||||
|
instanceCopy := appVersion.DeepCopy()
|
||||||
|
instanceCopy.Labels[constants.ChartRepoIdLabelKey] = v1alpha1.AppStoreRepoId
|
||||||
|
patch := client.MergeFrom(appVersion)
|
||||||
|
err = r.Client.Patch(context.TODO(), instanceCopy, patch)
|
||||||
|
if err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
app := v1alpha1.HelmApplication{}
|
||||||
|
err = r.Get(context.TODO(), types.NamespacedName{Name: appVersion.GetHelmApplicationId()}, &app)
|
||||||
|
if err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return reconcile.Result{}, updateHelmApplicationStatus(r.Client, appVersion.GetHelmApplicationId(), true)
|
||||||
|
} else if appVersion.Status.State == v1alpha1.StateSuspended {
|
||||||
|
return reconcile.Result{}, updateHelmApplicationStatus(r.Client, appVersion.GetHelmApplicationId(), true)
|
||||||
|
}
|
||||||
|
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateHelmApplicationStatus(c client.Client, appId string, inAppStore bool) error {
|
||||||
|
app := v1alpha1.HelmApplication{}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
if inAppStore {
|
||||||
|
// application name ends with `-store`
|
||||||
|
err = c.Get(context.TODO(), types.NamespacedName{Name: fmt.Sprintf("%s%s", appId, v1alpha1.HelmApplicationAppStoreSuffix)}, &app)
|
||||||
|
} else {
|
||||||
|
err = c.Get(context.TODO(), types.NamespacedName{Name: appId}, &app)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if apierrors.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !app.DeletionTimestamp.IsZero() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var versions v1alpha1.HelmApplicationVersionList
|
||||||
|
err = c.List(context.TODO(), &versions, client.MatchingLabels{
|
||||||
|
constants.ChartApplicationIdLabelKey: appId,
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil && !apierrors.IsNotFound(err) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
latestVersionName := getLatestVersionName(versions, inAppStore)
|
||||||
|
state := mergeApplicationVersionState(versions)
|
||||||
|
|
||||||
|
now := time.Now()
|
||||||
|
if state != app.Status.State {
|
||||||
|
// update StatusTime when state changed
|
||||||
|
app.Status.StatusTime = &metav1.Time{Time: now}
|
||||||
|
}
|
||||||
|
|
||||||
|
if state != app.Status.State || latestVersionName != app.Status.LatestVersion {
|
||||||
|
app.Status.State = state
|
||||||
|
app.Status.LatestVersion = latestVersionName
|
||||||
|
app.Status.UpdateTime = &metav1.Time{Time: now}
|
||||||
|
err := c.Status().Update(context.TODO(), &app)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmApplicationVersion) updateStatus(appVersion *v1alpha1.HelmApplicationVersion) error {
|
||||||
|
appVersion.Status = v1alpha1.HelmApplicationVersionStatus{
|
||||||
|
State: v1alpha1.StateDraft,
|
||||||
|
Audit: []v1alpha1.Audit{
|
||||||
|
{
|
||||||
|
State: v1alpha1.StateDraft,
|
||||||
|
Time: appVersion.CreationTimestamp,
|
||||||
|
Operator: appVersion.GetCreator(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := r.Status().Update(context.TODO(), appVersion)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getLatestVersionName(versions v1alpha1.HelmApplicationVersionList, inAppStore bool) string {
|
||||||
|
l := versions.Items
|
||||||
|
if len(l) == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
verInd := 0
|
||||||
|
if inAppStore {
|
||||||
|
// only check active app version
|
||||||
|
for ; verInd < len(l); verInd++ {
|
||||||
|
if l[verInd].Status.State == v1alpha1.StateActive {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if verInd == len(l) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
latestSemver, _ := semver.NewVersion(l[verInd].GetSemver())
|
||||||
|
|
||||||
|
for i := verInd + 1; i < len(l); i++ {
|
||||||
|
curr, _ := semver.NewVersion(l[i].GetSemver())
|
||||||
|
if inAppStore {
|
||||||
|
if l[i].Status.State != v1alpha1.StateActive {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if latestSemver.LessThan(curr) {
|
||||||
|
verInd = i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return l[verInd].GetVersionName()
|
||||||
|
}
|
||||||
|
|
||||||
|
func mergeApplicationVersionState(versions v1alpha1.HelmApplicationVersionList) string {
|
||||||
|
states := make(map[string]int, len(versions.Items))
|
||||||
|
|
||||||
|
for _, version := range versions.Items {
|
||||||
|
if version.DeletionTimestamp == nil {
|
||||||
|
state := version.Status.State
|
||||||
|
states[state] = states[state] + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there is on active appVersion, the helm application is active
|
||||||
|
if states[v1alpha1.StateActive] > 0 {
|
||||||
|
return v1alpha1.StateActive
|
||||||
|
}
|
||||||
|
|
||||||
|
// All appVersion is draft, the helm application is draft
|
||||||
|
if states[v1alpha1.StateDraft] == len(versions.Items) {
|
||||||
|
return v1alpha1.StateDraft
|
||||||
|
}
|
||||||
|
|
||||||
|
if states[v1alpha1.StateSuspended] > 0 {
|
||||||
|
return v1alpha1.StateSuspended
|
||||||
|
}
|
||||||
|
|
||||||
|
// default state is draft
|
||||||
|
return v1alpha1.StateDraft
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmApplicationVersion) SetupWithManager(mgr ctrl.Manager) error {
|
||||||
|
r.Client = mgr.GetClient()
|
||||||
|
return ctrl.NewControllerManagedBy(mgr).
|
||||||
|
For(&v1alpha1.HelmApplicationVersion{}).
|
||||||
|
Complete(r)
|
||||||
|
}
|
||||||
44
pkg/controller/openpitrix/helmapplication/metrics.go
Normal file
44
pkg/controller/openpitrix/helmapplication/metrics.go
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package helmapplication
|
||||||
|
|
||||||
|
import (
|
||||||
|
compbasemetrics "k8s.io/component-base/metrics"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/metrics"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
appOperationTotal = compbasemetrics.NewCounterVec(
|
||||||
|
&compbasemetrics.CounterOpts{
|
||||||
|
Subsystem: "ks_cm",
|
||||||
|
Name: "helm_application_operation_total",
|
||||||
|
Help: "Counter of app creation and deletion",
|
||||||
|
StabilityLevel: compbasemetrics.ALPHA,
|
||||||
|
},
|
||||||
|
[]string{"verb", "name", "appstore"},
|
||||||
|
)
|
||||||
|
|
||||||
|
metricsList = []compbasemetrics.Registerable{
|
||||||
|
appOperationTotal,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func registerMetrics() {
|
||||||
|
for _, m := range metricsList {
|
||||||
|
metrics.MustRegister(m)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,337 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package helmcategory
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"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"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/constants"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/sliceutil"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/controller"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/event"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/handler"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/manager"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/source"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
HelmCategoryFinalizer = "helmcategories.application.kubesphere.io"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Add(mgr manager.Manager) error {
|
||||||
|
return add(mgr, newReconciler(mgr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// newReconciler returns a new reconcile.Reconciler
|
||||||
|
func newReconciler(mgr manager.Manager) reconcile.Reconciler {
|
||||||
|
return &ReconcileHelmCategory{Client: mgr.GetClient(), Scheme: mgr.GetScheme()}
|
||||||
|
}
|
||||||
|
|
||||||
|
// add adds a new Controller to mgr with r as the reconcile.Reconciler
|
||||||
|
func add(mgr manager.Manager, r reconcile.Reconciler) error {
|
||||||
|
// Create a new controller
|
||||||
|
c, err := controller.New("helm-category-controller", mgr, controller.Options{Reconciler: r})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch for changes to HelmCategory
|
||||||
|
err = c.Watch(&source.Kind{Type: &v1alpha1.HelmCategory{}}, &handler.EnqueueRequestForObject{})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
reconcileObj := r.(*ReconcileHelmCategory)
|
||||||
|
// Watch for changes to HelmApplication
|
||||||
|
err = c.Watch(&source.Kind{Type: &v1alpha1.HelmApplication{}}, &handler.Funcs{
|
||||||
|
CreateFunc: func(event event.CreateEvent, limitingInterface workqueue.RateLimitingInterface) {
|
||||||
|
app := event.Object.(*v1alpha1.HelmApplication)
|
||||||
|
err := reconcileObj.updateUncategorizedApplicationLabels(app)
|
||||||
|
if err != nil {
|
||||||
|
limitingInterface.AddAfter(event, 20*time.Second)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
repoId := app.GetHelmRepoId()
|
||||||
|
if repoId == v1alpha1.AppStoreRepoId {
|
||||||
|
ctgId := app.GetHelmCategoryId()
|
||||||
|
if ctgId == "" {
|
||||||
|
ctgId = v1alpha1.UncategorizedId
|
||||||
|
}
|
||||||
|
err := reconcileObj.updateCategoryCount(ctgId)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("reconcile category %s failed, error: %s", ctgId, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
UpdateFunc: func(updateEvent event.UpdateEvent, limitingInterface workqueue.RateLimitingInterface) {
|
||||||
|
oldApp := updateEvent.ObjectOld.(*v1alpha1.HelmApplication)
|
||||||
|
newApp := updateEvent.ObjectNew.(*v1alpha1.HelmApplication)
|
||||||
|
err := reconcileObj.updateUncategorizedApplicationLabels(newApp)
|
||||||
|
if err != nil {
|
||||||
|
limitingInterface.AddAfter(updateEvent, 20*time.Second)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var oldId string
|
||||||
|
repoId := newApp.GetHelmRepoId()
|
||||||
|
if repoId == v1alpha1.AppStoreRepoId {
|
||||||
|
oldId = oldApp.GetHelmCategoryId()
|
||||||
|
if oldId == "" {
|
||||||
|
oldId = v1alpha1.UncategorizedId
|
||||||
|
}
|
||||||
|
err := reconcileObj.updateCategoryCount(oldId)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("reconcile category %s failed, error: %s", oldId, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// new labels and new repo id
|
||||||
|
repoId = newApp.GetHelmRepoId()
|
||||||
|
if repoId == v1alpha1.AppStoreRepoId {
|
||||||
|
// new category id
|
||||||
|
newId := newApp.GetHelmCategoryId()
|
||||||
|
if newId == "" {
|
||||||
|
newId = v1alpha1.UncategorizedId
|
||||||
|
}
|
||||||
|
if oldId != newId {
|
||||||
|
err := reconcileObj.updateCategoryCount(newId)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("reconcile category %s failed, error: %s", newId, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
DeleteFunc: func(deleteEvent event.DeleteEvent, limitingInterface workqueue.RateLimitingInterface) {
|
||||||
|
app := deleteEvent.Object.(*v1alpha1.HelmApplication)
|
||||||
|
repoId := app.GetHelmRepoId()
|
||||||
|
if repoId == v1alpha1.AppStoreRepoId {
|
||||||
|
id := app.GetHelmCategoryId()
|
||||||
|
if id == "" {
|
||||||
|
id = v1alpha1.UncategorizedId
|
||||||
|
}
|
||||||
|
err := reconcileObj.updateCategoryCount(id)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("reconcile category %s failed, error: %s", id, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
// create Uncategorized object
|
||||||
|
ticker := time.NewTicker(15 * time.Second)
|
||||||
|
for range ticker.C {
|
||||||
|
ctg := &v1alpha1.HelmCategory{}
|
||||||
|
err := reconcileObj.Get(context.TODO(), types.NamespacedName{Name: v1alpha1.UncategorizedId}, ctg)
|
||||||
|
if err != nil && !errors.IsNotFound(err) {
|
||||||
|
klog.Errorf("get helm category: %s failed, error: %s", v1alpha1.UncategorizedId, err)
|
||||||
|
}
|
||||||
|
if ctg.Name != "" {
|
||||||
|
// category exists now
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ctg = &v1alpha1.HelmCategory{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: v1alpha1.UncategorizedId,
|
||||||
|
},
|
||||||
|
Spec: v1alpha1.HelmCategorySpec{
|
||||||
|
Description: v1alpha1.UncategorizedName,
|
||||||
|
Name: v1alpha1.UncategorizedName,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
err = reconcileObj.Create(context.TODO(), ctg)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("create helm category: %s failed, error: %s", v1alpha1.UncategorizedName, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ reconcile.Reconciler = &ReconcileHelmCategory{}
|
||||||
|
|
||||||
|
// ReconcileWorkspace reconciles a Workspace object
|
||||||
|
type ReconcileHelmCategory struct {
|
||||||
|
client.Client
|
||||||
|
Scheme *runtime.Scheme
|
||||||
|
recorder record.EventRecorder
|
||||||
|
config *rest.Config
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reconcile reads that state of the cluster for a helmcategories object and makes changes based on the state read
|
||||||
|
// and what is in the helmreleases.Spec
|
||||||
|
// +kubebuilder:rbac:groups=application.kubesphere.io,resources=helmcategories,verbs=get;list;watch;create;update;patch;delete
|
||||||
|
// +kubebuilder:rbac:groups=application.kubesphere.io,resources=helmcategories/status,verbs=get;update;patch
|
||||||
|
func (r *ReconcileHelmCategory) Reconcile(request reconcile.Request) (reconcile.Result, error) {
|
||||||
|
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))
|
||||||
|
}()
|
||||||
|
|
||||||
|
instance := &v1alpha1.HelmCategory{}
|
||||||
|
err := r.Client.Get(context.TODO(), request.NamespacedName, instance)
|
||||||
|
if err != nil {
|
||||||
|
if errors.IsNotFound(err) {
|
||||||
|
if request.Name == v1alpha1.UncategorizedId {
|
||||||
|
err = r.ensureUncategorizedCategory()
|
||||||
|
// If create uncategorized category failed, we need create it again
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
// Object not found, return. Created objects are automatically garbage collected.
|
||||||
|
// For additional cleanup logic use finalizers.
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
// Error reading the object - requeue the request.
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if instance.ObjectMeta.DeletionTimestamp.IsZero() {
|
||||||
|
// The object is not being deleted, so if it does not have our finalizer,
|
||||||
|
// then lets add the finalizer and update the object.
|
||||||
|
if !sliceutil.HasString(instance.ObjectMeta.Finalizers, HelmCategoryFinalizer) {
|
||||||
|
instance.ObjectMeta.Finalizers = append(instance.ObjectMeta.Finalizers, HelmCategoryFinalizer)
|
||||||
|
if err := r.Update(context.Background(), instance); err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// The object is being deleted
|
||||||
|
if sliceutil.HasString(instance.ObjectMeta.Finalizers, HelmCategoryFinalizer) {
|
||||||
|
// our finalizer is present, so lets handle our external dependency
|
||||||
|
// remove our finalizer from the list and update it.
|
||||||
|
|
||||||
|
if instance.Status.Total > 0 {
|
||||||
|
klog.Errorf("can not delete helm category: %s which owns applications", request.String())
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
instance.ObjectMeta.Finalizers = sliceutil.RemoveString(instance.ObjectMeta.Finalizers, func(item string) bool {
|
||||||
|
if item == HelmCategoryFinalizer {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
if err := r.Update(context.Background(), instance); err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.updateCategoryCount(instance.Name)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("update helm category: %s status failed, error: %s", instance.Name, err)
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmCategory) ensureUncategorizedCategory() error {
|
||||||
|
ctg := &v1alpha1.HelmCategory{}
|
||||||
|
err := r.Get(context.TODO(), types.NamespacedName{Name: v1alpha1.UncategorizedId}, ctg)
|
||||||
|
if err != nil && !errors.IsNotFound(err) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
ctg.Name = v1alpha1.UncategorizedId
|
||||||
|
ctg.Spec.Name = v1alpha1.UncategorizedName
|
||||||
|
ctg.Spec.Description = v1alpha1.UncategorizedName
|
||||||
|
err = r.Create(context.TODO(), ctg)
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmCategory) updateCategoryCount(id string) error {
|
||||||
|
ctg := &v1alpha1.HelmCategory{}
|
||||||
|
err := r.Get(context.TODO(), types.NamespacedName{Name: id}, ctg)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
count, err := r.countApplications(id)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if ctg.Status.Total == count {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ctg.Status.Total = count
|
||||||
|
|
||||||
|
err = r.Status().Update(context.TODO(), ctg)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmCategory) countApplications(id string) (int, error) {
|
||||||
|
list := v1alpha1.HelmApplicationList{}
|
||||||
|
var err error
|
||||||
|
err = r.List(context.TODO(), &list, client.MatchingLabels{
|
||||||
|
constants.CategoryIdLabelKey: id,
|
||||||
|
constants.ChartRepoIdLabelKey: v1alpha1.AppStoreRepoId,
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
count := 0
|
||||||
|
// just count active helm application
|
||||||
|
for _, app := range list.Items {
|
||||||
|
if app.Status.State == v1alpha1.StateActive {
|
||||||
|
count += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return count, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// add category id to helm application
|
||||||
|
func (r *ReconcileHelmCategory) updateUncategorizedApplicationLabels(app *v1alpha1.HelmApplication) error {
|
||||||
|
if app == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if app.GetHelmRepoId() == v1alpha1.AppStoreRepoId && app.GetHelmCategoryId() == "" {
|
||||||
|
appCopy := app.DeepCopy()
|
||||||
|
appCopy.Labels[constants.CategoryIdLabelKey] = v1alpha1.UncategorizedId
|
||||||
|
patch := client.MergeFrom(app)
|
||||||
|
err := r.Client.Patch(context.TODO(), appCopy, patch)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("patch application: %s failed, error: %s", app.Name, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package helmcategory
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/onsi/gomega/gexec"
|
||||||
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
|
"k8s.io/klog/klogr"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis"
|
||||||
|
"kubesphere.io/kubesphere/pkg/controller/openpitrix/helmapplication"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
|
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/envtest"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/envtest/printer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// These tests use Ginkgo (BDD-style Go testing framework). Refer to
|
||||||
|
// http://onsi.github.io/ginkgo/ to learn more about Ginkgo.
|
||||||
|
|
||||||
|
var k8sClient client.Client
|
||||||
|
var k8sManager ctrl.Manager
|
||||||
|
var testEnv *envtest.Environment
|
||||||
|
|
||||||
|
func TestHelmCategoryController(t *testing.T) {
|
||||||
|
RegisterFailHandler(Fail)
|
||||||
|
RunSpecsWithDefaultAndCustomReporters(t,
|
||||||
|
"HelmCategory Controller Test Suite",
|
||||||
|
[]Reporter{printer.NewlineReporter{}})
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ = BeforeSuite(func(done Done) {
|
||||||
|
logf.SetLogger(klogr.New())
|
||||||
|
|
||||||
|
By("bootstrapping test environment")
|
||||||
|
t := true
|
||||||
|
if os.Getenv("TEST_USE_EXISTING_CLUSTER") == "true" {
|
||||||
|
testEnv = &envtest.Environment{
|
||||||
|
UseExistingCluster: &t,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
testEnv = &envtest.Environment{
|
||||||
|
CRDDirectoryPaths: []string{filepath.Join("..", "..", "..", "..", "config", "crds")},
|
||||||
|
AttachControlPlaneOutput: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg, err := testEnv.Start()
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(cfg).ToNot(BeNil())
|
||||||
|
|
||||||
|
err = apis.AddToScheme(scheme.Scheme)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
k8sManager, err = ctrl.NewManager(cfg, ctrl.Options{
|
||||||
|
MetricsBindAddress: "0",
|
||||||
|
Scheme: scheme.Scheme,
|
||||||
|
})
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
err = Add(k8sManager)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
err = (&helmapplication.ReconcileHelmApplication{}).SetupWithManager(k8sManager)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
err = (&helmapplication.ReconcileHelmApplicationVersion{}).SetupWithManager(k8sManager)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
err = k8sManager.Start(ctrl.SetupSignalHandler())
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
}()
|
||||||
|
|
||||||
|
k8sClient = k8sManager.GetClient()
|
||||||
|
Expect(k8sClient).ToNot(BeNil())
|
||||||
|
|
||||||
|
close(done)
|
||||||
|
}, 60)
|
||||||
|
|
||||||
|
var _ = AfterSuite(func() {
|
||||||
|
By("tearing down the test environment")
|
||||||
|
gexec.KillAndWait(5 * time.Second)
|
||||||
|
err := testEnv.Stop()
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
})
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package helmcategory
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/constants"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/idutils"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = Describe("helmCategory", func() {
|
||||||
|
|
||||||
|
const timeout = time.Second * 240
|
||||||
|
const interval = time.Second * 1
|
||||||
|
|
||||||
|
app := createApp()
|
||||||
|
appVer := createAppVersion(app.GetHelmApplicationId())
|
||||||
|
ctg := createCtg()
|
||||||
|
|
||||||
|
BeforeEach(func() {
|
||||||
|
err := k8sClient.Create(context.Background(), app)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
err = k8sClient.Create(context.Background(), appVer)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
err = k8sClient.Create(context.Background(), ctg)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
})
|
||||||
|
|
||||||
|
Context("Helm category Controller", func() {
|
||||||
|
It("Should success", func() {
|
||||||
|
key := types.NamespacedName{
|
||||||
|
Name: v1alpha1.UncategorizedId,
|
||||||
|
}
|
||||||
|
|
||||||
|
By("Expecting category should exists")
|
||||||
|
Eventually(func() bool {
|
||||||
|
f := &v1alpha1.HelmCategory{}
|
||||||
|
k8sClient.Get(context.Background(), key, f)
|
||||||
|
return !f.CreationTimestamp.IsZero()
|
||||||
|
}, timeout, interval).Should(BeTrue())
|
||||||
|
|
||||||
|
By("Update helm app version status")
|
||||||
|
Eventually(func() bool {
|
||||||
|
k8sClient.Get(context.Background(), types.NamespacedName{Name: appVer.Name}, appVer)
|
||||||
|
appVer.Status = v1alpha1.HelmApplicationVersionStatus{
|
||||||
|
State: v1alpha1.StateActive,
|
||||||
|
}
|
||||||
|
err := k8sClient.Status().Update(context.Background(), appVer)
|
||||||
|
return err == nil
|
||||||
|
}, timeout, interval).Should(BeTrue())
|
||||||
|
|
||||||
|
By("Wait for app status become active")
|
||||||
|
Eventually(func() bool {
|
||||||
|
appKey := types.NamespacedName{
|
||||||
|
Name: app.Name,
|
||||||
|
}
|
||||||
|
k8sClient.Get(context.Background(), appKey, app)
|
||||||
|
return app.State() == v1alpha1.StateActive
|
||||||
|
}, timeout, interval).Should(BeTrue())
|
||||||
|
|
||||||
|
By("Reconcile for `uncategorized` category")
|
||||||
|
Eventually(func() bool {
|
||||||
|
key := types.NamespacedName{Name: v1alpha1.UncategorizedId}
|
||||||
|
ctg := v1alpha1.HelmCategory{}
|
||||||
|
k8sClient.Get(context.Background(), key, &ctg)
|
||||||
|
|
||||||
|
return ctg.Status.Total == 1
|
||||||
|
}, timeout, interval).Should(BeTrue())
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
func createCtg() *v1alpha1.HelmCategory {
|
||||||
|
return &v1alpha1.HelmCategory{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: idutils.GetUuid36(v1alpha1.HelmCategoryIdPrefix),
|
||||||
|
},
|
||||||
|
Spec: v1alpha1.HelmCategorySpec{
|
||||||
|
Name: "dummy-ctg",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func createApp() *v1alpha1.HelmApplication {
|
||||||
|
return &v1alpha1.HelmApplication{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: idutils.GetUuid36(v1alpha1.HelmApplicationIdPrefix),
|
||||||
|
},
|
||||||
|
Spec: v1alpha1.HelmApplicationSpec{
|
||||||
|
Name: "dummy-chart",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func createAppVersion(appId string) *v1alpha1.HelmApplicationVersion {
|
||||||
|
return &v1alpha1.HelmApplicationVersion{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: idutils.GetUuid36(v1alpha1.HelmApplicationVersionIdPrefix),
|
||||||
|
Labels: map[string]string{
|
||||||
|
constants.ChartApplicationIdLabelKey: appId,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Spec: v1alpha1.HelmApplicationVersionSpec{
|
||||||
|
Metadata: &v1alpha1.Metadata{
|
||||||
|
Version: "0.0.1",
|
||||||
|
Name: "dummy-chart",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
472
pkg/controller/openpitrix/helmrelease/helm_release_controller.go
Normal file
472
pkg/controller/openpitrix/helmrelease/helm_release_controller.go
Normal file
@@ -0,0 +1,472 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package helmrelease
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
"k8s.io/client-go/kubernetes"
|
||||||
|
restclient "k8s.io/client-go/rest"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
"k8s.io/client-go/tools/clientcmd"
|
||||||
|
"k8s.io/client-go/tools/record"
|
||||||
|
"k8s.io/klog"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/client/informers/externalversions"
|
||||||
|
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix/helmrepoindex"
|
||||||
|
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix/helmwrapper"
|
||||||
|
"kubesphere.io/kubesphere/pkg/simple/client/s3"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/clusterclient"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/sliceutil"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/stringutils"
|
||||||
|
"math"
|
||||||
|
"path"
|
||||||
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
HelmReleaseFinalizer = "helmrelease.application.kubesphere.io"
|
||||||
|
IndexerName = "clusterNamespace"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrGetRepoFailed = errors.New("get repo failed")
|
||||||
|
ErrGetAppFailed = errors.New("get app failed")
|
||||||
|
ErrAppVersionDataIsEmpty = errors.New("app version data is empty")
|
||||||
|
ErrGetAppVersionFailed = errors.New("get app version failed")
|
||||||
|
ErrLoadChartFailed = errors.New("load chart failed")
|
||||||
|
ErrLoadChartFromStorageFailed = errors.New("load chart from storage failed")
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ reconcile.Reconciler = &ReconcileHelmRelease{}
|
||||||
|
|
||||||
|
// ReconcileWorkspace reconciles a Workspace object
|
||||||
|
type ReconcileHelmRelease struct {
|
||||||
|
StorageClient s3.Interface
|
||||||
|
KsFactory externalversions.SharedInformerFactory
|
||||||
|
clusterClients clusterclient.ClusterClients
|
||||||
|
client.Client
|
||||||
|
recorder record.EventRecorder
|
||||||
|
// mock helm install && uninstall
|
||||||
|
helmMock bool
|
||||||
|
informer cache.SharedIndexInformer
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// <==>upgrading===================
|
||||||
|
// | \
|
||||||
|
// creating===>active=====>deleting=>deleted |
|
||||||
|
// \ ^ / |
|
||||||
|
// \ | /======> /
|
||||||
|
// \=>failed<==========================
|
||||||
|
// Reconcile reads that state of the cluster for a helmreleases object and makes changes based on the state read
|
||||||
|
// and what is in the helmreleases.Spec
|
||||||
|
// +kubebuilder:rbac:groups=application.kubesphere.io,resources=helmreleases,verbs=get;list;watch;create;update;patch;delete
|
||||||
|
// +kubebuilder:rbac:groups=application.kubesphere.io,resources=helmreleases/status,verbs=get;update;patch
|
||||||
|
func (r *ReconcileHelmRelease) Reconcile(request reconcile.Request) (reconcile.Result, error) {
|
||||||
|
// Fetch the helmReleases instance
|
||||||
|
instance := &v1alpha1.HelmRelease{}
|
||||||
|
err := r.Get(context.TODO(), request.NamespacedName, instance)
|
||||||
|
if err != nil {
|
||||||
|
if apierrors.IsNotFound(err) {
|
||||||
|
// Object not found, return. Created objects are automatically garbage collected.
|
||||||
|
// For additional cleanup logic use finalizers.
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
// Error reading the object - requeue the request.
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if instance.Status.State == "" {
|
||||||
|
instance.Status.State = v1alpha1.HelmStatusCreating
|
||||||
|
instance.Status.LastUpdate = metav1.Now()
|
||||||
|
err = r.Status().Update(context.TODO(), instance)
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if instance.ObjectMeta.DeletionTimestamp.IsZero() {
|
||||||
|
// The object is not being deleted, so if it does not have our finalizer,
|
||||||
|
// then lets add the finalizer and update the object.
|
||||||
|
if !sliceutil.HasString(instance.ObjectMeta.Finalizers, HelmReleaseFinalizer) {
|
||||||
|
instance.ObjectMeta.Finalizers = append(instance.ObjectMeta.Finalizers, HelmReleaseFinalizer)
|
||||||
|
// add owner References
|
||||||
|
if err := r.Update(context.Background(), instance); err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// The object is being deleting
|
||||||
|
if sliceutil.HasString(instance.ObjectMeta.Finalizers, HelmReleaseFinalizer) {
|
||||||
|
|
||||||
|
klog.V(3).Infof("helm uninstall %s/%s from host cluster", instance.GetRlsNamespace(), instance.Spec.Name)
|
||||||
|
err := r.uninstallHelmRelease(instance)
|
||||||
|
if err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
})
|
||||||
|
if err := r.Update(context.Background(), instance); err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.reconcile(instance)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmRelease) GetChartData(rls *v1alpha1.HelmRelease) (chartName string, chartData []byte, err error) {
|
||||||
|
if rls.Spec.RepoId != "" && rls.Spec.RepoId != v1alpha1.AppStoreRepoId {
|
||||||
|
// load chart data from helm repo
|
||||||
|
repo := v1alpha1.HelmRepo{}
|
||||||
|
err := r.Get(context.TODO(), types.NamespacedName{Name: rls.Spec.RepoId}, &repo)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("get helm repo %s failed, error: %v", rls.Spec.RepoId, err)
|
||||||
|
return chartName, chartData, ErrGetRepoFailed
|
||||||
|
}
|
||||||
|
|
||||||
|
index, err := helmrepoindex.ByteArrayToSavedIndex([]byte(repo.Status.Data))
|
||||||
|
|
||||||
|
if version := index.GetApplicationVersion(rls.Spec.ApplicationId, rls.Spec.ApplicationVersionId); version != nil {
|
||||||
|
url := version.Spec.URLs[0]
|
||||||
|
if !(strings.HasPrefix(url, "https://") || strings.HasPrefix(url, "http://") || strings.HasPrefix(url, "s3://")) {
|
||||||
|
url = repo.Spec.Url + "/" + url
|
||||||
|
}
|
||||||
|
buf, err := helmrepoindex.LoadChart(context.TODO(), url, &repo.Spec.Credential)
|
||||||
|
if err != nil {
|
||||||
|
klog.Infof("load chart failed, error: %s", err)
|
||||||
|
return chartName, chartData, ErrLoadChartFailed
|
||||||
|
}
|
||||||
|
chartData = buf.Bytes()
|
||||||
|
chartName = version.Name
|
||||||
|
} else {
|
||||||
|
klog.Errorf("get app version: %s failed", rls.Spec.ApplicationVersionId)
|
||||||
|
return chartName, chartData, ErrGetAppVersionFailed
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// load chart data from helm application version
|
||||||
|
appVersion := &v1alpha1.HelmApplicationVersion{}
|
||||||
|
err = r.Get(context.TODO(), types.NamespacedName{Name: rls.Spec.ApplicationVersionId}, appVersion)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("get app version %s failed, error: %v", rls.Spec.ApplicationVersionId, err)
|
||||||
|
return chartName, chartData, ErrGetAppVersionFailed
|
||||||
|
}
|
||||||
|
|
||||||
|
chartData, err = r.StorageClient.Read(path.Join(appVersion.GetWorkspace(), appVersion.Name))
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("load chart from storage failed, error: %s", err)
|
||||||
|
return chartName, chartData, ErrLoadChartFromStorageFailed
|
||||||
|
}
|
||||||
|
|
||||||
|
chartName = appVersion.GetTrueName()
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmRelease) reconcile(instance *v1alpha1.HelmRelease) (reconcile.Result, error) {
|
||||||
|
|
||||||
|
if instance.Status.State == v1alpha1.HelmStatusActive && instance.Status.Version == instance.Spec.Version {
|
||||||
|
// check release status
|
||||||
|
return reconcile.Result{
|
||||||
|
// recheck release status after 10 minutes
|
||||||
|
RequeueAfter: 10 * time.Minute,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ft := failedTimes(instance.Status.DeployStatus)
|
||||||
|
if v1alpha1.HelmStatusFailed == instance.Status.State && ft > 0 {
|
||||||
|
// exponential backoff, max delay 180s
|
||||||
|
retryAfter := time.Duration(math.Min(math.Exp2(float64(ft)), 180)) * time.Second
|
||||||
|
var lastDeploy time.Time
|
||||||
|
|
||||||
|
if instance.Status.LastDeployed != nil {
|
||||||
|
lastDeploy = instance.Status.LastDeployed.Time
|
||||||
|
} else {
|
||||||
|
lastDeploy = instance.Status.LastUpdate.Time
|
||||||
|
}
|
||||||
|
if time.Now().Before(lastDeploy.Add(retryAfter)) {
|
||||||
|
return reconcile.Result{RequeueAfter: retryAfter}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
switch instance.Status.State {
|
||||||
|
case v1alpha1.HelmStatusDeleting:
|
||||||
|
// no operation
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
case v1alpha1.HelmStatusActive:
|
||||||
|
instance.Status.State = v1alpha1.HelmStatusUpgrading
|
||||||
|
err = r.Status().Update(context.TODO(), instance)
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
case v1alpha1.HelmStatusCreating:
|
||||||
|
// create new release
|
||||||
|
err = r.createOrUpgradeHelmRelease(instance, false)
|
||||||
|
case v1alpha1.HelmStatusFailed:
|
||||||
|
// check failed times
|
||||||
|
err = r.createOrUpgradeHelmRelease(instance, false)
|
||||||
|
case v1alpha1.HelmStatusUpgrading:
|
||||||
|
err = r.createOrUpgradeHelmRelease(instance, true)
|
||||||
|
case v1alpha1.HelmStatusRollbacking:
|
||||||
|
// TODO: rollback helm release
|
||||||
|
}
|
||||||
|
|
||||||
|
now := metav1.Now()
|
||||||
|
var deployStatus v1alpha1.HelmReleaseDeployStatus
|
||||||
|
if err != nil {
|
||||||
|
instance.Status.State = v1alpha1.HelmStatusFailed
|
||||||
|
instance.Status.Message = stringutils.ShortenString(err.Error(), v1alpha1.MsgLen)
|
||||||
|
deployStatus.Message = instance.Status.Message
|
||||||
|
deployStatus.State = v1alpha1.HelmStatusFailed
|
||||||
|
} else {
|
||||||
|
instance.Status.State = v1alpha1.StateActive
|
||||||
|
instance.Status.Message = ""
|
||||||
|
instance.Status.Version = instance.Spec.Version
|
||||||
|
deployStatus.State = v1alpha1.HelmStatusSuccessful
|
||||||
|
}
|
||||||
|
|
||||||
|
deployStatus.Time = now
|
||||||
|
instance.Status.LastUpdate = now
|
||||||
|
instance.Status.LastDeployed = &now
|
||||||
|
if len(instance.Status.DeployStatus) > 0 {
|
||||||
|
instance.Status.DeployStatus = append([]v1alpha1.HelmReleaseDeployStatus{deployStatus}, instance.Status.DeployStatus...)
|
||||||
|
if len(instance.Status.DeployStatus) >= 10 {
|
||||||
|
instance.Status.DeployStatus = instance.Status.DeployStatus[:10:10]
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
instance.Status.DeployStatus = append([]v1alpha1.HelmReleaseDeployStatus{deployStatus})
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.Status().Update(context.TODO(), instance)
|
||||||
|
if err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func failedTimes(status []v1alpha1.HelmReleaseDeployStatus) int {
|
||||||
|
count := 0
|
||||||
|
for i := range status {
|
||||||
|
if status[i].State == v1alpha1.HelmStatusFailed {
|
||||||
|
count += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmRelease) createOrUpgradeHelmRelease(rls *v1alpha1.HelmRelease, upgrade bool) error {
|
||||||
|
var chartData []byte
|
||||||
|
var err error
|
||||||
|
_, chartData, err = r.GetChartData(rls)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(chartData) == 0 {
|
||||||
|
klog.Errorf("empty chart data failed, release name %s, chart name: %s", rls.Name, rls.Spec.ChartName)
|
||||||
|
return ErrAppVersionDataIsEmpty
|
||||||
|
}
|
||||||
|
|
||||||
|
clusterName := rls.GetRlsCluster()
|
||||||
|
|
||||||
|
var clusterConfig string
|
||||||
|
if clusterName != "" && r.KsFactory != nil {
|
||||||
|
clusterConfig, err = r.clusterClients.GetClusterKubeconfig(clusterName)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("get cluster %s config failed", clusterConfig)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If clusterConfig is empty, this application will be installed in current host.
|
||||||
|
hw := helmwrapper.NewHelmWrapper(clusterConfig, rls.GetRlsNamespace(), rls.Spec.Name, helmwrapper.SetMock(r.helmMock))
|
||||||
|
var res helmwrapper.HelmRes
|
||||||
|
if upgrade {
|
||||||
|
res, err = hw.Upgrade(rls.Spec.ChartName, string(chartData), string(rls.Spec.Values))
|
||||||
|
} else {
|
||||||
|
res, err = hw.Install(rls.Spec.ChartName, string(chartData), string(rls.Spec.Values))
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return errors.New(res.Message)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmRelease) uninstallHelmRelease(rls *v1alpha1.HelmRelease) error {
|
||||||
|
if rls.Status.State != v1alpha1.HelmStatusDeleting {
|
||||||
|
rls.Status.State = v1alpha1.HelmStatusDeleting
|
||||||
|
rls.Status.LastUpdate = metav1.Now()
|
||||||
|
err := r.Status().Update(context.TODO(), rls)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
clusterName := rls.GetRlsCluster()
|
||||||
|
var clusterConfig string
|
||||||
|
var err error
|
||||||
|
if clusterName != "" && r.KsFactory != nil {
|
||||||
|
clusterConfig, err = r.clusterClients.GetClusterKubeconfig(clusterName)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("get cluster %s config failed", clusterConfig)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hw := helmwrapper.NewHelmWrapper(clusterConfig, rls.GetRlsNamespace(), rls.Spec.Name, helmwrapper.SetMock(r.helmMock))
|
||||||
|
|
||||||
|
res, err := hw.Uninstall()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return errors.New(res.Message)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmRelease) SetupWithManager(mgr ctrl.Manager) error {
|
||||||
|
r.Client = mgr.GetClient()
|
||||||
|
if r.KsFactory != nil {
|
||||||
|
r.clusterClients = clusterclient.NewClusterClient(r.KsFactory.Cluster().V1alpha1().Clusters())
|
||||||
|
|
||||||
|
r.informer = r.KsFactory.Application().V1alpha1().HelmReleases().Informer()
|
||||||
|
err := r.informer.AddIndexers(map[string]cache.IndexFunc{
|
||||||
|
IndexerName: func(obj interface{}) ([]string, error) {
|
||||||
|
rls := obj.(*v1alpha1.HelmRelease)
|
||||||
|
return []string{fmt.Sprintf("%s/%s", rls.GetRlsCluster(), rls.GetRlsNamespace())}, nil
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
<-mgr.Elected()
|
||||||
|
go r.cleanHelmReleaseWhenNamespaceDeleted()
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
|
return ctrl.NewControllerManagedBy(mgr).
|
||||||
|
For(&v1alpha1.HelmRelease{}).
|
||||||
|
Complete(r)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmRelease) getClusterConfig(cluster string) (string, error) {
|
||||||
|
if cluster == "" {
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
clusterConfig, err := r.clusterClients.GetClusterKubeconfig(cluster)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("get cluster %s config failed", clusterConfig)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return clusterConfig, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// When namespace have been removed from member cluster, we need clean all
|
||||||
|
// the helmRelease from the host cluster.
|
||||||
|
func (r *ReconcileHelmRelease) cleanHelmReleaseWhenNamespaceDeleted() {
|
||||||
|
|
||||||
|
ticker := time.NewTicker(2 * time.Minute)
|
||||||
|
for _ = range ticker.C {
|
||||||
|
keys := r.informer.GetIndexer().ListIndexFuncValues(IndexerName)
|
||||||
|
for _, clusterNs := range keys {
|
||||||
|
klog.V(4).Infof("clean resource in %s", clusterNs)
|
||||||
|
parts := stringutils.Split(clusterNs, "/")
|
||||||
|
if len(parts) == 2 {
|
||||||
|
cluster, ns := parts[0], parts[1]
|
||||||
|
items, err := r.informer.GetIndexer().ByIndex(IndexerName, clusterNs)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("get items from index failed, error: %s", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
kubeconfig, err := r.getClusterConfig(cluster)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("get cluster %s config failed, error: %s", cluster, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// connect to member or host cluster
|
||||||
|
var restConfig *restclient.Config
|
||||||
|
if kubeconfig == "" {
|
||||||
|
restConfig, err = restclient.InClusterConfig()
|
||||||
|
} else {
|
||||||
|
cc, err := clientcmd.NewClientConfigFromBytes([]byte(kubeconfig))
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("get client config for cluster %s failed, error: %s", cluster, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
restConfig, err = cc.ClientConfig()
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("build rest config for cluster %s failed, error: %s", cluster, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
clientSet, err := kubernetes.NewForConfig(restConfig)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("create client set failed, error: %s", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// check namespace exists or not
|
||||||
|
namespace, err := clientSet.CoreV1().Namespaces().Get(context.TODO(), ns, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if apierrors.IsNotFound(err) {
|
||||||
|
klog.V(2).Infof("delete all helm release in %s", clusterNs)
|
||||||
|
for ind := range items {
|
||||||
|
rls := items[ind].(*v1alpha1.HelmRelease)
|
||||||
|
err := r.Client.Delete(context.TODO(), rls)
|
||||||
|
if err != nil && !apierrors.IsNotFound(err) {
|
||||||
|
klog.Errorf("delete release %s failed", rls.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
klog.Errorf("get namespace %s from cluster %s failed, error: %s", ns, cluster, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for ind := range items {
|
||||||
|
rls := items[ind].(*v1alpha1.HelmRelease)
|
||||||
|
if namespace.CreationTimestamp.After(rls.CreationTimestamp.Time) {
|
||||||
|
klog.V(2).Infof("delete helm release %s in %s", rls.Namespace, clusterNs)
|
||||||
|
// todo, namespace is newer than helmRelease, should we delete the helmRelease
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
307
pkg/controller/openpitrix/helmrepo/helm_repo_controller.go
Normal file
307
pkg/controller/openpitrix/helmrepo/helm_repo_controller.go
Normal file
@@ -0,0 +1,307 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package helmrepo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/client-go/rest"
|
||||||
|
"k8s.io/client-go/tools/record"
|
||||||
|
"k8s.io/klog"
|
||||||
|
"k8s.io/utils/strings"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix/helmrepoindex"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/sliceutil"
|
||||||
|
"math"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/controller"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/handler"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/manager"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/source"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// min sync period in seconds
|
||||||
|
MinSyncPeriod = 180
|
||||||
|
|
||||||
|
MinRetryDuration = 60
|
||||||
|
MaxRetryDuration = 600
|
||||||
|
HelmRepoSyncStateLen = 10
|
||||||
|
|
||||||
|
StateSuccess = "successful"
|
||||||
|
StateFailed = "failed"
|
||||||
|
MessageLen = 512
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
HelmRepoFinalizer = "helmrepo.application.kubesphere.io"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Add creates a new Workspace Controller and adds it to the Manager with default RBAC. The Manager will set fields on the Controller
|
||||||
|
// and Start it when the Manager is Started.
|
||||||
|
func Add(mgr manager.Manager) error {
|
||||||
|
return add(mgr, newReconciler(mgr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// newReconciler returns a new reconcile.Reconciler
|
||||||
|
func newReconciler(mgr manager.Manager) reconcile.Reconciler {
|
||||||
|
return &ReconcileHelmRepo{Client: mgr.GetClient(), scheme: mgr.GetScheme(),
|
||||||
|
recorder: mgr.GetEventRecorderFor("workspace-controller"),
|
||||||
|
config: mgr.GetConfig(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// add adds a new Controller to mgr with r as the reconcile.Reconciler
|
||||||
|
func add(mgr manager.Manager, r reconcile.Reconciler) error {
|
||||||
|
// Create a new controller
|
||||||
|
c, err := controller.New("helm-repo-controller", mgr, controller.Options{Reconciler: r})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch for changes to HelmRelease
|
||||||
|
err = c.Watch(&source.Kind{Type: &v1alpha1.HelmRepo{}}, &handler.EnqueueRequestForObject{})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ reconcile.Reconciler = &ReconcileHelmRepo{}
|
||||||
|
|
||||||
|
// ReconcileWorkspace reconciles a Workspace object
|
||||||
|
type ReconcileHelmRepo struct {
|
||||||
|
client.Client
|
||||||
|
scheme *runtime.Scheme
|
||||||
|
recorder record.EventRecorder
|
||||||
|
config *rest.Config
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reconcile reads that state of the cluster for a helmrepoes object and makes changes based on the state read
|
||||||
|
// and what is in the helmreleases.Spec
|
||||||
|
// +kubebuilder:rbac:groups=application.kubesphere.io,resources=helmrepos,verbs=get;list;watch;create;update;patch;delete
|
||||||
|
// +kubebuilder:rbac:groups=application.kubesphere.io,resources=helmrepos/status,verbs=get;update;patch
|
||||||
|
func (r *ReconcileHelmRepo) Reconcile(request reconcile.Request) (reconcile.Result, error) {
|
||||||
|
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))
|
||||||
|
}()
|
||||||
|
// Fetch the helmrepoes instance
|
||||||
|
instance := &v1alpha1.HelmRepo{}
|
||||||
|
err := r.Client.Get(context.TODO(), request.NamespacedName, instance)
|
||||||
|
if err != nil {
|
||||||
|
if errors.IsNotFound(err) {
|
||||||
|
// Object not found, return. Created objects are automatically garbage collected.
|
||||||
|
// For additional cleanup logic use finalizers.
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
// Error reading the object - requeue the request.
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if instance.ObjectMeta.DeletionTimestamp.IsZero() {
|
||||||
|
if instance.Status.State == "" {
|
||||||
|
instance.Status.State = v1alpha1.RepoStateSyncing
|
||||||
|
return reconcile.Result{}, r.Status().Update(context.Background(), instance)
|
||||||
|
}
|
||||||
|
|
||||||
|
// The object is not being deleted, so if it does not have our finalizer,
|
||||||
|
// then lets add the finalizer and update the object.
|
||||||
|
if !sliceutil.HasString(instance.ObjectMeta.Finalizers, HelmRepoFinalizer) {
|
||||||
|
instance.ObjectMeta.Finalizers = append(instance.ObjectMeta.Finalizers, HelmRepoFinalizer)
|
||||||
|
if err := r.Update(context.Background(), instance); err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// The object is being deleted
|
||||||
|
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
|
||||||
|
})
|
||||||
|
if err := r.Update(context.Background(), instance); err != nil {
|
||||||
|
return reconcile.Result{}, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return reconcile.Result{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
copyInstance := instance.DeepCopy()
|
||||||
|
|
||||||
|
if copyInstance.Spec.SyncPeriod != 0 && copyInstance.Spec.SyncPeriod < MinSyncPeriod {
|
||||||
|
copyInstance.Spec.SyncPeriod = MinSyncPeriod
|
||||||
|
}
|
||||||
|
|
||||||
|
retryAfter := 0
|
||||||
|
if syncNow, after := needReSyncNow(copyInstance); syncNow {
|
||||||
|
// sync repo
|
||||||
|
syncErr := r.syncRepo(copyInstance)
|
||||||
|
state := copyInstance.Status.SyncState
|
||||||
|
now := metav1.Now()
|
||||||
|
if syncErr != nil {
|
||||||
|
// failed
|
||||||
|
state = append([]v1alpha1.HelmRepoSyncState{{
|
||||||
|
State: v1alpha1.RepoStateFailed,
|
||||||
|
Message: strings.ShortenString(syncErr.Error(), MessageLen),
|
||||||
|
SyncTime: &now,
|
||||||
|
}}, state...)
|
||||||
|
copyInstance.Status.State = v1alpha1.RepoStateFailed
|
||||||
|
} else {
|
||||||
|
state = append([]v1alpha1.HelmRepoSyncState{{
|
||||||
|
State: v1alpha1.RepoStateSuccessful,
|
||||||
|
SyncTime: &now,
|
||||||
|
}}, state...)
|
||||||
|
|
||||||
|
copyInstance.Status.Version = instance.Spec.Version
|
||||||
|
copyInstance.Status.State = v1alpha1.RepoStateSuccessful
|
||||||
|
}
|
||||||
|
|
||||||
|
copyInstance.Status.LastUpdateTime = &now
|
||||||
|
if len(state) > HelmRepoSyncStateLen {
|
||||||
|
state = state[0:HelmRepoSyncStateLen]
|
||||||
|
}
|
||||||
|
copyInstance.Status.SyncState = state
|
||||||
|
|
||||||
|
err = r.Client.Status().Update(context.TODO(), copyInstance)
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("update status failed, error: %s", err)
|
||||||
|
return reconcile.Result{
|
||||||
|
RequeueAfter: MinRetryDuration * time.Second,
|
||||||
|
}, err
|
||||||
|
} else {
|
||||||
|
retryAfter = MinSyncPeriod
|
||||||
|
if syncErr == nil {
|
||||||
|
retryAfter = copyInstance.Spec.SyncPeriod
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
retryAfter = after
|
||||||
|
}
|
||||||
|
|
||||||
|
return reconcile.Result{
|
||||||
|
RequeueAfter: time.Duration(retryAfter) * time.Second,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// needReSyncNow checks instance whether need resync now
|
||||||
|
// if resync is true, it should resync not
|
||||||
|
// if resync is false and after > 0, it should resync in after seconds
|
||||||
|
func needReSyncNow(instance *v1alpha1.HelmRepo) (syncNow bool, after int) {
|
||||||
|
|
||||||
|
now := time.Now()
|
||||||
|
if instance.Status.SyncState == nil || len(instance.Status.SyncState) == 0 {
|
||||||
|
return true, 0
|
||||||
|
}
|
||||||
|
|
||||||
|
states := instance.Status.SyncState
|
||||||
|
|
||||||
|
failedTimes := 0
|
||||||
|
for i := range states {
|
||||||
|
if states[i].State != StateSuccess {
|
||||||
|
failedTimes += 1
|
||||||
|
} else {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
state := states[0]
|
||||||
|
|
||||||
|
if instance.Spec.Version != instance.Status.Version && failedTimes == 0 {
|
||||||
|
// repo has a successful synchronization
|
||||||
|
diff := now.Sub(state.SyncTime.Time) / time.Second
|
||||||
|
if diff > 0 && diff < MinRetryDuration {
|
||||||
|
return false, int(math.Max(10, float64(MinRetryDuration-diff)))
|
||||||
|
} else {
|
||||||
|
return true, 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
period := 0
|
||||||
|
if state.State != StateSuccess {
|
||||||
|
period = MinRetryDuration * failedTimes
|
||||||
|
if period > MaxRetryDuration {
|
||||||
|
period = MaxRetryDuration
|
||||||
|
}
|
||||||
|
if now.After(state.SyncTime.Add(time.Duration(period) * time.Second)) {
|
||||||
|
return true, 0
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
period = instance.Spec.SyncPeriod
|
||||||
|
if period != 0 {
|
||||||
|
if period < MinSyncPeriod {
|
||||||
|
period = MinSyncPeriod
|
||||||
|
}
|
||||||
|
if now.After(state.SyncTime.Add(time.Duration(period) * time.Second)) {
|
||||||
|
return true, 0
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// need not to sync
|
||||||
|
return false, 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
after = int(state.SyncTime.Time.Add(time.Duration(period) * time.Second).Sub(now).Seconds())
|
||||||
|
|
||||||
|
// may be less than 10 second
|
||||||
|
if after <= 10 {
|
||||||
|
after = 10
|
||||||
|
}
|
||||||
|
return false, after
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReconcileHelmRepo) syncRepo(instance *v1alpha1.HelmRepo) error {
|
||||||
|
// 1. load index from helm repo
|
||||||
|
index, err := helmrepoindex.LoadRepoIndex(context.TODO(), instance.Spec.Url, &instance.Spec.Credential)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("load index failed, repo: %s, url: %s, err: %s", instance.GetTrueName(), instance.Spec.Url, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
existsSavedIndex := &helmrepoindex.SavedIndex{}
|
||||||
|
if len(instance.Status.Data) != 0 {
|
||||||
|
existsSavedIndex, err = helmrepoindex.ByteArrayToSavedIndex([]byte(instance.Status.Data))
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("json unmarshal failed, repo: %s, error: %s", instance.GetTrueName(), err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. merge new index with old index which is stored in crd
|
||||||
|
savedIndex := helmrepoindex.MergeRepoIndex(index, existsSavedIndex)
|
||||||
|
|
||||||
|
// 3. save index in crd
|
||||||
|
data, err := savedIndex.Bytes()
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorf("json marshal failed, error: %s", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
instance.Status.Data = string(data)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package helmrepo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/onsi/gomega/gexec"
|
||||||
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
|
"k8s.io/klog/klogr"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
|
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/envtest"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/envtest/printer"
|
||||||
|
)
|
||||||
|
|
||||||
|
// These tests use Ginkgo (BDD-style Go testing framework). Refer to
|
||||||
|
// http://onsi.github.io/ginkgo/ to learn more about Ginkgo.
|
||||||
|
|
||||||
|
var k8sClient client.Client
|
||||||
|
var k8sManager ctrl.Manager
|
||||||
|
var testEnv *envtest.Environment
|
||||||
|
|
||||||
|
func TestHelmRepoController(t *testing.T) {
|
||||||
|
RegisterFailHandler(Fail)
|
||||||
|
RunSpecsWithDefaultAndCustomReporters(t,
|
||||||
|
"HelmRepo Controller Test Suite",
|
||||||
|
[]Reporter{printer.NewlineReporter{}})
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ = BeforeSuite(func(done Done) {
|
||||||
|
logf.SetLogger(klogr.New())
|
||||||
|
|
||||||
|
By("bootstrapping test environment")
|
||||||
|
t := true
|
||||||
|
if os.Getenv("TEST_USE_EXISTING_CLUSTER") == "true" {
|
||||||
|
testEnv = &envtest.Environment{
|
||||||
|
UseExistingCluster: &t,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
testEnv = &envtest.Environment{
|
||||||
|
CRDDirectoryPaths: []string{filepath.Join("..", "..", "..", "..", "config", "crds")},
|
||||||
|
AttachControlPlaneOutput: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg, err := testEnv.Start()
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(cfg).ToNot(BeNil())
|
||||||
|
|
||||||
|
err = apis.AddToScheme(scheme.Scheme)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
k8sManager, err = ctrl.NewManager(cfg, ctrl.Options{
|
||||||
|
Scheme: scheme.Scheme,
|
||||||
|
MetricsBindAddress: "0",
|
||||||
|
})
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
err = Add(k8sManager)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
err = k8sManager.Start(ctrl.SetupSignalHandler())
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
}()
|
||||||
|
|
||||||
|
k8sClient = k8sManager.GetClient()
|
||||||
|
Expect(k8sClient).ToNot(BeNil())
|
||||||
|
|
||||||
|
close(done)
|
||||||
|
}, 60)
|
||||||
|
|
||||||
|
var _ = AfterSuite(func() {
|
||||||
|
By("tearing down the test environment")
|
||||||
|
gexec.KillAndWait(5 * time.Second)
|
||||||
|
err := testEnv.Stop()
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
})
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package helmrepo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/idutils"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var repoUrl = "https://charts.kubesphere.io/main"
|
||||||
|
|
||||||
|
var _ = Describe("helmRepo", func() {
|
||||||
|
|
||||||
|
const timeout = time.Second * 360
|
||||||
|
const interval = time.Second * 1
|
||||||
|
|
||||||
|
repo := createRepo()
|
||||||
|
|
||||||
|
BeforeEach(func() {
|
||||||
|
err := k8sClient.Create(context.Background(), repo)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
})
|
||||||
|
|
||||||
|
Context("Helm Repo Controller", func() {
|
||||||
|
It("Should success", func() {
|
||||||
|
key := types.NamespacedName{
|
||||||
|
Name: repo.Name,
|
||||||
|
}
|
||||||
|
|
||||||
|
By("Expecting repo state is successful")
|
||||||
|
Eventually(func() bool {
|
||||||
|
repo := &v1alpha1.HelmRepo{}
|
||||||
|
k8sClient.Get(context.Background(), key, repo)
|
||||||
|
return repo.Status.State == v1alpha1.RepoStateSuccessful && len(repo.Status.Data) > 0
|
||||||
|
}, timeout, interval).Should(BeTrue())
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
func createRepo() *v1alpha1.HelmRepo {
|
||||||
|
return &v1alpha1.HelmRepo{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: idutils.GetUuid36(v1alpha1.HelmRepoIdPrefix),
|
||||||
|
},
|
||||||
|
Spec: v1alpha1.HelmRepoSpec{
|
||||||
|
Url: repoUrl,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -25,16 +25,19 @@ import (
|
|||||||
rbacv1 "k8s.io/api/rbac/v1"
|
rbacv1 "k8s.io/api/rbac/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/util/yaml"
|
"k8s.io/apimachinery/pkg/util/yaml"
|
||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
iamv1alpha2 "kubesphere.io/kubesphere/pkg/apis/iam/v1alpha2"
|
iamv1alpha2 "kubesphere.io/kubesphere/pkg/apis/iam/v1alpha2"
|
||||||
tenantv1alpha1 "kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha1"
|
tenantv1alpha1 "kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha1"
|
||||||
tenantv1alpha2 "kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha2"
|
tenantv1alpha2 "kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha2"
|
||||||
typesv1beta1 "kubesphere.io/kubesphere/pkg/apis/types/v1beta1"
|
typesv1beta1 "kubesphere.io/kubesphere/pkg/apis/types/v1beta1"
|
||||||
"kubesphere.io/kubesphere/pkg/constants"
|
"kubesphere.io/kubesphere/pkg/constants"
|
||||||
controllerutils "kubesphere.io/kubesphere/pkg/controller/utils/controller"
|
controllerutils "kubesphere.io/kubesphere/pkg/controller/utils/controller"
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/sliceutil"
|
||||||
"reflect"
|
"reflect"
|
||||||
ctrl "sigs.k8s.io/controller-runtime"
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
@@ -43,7 +46,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
controllerName = "workspacetemplate-controller"
|
controllerName = "workspacetemplate-controller"
|
||||||
|
workspaceTemplateFinalizer = "finalizers.workspacetemplate.kubesphere.io"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Reconciler reconciles a WorkspaceRoleBinding object
|
// Reconciler reconciles a WorkspaceRoleBinding object
|
||||||
@@ -88,6 +92,37 @@ func (r *Reconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
|
|||||||
return ctrl.Result{}, client.IgnoreNotFound(err)
|
return ctrl.Result{}, client.IgnoreNotFound(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if workspaceTemplate.ObjectMeta.DeletionTimestamp.IsZero() {
|
||||||
|
// The object is not being deleted, so if it does not have our finalizer,
|
||||||
|
// then lets add the finalizer and update the object.
|
||||||
|
if !sliceutil.HasString(workspaceTemplate.ObjectMeta.Finalizers, workspaceTemplateFinalizer) {
|
||||||
|
workspaceTemplate.ObjectMeta.Finalizers = append(workspaceTemplate.ObjectMeta.Finalizers, workspaceTemplateFinalizer)
|
||||||
|
if err := r.Update(rootCtx, workspaceTemplate); err != nil {
|
||||||
|
return ctrl.Result{}, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// The object is being deleted
|
||||||
|
if sliceutil.HasString(workspaceTemplate.ObjectMeta.Finalizers, workspaceTemplateFinalizer) {
|
||||||
|
if err := r.deleteOpenPitrixResourcesInWorkspace(rootCtx, workspaceTemplate.Name); err != nil {
|
||||||
|
logger.Error(err, "delete resource in workspace template failed")
|
||||||
|
return ctrl.Result{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove our finalizer from the list and update it.
|
||||||
|
workspaceTemplate.ObjectMeta.Finalizers = sliceutil.RemoveString(workspaceTemplate.ObjectMeta.Finalizers, func(item string) bool {
|
||||||
|
return item == workspaceTemplateFinalizer
|
||||||
|
})
|
||||||
|
logger.V(4).Info("update workspace template")
|
||||||
|
if err := r.Update(rootCtx, workspaceTemplate); err != nil {
|
||||||
|
logger.Error(err, "update workspace template failed")
|
||||||
|
return ctrl.Result{}, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Our finalizer has finished, so the reconciler can do nothing.
|
||||||
|
return ctrl.Result{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
if r.MultiClusterEnabled {
|
if r.MultiClusterEnabled {
|
||||||
if err := r.multiClusterSync(rootCtx, logger, workspaceTemplate); err != nil {
|
if err := r.multiClusterSync(rootCtx, logger, workspaceTemplate); err != nil {
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
@@ -301,6 +336,81 @@ func (r *Reconciler) initManagerRoleBinding(ctx context.Context, logger logr.Log
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
func (r *Reconciler) deleteOpenPitrixResourcesInWorkspace(ctx context.Context, ws string) error {
|
||||||
|
if len(ws) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
// helm release, apps and appVersion only exist in host cluster. Delete these resource in workspace template controller
|
||||||
|
if err = r.deleteHelmReleases(ctx, ws); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = r.deleteHelmApps(ctx, ws); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = r.deleteHelmRepos(ctx, ws); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Reconciler) deleteHelmApps(ctx context.Context, ws string) error {
|
||||||
|
if len(ws) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
apps := v1alpha1.HelmApplicationList{}
|
||||||
|
err := r.List(ctx, &apps, &client.ListOptions{LabelSelector: labels.SelectorFromSet(map[string]string{
|
||||||
|
constants.WorkspaceLabelKey: ws}),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for i := range apps.Items {
|
||||||
|
state := apps.Items[i].Status.State
|
||||||
|
// active and suspended applications belong to app store, they should not be removed here.
|
||||||
|
if !(state == v1alpha1.StateActive || state == v1alpha1.StateSuspended) {
|
||||||
|
err = r.Delete(ctx, &apps.Items[i])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete all helm releases in the workspace ws
|
||||||
|
func (r *Reconciler) deleteHelmReleases(ctx context.Context, ws string) error {
|
||||||
|
if len(ws) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
rls := &v1alpha1.HelmRelease{}
|
||||||
|
err := r.DeleteAllOf(ctx, rls, &client.DeleteAllOfOptions{
|
||||||
|
ListOptions: client.ListOptions{LabelSelector: labels.SelectorFromSet(map[string]string{
|
||||||
|
constants.WorkspaceLabelKey: ws,
|
||||||
|
}),
|
||||||
|
}})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Reconciler) deleteHelmRepos(ctx context.Context, ws string) error {
|
||||||
|
if len(ws) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
rls := &v1alpha1.HelmRepo{}
|
||||||
|
err := r.DeleteAllOf(ctx, rls, &client.DeleteAllOfOptions{
|
||||||
|
ListOptions: client.ListOptions{LabelSelector: labels.SelectorFromSet(map[string]string{
|
||||||
|
constants.WorkspaceLabelKey: ws,
|
||||||
|
}),
|
||||||
|
}})
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func workspaceRoleBindingChanger(workspaceRoleBinding *iamv1alpha2.WorkspaceRoleBinding, workspace, username, workspaceRoleName string) controllerutil.MutateFn {
|
func workspaceRoleBindingChanger(workspaceRoleBinding *iamv1alpha2.WorkspaceRoleBinding, workspace, username, workspaceRoleName string) controllerutil.MutateFn {
|
||||||
return func() error {
|
return func() error {
|
||||||
|
|||||||
@@ -18,9 +18,11 @@ package workspacetemplate
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/onsi/gomega/gexec"
|
"github.com/onsi/gomega/gexec"
|
||||||
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
"k8s.io/klog/klogr"
|
"k8s.io/klog/klogr"
|
||||||
"kubesphere.io/kubesphere/pkg/apis"
|
"kubesphere.io/kubesphere/pkg/apis"
|
||||||
|
helmappscheme "kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
ctrl "sigs.k8s.io/controller-runtime"
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
@@ -78,6 +80,8 @@ var _ = BeforeSuite(func(done Done) {
|
|||||||
})
|
})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
utilruntime.Must(helmappscheme.AddToScheme(k8sManager.GetScheme()))
|
||||||
|
|
||||||
err = (&Reconciler{}).SetupWithManager(k8sManager)
|
err = (&Reconciler{}).SetupWithManager(k8sManager)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import (
|
|||||||
monitorhle "kubesphere.io/kubesphere/pkg/kapis/monitoring/v1alpha3"
|
monitorhle "kubesphere.io/kubesphere/pkg/kapis/monitoring/v1alpha3"
|
||||||
resourcev1alpha3 "kubesphere.io/kubesphere/pkg/models/resources/v1alpha3/resource"
|
resourcev1alpha3 "kubesphere.io/kubesphere/pkg/models/resources/v1alpha3/resource"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type meterHandler interface {
|
type meterHandler interface {
|
||||||
@@ -40,6 +39,6 @@ type meterHandler interface {
|
|||||||
HandlePVCMetersQuery(req *restful.Request, resp *restful.Response)
|
HandlePVCMetersQuery(req *restful.Request, resp *restful.Response)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newHandler(k kubernetes.Interface, m monitoring.Interface, f informers.InformerFactory, o openpitrix.Client, resourceGetter *resourcev1alpha3.ResourceGetter) meterHandler {
|
func newHandler(k kubernetes.Interface, m monitoring.Interface, f informers.InformerFactory, resourceGetter *resourcev1alpha3.ResourceGetter) meterHandler {
|
||||||
return monitorhle.NewHandler(k, m, nil, f, o, resourceGetter)
|
return monitorhle.NewHandler(k, m, nil, f, resourceGetter)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ import (
|
|||||||
model "kubesphere.io/kubesphere/pkg/models/monitoring"
|
model "kubesphere.io/kubesphere/pkg/models/monitoring"
|
||||||
resourcev1alpha3 "kubesphere.io/kubesphere/pkg/models/resources/v1alpha3/resource"
|
resourcev1alpha3 "kubesphere.io/kubesphere/pkg/models/resources/v1alpha3/resource"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
"sigs.k8s.io/controller-runtime/pkg/cache"
|
"sigs.k8s.io/controller-runtime/pkg/cache"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -42,10 +41,10 @@ const (
|
|||||||
|
|
||||||
var GroupVersion = schema.GroupVersion{Group: groupName, Version: "v1alpha1"}
|
var GroupVersion = schema.GroupVersion{Group: groupName, Version: "v1alpha1"}
|
||||||
|
|
||||||
func AddToContainer(c *restful.Container, k8sClient kubernetes.Interface, meteringClient monitoring.Interface, factory informers.InformerFactory, opClient openpitrix.Client, cache cache.Cache) error {
|
func AddToContainer(c *restful.Container, k8sClient kubernetes.Interface, meteringClient monitoring.Interface, factory informers.InformerFactory, cache cache.Cache) error {
|
||||||
ws := runtime.NewWebService(GroupVersion)
|
ws := runtime.NewWebService(GroupVersion)
|
||||||
|
|
||||||
h := newHandler(k8sClient, meteringClient, factory, opClient, resourcev1alpha3.NewResourceGetter(factory, cache))
|
h := newHandler(k8sClient, meteringClient, factory, resourcev1alpha3.NewResourceGetter(factory, cache))
|
||||||
|
|
||||||
ws.Route(ws.GET("/cluster").
|
ws.Route(ws.GET("/cluster").
|
||||||
To(h.HandleClusterMetersQuery).
|
To(h.HandleClusterMetersQuery).
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import (
|
|||||||
model "kubesphere.io/kubesphere/pkg/models/monitoring"
|
model "kubesphere.io/kubesphere/pkg/models/monitoring"
|
||||||
resourcev1alpha3 "kubesphere.io/kubesphere/pkg/models/resources/v1alpha3/resource"
|
resourcev1alpha3 "kubesphere.io/kubesphere/pkg/models/resources/v1alpha3/resource"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type handler struct {
|
type handler struct {
|
||||||
@@ -38,8 +37,8 @@ type handler struct {
|
|||||||
mo model.MonitoringOperator
|
mo model.MonitoringOperator
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewHandler(k kubernetes.Interface, monitoringClient monitoring.Interface, metricsClient monitoring.Interface, f informers.InformerFactory, o openpitrix.Client, resourceGetter *resourcev1alpha3.ResourceGetter) *handler {
|
func NewHandler(k kubernetes.Interface, monitoringClient monitoring.Interface, metricsClient monitoring.Interface, f informers.InformerFactory, resourceGetter *resourcev1alpha3.ResourceGetter) *handler {
|
||||||
return &handler{k, model.NewMonitoringOperator(monitoringClient, metricsClient, k, f, o, resourceGetter)}
|
return &handler{k, model.NewMonitoringOperator(monitoringClient, metricsClient, k, f, resourceGetter)}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h handler) handleKubeSphereMetricsQuery(req *restful.Request, resp *restful.Response) {
|
func (h handler) handleKubeSphereMetricsQuery(req *restful.Request, resp *restful.Response) {
|
||||||
|
|||||||
@@ -222,8 +222,7 @@ func TestParseRequestParams(t *testing.T) {
|
|||||||
t.Run(fmt.Sprintf("%d", i), func(t *testing.T) {
|
t.Run(fmt.Sprintf("%d", i), func(t *testing.T) {
|
||||||
client := fake.NewSimpleClientset(&tt.namespace)
|
client := fake.NewSimpleClientset(&tt.namespace)
|
||||||
fakeInformerFactory := informers.NewInformerFactories(client, nil, nil, nil, nil, nil)
|
fakeInformerFactory := informers.NewInformerFactories(client, nil, nil, nil, nil, nil)
|
||||||
handler := NewHandler(client, nil, nil, fakeInformerFactory, nil, nil)
|
handler := NewHandler(client, nil, nil, fakeInformerFactory, nil)
|
||||||
|
|
||||||
result, err := handler.makeQueryOptions(tt.params, tt.lvl)
|
result, err := handler.makeQueryOptions(tt.params, tt.lvl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !tt.expectedErr {
|
if !tt.expectedErr {
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import (
|
|||||||
"kubesphere.io/kubesphere/pkg/informers"
|
"kubesphere.io/kubesphere/pkg/informers"
|
||||||
model "kubesphere.io/kubesphere/pkg/models/monitoring"
|
model "kubesphere.io/kubesphere/pkg/models/monitoring"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
"kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -39,10 +38,10 @@ const (
|
|||||||
|
|
||||||
var GroupVersion = schema.GroupVersion{Group: groupName, Version: "v1alpha3"}
|
var GroupVersion = schema.GroupVersion{Group: groupName, Version: "v1alpha3"}
|
||||||
|
|
||||||
func AddToContainer(c *restful.Container, k8sClient kubernetes.Interface, monitoringClient monitoring.Interface, metricsClient monitoring.Interface, factory informers.InformerFactory, opClient openpitrix.Client) error {
|
func AddToContainer(c *restful.Container, k8sClient kubernetes.Interface, monitoringClient monitoring.Interface, metricsClient monitoring.Interface, factory informers.InformerFactory) error {
|
||||||
ws := runtime.NewWebService(GroupVersion)
|
ws := runtime.NewWebService(GroupVersion)
|
||||||
|
|
||||||
h := NewHandler(k8sClient, monitoringClient, metricsClient, factory, opClient, nil)
|
h := NewHandler(k8sClient, monitoringClient, metricsClient, factory, nil)
|
||||||
|
|
||||||
ws.Route(ws.GET("/kubesphere").
|
ws.Route(ws.GET("/kubesphere").
|
||||||
To(h.handleKubeSphereMetricsQuery).
|
To(h.handleKubeSphereMetricsQuery).
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
191
pkg/kapis/openpitrix/v2alpha1/handler.go
Normal file
191
pkg/kapis/openpitrix/v2alpha1/handler.go
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v2alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/emicklei/go-restful"
|
||||||
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/klog"
|
||||||
|
"kubesphere.io/kubesphere/pkg/api"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apiserver/query"
|
||||||
|
"kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||||
|
"kubesphere.io/kubesphere/pkg/informers"
|
||||||
|
openpitrix "kubesphere.io/kubesphere/pkg/models/openpitrix/v2alpha1"
|
||||||
|
openpitrixoptions "kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
||||||
|
)
|
||||||
|
|
||||||
|
type openpitrixHandler struct {
|
||||||
|
openpitrix openpitrix.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
func newOpenpitrixHandler(ksInformers informers.InformerFactory, ksClient versioned.Interface, options *openpitrixoptions.Options) *openpitrixHandler {
|
||||||
|
return &openpitrixHandler{
|
||||||
|
openpitrix.NewOpenPitrixOperator(ksInformers),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *openpitrixHandler) DescribeRepo(req *restful.Request, resp *restful.Response) {
|
||||||
|
repoId := req.PathParameter("repo")
|
||||||
|
|
||||||
|
result, err := h.openpitrix.DescribeRepo(repoId)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if apierrors.IsNotFound(err) {
|
||||||
|
api.HandleNotFound(resp, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
klog.Errorln(err)
|
||||||
|
api.HandleInternalError(resp, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.WriteEntity(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *openpitrixHandler) ListRepos(req *restful.Request, resp *restful.Response) {
|
||||||
|
q := query.ParseQueryParameter(req)
|
||||||
|
workspace := req.PathParameter("workspace")
|
||||||
|
|
||||||
|
result, err := h.openpitrix.ListRepos(workspace, q)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorln(err)
|
||||||
|
api.HandleInternalError(resp, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.WriteEntity(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *openpitrixHandler) DescribeApplication(req *restful.Request, resp *restful.Response) {
|
||||||
|
clusterName := req.PathParameter("cluster")
|
||||||
|
workspace := req.PathParameter("workspace")
|
||||||
|
applicationId := req.PathParameter("application")
|
||||||
|
namespace := req.PathParameter("namespace")
|
||||||
|
|
||||||
|
app, err := h.openpitrix.DescribeApplication(workspace, clusterName, namespace, applicationId)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorln(err)
|
||||||
|
api.HandleInternalError(resp, nil, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.WriteEntity(app)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *openpitrixHandler) ListApplications(req *restful.Request, resp *restful.Response) {
|
||||||
|
clusterName := req.PathParameter("cluster")
|
||||||
|
namespace := req.PathParameter("namespace")
|
||||||
|
workspace := req.PathParameter("workspace")
|
||||||
|
q := query.ParseQueryParameter(req)
|
||||||
|
|
||||||
|
result, err := h.openpitrix.ListApplications(workspace, clusterName, namespace, q)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorln(err)
|
||||||
|
api.HandleInternalError(resp, nil, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.WriteAsJson(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *openpitrixHandler) ListApps(req *restful.Request, resp *restful.Response) {
|
||||||
|
workspace := req.PathParameter("workspace")
|
||||||
|
q := query.ParseQueryParameter(req)
|
||||||
|
|
||||||
|
result, err := h.openpitrix.ListApps(workspace, q)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorln(err)
|
||||||
|
api.HandleInternalError(resp, nil, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.WriteAsJson(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *openpitrixHandler) ListAppVersion(req *restful.Request, resp *restful.Response) {
|
||||||
|
workspace := req.PathParameter("workspace")
|
||||||
|
app := req.PathParameter("app")
|
||||||
|
q := query.ParseQueryParameter(req)
|
||||||
|
|
||||||
|
result, err := h.openpitrix.ListAppVersions(workspace, app, q)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorln(err)
|
||||||
|
api.HandleInternalError(resp, nil, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.WriteAsJson(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *openpitrixHandler) ListCategories(req *restful.Request, resp *restful.Response) {
|
||||||
|
q := query.ParseQueryParameter(req)
|
||||||
|
|
||||||
|
result, err := h.openpitrix.ListCategories(q)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorln(err)
|
||||||
|
api.HandleInternalError(resp, nil, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.WriteAsJson(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *openpitrixHandler) DescribeCategory(req *restful.Request, resp *restful.Response) {
|
||||||
|
id := req.PathParameter("category")
|
||||||
|
|
||||||
|
result, err := h.openpitrix.DescribeCategory(id)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorln(err)
|
||||||
|
api.HandleInternalError(resp, nil, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.WriteAsJson(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *openpitrixHandler) DescribeApp(req *restful.Request, resp *restful.Response) {
|
||||||
|
app := req.PathParameter("app")
|
||||||
|
|
||||||
|
result, err := h.openpitrix.DescribeApp(app)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorln(err)
|
||||||
|
api.HandleInternalError(resp, nil, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.WriteAsJson(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *openpitrixHandler) DescribeAppVersion(req *restful.Request, resp *restful.Response) {
|
||||||
|
id := req.PathParameter("version")
|
||||||
|
|
||||||
|
result, err := h.openpitrix.DescribeAppVersion(id)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
klog.Errorln(err)
|
||||||
|
api.HandleInternalError(resp, nil, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.WriteAsJson(result)
|
||||||
|
}
|
||||||
243
pkg/kapis/openpitrix/v2alpha1/register.go
Normal file
243
pkg/kapis/openpitrix/v2alpha1/register.go
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The KubeSphere 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v2alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/emicklei/go-restful"
|
||||||
|
"github.com/emicklei/go-restful-openapi"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"kubesphere.io/kubesphere/pkg/api"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apis/application/v1alpha1"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apiserver/query"
|
||||||
|
"kubesphere.io/kubesphere/pkg/apiserver/runtime"
|
||||||
|
"kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||||
|
"kubesphere.io/kubesphere/pkg/constants"
|
||||||
|
"kubesphere.io/kubesphere/pkg/informers"
|
||||||
|
"kubesphere.io/kubesphere/pkg/models/openpitrix"
|
||||||
|
"kubesphere.io/kubesphere/pkg/server/params"
|
||||||
|
openpitrixoptions "kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
GroupName = "openpitrix.io"
|
||||||
|
)
|
||||||
|
|
||||||
|
var GroupVersion = schema.GroupVersion{Group: GroupName, Version: "v2alpha1"}
|
||||||
|
|
||||||
|
func AddToContainer(c *restful.Container, ksInfomrers informers.InformerFactory, ksClient versioned.Interface, options *openpitrixoptions.Options) error {
|
||||||
|
webservice := runtime.NewWebService(GroupVersion)
|
||||||
|
|
||||||
|
handler := newOpenpitrixHandler(ksInfomrers, ksClient, options)
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/workspaces/{workspace}/repos").
|
||||||
|
To(handler.ListRepos).
|
||||||
|
Doc("List repositories in the specified workspace").
|
||||||
|
Param(webservice.PathParameter("workspace", "the name of the workspace.").Required(true)).
|
||||||
|
Param(webservice.QueryParameter(params.ReverseParam, "sort parameters, e.g. reverse=true")).
|
||||||
|
Param(webservice.QueryParameter(params.OrderByParam, "sort parameters, e.g. orderBy=createTime")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterName, "name used to do filtering").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterPage, "page").Required(false).DataFormat("page=%d").DefaultValue("page=1")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterLimit, "limit").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterAscending, "sort parameters, e.g. reverse=true").Required(false).DefaultValue("ascending=false")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterOrderBy, "sort parameters, e.g. orderBy=createTime")).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, api.ListResult{Items: []interface{}{v1alpha1.HelmRepo{}}}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/workspaces/{workspace}/repos/{repo}").
|
||||||
|
To(handler.DescribeRepo).
|
||||||
|
Doc("Describe the specified repository in the specified workspace").
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, v1alpha1.HelmRepo{}).
|
||||||
|
Param(webservice.PathParameter("repo", "repo id")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/applications").
|
||||||
|
Deprecate().
|
||||||
|
To(handler.ListApplications).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, api.ListResult{Items: []interface{}{v1alpha1.HelmRepo{}}}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Doc("List all applications").
|
||||||
|
Param(webservice.QueryParameter(params.ReverseParam, "sort parameters, e.g. reverse=true")).
|
||||||
|
Param(webservice.QueryParameter(params.OrderByParam, "sort parameters, e.g. orderBy=createTime")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterName, "name used to do filtering").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterPage, "page").Required(false).DataFormat("page=%d").DefaultValue("page=1")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterLimit, "limit").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterAscending, "sort parameters, e.g. reverse=true").Required(false).DefaultValue("ascending=false")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterOrderBy, "sort parameters, e.g. orderBy=createTime")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/workspaces/{workspace}/clusters/{cluster}/namespaces/{namespace}/applications").
|
||||||
|
To(handler.ListApplications).
|
||||||
|
Doc("List all applications within the specified namespace").
|
||||||
|
Param(webservice.PathParameter("namespace", "the name of the namespace.").Required(true)).
|
||||||
|
Param(webservice.PathParameter("cluster", "the name of the cluster.").Required(true)).
|
||||||
|
Param(webservice.QueryParameter(params.ReverseParam, "sort parameters, e.g. reverse=true")).
|
||||||
|
Param(webservice.QueryParameter(params.OrderByParam, "sort parameters, e.g. orderBy=createTime")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterName, "name used to do filtering").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterPage, "page").Required(false).DataFormat("page=%d").DefaultValue("page=1")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterLimit, "limit").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterAscending, "sort parameters, e.g. reverse=true").Required(false).DefaultValue("ascending=false")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterOrderBy, "sort parameters, e.g. orderBy=createTime")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/workspaces/{workspace}/applications").
|
||||||
|
To(handler.ListApplications).
|
||||||
|
Param(webservice.PathParameter("workspace", "the name of the workspace.").Required(true)).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, api.ListResult{Items: []interface{}{v1alpha1.HelmRepo{}}}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Doc("List all applications within the specified workspace").
|
||||||
|
Param(webservice.QueryParameter(params.ReverseParam, "sort parameters, e.g. reverse=true")).
|
||||||
|
Param(webservice.QueryParameter(params.OrderByParam, "sort parameters, e.g. orderBy=createTime")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterName, "name used to do filtering").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterPage, "page").Required(false).DataFormat("page=%d").DefaultValue("page=1")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterLimit, "limit").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterAscending, "sort parameters, e.g. reverse=true").Required(false).DefaultValue("ascending=false")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterOrderBy, "sort parameters, e.g. orderBy=createTime")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/applications/{application}").
|
||||||
|
To(handler.DescribeApplication).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, v1alpha1.HelmRelease{}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.NamespaceResourcesTag}).
|
||||||
|
Doc("Describe the specified application of the namespace").
|
||||||
|
Param(webservice.PathParameter("cluster", "the name of the cluster.").Required(true)).
|
||||||
|
Param(webservice.PathParameter("namespace", "the name of the project").Required(true)).
|
||||||
|
Param(webservice.PathParameter("application", "the id of the application").Required(true)))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/workspaces/{workspace}/applications/{application} ").
|
||||||
|
To(handler.DescribeApplication).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, v1alpha1.HelmRelease{}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.NamespaceResourcesTag}).
|
||||||
|
Doc("Describe the specified application of the namespace").
|
||||||
|
Param(webservice.PathParameter("cluster", "the name of the cluster.").Required(true)).
|
||||||
|
Param(webservice.PathParameter("namespace", "the name of the project").Required(true)).
|
||||||
|
Param(webservice.PathParameter("application", "the id of the application").Required(true)))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/workspaces/{workspace}/clusters/{cluster}/namespaces/{namespace}/applications/{application}").
|
||||||
|
To(handler.DescribeApplication).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, v1alpha1.HelmRelease{}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.NamespaceResourcesTag}).
|
||||||
|
Doc("Describe the specified application of the namespace").
|
||||||
|
Param(webservice.PathParameter("cluster", "the name of the cluster.").Required(true)).
|
||||||
|
Param(webservice.PathParameter("namespace", "the name of the project").Required(true)).
|
||||||
|
Param(webservice.PathParameter("application", "the id of the application").Required(true)))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/apps").
|
||||||
|
To(handler.ListApps).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, api.ListResult{Items: []interface{}{v1alpha1.HelmRepo{}}}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Doc("List all apps").
|
||||||
|
Param(webservice.QueryParameter(params.ReverseParam, "sort parameters, e.g. reverse=true")).
|
||||||
|
Param(webservice.QueryParameter(params.OrderByParam, "sort parameters, e.g. orderBy=createTime")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterName, "name used to do filtering").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterPage, "page").Required(false).DataFormat("page=%d").DefaultValue("page=1")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterLimit, "limit").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterAscending, "sort parameters, e.g. reverse=true").Required(false).DefaultValue("ascending=false")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterOrderBy, "sort parameters, e.g. orderBy=createTime")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/workspaces/{workspace}/apps").
|
||||||
|
To(handler.ListApps).
|
||||||
|
Param(webservice.PathParameter("workspace", "the name of the workspace.").Required(true)).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, api.ListResult{Items: []interface{}{v1alpha1.HelmRepo{}}}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Doc("List all apps within the specified workspace").
|
||||||
|
Param(webservice.QueryParameter(params.ReverseParam, "sort parameters, e.g. reverse=true")).
|
||||||
|
Param(webservice.QueryParameter(params.OrderByParam, "sort parameters, e.g. orderBy=createTime")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterName, "name used to do filtering").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterPage, "page").Required(false).DataFormat("page=%d").DefaultValue("page=1")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterLimit, "limit").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterAscending, "sort parameters, e.g. reverse=true").Required(false).DefaultValue("ascending=false")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterOrderBy, "sort parameters, e.g. orderBy=createTime")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/apps/{app}").
|
||||||
|
To(handler.DescribeApp).
|
||||||
|
Doc("Describe the specified app template").
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, v1alpha1.HelmApplication{}).
|
||||||
|
Param(webservice.PathParameter("app", "app template id")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/workspaces/{workspace}/apps/{app}").
|
||||||
|
To(handler.DescribeApp).
|
||||||
|
Doc("Describe the specified app template").
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, v1alpha1.HelmApplication{}).
|
||||||
|
Param(webservice.PathParameter("app", "app template id")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/workspaces/{workspace}/apps/{app}/versions").
|
||||||
|
To(handler.ListAppVersion).
|
||||||
|
Param(webservice.PathParameter("workspace", "the name of the workspace.").Required(true)).
|
||||||
|
Param(webservice.PathParameter("app", "the id of the app.").Required(true)).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, api.ListResult{Items: []interface{}{v1alpha1.HelmRepo{}}}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Doc("List all apps within the specified workspace").
|
||||||
|
Param(webservice.QueryParameter(params.ReverseParam, "sort parameters, e.g. reverse=true")).
|
||||||
|
Param(webservice.QueryParameter(params.OrderByParam, "sort parameters, e.g. orderBy=createTime")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterName, "name used to do filtering").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterPage, "page").Required(false).DataFormat("page=%d").DefaultValue("page=1")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterLimit, "limit").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterAscending, "sort parameters, e.g. reverse=true").Required(false).DefaultValue("ascending=false")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterOrderBy, "sort parameters, e.g. orderBy=createTime")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/apps/{app}/versions").
|
||||||
|
To(handler.ListAppVersion).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, api.ListResult{Items: []interface{}{v1alpha1.HelmRepo{}}}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Param(webservice.PathParameter("app", "the id of the app.").Required(true)).
|
||||||
|
Doc("List all apps").
|
||||||
|
Param(webservice.QueryParameter(params.ReverseParam, "sort parameters, e.g. reverse=true")).
|
||||||
|
Param(webservice.QueryParameter(params.OrderByParam, "sort parameters, e.g. orderBy=createTime")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterName, "name used to do filtering").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterPage, "page").Required(false).DataFormat("page=%d").DefaultValue("page=1")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterLimit, "limit").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterAscending, "sort parameters, e.g. reverse=true").Required(false).DefaultValue("ascending=false")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterOrderBy, "sort parameters, e.g. orderBy=createTime")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/workspaces/{workspace}/apps/{app}/versions/{version}").
|
||||||
|
To(handler.DescribeAppVersion).
|
||||||
|
Doc("Describe the specified app template version").
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, v1alpha1.HelmApplication{}).
|
||||||
|
Param(webservice.PathParameter("version", "app template version id")).
|
||||||
|
Param(webservice.PathParameter("app", "app template id")).
|
||||||
|
Param(webservice.PathParameter("workspaces", "the name of the workspace")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/apps/{app}/versions/{version}").
|
||||||
|
To(handler.DescribeAppVersion).
|
||||||
|
Doc("Describe the specified app template version").
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, v1alpha1.HelmApplication{}).
|
||||||
|
Param(webservice.PathParameter("version", "app template version id")).
|
||||||
|
Param(webservice.PathParameter("app", "app template id")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/categories").
|
||||||
|
To(handler.ListCategories).
|
||||||
|
Doc("List categories").
|
||||||
|
Returns(http.StatusOK, api.StatusOK, api.ListResult{Items: []interface{}{v1alpha1.HelmCategory{}}}).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Param(webservice.QueryParameter(params.ReverseParam, "sort parameters, e.g. reverse=true")).
|
||||||
|
Param(webservice.QueryParameter(params.OrderByParam, "sort parameters, e.g. orderBy=createTime")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterName, "name used to do filtering").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterPage, "page").Required(false).DataFormat("page=%d").DefaultValue("page=1")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterLimit, "limit").Required(false)).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterAscending, "sort parameters, e.g. reverse=true").Required(false).DefaultValue("ascending=false")).
|
||||||
|
Param(webservice.QueryParameter(query.ParameterOrderBy, "sort parameters, e.g. orderBy=createTime")))
|
||||||
|
|
||||||
|
webservice.Route(webservice.GET("/categories/{category}").
|
||||||
|
To(handler.DescribeCategory).
|
||||||
|
Doc("Describe the specified category").
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, openpitrix.Category{}).
|
||||||
|
Param(webservice.PathParameter("category", "category id")).
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.OpenpitrixTag}))
|
||||||
|
|
||||||
|
c.Add(webservice)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -45,7 +45,6 @@ import (
|
|||||||
"kubesphere.io/kubesphere/pkg/simple/client/events"
|
"kubesphere.io/kubesphere/pkg/simple/client/events"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/logging"
|
"kubesphere.io/kubesphere/pkg/simple/client/logging"
|
||||||
monitoringclient "kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
monitoringclient "kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
||||||
opclient "kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type tenantHandler struct {
|
type tenantHandler struct {
|
||||||
@@ -55,11 +54,11 @@ type tenantHandler struct {
|
|||||||
func newTenantHandler(factory informers.InformerFactory, k8sclient kubernetes.Interface, ksclient kubesphere.Interface,
|
func newTenantHandler(factory informers.InformerFactory, k8sclient kubernetes.Interface, ksclient kubesphere.Interface,
|
||||||
evtsClient events.Client, loggingClient logging.Client, auditingclient auditing.Client,
|
evtsClient events.Client, loggingClient logging.Client, auditingclient auditing.Client,
|
||||||
am am.AccessManagementInterface, authorizer authorizer.Authorizer,
|
am am.AccessManagementInterface, authorizer authorizer.Authorizer,
|
||||||
monitoringclient monitoringclient.Interface, opClient opclient.Client,
|
monitoringclient monitoringclient.Interface,
|
||||||
resourceGetter *resourcev1alpha3.ResourceGetter) *tenantHandler {
|
resourceGetter *resourcev1alpha3.ResourceGetter) *tenantHandler {
|
||||||
|
|
||||||
return &tenantHandler{
|
return &tenantHandler{
|
||||||
tenant: tenant.New(factory, k8sclient, ksclient, evtsClient, loggingClient, auditingclient, am, authorizer, monitoringclient, opClient, resourceGetter),
|
tenant: tenant.New(factory, k8sclient, ksclient, evtsClient, loggingClient, auditingclient, am, authorizer, monitoringclient, resourceGetter),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ import (
|
|||||||
"kubesphere.io/kubesphere/pkg/simple/client/events"
|
"kubesphere.io/kubesphere/pkg/simple/client/events"
|
||||||
"kubesphere.io/kubesphere/pkg/simple/client/logging"
|
"kubesphere.io/kubesphere/pkg/simple/client/logging"
|
||||||
monitoringclient "kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
monitoringclient "kubesphere.io/kubesphere/pkg/simple/client/monitoring"
|
||||||
opclient "kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -64,11 +63,11 @@ func Resource(resource string) schema.GroupResource {
|
|||||||
func AddToContainer(c *restful.Container, factory informers.InformerFactory, k8sclient kubernetes.Interface,
|
func AddToContainer(c *restful.Container, factory informers.InformerFactory, k8sclient kubernetes.Interface,
|
||||||
ksclient kubesphere.Interface, evtsClient events.Client, loggingClient logging.Client,
|
ksclient kubesphere.Interface, evtsClient events.Client, loggingClient logging.Client,
|
||||||
auditingclient auditing.Client, am am.AccessManagementInterface, authorizer authorizer.Authorizer,
|
auditingclient auditing.Client, am am.AccessManagementInterface, authorizer authorizer.Authorizer,
|
||||||
monitoringclient monitoringclient.Interface, opClient opclient.Client, cache cache.Cache) error {
|
monitoringclient monitoringclient.Interface, cache cache.Cache) error {
|
||||||
mimePatch := []string{restful.MIME_JSON, runtime.MimeMergePatchJson, runtime.MimeJsonPatchJson}
|
mimePatch := []string{restful.MIME_JSON, runtime.MimeMergePatchJson, runtime.MimeJsonPatchJson}
|
||||||
|
|
||||||
ws := runtime.NewWebService(GroupVersion)
|
ws := runtime.NewWebService(GroupVersion)
|
||||||
handler := newTenantHandler(factory, k8sclient, ksclient, evtsClient, loggingClient, auditingclient, am, authorizer, monitoringclient, opClient, resourcev1alpha3.NewResourceGetter(factory, cache))
|
handler := newTenantHandler(factory, k8sclient, ksclient, evtsClient, loggingClient, auditingclient, am, authorizer, monitoringclient, resourcev1alpha3.NewResourceGetter(factory, cache))
|
||||||
|
|
||||||
ws.Route(ws.GET("/clusters").
|
ws.Route(ws.GET("/clusters").
|
||||||
To(handler.ListClusters).
|
To(handler.ListClusters).
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user