mirror of
https://github.com/kubevirt/containerized-data-importer.git
synced 2025-06-03 06:30:22 +00:00
parent
d77abc3fa9
commit
d56e0cca05
@ -43,7 +43,7 @@ load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_depe
|
||||
go_rules_dependencies()
|
||||
|
||||
go_register_toolchains(
|
||||
go_version = "1.16.6",
|
||||
go_version = "1.17.5",
|
||||
)
|
||||
|
||||
http_archive(
|
||||
|
@ -2779,6 +2779,10 @@
|
||||
"description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.",
|
||||
"type": "string"
|
||||
},
|
||||
"subresource": {
|
||||
"description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.",
|
||||
"type": "string"
|
||||
},
|
||||
"time": {
|
||||
"description": "Time is timestamp of when these fields were set. It should always be empty if Operation is 'Apply'",
|
||||
"$ref": "#/definitions/v1.Time"
|
||||
@ -2818,7 +2822,8 @@
|
||||
"$ref": "#/definitions/v1.NodeSelectorTerm"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-kubernetes-map-type": "atomic"
|
||||
},
|
||||
"v1.NodeSelectorRequirement": {
|
||||
"description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
|
||||
@ -2834,9 +2839,17 @@
|
||||
"default": ""
|
||||
},
|
||||
"operator": {
|
||||
"description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.",
|
||||
"description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"Gt\"`\n - `\"In\"`\n - `\"Lt\"`\n - `\"NotIn\"`",
|
||||
"type": "string",
|
||||
"default": ""
|
||||
"default": "",
|
||||
"enum": [
|
||||
"DoesNotExist",
|
||||
"Exists",
|
||||
"Gt",
|
||||
"In",
|
||||
"Lt",
|
||||
"NotIn"
|
||||
]
|
||||
},
|
||||
"values": {
|
||||
"description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.",
|
||||
@ -2868,7 +2881,8 @@
|
||||
"$ref": "#/definitions/v1.NodeSelectorRequirement"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-kubernetes-map-type": "atomic"
|
||||
},
|
||||
"v1.ObjectMeta": {
|
||||
"description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
|
||||
@ -3004,7 +3018,8 @@
|
||||
"type": "string",
|
||||
"default": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-kubernetes-map-type": "atomic"
|
||||
},
|
||||
"v1.Patch": {
|
||||
"description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.",
|
||||
@ -3023,11 +3038,15 @@
|
||||
}
|
||||
},
|
||||
"dataSource": {
|
||||
"description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source.",
|
||||
"description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.",
|
||||
"$ref": "#/definitions/v1.TypedLocalObjectReference"
|
||||
},
|
||||
"dataSourceRef": {
|
||||
"description": "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef\n allows any non-core object, as well as PersistentVolumeClaim objects.\n* While DataSource ignores disallowed values (dropping them), DataSourceRef\n preserves all values, and generates an error if a disallowed value is\n specified.\n(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.",
|
||||
"$ref": "#/definitions/v1.TypedLocalObjectReference"
|
||||
},
|
||||
"resources": {
|
||||
"description": "Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources",
|
||||
"description": "Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources",
|
||||
"default": {},
|
||||
"$ref": "#/definitions/v1.ResourceRequirements"
|
||||
},
|
||||
@ -3082,8 +3101,12 @@
|
||||
"description": "A label query over a set of resources, in this case pods.",
|
||||
"$ref": "#/definitions/v1.LabelSelector"
|
||||
},
|
||||
"namespaceSelector": {
|
||||
"description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.",
|
||||
"$ref": "#/definitions/v1.LabelSelector"
|
||||
},
|
||||
"namespaces": {
|
||||
"description": "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"",
|
||||
"description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
@ -3159,7 +3182,7 @@
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"limits": {
|
||||
"description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/",
|
||||
"description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"default": {},
|
||||
@ -3167,7 +3190,7 @@
|
||||
}
|
||||
},
|
||||
"requests": {
|
||||
"description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/",
|
||||
"description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"default": {},
|
||||
@ -3316,16 +3339,25 @@
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"effect": {
|
||||
"description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.",
|
||||
"type": "string"
|
||||
"description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"NoExecute",
|
||||
"NoSchedule",
|
||||
"PreferNoSchedule"
|
||||
]
|
||||
},
|
||||
"key": {
|
||||
"description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.",
|
||||
"type": "string"
|
||||
},
|
||||
"operator": {
|
||||
"description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.",
|
||||
"type": "string"
|
||||
"description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n\nPossible enum values:\n - `\"Equal\"`\n - `\"Exists\"`",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Equal",
|
||||
"Exists"
|
||||
]
|
||||
},
|
||||
"tolerationSeconds": {
|
||||
"description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.",
|
||||
@ -3360,7 +3392,8 @@
|
||||
"type": "string",
|
||||
"default": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-kubernetes-map-type": "atomic"
|
||||
},
|
||||
"v1.WatchEvent": {
|
||||
"description": "Event represents a single event to a watched resource.",
|
||||
@ -3627,8 +3660,13 @@
|
||||
"$ref": "#/definitions/v1beta1.CDIConfigSpec"
|
||||
},
|
||||
"imagePullPolicy": {
|
||||
"description": "PullPolicy describes a policy for if/when to pull a container image",
|
||||
"type": "string"
|
||||
"description": "PullPolicy describes a policy for if/when to pull a container image\n\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Always",
|
||||
"IfNotPresent",
|
||||
"Never"
|
||||
]
|
||||
},
|
||||
"infra": {
|
||||
"description": "Rules on which nodes CDI infrastructure pods will be scheduled",
|
||||
|
94
go.mod
94
go.mod
@ -10,12 +10,11 @@ require (
|
||||
github.com/coreos/go-semver v0.3.0
|
||||
github.com/coreos/prometheus-operator v0.38.1-0.20200424145508-7e176fda06cc
|
||||
github.com/docker/go-units v0.4.0
|
||||
github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c // indirect
|
||||
github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1 // indirect
|
||||
github.com/emicklei/go-restful v2.10.0+incompatible
|
||||
github.com/emicklei/go-restful-openapi v1.2.0
|
||||
github.com/ghodss/yaml v1.0.0
|
||||
github.com/go-logr/logr v0.4.0
|
||||
github.com/go-logr/logr v1.2.0
|
||||
github.com/go-openapi/spec v0.19.3
|
||||
github.com/golang/snappy v0.0.3
|
||||
github.com/google/uuid v1.3.0
|
||||
@ -23,77 +22,76 @@ require (
|
||||
github.com/kelseyhightower/envconfig v1.4.0
|
||||
github.com/kubernetes-csi/external-snapshotter/v2 v2.1.1
|
||||
github.com/mrnold/go-libnbd v1.4.1-cdi
|
||||
github.com/onsi/ginkgo v1.14.1
|
||||
github.com/onsi/gomega v1.10.3
|
||||
github.com/onsi/ginkgo v1.16.5
|
||||
github.com/onsi/gomega v1.17.0
|
||||
github.com/opencontainers/runc v1.0.3 // indirect
|
||||
github.com/openshift/api v0.0.0
|
||||
github.com/openshift/client-go v0.0.0
|
||||
github.com/openshift/custom-resource-status v0.0.0-20200602122900-c002fd1547ca
|
||||
github.com/openshift/library-go v0.0.0-20210205203934-9eb0d970f2f4
|
||||
github.com/openshift/library-go v0.0.0-20211220195323-eca2c467c492
|
||||
github.com/operator-framework/operator-lifecycle-manager v0.0.0-20190725173916-b56e63a643cc
|
||||
github.com/ovirt/go-ovirt v0.0.0-20210809163552-d4276e35d3db
|
||||
github.com/ovirt/go-ovirt-client v0.6.0
|
||||
github.com/ovirt/go-ovirt-client-log-klog v1.0.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/prometheus/client_golang v1.7.1
|
||||
github.com/prometheus/client_golang v1.11.0
|
||||
github.com/prometheus/client_model v0.2.0
|
||||
github.com/rs/cors v1.7.0
|
||||
github.com/ulikunitz/xz v0.5.10
|
||||
github.com/vmware/govmomi v0.23.1
|
||||
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887
|
||||
golang.org/x/sys v0.0.0-20211029165221-6e7872819dc8
|
||||
gopkg.in/fsnotify.v1 v1.4.7
|
||||
gopkg.in/square/go-jose.v2 v2.5.1
|
||||
k8s.io/api v0.20.6
|
||||
k8s.io/apiextensions-apiserver v0.20.2
|
||||
k8s.io/apimachinery v0.20.6
|
||||
k8s.io/apiserver v0.20.6
|
||||
k8s.io/api v0.23.0
|
||||
k8s.io/apiextensions-apiserver v0.23.0
|
||||
k8s.io/apimachinery v0.23.0
|
||||
k8s.io/apiserver v0.23.0
|
||||
k8s.io/client-go v12.0.0+incompatible
|
||||
k8s.io/cluster-bootstrap v0.0.0
|
||||
k8s.io/code-generator v0.20.2
|
||||
k8s.io/klog/v2 v2.10.0
|
||||
k8s.io/kube-aggregator v0.20.2
|
||||
k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd
|
||||
k8s.io/code-generator v0.23.0
|
||||
k8s.io/klog/v2 v2.30.0
|
||||
k8s.io/kube-aggregator v0.23.0
|
||||
k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65
|
||||
kubevirt.io/containerized-data-importer-api v0.0.0
|
||||
kubevirt.io/controller-lifecycle-operator-sdk v0.2.2
|
||||
kubevirt.io/controller-lifecycle-operator-sdk v0.2.3
|
||||
kubevirt.io/qe-tools v0.1.6
|
||||
sigs.k8s.io/controller-runtime v0.8.3
|
||||
sigs.k8s.io/controller-runtime v0.11.0
|
||||
)
|
||||
|
||||
replace (
|
||||
github.com/aws/aws-sdk-go => github.com/aws/aws-sdk-go v1.15.77
|
||||
github.com/openshift/api => github.com/openshift/api v0.0.0-20210428205234-a8389931bee7
|
||||
github.com/openshift/client-go => github.com/openshift/client-go v0.0.0-20210112165513-ebc401615f47
|
||||
github.com/openshift/library-go => github.com/mhenriks/library-go v0.0.0-20210511195009-51ba86622560
|
||||
github.com/openshift/api => github.com/openshift/api v0.0.0-20211217221424-8779abfbd571
|
||||
github.com/openshift/client-go => github.com/openshift/client-go v0.0.0-20211209144617-7385dd6338e3
|
||||
github.com/openshift/library-go => github.com/mhenriks/library-go v0.0.0-20211221173158-d6e4bcc60f0a
|
||||
github.com/operator-framework/operator-lifecycle-manager => github.com/operator-framework/operator-lifecycle-manager v0.0.0-20190128024246-5eb7ae5bdb7a
|
||||
|
||||
k8s.io/api => k8s.io/api v0.20.2
|
||||
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.20.2
|
||||
k8s.io/apimachinery => k8s.io/apimachinery v0.20.2
|
||||
k8s.io/apiserver => k8s.io/apiserver v0.20.2
|
||||
k8s.io/cli-runtime => k8s.io/cli-runtime v0.20.2
|
||||
k8s.io/client-go => k8s.io/client-go v0.20.2
|
||||
k8s.io/cloud-provider => k8s.io/cloud-provider v0.20.2
|
||||
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.20.2
|
||||
k8s.io/code-generator => k8s.io/code-generator v0.20.2
|
||||
k8s.io/component-base => k8s.io/component-base v0.20.2
|
||||
k8s.io/cri-api => k8s.io/cri-api v0.20.2
|
||||
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.20.2
|
||||
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.20.2
|
||||
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.20.2
|
||||
k8s.io/kube-proxy => k8s.io/kube-proxy v0.20.2
|
||||
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.20.2
|
||||
k8s.io/kubectl => k8s.io/kubectl v0.20.2
|
||||
k8s.io/kubelet => k8s.io/kubelet v0.20.2
|
||||
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.20.2
|
||||
k8s.io/metrics => k8s.io/metrics v0.20.2
|
||||
k8s.io/node-api => k8s.io/node-api v0.20.2
|
||||
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.20.2
|
||||
k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.20.2
|
||||
k8s.io/sample-controller => k8s.io/sample-controller v0.20.2
|
||||
k8s.io/schedule => k8s.io/schedule v0.20.2
|
||||
k8s.io/api => k8s.io/api v0.23.0
|
||||
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.23.0
|
||||
k8s.io/apimachinery => k8s.io/apimachinery v0.23.0
|
||||
k8s.io/apiserver => k8s.io/apiserver v0.23.0
|
||||
k8s.io/cli-runtime => k8s.io/cli-runtime v0.23.0
|
||||
k8s.io/client-go => k8s.io/client-go v0.23.0
|
||||
k8s.io/cloud-provider => k8s.io/cloud-provider v0.23.0
|
||||
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.23.0
|
||||
k8s.io/code-generator => k8s.io/code-generator v0.23.0
|
||||
k8s.io/component-base => k8s.io/component-base v0.23.0
|
||||
k8s.io/component-helpers => k8s.io/component-helpers v0.23.0
|
||||
k8s.io/controller-manager => k8s.io/controller-manager v0.23.0
|
||||
k8s.io/cri-api => k8s.io/cri-api v0.23.0
|
||||
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.23.0
|
||||
k8s.io/klog/v2 => k8s.io/klog/v2 v2.30.0
|
||||
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.23.0
|
||||
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.23.0
|
||||
k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65
|
||||
k8s.io/kube-proxy => k8s.io/kube-proxy v0.23.0
|
||||
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.23.0
|
||||
k8s.io/kubectl => k8s.io/kubectl v0.23.0
|
||||
k8s.io/kubelet => k8s.io/kubelet v0.23.0
|
||||
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.23.0
|
||||
k8s.io/metrics => k8s.io/metrics v0.23.0
|
||||
k8s.io/mount-utils => k8s.io/mount-utils v0.23.0
|
||||
k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.23.0
|
||||
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.23.0
|
||||
|
||||
kubevirt.io/containerized-data-importer-api => ./staging/src/kubevirt.io/containerized-data-importer-api
|
||||
|
||||
sigs.k8s.io/structured-merge-diff => sigs.k8s.io/structured-merge-diff v1.0.0
|
||||
vbom.ml/util => github.com/fvbommel/util v0.0.0-20180919145318-efcd4e0f9787
|
||||
)
|
||||
|
@ -20,19 +20,19 @@ source "${script_dir}"/common.sh
|
||||
source "${script_dir}"/config.sh
|
||||
|
||||
if ! git diff-index --quiet HEAD~1 hack/build/docker; then
|
||||
#Since this only runs during the post-submit job, the PR will have squashed into a single
|
||||
#commit and we can use HEAD~1 to compare.
|
||||
BUILDER_SPEC="${BUILD_DIR}/docker/builder"
|
||||
UNTAGGED_BUILDER_IMAGE=quay.io/kubevirt/kubevirt-cdi-bazel-builder
|
||||
BUILDER_TAG=$(date +"%y%m%d%H%M")-$(git rev-parse --short HEAD)
|
||||
echo "$DOCKER_PREFIX:$DOCKER_TAG"
|
||||
#Since this only runs during the post-submit job, the PR will have squashed into a single
|
||||
#commit and we can use HEAD~1 to compare.
|
||||
BUILDER_SPEC="${BUILD_DIR}/docker/builder"
|
||||
UNTAGGED_BUILDER_IMAGE=quay.io/kubevirt/kubevirt-cdi-bazel-builder
|
||||
BUILDER_TAG=$(date +"%y%m%d%H%M")-$(git rev-parse --short HEAD)
|
||||
echo "$DOCKER_PREFIX:$DOCKER_TAG"
|
||||
|
||||
#Build the encapsulated compile and test container
|
||||
(cd ${BUILDER_SPEC} && docker build --tag ${UNTAGGED_BUILDER_IMAGE}:${BUILDER_TAG} .)
|
||||
#Build the encapsulated compile and test container
|
||||
(cd ${BUILDER_SPEC} && docker build --tag ${UNTAGGED_BUILDER_IMAGE}:${BUILDER_TAG} .)
|
||||
|
||||
DIGEST=$(docker images --digests | grep ${UNTAGGED_BUILDER_IMAGE} | grep ${BUILDER_TAG} | awk '{ print $4 }')
|
||||
echo "Image: ${UNTAGGED_BUILDER_IMAGE}:${BUILDER_TAG}"
|
||||
echo "Digest: ${DIGEST}"
|
||||
DIGEST=$(docker images --digests | grep ${UNTAGGED_BUILDER_IMAGE} | grep ${BUILDER_TAG} | awk '{ print $4 }')
|
||||
echo "Image: ${UNTAGGED_BUILDER_IMAGE}:${BUILDER_TAG}"
|
||||
echo "Digest: ${DIGEST}"
|
||||
|
||||
docker push ${UNTAGGED_BUILDER_IMAGE}:${BUILDER_TAG}
|
||||
docker push ${UNTAGGED_BUILDER_IMAGE}:${BUILDER_TAG}
|
||||
fi
|
||||
|
@ -123,7 +123,7 @@ else
|
||||
volumes="-v ${BUILDER_VOLUME}:/root:rw,z,exec"
|
||||
fi
|
||||
|
||||
if [ -n "$DOCKER_CA_CERT_FILE" ] ; then
|
||||
if [ -n "$DOCKER_CA_CERT_FILE" ]; then
|
||||
volumes="$volumes -v ${DOCKER_CA_CERT_FILE}:${DOCKERIZED_CUSTOM_CA_PATH}:ro,z"
|
||||
fi
|
||||
|
||||
|
@ -22,7 +22,7 @@ set -e
|
||||
source hack/build/common.sh
|
||||
source hack/build/config.sh
|
||||
|
||||
if [ -n "$DOCKER_CA_CERT_FILE" ] ; then
|
||||
if [ -n "$DOCKER_CA_CERT_FILE" ]; then
|
||||
/usr/bin/update-ca-trust
|
||||
fi
|
||||
|
||||
|
@ -5,41 +5,41 @@ PODS_TIMEOUT=1800
|
||||
sync_log=$(date +"sync%y%m%d%H%M.log")
|
||||
k=cluster-up/kubectl.sh
|
||||
|
||||
function wait_pods_ready {
|
||||
echo_log "Waiting $PODS_TIMEOUT seconds for pods to be ready"
|
||||
wait_time=0
|
||||
not_ready_pods="something"
|
||||
prev_pods=""
|
||||
while [ -n "$not_ready_pods" ] && [ $wait_time -lt ${PODS_TIMEOUT} ]; do
|
||||
not_ready_pods=$($k get pods -A -o'custom-columns=metadata:metadata.name,status:status.containerStatuses[*].ready' --no-headers | grep false)
|
||||
if [ -n "$not_ready_pods" ] ; then
|
||||
if [ "$not_ready_pods" != "$prev_pods" ] ; then
|
||||
echo_log "Not ready pods: $not_ready_pods"
|
||||
prev_pods=$not_ready_pods
|
||||
fi
|
||||
wait_time=$((wait_time + 5))
|
||||
sleep 5
|
||||
function wait_pods_ready() {
|
||||
echo_log "Waiting $PODS_TIMEOUT seconds for pods to be ready"
|
||||
wait_time=0
|
||||
not_ready_pods="something"
|
||||
prev_pods=""
|
||||
while [ -n "$not_ready_pods" ] && [ $wait_time -lt ${PODS_TIMEOUT} ]; do
|
||||
not_ready_pods=$($k get pods -A -o'custom-columns=metadata:metadata.name,status:status.containerStatuses[*].ready' --no-headers | grep false)
|
||||
if [ -n "$not_ready_pods" ]; then
|
||||
if [ "$not_ready_pods" != "$prev_pods" ]; then
|
||||
echo_log "Not ready pods: $not_ready_pods"
|
||||
prev_pods=$not_ready_pods
|
||||
fi
|
||||
wait_time=$((wait_time + 5))
|
||||
sleep 5
|
||||
fi
|
||||
done
|
||||
echo_log "Waited $wait_time seconds"
|
||||
if [ -z "$not_ready_pods" ]; then
|
||||
echo_log "All pods are ready"
|
||||
else
|
||||
echo_log "Not all pods are ready"
|
||||
fi
|
||||
done
|
||||
echo_log "Waited $wait_time seconds"
|
||||
if [ -z "$not_ready_pods" ] ; then
|
||||
echo_log "All pods are ready"
|
||||
else
|
||||
echo_log "Not all pods are ready"
|
||||
fi
|
||||
}
|
||||
|
||||
function echo_log {
|
||||
s=$(date +"%H:%M:%S $1")
|
||||
echo $s
|
||||
echo $s >> $sync_log
|
||||
function echo_log() {
|
||||
s=$(date +"%H:%M:%S $1")
|
||||
echo $s
|
||||
echo $s >>$sync_log
|
||||
}
|
||||
|
||||
function run_time_log {
|
||||
echo_log "$1"
|
||||
SECONDS=0
|
||||
$1
|
||||
echo_log "$SECONDS sec"
|
||||
function run_time_log() {
|
||||
echo_log "$1"
|
||||
SECONDS=0
|
||||
$1
|
||||
echo_log "$SECONDS sec"
|
||||
}
|
||||
|
||||
echo_log "========================================================================================="
|
||||
|
@ -28,7 +28,7 @@ FUNC_TEST_BAD_WEBSERVER="cdi-func-test-bad-webserver"
|
||||
FUNC_TEST_PROXY="cdi-func-test-proxy"
|
||||
|
||||
# update this whenever new builder tag is created
|
||||
BUILDER_IMAGE=${BUILDER_IMAGE:-quay.io/kubevirt/kubevirt-cdi-bazel-builder:0.0.13}
|
||||
BUILDER_IMAGE=${BUILDER_IMAGE:-quay.io/kubevirt/kubevirt-cdi-bazel-builder:2201061430-ebe8a09c}
|
||||
|
||||
BINARIES="cmd/${OPERATOR} cmd/${CONTROLLER} cmd/${IMPORTER} cmd/${CLONER} cmd/${APISERVER} cmd/${UPLOADPROXY} cmd/${UPLOADSERVER} cmd/${OPERATOR} tools/${FUNC_TEST_INIT} tools/${FUNC_TEST_REGISTRY_INIT} tools/${FUNC_TEST_BAD_WEBSERVER} tools/${FUNC_TEST_PROXY}"
|
||||
CDI_PKGS="cmd/ pkg/ test/"
|
||||
|
@ -10,27 +10,27 @@ CDI_DIR="$(cd $(dirname $0)/../../ && pwd -P)"
|
||||
PHRASES='master|slave|whitelist|blacklist'
|
||||
|
||||
VIOLATIONS=$(git grep -iI -E $PHRASES -- \
|
||||
':!vendor' \
|
||||
':!cluster-up' \
|
||||
':!cluster-sync' \
|
||||
':!*generated*' \
|
||||
':!*swagger.json*' \
|
||||
':!hack/ci/language.sh' \
|
||||
"${CDI_DIR}" \
|
||||
| grep -v \
|
||||
-e 'ekalinin/github-markdown-toc' \
|
||||
-e 'github.com/kubernetes' \
|
||||
-e 'travis-ci/gimme' \
|
||||
-e 'node01.*Ready' \
|
||||
-e 'actions/checkout' \
|
||||
-e 'coverallsapp/github-action')
|
||||
# Allowed exceptions
|
||||
':!vendor' \
|
||||
':!cluster-up' \
|
||||
':!cluster-sync' \
|
||||
':!*generated*' \
|
||||
':!*swagger.json*' \
|
||||
':!hack/ci/language.sh' \
|
||||
"${CDI_DIR}" |
|
||||
grep -v \
|
||||
-e 'ekalinin/github-markdown-toc' \
|
||||
-e 'github.com/kubernetes' \
|
||||
-e 'travis-ci/gimme' \
|
||||
-e 'node01.*Ready' \
|
||||
-e 'actions/checkout' \
|
||||
-e 'coverallsapp/github-action')
|
||||
# Allowed exceptions
|
||||
|
||||
if [ ! -z "${VIOLATIONS}" ]; then
|
||||
echo "ERROR: Found new additions of non-inclusive language ${PHRASES}"
|
||||
echo "${VIOLATIONS}"
|
||||
echo ""
|
||||
echo "Please consider different terminology if possible."
|
||||
echo "If necessary, an exception can be added to to the hack/ci/language.sh script"
|
||||
exit 1
|
||||
echo "ERROR: Found new additions of non-inclusive language ${PHRASES}"
|
||||
echo "${VIOLATIONS}"
|
||||
echo ""
|
||||
echo "Please consider different terminology if possible."
|
||||
echo "If necessary, an exception can be added to to the hack/ci/language.sh script"
|
||||
exit 1
|
||||
fi
|
||||
|
@ -21,8 +21,8 @@ export GO111MODULE=on
|
||||
|
||||
export SCRIPT_ROOT="$(cd "$(dirname $0)/../" && pwd -P)"
|
||||
CODEGEN_PKG=${CODEGEN_PKG:-$(
|
||||
cd ${SCRIPT_ROOT}
|
||||
ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator
|
||||
cd ${SCRIPT_ROOT}
|
||||
ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator
|
||||
)}
|
||||
|
||||
find "${SCRIPT_ROOT}/pkg/" -name "*generated*.go" -exec rm {} -f \;
|
||||
@ -36,9 +36,9 @@ ${SCRIPT_ROOT}/hack/build/build-go.sh generate
|
||||
# k8s.io/kubernetes. The output-base is needed for the generators to output into the vendor dir
|
||||
# instead of the $GOPATH directly. For normal projects this can be dropped.
|
||||
/bin/bash ${CODEGEN_PKG}/generate-groups.sh "deepcopy,client,informer,lister" \
|
||||
kubevirt.io/containerized-data-importer/pkg/client kubevirt.io/containerized-data-importer-api/pkg/apis \
|
||||
"core:v1alpha1 upload:v1alpha1 core:v1beta1 upload:v1beta1" \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
kubevirt.io/containerized-data-importer/pkg/client kubevirt.io/containerized-data-importer-api/pkg/apis \
|
||||
"core:v1alpha1 upload:v1alpha1 core:v1beta1 upload:v1beta1" \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
|
||||
echo "Generating swagger doc"
|
||||
swagger-doc -in ${SCRIPT_ROOT}/staging/src/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1alpha1/types.go
|
||||
@ -50,33 +50,33 @@ swagger-doc -in ${SCRIPT_ROOT}/staging/src/kubevirt.io/containerized-data-import
|
||||
(go install ${CODEGEN_PKG}/cmd/openapi-gen)
|
||||
|
||||
(
|
||||
TMP_DIR=$(mktemp -d)
|
||||
mkdir -p ${TMP_DIR}/src/kubevirt.io/
|
||||
ln -s ${SCRIPT_ROOT} ${TMP_DIR}/src/kubevirt.io/containerized-data-importer
|
||||
TMP_DIR=$(mktemp -d)
|
||||
mkdir -p ${TMP_DIR}/src/kubevirt.io/
|
||||
ln -s ${SCRIPT_ROOT} ${TMP_DIR}/src/kubevirt.io/containerized-data-importer
|
||||
|
||||
trap 'rm -rf -- "${TMP_DIR}"' EXIT
|
||||
export GOPATH=${TMP_DIR}/src
|
||||
trap 'rm -rf -- "${TMP_DIR}"' EXIT
|
||||
export GOPATH=${TMP_DIR}/src
|
||||
|
||||
echo "Generating openapi"
|
||||
openapi-gen --input-dirs k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/runtime,k8s.io/api/core/v1,github.com/openshift/custom-resource-status/conditions/v1,kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1alpha1,kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api \
|
||||
--output-base ${GOPATH} \
|
||||
--output-package kubevirt.io/containerized-data-importer/pkg/apis/core/v1alpha1 \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
echo "Generating openapi"
|
||||
openapi-gen --input-dirs k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/runtime,k8s.io/api/core/v1,github.com/openshift/custom-resource-status/conditions/v1,kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1alpha1,kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api \
|
||||
--output-base ${GOPATH} \
|
||||
--output-package kubevirt.io/containerized-data-importer/pkg/apis/core/v1alpha1 \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
|
||||
openapi-gen --input-dirs k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/api/core/v1,kubevirt.io/containerized-data-importer-api/pkg/apis/upload/v1alpha1 \
|
||||
--output-base ${GOPATH} \
|
||||
--output-package kubevirt.io/containerized-data-importer/pkg/apis/upload/v1alpha1 \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
openapi-gen --input-dirs k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/api/core/v1,kubevirt.io/containerized-data-importer-api/pkg/apis/upload/v1alpha1 \
|
||||
--output-base ${GOPATH} \
|
||||
--output-package kubevirt.io/containerized-data-importer/pkg/apis/upload/v1alpha1 \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
|
||||
openapi-gen --input-dirs k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/runtime,k8s.io/api/core/v1,github.com/openshift/custom-resource-status/conditions/v1,kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1,kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api \
|
||||
--output-base ${GOPATH} \
|
||||
--output-package kubevirt.io/containerized-data-importer/pkg/apis/core/v1beta1 \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
openapi-gen --input-dirs k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/runtime,k8s.io/api/core/v1,github.com/openshift/custom-resource-status/conditions/v1,kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1,kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api \
|
||||
--output-base ${GOPATH} \
|
||||
--output-package kubevirt.io/containerized-data-importer/pkg/apis/core/v1beta1 \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
|
||||
openapi-gen --input-dirs k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/api/core/v1,kubevirt.io/containerized-data-importer-api/pkg/apis/upload/v1beta1 \
|
||||
--output-base ${GOPATH} \
|
||||
--output-package kubevirt.io/containerized-data-importer/pkg/apis/upload/v1beta1 \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
openapi-gen --input-dirs k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/api/core/v1,kubevirt.io/containerized-data-importer-api/pkg/apis/upload/v1beta1 \
|
||||
--output-base ${GOPATH} \
|
||||
--output-package kubevirt.io/containerized-data-importer/pkg/apis/upload/v1beta1 \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
)
|
||||
|
||||
(cd ${SCRIPT_ROOT}/tools/openapi-spec-generator/ && go build -o ../../bin/openapi-spec-generator)
|
||||
@ -85,13 +85,13 @@ ${SCRIPT_ROOT}/bin/openapi-spec-generator >${SCRIPT_ROOT}/api/openapi-spec/swagg
|
||||
|
||||
echo "************* running controller-gen to generate schema yaml ********************"
|
||||
(
|
||||
cd ./staging/src/kubevirt.io/containerized-data-importer-api
|
||||
controller-gen crd:crdVersions=v1 output:dir=${SCRIPT_ROOT}/_out/manifests/schema paths=./pkg/apis/core/...
|
||||
cd ./staging/src/kubevirt.io/containerized-data-importer-api
|
||||
controller-gen crd:crdVersions=v1 output:dir=${SCRIPT_ROOT}/_out/manifests/schema paths=./pkg/apis/core/...
|
||||
)
|
||||
cd ${SCRIPT_ROOT}/_out/manifests/schema
|
||||
for file in *.yaml; do
|
||||
tail -n +3 $file >$file"new"
|
||||
mv $file"new" $file
|
||||
tail -n +3 $file >$file"new"
|
||||
mv $file"new" $file
|
||||
done
|
||||
cd -
|
||||
(cd "${SCRIPT_ROOT}/tools/crd-generator/" && go build -o "${SCRIPT_ROOT}/bin/crd-generator" ./...)
|
||||
|
@ -6,9 +6,9 @@ go_library(
|
||||
importpath = "kubevirt.io/containerized-data-importer/pkg/apis/core/v1alpha1",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/go-openapi/spec:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/validation/spec:go_default_library",
|
||||
],
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -6,9 +6,9 @@ go_library(
|
||||
importpath = "kubevirt.io/containerized-data-importer/pkg/apis/core/v1beta1",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/go-openapi/spec:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/validation/spec:go_default_library",
|
||||
],
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -6,8 +6,8 @@ go_library(
|
||||
importpath = "kubevirt.io/containerized-data-importer/pkg/apis/upload/v1alpha1",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/go-openapi/spec:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/validation/spec:go_default_library",
|
||||
],
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -6,8 +6,8 @@ go_library(
|
||||
importpath = "kubevirt.io/containerized-data-importer/pkg/apis/upload/v1beta1",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/go-openapi/spec:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/validation/spec:go_default_library",
|
||||
],
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -20,7 +20,6 @@ go_library(
|
||||
"//pkg/util/openapi:go_default_library",
|
||||
"//staging/src/kubevirt.io/containerized-data-importer-api/pkg/apis/upload/v1beta1:go_default_library",
|
||||
"//vendor/github.com/emicklei/go-restful:go_default_library",
|
||||
"//vendor/github.com/go-openapi/spec:go_default_library",
|
||||
"//vendor/github.com/pkg/errors:go_default_library",
|
||||
"//vendor/k8s.io/api/authorization/v1:go_default_library",
|
||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||
@ -32,6 +31,7 @@ go_library(
|
||||
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
|
||||
"//vendor/k8s.io/klog/v2:go_default_library",
|
||||
"//vendor/k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/validation/spec:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -36,12 +36,12 @@ import (
|
||||
"time"
|
||||
|
||||
restful "github.com/emicklei/go-restful"
|
||||
"github.com/go-openapi/spec"
|
||||
"github.com/pkg/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/klog/v2"
|
||||
aggregatorclient "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset"
|
||||
k8sspec "k8s.io/kube-openapi/pkg/validation/spec"
|
||||
|
||||
cdiuploadv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/upload/v1beta1"
|
||||
pkgcdiuploadv1 "kubevirt.io/containerized-data-importer/pkg/apis/upload/v1beta1"
|
||||
@ -466,7 +466,7 @@ func (app *cdiAPIApp) composeUploadTokenAPI() {
|
||||
Returns(http.StatusNotFound, "Not Found", ""))
|
||||
|
||||
once := sync.Once{}
|
||||
var openapispec *spec.Swagger
|
||||
var openapispec *k8sspec.Swagger
|
||||
ws.Route(ws.GET("openapi/v2").
|
||||
Consumes("application/json").
|
||||
Produces("application/json").
|
||||
|
@ -32,6 +32,7 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
fakeclient "k8s.io/client-go/kubernetes/fake"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
cdiclientfake "kubevirt.io/containerized-data-importer/pkg/client/clientset/versioned/fake"
|
||||
)
|
||||
|
@ -36,6 +36,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
fakeclient "k8s.io/client-go/kubernetes/fake"
|
||||
k8stesting "k8s.io/client-go/testing"
|
||||
|
||||
cdiclientfake "kubevirt.io/containerized-data-importer/pkg/client/clientset/versioned/fake"
|
||||
|
||||
cdicorev1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
|
@ -37,6 +37,7 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
fakeclient "k8s.io/client-go/kubernetes/fake"
|
||||
|
||||
cdiclientfake "kubevirt.io/containerized-data-importer/pkg/client/clientset/versioned/fake"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
|
@ -20,6 +20,7 @@ package versioned
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
discovery "k8s.io/client-go/discovery"
|
||||
rest "k8s.io/client-go/rest"
|
||||
@ -79,34 +80,53 @@ func (c *Clientset) Discovery() discovery.DiscoveryInterface {
|
||||
// NewForConfig creates a new Clientset for the given config.
|
||||
// If config's RateLimiter is not set and QPS and Burst are acceptable,
|
||||
// NewForConfig will generate a rate-limiter in configShallowCopy.
|
||||
// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
|
||||
// where httpClient was generated with rest.HTTPClientFor(c).
|
||||
func NewForConfig(c *rest.Config) (*Clientset, error) {
|
||||
configShallowCopy := *c
|
||||
|
||||
// share the transport between all clients
|
||||
httpClient, err := rest.HTTPClientFor(&configShallowCopy)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return NewForConfigAndClient(&configShallowCopy, httpClient)
|
||||
}
|
||||
|
||||
// NewForConfigAndClient creates a new Clientset for the given config and http client.
|
||||
// Note the http client provided takes precedence over the configured transport values.
|
||||
// If config's RateLimiter is not set and QPS and Burst are acceptable,
|
||||
// NewForConfigAndClient will generate a rate-limiter in configShallowCopy.
|
||||
func NewForConfigAndClient(c *rest.Config, httpClient *http.Client) (*Clientset, error) {
|
||||
configShallowCopy := *c
|
||||
if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 {
|
||||
if configShallowCopy.Burst <= 0 {
|
||||
return nil, fmt.Errorf("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0")
|
||||
}
|
||||
configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst)
|
||||
}
|
||||
|
||||
var cs Clientset
|
||||
var err error
|
||||
cs.cdiV1alpha1, err = cdiv1alpha1.NewForConfig(&configShallowCopy)
|
||||
cs.cdiV1alpha1, err = cdiv1alpha1.NewForConfigAndClient(&configShallowCopy, httpClient)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cs.cdiV1beta1, err = cdiv1beta1.NewForConfig(&configShallowCopy)
|
||||
cs.cdiV1beta1, err = cdiv1beta1.NewForConfigAndClient(&configShallowCopy, httpClient)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cs.uploadV1alpha1, err = uploadv1alpha1.NewForConfig(&configShallowCopy)
|
||||
cs.uploadV1alpha1, err = uploadv1alpha1.NewForConfigAndClient(&configShallowCopy, httpClient)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cs.uploadV1beta1, err = uploadv1beta1.NewForConfig(&configShallowCopy)
|
||||
cs.uploadV1beta1, err = uploadv1beta1.NewForConfigAndClient(&configShallowCopy, httpClient)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy)
|
||||
cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfigAndClient(&configShallowCopy, httpClient)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -116,14 +136,11 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
|
||||
// NewForConfigOrDie creates a new Clientset for the given config and
|
||||
// panics if there is an error in the config.
|
||||
func NewForConfigOrDie(c *rest.Config) *Clientset {
|
||||
var cs Clientset
|
||||
cs.cdiV1alpha1 = cdiv1alpha1.NewForConfigOrDie(c)
|
||||
cs.cdiV1beta1 = cdiv1beta1.NewForConfigOrDie(c)
|
||||
cs.uploadV1alpha1 = uploadv1alpha1.NewForConfigOrDie(c)
|
||||
cs.uploadV1beta1 = uploadv1beta1.NewForConfigOrDie(c)
|
||||
|
||||
cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c)
|
||||
return &cs
|
||||
cs, err := NewForConfig(c)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return cs
|
||||
}
|
||||
|
||||
// New creates a new Clientset for the given RESTClient.
|
||||
|
@ -80,7 +80,10 @@ func (c *Clientset) Tracker() testing.ObjectTracker {
|
||||
return c.tracker
|
||||
}
|
||||
|
||||
var _ clientset.Interface = &Clientset{}
|
||||
var (
|
||||
_ clientset.Interface = &Clientset{}
|
||||
_ testing.FakeClient = &Clientset{}
|
||||
)
|
||||
|
||||
// CdiV1alpha1 retrieves the CdiV1alpha1Client
|
||||
func (c *Clientset) CdiV1alpha1() cdiv1alpha1.CdiV1alpha1Interface {
|
||||
|
@ -19,6 +19,8 @@ limitations under the License.
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
rest "k8s.io/client-go/rest"
|
||||
v1alpha1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1alpha1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/client/clientset/versioned/scheme"
|
||||
@ -49,12 +51,28 @@ func (c *CdiV1alpha1Client) DataVolumes(namespace string) DataVolumeInterface {
|
||||
}
|
||||
|
||||
// NewForConfig creates a new CdiV1alpha1Client for the given config.
|
||||
// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
|
||||
// where httpClient was generated with rest.HTTPClientFor(c).
|
||||
func NewForConfig(c *rest.Config) (*CdiV1alpha1Client, error) {
|
||||
config := *c
|
||||
if err := setConfigDefaults(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client, err := rest.RESTClientFor(&config)
|
||||
httpClient, err := rest.HTTPClientFor(&config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return NewForConfigAndClient(&config, httpClient)
|
||||
}
|
||||
|
||||
// NewForConfigAndClient creates a new CdiV1alpha1Client for the given config and http client.
|
||||
// Note the http client provided takes precedence over the configured transport values.
|
||||
func NewForConfigAndClient(c *rest.Config, h *http.Client) (*CdiV1alpha1Client, error) {
|
||||
config := *c
|
||||
if err := setConfigDefaults(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client, err := rest.RESTClientForConfigAndClient(&config, h)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ func (c *FakeCDIs) UpdateStatus(ctx context.Context, cDI *v1alpha1.CDI, opts v1.
|
||||
// Delete takes name of the cDI and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeCDIs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewRootDeleteAction(cdisResource, name), &v1alpha1.CDI{})
|
||||
Invokes(testing.NewRootDeleteActionWithOptions(cdisResource, name, opts), &v1alpha1.CDI{})
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -110,7 +110,7 @@ func (c *FakeCDIConfigs) UpdateStatus(ctx context.Context, cDIConfig *v1alpha1.C
|
||||
// Delete takes name of the cDIConfig and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeCDIConfigs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewRootDeleteAction(cdiconfigsResource, name), &v1alpha1.CDIConfig{})
|
||||
Invokes(testing.NewRootDeleteActionWithOptions(cdiconfigsResource, name, opts), &v1alpha1.CDIConfig{})
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -117,7 +117,7 @@ func (c *FakeDataVolumes) UpdateStatus(ctx context.Context, dataVolume *v1alpha1
|
||||
// Delete takes name of the dataVolume and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeDataVolumes) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewDeleteAction(datavolumesResource, c.ns, name), &v1alpha1.DataVolume{})
|
||||
Invokes(testing.NewDeleteActionWithOptions(datavolumesResource, c.ns, name, opts), &v1alpha1.DataVolume{})
|
||||
|
||||
return err
|
||||
}
|
||||
|
@ -19,6 +19,8 @@ limitations under the License.
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
rest "k8s.io/client-go/rest"
|
||||
v1beta1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/client/clientset/versioned/scheme"
|
||||
@ -69,12 +71,28 @@ func (c *CdiV1beta1Client) StorageProfiles() StorageProfileInterface {
|
||||
}
|
||||
|
||||
// NewForConfig creates a new CdiV1beta1Client for the given config.
|
||||
// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
|
||||
// where httpClient was generated with rest.HTTPClientFor(c).
|
||||
func NewForConfig(c *rest.Config) (*CdiV1beta1Client, error) {
|
||||
config := *c
|
||||
if err := setConfigDefaults(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client, err := rest.RESTClientFor(&config)
|
||||
httpClient, err := rest.HTTPClientFor(&config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return NewForConfigAndClient(&config, httpClient)
|
||||
}
|
||||
|
||||
// NewForConfigAndClient creates a new CdiV1beta1Client for the given config and http client.
|
||||
// Note the http client provided takes precedence over the configured transport values.
|
||||
func NewForConfigAndClient(c *rest.Config, h *http.Client) (*CdiV1beta1Client, error) {
|
||||
config := *c
|
||||
if err := setConfigDefaults(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client, err := rest.RESTClientForConfigAndClient(&config, h)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ func (c *FakeCDIs) UpdateStatus(ctx context.Context, cDI *v1beta1.CDI, opts v1.U
|
||||
// Delete takes name of the cDI and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeCDIs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewRootDeleteAction(cdisResource, name), &v1beta1.CDI{})
|
||||
Invokes(testing.NewRootDeleteActionWithOptions(cdisResource, name, opts), &v1beta1.CDI{})
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -110,7 +110,7 @@ func (c *FakeCDIConfigs) UpdateStatus(ctx context.Context, cDIConfig *v1beta1.CD
|
||||
// Delete takes name of the cDIConfig and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeCDIConfigs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewRootDeleteAction(cdiconfigsResource, name), &v1beta1.CDIConfig{})
|
||||
Invokes(testing.NewRootDeleteActionWithOptions(cdiconfigsResource, name, opts), &v1beta1.CDIConfig{})
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -117,7 +117,7 @@ func (c *FakeDataImportCrons) UpdateStatus(ctx context.Context, dataImportCron *
|
||||
// Delete takes name of the dataImportCron and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeDataImportCrons) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewDeleteAction(dataimportcronsResource, c.ns, name), &v1beta1.DataImportCron{})
|
||||
Invokes(testing.NewDeleteActionWithOptions(dataimportcronsResource, c.ns, name, opts), &v1beta1.DataImportCron{})
|
||||
|
||||
return err
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ func (c *FakeDataSources) UpdateStatus(ctx context.Context, dataSource *v1beta1.
|
||||
// Delete takes name of the dataSource and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeDataSources) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewDeleteAction(datasourcesResource, c.ns, name), &v1beta1.DataSource{})
|
||||
Invokes(testing.NewDeleteActionWithOptions(datasourcesResource, c.ns, name, opts), &v1beta1.DataSource{})
|
||||
|
||||
return err
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ func (c *FakeDataVolumes) UpdateStatus(ctx context.Context, dataVolume *v1beta1.
|
||||
// Delete takes name of the dataVolume and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeDataVolumes) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewDeleteAction(datavolumesResource, c.ns, name), &v1beta1.DataVolume{})
|
||||
Invokes(testing.NewDeleteActionWithOptions(datavolumesResource, c.ns, name, opts), &v1beta1.DataVolume{})
|
||||
|
||||
return err
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ func (c *FakeObjectTransfers) UpdateStatus(ctx context.Context, objectTransfer *
|
||||
// Delete takes name of the objectTransfer and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeObjectTransfers) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewRootDeleteAction(objecttransfersResource, name), &v1beta1.ObjectTransfer{})
|
||||
Invokes(testing.NewRootDeleteActionWithOptions(objecttransfersResource, name, opts), &v1beta1.ObjectTransfer{})
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -110,7 +110,7 @@ func (c *FakeStorageProfiles) UpdateStatus(ctx context.Context, storageProfile *
|
||||
// Delete takes name of the storageProfile and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeStorageProfiles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewRootDeleteAction(storageprofilesResource, name), &v1beta1.StorageProfile{})
|
||||
Invokes(testing.NewRootDeleteActionWithOptions(storageprofilesResource, name, opts), &v1beta1.StorageProfile{})
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -117,7 +117,7 @@ func (c *FakeUploadTokenRequests) UpdateStatus(ctx context.Context, uploadTokenR
|
||||
// Delete takes name of the uploadTokenRequest and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeUploadTokenRequests) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewDeleteAction(uploadtokenrequestsResource, c.ns, name), &v1alpha1.UploadTokenRequest{})
|
||||
Invokes(testing.NewDeleteActionWithOptions(uploadtokenrequestsResource, c.ns, name, opts), &v1alpha1.UploadTokenRequest{})
|
||||
|
||||
return err
|
||||
}
|
||||
|
@ -19,6 +19,8 @@ limitations under the License.
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
rest "k8s.io/client-go/rest"
|
||||
v1alpha1 "kubevirt.io/containerized-data-importer-api/pkg/apis/upload/v1alpha1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/client/clientset/versioned/scheme"
|
||||
@ -39,12 +41,28 @@ func (c *UploadV1alpha1Client) UploadTokenRequests(namespace string) UploadToken
|
||||
}
|
||||
|
||||
// NewForConfig creates a new UploadV1alpha1Client for the given config.
|
||||
// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
|
||||
// where httpClient was generated with rest.HTTPClientFor(c).
|
||||
func NewForConfig(c *rest.Config) (*UploadV1alpha1Client, error) {
|
||||
config := *c
|
||||
if err := setConfigDefaults(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client, err := rest.RESTClientFor(&config)
|
||||
httpClient, err := rest.HTTPClientFor(&config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return NewForConfigAndClient(&config, httpClient)
|
||||
}
|
||||
|
||||
// NewForConfigAndClient creates a new UploadV1alpha1Client for the given config and http client.
|
||||
// Note the http client provided takes precedence over the configured transport values.
|
||||
func NewForConfigAndClient(c *rest.Config, h *http.Client) (*UploadV1alpha1Client, error) {
|
||||
config := *c
|
||||
if err := setConfigDefaults(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client, err := rest.RESTClientForConfigAndClient(&config, h)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ func (c *FakeUploadTokenRequests) UpdateStatus(ctx context.Context, uploadTokenR
|
||||
// Delete takes name of the uploadTokenRequest and deletes it. Returns an error if one occurs.
|
||||
func (c *FakeUploadTokenRequests) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||
_, err := c.Fake.
|
||||
Invokes(testing.NewDeleteAction(uploadtokenrequestsResource, c.ns, name), &v1beta1.UploadTokenRequest{})
|
||||
Invokes(testing.NewDeleteActionWithOptions(uploadtokenrequestsResource, c.ns, name, opts), &v1beta1.UploadTokenRequest{})
|
||||
|
||||
return err
|
||||
}
|
||||
|
@ -19,6 +19,8 @@ limitations under the License.
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
rest "k8s.io/client-go/rest"
|
||||
v1beta1 "kubevirt.io/containerized-data-importer-api/pkg/apis/upload/v1beta1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/client/clientset/versioned/scheme"
|
||||
@ -39,12 +41,28 @@ func (c *UploadV1beta1Client) UploadTokenRequests(namespace string) UploadTokenR
|
||||
}
|
||||
|
||||
// NewForConfig creates a new UploadV1beta1Client for the given config.
|
||||
// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
|
||||
// where httpClient was generated with rest.HTTPClientFor(c).
|
||||
func NewForConfig(c *rest.Config) (*UploadV1beta1Client, error) {
|
||||
config := *c
|
||||
if err := setConfigDefaults(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client, err := rest.RESTClientFor(&config)
|
||||
httpClient, err := rest.HTTPClientFor(&config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return NewForConfigAndClient(&config, httpClient)
|
||||
}
|
||||
|
||||
// NewForConfigAndClient creates a new UploadV1beta1Client for the given config and http client.
|
||||
// Note the http client provided takes precedence over the configured transport values.
|
||||
func NewForConfigAndClient(c *rest.Config, h *http.Client) (*UploadV1beta1Client, error) {
|
||||
config := *c
|
||||
if err := setConfigDefaults(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client, err := rest.RESTClientForConfigAndClient(&config, h)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -80,6 +80,7 @@ go_test(
|
||||
"config-controller_test.go",
|
||||
"controller_suite_test.go",
|
||||
"dataimportcron-controller_test.go",
|
||||
"datasource-controller_test.go",
|
||||
"datavolume-conditions_test.go",
|
||||
"datavolume-controller_test.go",
|
||||
"import-controller_test.go",
|
||||
|
@ -370,8 +370,6 @@ var _ = Describe("Controller ImportProxy reconcile loop", func() {
|
||||
err = reconciler.reconcileImportProxy(cdiConfig)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
err = reconciler.client.Get(context.TODO(), types.NamespacedName{Name: reconciler.configName}, cdiConfig)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(proxyHTTPURL).To(Equal(*cdiConfig.Status.ImportProxy.HTTPProxy))
|
||||
Expect(proxyHTTPSURL).To(Equal(*cdiConfig.Status.ImportProxy.HTTPSProxy))
|
||||
Expect(noProxyDomains).To(Equal(*cdiConfig.Status.ImportProxy.NoProxy))
|
||||
|
@ -20,6 +20,7 @@ import (
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
)
|
||||
|
||||
|
@ -160,6 +160,9 @@ var _ = Describe("All DataImportCron Tests", func() {
|
||||
reconciler = createDataImportCronReconciler(cron)
|
||||
verifyConditions("Before DesiredDigest is set", false, false, false, noImport, noDigest, "")
|
||||
|
||||
if cron.Annotations == nil {
|
||||
cron.Annotations = make(map[string]string)
|
||||
}
|
||||
cron.Annotations[AnnSourceDesiredDigest] = testDigest
|
||||
err := reconciler.client.Update(context.TODO(), cron)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
@ -277,9 +280,6 @@ var _ = Describe("All DataImportCron Tests", func() {
|
||||
_, err = reconciler.Reconcile(context.TODO(), cronReq)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
// Actual DataImportCron deletion
|
||||
err = reconciler.client.Delete(context.TODO(), cron)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
err = reconciler.client.Get(context.TODO(), cronKey, cron)
|
||||
Expect(err).To(HaveOccurred())
|
||||
|
||||
|
@ -13,17 +13,18 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/common"
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator"
|
||||
"kubevirt.io/containerized-data-importer/pkg/storagecapabilities"
|
||||
"kubevirt.io/containerized-data-importer/pkg/util"
|
||||
"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"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/common"
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator"
|
||||
"kubevirt.io/containerized-data-importer/pkg/storagecapabilities"
|
||||
"kubevirt.io/containerized-data-importer/pkg/util"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -27,6 +27,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
)
|
||||
|
||||
@ -157,9 +158,8 @@ var _ = Describe("PVC Transfer Tests", func() {
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
err = getResource(r.Client, "", xfer.Name, xfer)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
Expect(xfer.Finalizers).To(HaveLen(0))
|
||||
Expect(err).To(HaveOccurred())
|
||||
Expect(errors.IsNotFound(err)).To(BeTrue())
|
||||
})
|
||||
|
||||
It("Should become running", func() {
|
||||
|
@ -37,7 +37,6 @@ import (
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
"k8s.io/client-go/tools/record"
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/controller"
|
||||
"sigs.k8s.io/controller-runtime/pkg/handler"
|
||||
@ -45,6 +44,8 @@ import (
|
||||
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||
"sigs.k8s.io/controller-runtime/pkg/source"
|
||||
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/common"
|
||||
"kubevirt.io/containerized-data-importer/pkg/util/cert/fetcher"
|
||||
@ -763,7 +764,7 @@ func (r *UploadReconciler) makeUploadPodSpec(args UploadPodArgs, resourceRequire
|
||||
},
|
||||
Args: []string{"-v=" + r.verbose},
|
||||
ReadinessProbe: &v1.Probe{
|
||||
Handler: v1.Handler{
|
||||
ProbeHandler: v1.ProbeHandler{
|
||||
HTTPGet: &v1.HTTPGetAction{
|
||||
Path: "/healthz",
|
||||
Port: intstr.IntOrString{
|
||||
|
@ -648,7 +648,7 @@ func createUploadClonePod(pvc *corev1.PersistentVolumeClaim, clientName string)
|
||||
},
|
||||
Args: []string{"-v=" + "5"},
|
||||
ReadinessProbe: &corev1.Probe{
|
||||
Handler: corev1.Handler{
|
||||
ProbeHandler: corev1.ProbeHandler{
|
||||
HTTPGet: &corev1.HTTPGetAction{
|
||||
Path: "/healthz",
|
||||
Port: intstr.IntOrString{
|
||||
|
@ -32,6 +32,7 @@ import (
|
||||
"github.com/containers/image/v5/types"
|
||||
"github.com/pkg/errors"
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/util"
|
||||
)
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
. "github.com/onsi/ginkgo"
|
||||
"github.com/onsi/ginkgo/extensions/table"
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
)
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
//go:build amd64
|
||||
// +build amd64
|
||||
|
||||
/*
|
||||
@ -47,6 +48,7 @@ import (
|
||||
"golang.org/x/sys/unix"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/common"
|
||||
"kubevirt.io/containerized-data-importer/pkg/image"
|
||||
"kubevirt.io/containerized-data-importer/pkg/util"
|
||||
|
@ -1,3 +1,4 @@
|
||||
//go:build arm64
|
||||
// +build arm64
|
||||
|
||||
package importer
|
||||
|
@ -1,3 +1,4 @@
|
||||
//go:build amd64
|
||||
// +build amd64
|
||||
|
||||
package importer
|
||||
@ -21,6 +22,7 @@ import (
|
||||
"github.com/vmware/govmomi/vim25/soap"
|
||||
"github.com/vmware/govmomi/vim25/types"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/image"
|
||||
)
|
||||
|
||||
|
@ -87,7 +87,6 @@ go_test(
|
||||
"//pkg/operator/resources/cert:go_default_library",
|
||||
"//pkg/operator/resources/cluster:go_default_library",
|
||||
"//pkg/operator/resources/namespaced:go_default_library",
|
||||
"//pkg/operator/resources/operator:go_default_library",
|
||||
"//pkg/operator/resources/utils:go_default_library",
|
||||
"//staging/src/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1:go_default_library",
|
||||
"//tests/reporters:go_default_library",
|
||||
@ -111,7 +110,6 @@ go_test(
|
||||
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
|
||||
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
|
||||
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
||||
"//vendor/k8s.io/client-go/rest:go_default_library",
|
||||
"//vendor/k8s.io/client-go/tools/record:go_default_library",
|
||||
"//vendor/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1:go_default_library",
|
||||
"//vendor/kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api:go_default_library",
|
||||
@ -120,11 +118,8 @@ go_test(
|
||||
"//vendor/sigs.k8s.io/controller-runtime/pkg/client:go_default_library",
|
||||
"//vendor/sigs.k8s.io/controller-runtime/pkg/client/fake:go_default_library",
|
||||
"//vendor/sigs.k8s.io/controller-runtime/pkg/controller/controllerutil:go_default_library",
|
||||
"//vendor/sigs.k8s.io/controller-runtime/pkg/envtest:go_default_library",
|
||||
"//vendor/sigs.k8s.io/controller-runtime/pkg/log:go_default_library",
|
||||
"//vendor/sigs.k8s.io/controller-runtime/pkg/log/zap:go_default_library",
|
||||
"//vendor/sigs.k8s.io/controller-runtime/pkg/manager:go_default_library",
|
||||
"//vendor/sigs.k8s.io/controller-runtime/pkg/metrics:go_default_library",
|
||||
"//vendor/sigs.k8s.io/controller-runtime/pkg/reconcile:go_default_library",
|
||||
],
|
||||
)
|
||||
|
@ -30,9 +30,10 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
sdk "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
sdk "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/common"
|
||||
cdicontroller "kubevirt.io/containerized-data-importer/pkg/controller"
|
||||
|
@ -88,7 +88,7 @@ func newCertManager(client kubernetes.Interface, installNamespace string, additi
|
||||
namespaces := append(additionalNamespaces, installNamespace)
|
||||
informers := v1helpers.NewKubeInformersForNamespaces(client, namespaces...)
|
||||
|
||||
controllerRef, err := events.GetControllerReferenceForCurrentPod(client, installNamespace, nil)
|
||||
controllerRef, err := events.GetControllerReferenceForCurrentPod(context.TODO(), client, installNamespace, nil)
|
||||
if err != nil {
|
||||
log.Info("Unable to get controller reference, using namespace")
|
||||
}
|
||||
@ -226,7 +226,7 @@ func (cm *certManager) ensureSigner(cd cdicerts.CertificateDefinition) (*crypto.
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sr := certrotation.SigningRotation{
|
||||
sr := certrotation.RotatedSigningCASecret{
|
||||
Name: secret.Name,
|
||||
Namespace: secret.Namespace,
|
||||
Validity: cd.SignerConfig.Lifetime,
|
||||
@ -236,7 +236,7 @@ func (cm *certManager) ensureSigner(cd cdicerts.CertificateDefinition) (*crypto.
|
||||
EventRecorder: cm.eventRecorder,
|
||||
}
|
||||
|
||||
ca, err := sr.EnsureSigningCertKeyPair()
|
||||
ca, err := sr.EnsureSigningCertKeyPair(context.TODO())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -251,7 +251,7 @@ func (cm *certManager) ensureCertBundle(cd cdicerts.CertificateDefinition, ca *c
|
||||
return nil, fmt.Errorf("no lister for namespace %s", configMap.Namespace)
|
||||
}
|
||||
lister := listers.configMapLister
|
||||
br := certrotation.CABundleRotation{
|
||||
br := certrotation.CABundleConfigMap{
|
||||
Name: configMap.Name,
|
||||
Namespace: configMap.Namespace,
|
||||
Lister: lister,
|
||||
@ -259,7 +259,7 @@ func (cm *certManager) ensureCertBundle(cd cdicerts.CertificateDefinition, ca *c
|
||||
EventRecorder: cm.eventRecorder,
|
||||
}
|
||||
|
||||
certs, err := br.EnsureConfigMapCABundle(ca)
|
||||
certs, err := br.EnsureConfigMapCABundle(context.TODO(), ca)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -306,7 +306,7 @@ func (cm *certManager) ensureTarget(cd cdicerts.CertificateDefinition, ca *crypt
|
||||
}
|
||||
}
|
||||
|
||||
tr := certrotation.TargetRotation{
|
||||
tr := certrotation.RotatedSelfSignedCertKeySecret{
|
||||
Name: secret.Name,
|
||||
Namespace: secret.Namespace,
|
||||
Validity: cd.TargetConfig.Lifetime,
|
||||
@ -317,7 +317,7 @@ func (cm *certManager) ensureTarget(cd cdicerts.CertificateDefinition, ca *crypt
|
||||
EventRecorder: cm.eventRecorder,
|
||||
}
|
||||
|
||||
if err := tr.EnsureTargetCertKeyPair(ca, bundle); err != nil {
|
||||
if err := tr.EnsureTargetCertKeyPair(context.TODO(), ca, bundle); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -146,7 +146,7 @@ func newReconciler(mgr manager.Manager) (*ReconcileCDI, error) {
|
||||
dumpInstallStrategy: dumpInstallStrategy,
|
||||
}
|
||||
callbackDispatcher := callbacks.NewCallbackDispatcher(log, restClient, uncachedClient, scheme, namespace)
|
||||
r.reconciler = sdkr.NewReconciler(r, log, restClient, callbackDispatcher, scheme, createVersionLabel, updateVersionLabel, LastAppliedConfigAnnotation, certPollInterval, finalizerName, recorder)
|
||||
r.reconciler = sdkr.NewReconciler(r, log, restClient, callbackDispatcher, scheme, createVersionLabel, updateVersionLabel, LastAppliedConfigAnnotation, certPollInterval, finalizerName, false, recorder)
|
||||
|
||||
r.registerHooks()
|
||||
addReconcileCallbacks(r)
|
||||
|
@ -22,15 +22,9 @@ import (
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/rest"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/envtest"
|
||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
"sigs.k8s.io/controller-runtime/pkg/log/zap"
|
||||
"sigs.k8s.io/controller-runtime/pkg/metrics"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources/operator"
|
||||
"kubevirt.io/containerized-data-importer/tests/reporters"
|
||||
)
|
||||
|
||||
@ -39,46 +33,6 @@ func TestOperator(t *testing.T) {
|
||||
RunSpecsWithDefaultAndCustomReporters(t, "Controller Suite", reporters.NewReporters())
|
||||
}
|
||||
|
||||
var testenv *envtest.Environment
|
||||
var cfg *rest.Config
|
||||
var clientset *kubernetes.Clientset
|
||||
|
||||
var _ = BeforeSuite(func(done Done) {
|
||||
var _ = BeforeSuite(func() {
|
||||
logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true)))
|
||||
|
||||
env := &envtest.Environment{}
|
||||
|
||||
var err error
|
||||
cfg, err = env.Start()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
clientset, err = kubernetes.NewForConfig(cfg)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
opts := envtest.CRDInstallOptions{
|
||||
CRDs: []client.Object{operator.NewCdiCrd()},
|
||||
}
|
||||
|
||||
crds, err := envtest.InstallCRDs(cfg, opts)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
err = envtest.WaitForCRDs(cfg, crds, envtest.CRDInstallOptions{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
// Prevent the metrics listener being created
|
||||
metrics.DefaultBindAddress = "0"
|
||||
|
||||
testenv = env
|
||||
|
||||
close(done)
|
||||
}, 60)
|
||||
|
||||
var _ = AfterSuite(func() {
|
||||
if testenv == nil {
|
||||
return
|
||||
}
|
||||
|
||||
testenv.Stop()
|
||||
|
||||
// Put the DefaultBindAddress back
|
||||
metrics.DefaultBindAddress = ":8080"
|
||||
})
|
||||
|
@ -20,7 +20,6 @@ import (
|
||||
"context"
|
||||
generrors "errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
@ -52,7 +51,6 @@ import (
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
fakeClient "sigs.k8s.io/controller-runtime/pkg/client/fake"
|
||||
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
|
||||
"sigs.k8s.io/controller-runtime/pkg/manager"
|
||||
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
@ -80,21 +78,6 @@ type args struct {
|
||||
reconciler *ReconcileCDI
|
||||
}
|
||||
|
||||
var (
|
||||
envVars = map[string]string{
|
||||
"OPERATOR_VERSION": version,
|
||||
"DEPLOY_CLUSTER_RESOURCES": "true",
|
||||
"CONTROLLER_IMAGE": "kubevirt/cdi-controller",
|
||||
"IMPORTER_IMAGE": "kubevirt/cdi-importer",
|
||||
"CLONER_IMAGE": "kubevirt/cdi-cloner",
|
||||
"UPLOAD_PROXY_IMAGE": "ckubevirt/di-uploadproxy",
|
||||
"UPLOAD_SERVER_IMAGE": "kubevirt/cdi-uploadserver",
|
||||
"APISERVER_IMAGE": "kubevirt/cdi-apiserver",
|
||||
"VERBOSITY": "1",
|
||||
"PULL_POLICY": "Always",
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
cdiv1.AddToScheme(scheme.Scheme)
|
||||
extv1.AddToScheme(scheme.Scheme)
|
||||
@ -111,41 +94,6 @@ type isUpgraded func(postUpgradeObj client.Object, deisredObj client.Object) boo
|
||||
type createUnusedObject func() (client.Object, error)
|
||||
|
||||
var _ = Describe("Controller", func() {
|
||||
Describe("controller runtime bootstrap test", func() {
|
||||
Context("Create manager and controller", func() {
|
||||
BeforeEach(func() {
|
||||
for k, v := range envVars {
|
||||
os.Setenv(k, v)
|
||||
}
|
||||
})
|
||||
|
||||
AfterEach(func() {
|
||||
for k := range envVars {
|
||||
os.Unsetenv(k)
|
||||
}
|
||||
})
|
||||
|
||||
It("should succeed", func() {
|
||||
mgr, err := manager.New(cfg, manager.Options{})
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
err = cdiv1.AddToScheme(mgr.GetScheme())
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
err = extv1.AddToScheme(mgr.GetScheme())
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
err = secv1.Install(mgr.GetScheme())
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
mgr.GetClient().Create(context.TODO(), createCDI("cdi", "good uid"), &client.CreateOptions{})
|
||||
|
||||
err = Add(mgr)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
DescribeTable("check can create types", func(obj client.Object) {
|
||||
client := createClient(obj)
|
||||
|
||||
@ -627,10 +575,7 @@ var _ = Describe("Controller", func() {
|
||||
err = args.client.Update(context.TODO(), args.cdi)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
doReconcile(args)
|
||||
|
||||
Expect(args.cdi.Finalizers).Should(BeEmpty())
|
||||
Expect(args.cdi.Status.Phase).Should(Equal(sdkapi.PhaseDeleted))
|
||||
doReconcileExpectDelete(args)
|
||||
|
||||
_, err = getObject(args.client, pod)
|
||||
Expect(errors.IsNotFound(err)).To(BeTrue())
|
||||
@ -789,6 +734,7 @@ var _ = Describe("Controller", func() {
|
||||
crSetVersion(args.reconciler.reconciler, args.cdi, prevVersion)
|
||||
//marc CDI CR for deltetion
|
||||
args.cdi.SetDeletionTimestamp(&metav1.Time{Time: time.Now()})
|
||||
args.cdi.Finalizers = append(args.cdi.Finalizers, "keepmearound")
|
||||
err := args.client.Update(context.TODO(), args.cdi)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
@ -826,9 +772,7 @@ var _ = Describe("Controller", func() {
|
||||
err = args.client.Update(context.TODO(), args.cdi)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
doReconcile(args)
|
||||
//verify the version cr is marked as deleted
|
||||
Expect(args.cdi.Status.Phase).Should(Equal(sdkapi.PhaseDeleted))
|
||||
doReconcileExpectDelete(args)
|
||||
|
||||
//verify events, this should include an upgrade event
|
||||
match := createDeleteCDIAfterReadyEventValidationMap()
|
||||
@ -1605,6 +1549,16 @@ func doReconcileRequeue(args *args) {
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
}
|
||||
|
||||
func doReconcileExpectDelete(args *args) {
|
||||
result, err := args.reconciler.Reconcile(context.TODO(), reconcileRequest(args.cdi.Name))
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(result.Requeue).To(BeFalse())
|
||||
|
||||
_, err = getCDI(args.client, args.cdi)
|
||||
Expect(err).To(HaveOccurred())
|
||||
Expect(errors.IsNotFound(err)).To(BeTrue())
|
||||
}
|
||||
|
||||
func createClient(objs ...client.Object) client.Client {
|
||||
var runtimeObjs []runtime.Object
|
||||
for _, obj := range objs {
|
||||
@ -1671,7 +1625,7 @@ func createReconciler(client client.Client) *ReconcileCDI {
|
||||
certManager: newFakeCertManager(client, namespace),
|
||||
}
|
||||
callbackDispatcher := callbacks.NewCallbackDispatcher(log, client, client, scheme.Scheme, namespace)
|
||||
r.reconciler = sdkr.NewReconciler(r, log, client, callbackDispatcher, scheme.Scheme, createVersionLabel, updateVersionLabel, LastAppliedConfigAnnotation, certPollInterval, finalizerName, recorder).
|
||||
r.reconciler = sdkr.NewReconciler(r, log, client, callbackDispatcher, scheme.Scheme, createVersionLabel, updateVersionLabel, LastAppliedConfigAnnotation, certPollInterval, finalizerName, false, recorder).
|
||||
WithWatching(true)
|
||||
|
||||
r.registerHooks()
|
||||
|
@ -18,6 +18,7 @@ package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
|
||||
cdicluster "kubevirt.io/containerized-data-importer/pkg/operator/resources/cluster"
|
||||
|
@ -39,8 +39,9 @@ import (
|
||||
extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
sdk "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
sdk "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -31,13 +31,14 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
|
||||
"sigs.k8s.io/controller-runtime/pkg/source"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/common"
|
||||
"kubevirt.io/containerized-data-importer/pkg/controller"
|
||||
"kubevirt.io/containerized-data-importer/pkg/util"
|
||||
sdk "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
|
||||
"sigs.k8s.io/controller-runtime/pkg/source"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -353,48 +354,42 @@ func generateRecordRule(record, expr string) promv1.Rule {
|
||||
}
|
||||
|
||||
func (r *ReconcileCDI) watchPrometheusResources() error {
|
||||
var err error
|
||||
listObjs := []client.ObjectList{
|
||||
&promv1.PrometheusRuleList{},
|
||||
&promv1.ServiceMonitorList{},
|
||||
}
|
||||
|
||||
err = r.controller.Watch(
|
||||
&source.Kind{Type: &promv1.PrometheusRule{}},
|
||||
enqueueCDI(r.client),
|
||||
)
|
||||
if err != nil {
|
||||
if meta.IsNoMatchError(err) {
|
||||
log.Info("Not watching PrometheusRules")
|
||||
return nil
|
||||
objs := []client.Object{
|
||||
&promv1.PrometheusRule{},
|
||||
&promv1.ServiceMonitor{},
|
||||
}
|
||||
|
||||
for i, listObj := range listObjs {
|
||||
obj := objs[i]
|
||||
err := r.uncachedClient.List(context.TODO(), listObj, &client.ListOptions{
|
||||
Namespace: util.GetNamespace(),
|
||||
Limit: 1,
|
||||
})
|
||||
if err == nil {
|
||||
if err := r.controller.Watch(&source.Kind{Type: obj}, enqueueCDI(r.client)); err != nil {
|
||||
return err
|
||||
}
|
||||
} else if meta.IsNoMatchError(err) {
|
||||
log.Info("Not watching", "type", fmt.Sprintf("%T", obj))
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
err = r.controller.Watch(
|
||||
&source.Kind{Type: &promv1.ServiceMonitor{}},
|
||||
enqueueCDI(r.client),
|
||||
)
|
||||
if err != nil {
|
||||
if meta.IsNoMatchError(err) {
|
||||
log.Info("Not watching ServiceMonitors")
|
||||
return nil
|
||||
objs = []client.Object{
|
||||
&rbacv1.Role{},
|
||||
&rbacv1.RoleBinding{},
|
||||
}
|
||||
|
||||
for _, obj := range objs {
|
||||
if err := r.controller.Watch(&source.Kind{Type: obj}, enqueueCDI(r.client)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
err = r.controller.Watch(
|
||||
&source.Kind{Type: &rbacv1.Role{}},
|
||||
enqueueCDI(r.client),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = r.controller.Watch(
|
||||
&source.Kind{Type: &rbacv1.RoleBinding{}},
|
||||
enqueueCDI(r.client),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
|
@ -130,18 +130,17 @@ func ensureUploadProxyRouteExists(logger logr.Logger, c client.Client, scheme *r
|
||||
}
|
||||
|
||||
func (r *ReconcileCDI) watchRoutes() error {
|
||||
err := r.controller.Watch(
|
||||
&source.Kind{Type: &routev1.Route{}},
|
||||
enqueueCDI(r.client),
|
||||
)
|
||||
if err != nil {
|
||||
if meta.IsNoMatchError(err) {
|
||||
log.Info("Not watching Routes")
|
||||
return nil
|
||||
}
|
||||
|
||||
return err
|
||||
err := r.uncachedClient.List(context.TODO(), &routev1.RouteList{}, &client.ListOptions{
|
||||
Namespace: util.GetNamespace(),
|
||||
Limit: 1,
|
||||
})
|
||||
if err == nil {
|
||||
return r.controller.Watch(&source.Kind{Type: &routev1.Route{}}, enqueueCDI(r.client))
|
||||
}
|
||||
if meta.IsNoMatchError(err) {
|
||||
log.Info("Not watching Routes")
|
||||
return nil
|
||||
}
|
||||
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
@ -112,18 +112,18 @@ func ensureSCCExists(logger logr.Logger, c client.Client, saNamespace, saName st
|
||||
}
|
||||
|
||||
func (r *ReconcileCDI) watchSecurityContextConstraints() error {
|
||||
err := r.controller.Watch(
|
||||
&source.Kind{Type: &secv1.SecurityContextConstraints{}},
|
||||
enqueueCDI(r.client),
|
||||
)
|
||||
if err != nil {
|
||||
if meta.IsNoMatchError(err) {
|
||||
log.Info("Not watching SecurityContextConstraints")
|
||||
return nil
|
||||
}
|
||||
|
||||
return err
|
||||
err := r.uncachedClient.List(context.TODO(), &secv1.SecurityContextConstraintsList{}, &client.ListOptions{
|
||||
Limit: 1,
|
||||
})
|
||||
if err == nil {
|
||||
return r.controller.Watch(&source.Kind{Type: &secv1.SecurityContextConstraints{}}, enqueueCDI(r.client))
|
||||
}
|
||||
if meta.IsNoMatchError(err) {
|
||||
log.Info("Not watching SecurityContextConstraints")
|
||||
return nil
|
||||
}
|
||||
|
||||
return nil
|
||||
log.Info("GOODBYE SCC")
|
||||
|
||||
return err
|
||||
}
|
||||
|
@ -539,17 +539,13 @@ func getAPIServerCABundle(namespace string, c client.Client, l logr.Logger) []by
|
||||
cm := &corev1.ConfigMap{}
|
||||
key := client.ObjectKey{Namespace: namespace, Name: "cdi-apiserver-signer-bundle"}
|
||||
if err := c.Get(context.TODO(), key, cm); err != nil {
|
||||
if l != nil {
|
||||
l.Error(err, "error getting apiserver ca bundle")
|
||||
}
|
||||
l.Error(err, "error getting apiserver ca bundle")
|
||||
return nil
|
||||
}
|
||||
if cert, ok := cm.Data["ca-bundle.crt"]; ok {
|
||||
return []byte(cert)
|
||||
}
|
||||
if l != nil {
|
||||
l.V(2).Info("apiserver ca bundle missing from configmap")
|
||||
}
|
||||
l.V(2).Info("apiserver ca bundle missing from configmap")
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
|
||||
k8syaml "k8s.io/apimachinery/pkg/util/yaml"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources"
|
||||
)
|
||||
|
||||
|
@ -18,8 +18,9 @@ package cluster
|
||||
|
||||
import (
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -18,8 +18,9 @@ package cluster
|
||||
|
||||
import (
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -21,6 +21,7 @@ import (
|
||||
|
||||
extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
k8syaml "k8s.io/apimachinery/pkg/util/yaml"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources"
|
||||
)
|
||||
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
|
||||
extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
k8syaml "k8s.io/apimachinery/pkg/util/yaml"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources"
|
||||
)
|
||||
|
||||
|
@ -21,6 +21,7 @@ import (
|
||||
|
||||
extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
k8syaml "k8s.io/apimachinery/pkg/util/yaml"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources"
|
||||
)
|
||||
|
||||
|
@ -18,8 +18,9 @@ package cluster
|
||||
|
||||
import (
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -24,9 +24,10 @@ import (
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/common"
|
||||
utils "kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
)
|
||||
@ -118,7 +119,7 @@ func createAPIServerDeployment(image, verbosity, pullPolicy, priorityClassName s
|
||||
},
|
||||
}
|
||||
container.ReadinessProbe = &corev1.Probe{
|
||||
Handler: corev1.Handler{
|
||||
ProbeHandler: corev1.ProbeHandler{
|
||||
HTTPGet: &corev1.HTTPGetAction{
|
||||
Path: "/healthz",
|
||||
Port: intstr.IntOrString{
|
||||
|
@ -25,9 +25,10 @@ import (
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/common"
|
||||
"kubevirt.io/containerized-data-importer/pkg/controller"
|
||||
utils "kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
@ -180,7 +181,7 @@ func createControllerDeployment(controllerImage, importerImage, clonerImage, upl
|
||||
},
|
||||
}
|
||||
container.ReadinessProbe = &corev1.Probe{
|
||||
Handler: corev1.Handler{
|
||||
ProbeHandler: corev1.ProbeHandler{
|
||||
Exec: &corev1.ExecAction{
|
||||
Command: []string{"cat", "/tmp/ready"},
|
||||
},
|
||||
|
@ -19,8 +19,9 @@ package namespaced
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
utils "kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
utils "kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -20,9 +20,10 @@ import (
|
||||
"fmt"
|
||||
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
|
||||
utils "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/resources"
|
||||
)
|
||||
|
||||
|
@ -22,9 +22,10 @@ import (
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
|
||||
utils "kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
)
|
||||
|
||||
@ -104,7 +105,7 @@ func createUploadProxyDeployment(image, verbosity, pullPolicy, priorityClassName
|
||||
},
|
||||
}
|
||||
container.ReadinessProbe = &corev1.Probe{
|
||||
Handler: corev1.Handler{
|
||||
ProbeHandler: corev1.ProbeHandler{
|
||||
HTTPGet: &corev1.HTTPGetAction{
|
||||
Path: "/healthz",
|
||||
Port: intstr.IntOrString{
|
||||
|
@ -31,6 +31,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
k8syaml "k8s.io/apimachinery/pkg/util/yaml"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/operator/resources"
|
||||
cluster "kubevirt.io/containerized-data-importer/pkg/operator/resources/cluster"
|
||||
utils "kubevirt.io/containerized-data-importer/pkg/operator/resources/utils"
|
||||
|
@ -19,6 +19,7 @@ package utils
|
||||
import (
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/pkg/common"
|
||||
"kubevirt.io/containerized-data-importer/pkg/util"
|
||||
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk/api"
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||
)
|
||||
|
@ -11,5 +11,6 @@ go_library(
|
||||
"//vendor/github.com/go-openapi/spec:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/builder:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
|
||||
"//vendor/k8s.io/kube-openapi/pkg/validation/spec:go_default_library",
|
||||
],
|
||||
)
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"github.com/go-openapi/spec"
|
||||
"k8s.io/kube-openapi/pkg/builder"
|
||||
"k8s.io/kube-openapi/pkg/common"
|
||||
k8sspec "k8s.io/kube-openapi/pkg/validation/spec"
|
||||
)
|
||||
|
||||
// code stolen/adapted from https://github.com/kubevirt/kubevirt/blob/main/pkg/util/openapi/openapi.go
|
||||
@ -52,31 +53,31 @@ func addInfoToSwaggerObject(swo *spec.Swagger) {
|
||||
|
||||
func createConfig(getDefinitions common.GetOpenAPIDefinitions) *common.Config {
|
||||
return &common.Config{
|
||||
CommonResponses: map[int]spec.Response{
|
||||
CommonResponses: map[int]k8sspec.Response{
|
||||
401: {
|
||||
ResponseProps: spec.ResponseProps{
|
||||
ResponseProps: k8sspec.ResponseProps{
|
||||
Description: "Unauthorized",
|
||||
},
|
||||
},
|
||||
},
|
||||
Info: &spec.Info{
|
||||
InfoProps: spec.InfoProps{
|
||||
Info: &k8sspec.Info{
|
||||
InfoProps: k8sspec.InfoProps{
|
||||
Title: "KubeVirt Containerized Data Importer API",
|
||||
Description: "Containerized Data Importer for KubeVirt.",
|
||||
Contact: &spec.ContactInfo{
|
||||
Contact: &k8sspec.ContactInfo{
|
||||
Name: "kubevirt-dev",
|
||||
Email: "kubevirt-dev@googlegroups.com",
|
||||
URL: "https://github.com/kubevirt/containerized-data-importer",
|
||||
},
|
||||
License: &spec.License{
|
||||
License: &k8sspec.License{
|
||||
Name: "Apache 2.0",
|
||||
URL: "https://www.apache.org/licenses/LICENSE-2.0",
|
||||
},
|
||||
},
|
||||
},
|
||||
SecurityDefinitions: &spec.SecurityDefinitions{
|
||||
"BearerToken": &spec.SecurityScheme{
|
||||
SecuritySchemeProps: spec.SecuritySchemeProps{
|
||||
SecurityDefinitions: &k8sspec.SecurityDefinitions{
|
||||
"BearerToken": &k8sspec.SecurityScheme{
|
||||
SecuritySchemeProps: k8sspec.SecuritySchemeProps{
|
||||
Type: "apiKey",
|
||||
Name: "authorization",
|
||||
In: "header",
|
||||
@ -89,7 +90,7 @@ func createConfig(getDefinitions common.GetOpenAPIDefinitions) *common.Config {
|
||||
}
|
||||
|
||||
// LoadOpenAPISpec creates a swagger doc for given webservice(s)
|
||||
func LoadOpenAPISpec(webServices []*restful.WebService, getDefinitions common.GetOpenAPIDefinitions) (*spec.Swagger, error) {
|
||||
func LoadOpenAPISpec(webServices []*restful.WebService, getDefinitions common.GetOpenAPIDefinitions) (*k8sspec.Swagger, error) {
|
||||
config := createConfig(getDefinitions)
|
||||
return builder.BuildOpenAPISpec(webServices, config)
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ module kubevirt.io/containerized-data-importer-api
|
||||
go 1.16
|
||||
|
||||
require (
|
||||
k8s.io/api v0.20.2
|
||||
k8s.io/apimachinery v0.20.2
|
||||
kubevirt.io/controller-lifecycle-operator-sdk v0.2.1
|
||||
k8s.io/api v0.23.0
|
||||
k8s.io/apimachinery v0.23.0
|
||||
kubevirt.io/controller-lifecycle-operator-sdk v0.2.3
|
||||
)
|
||||
|
@ -74,6 +74,7 @@ github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfc
|
||||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
@ -94,11 +95,13 @@ github.com/evanphx/json-patch v4.0.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi
|
||||
github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/evanphx/json-patch v4.5.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 v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg=
|
||||
github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||
@ -110,12 +113,14 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9
|
||||
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
||||
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
||||
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
|
||||
github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs=
|
||||
github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
|
||||
github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE=
|
||||
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU=
|
||||
github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
|
||||
github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
|
||||
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||
github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
|
||||
github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
|
||||
github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
|
||||
@ -130,8 +135,9 @@ github.com/gobuffalo/flect v0.2.2/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20j
|
||||
github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
|
||||
github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
|
||||
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
@ -157,6 +163,8 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq
|
||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
@ -164,8 +172,9 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
|
||||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
|
||||
@ -186,7 +195,9 @@ github.com/googleapis/gnostic v0.0.0-20170426233943-68f4ded48ba9/go.mod h1:sJBsC
|
||||
github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
|
||||
github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
|
||||
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
|
||||
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||
github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||
@ -225,25 +236,27 @@ github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22
|
||||
github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
|
||||
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
|
||||
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
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/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
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.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
@ -269,18 +282,22 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4
|
||||
github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
|
||||
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
|
||||
github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
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.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||
github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
|
||||
@ -289,6 +306,7 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W
|
||||
github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
||||
github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
||||
github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
|
||||
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
@ -362,14 +380,17 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
||||
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
||||
go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
|
||||
@ -429,6 +450,7 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
|
||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@ -457,8 +479,11 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
|
||||
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20210825183410-e898025ed96a h1:bRuuGXV8wwSdGTB+CtJf+FjgO1APK1CoO39T4BN/XBw=
|
||||
golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
@ -470,6 +495,8 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ
|
||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@ -510,14 +537,23 @@ golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc=
|
||||
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
@ -567,9 +603,13 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs
|
||||
golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200616195046-dc31b401abb5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gomodules.xyz/jsonpatch/v2 v2.1.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU=
|
||||
gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0=
|
||||
@ -610,6 +650,7 @@ google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfG
|
||||
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||
google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||
@ -628,11 +669,15 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
|
||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
@ -650,11 +695,13 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
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.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
|
||||
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
@ -665,14 +712,16 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt
|
||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
k8s.io/api v0.0.0-20190725062911-6607c48751ae/go.mod h1:1O0xzX/RAtnm7l+5VEUxZ1ysO2ghatfq/OZED4zM9kA=
|
||||
k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo=
|
||||
k8s.io/api v0.20.2 h1:y/HR22XDZY3pniu9hIFDLpUCPq2w5eQ6aV/VFQ7uJMw=
|
||||
k8s.io/api v0.20.2/go.mod h1:d7n6Ehyzx+S+cE3VhTGfVNNqtGc/oL9DCdYYahlurV8=
|
||||
k8s.io/api v0.23.0 h1:WrL1gb73VSC8obi8cuYETJGXEoFNEh3LU0Pt+Sokgro=
|
||||
k8s.io/api v0.23.0/go.mod h1:8wmDdLBHBNxtOIytwLstXt5E9PddnZb0GaMcqsvDBpg=
|
||||
k8s.io/apiextensions-apiserver v0.20.1/go.mod h1:ntnrZV+6a3dB504qwC5PN/Yg9PBiDNt1EVqbW2kORVk=
|
||||
k8s.io/apiextensions-apiserver v0.20.2/go.mod h1:F6TXp389Xntt+LUq3vw6HFOLttPa0V8821ogLGwb6Zs=
|
||||
k8s.io/apimachinery v0.0.0-20190719140911-bfcf53abc9f8/go.mod h1:sBJWIJZfxLhp7mRsRyuAE/NfKTr3kXGR1iaqg8O0gJo=
|
||||
k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
|
||||
k8s.io/apimachinery v0.20.2 h1:hFx6Sbt1oG0n6DZ+g4bFt5f6BoMkOjKWsQFu077M3Vg=
|
||||
k8s.io/apimachinery v0.20.2/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
|
||||
k8s.io/apimachinery v0.23.0 h1:mIfWRMjBuMdolAWJ3Fd+aPTMv3X9z+waiARMpvvb0HQ=
|
||||
k8s.io/apimachinery v0.23.0/go.mod h1:fFCTTBKvKcwTPFzjlcxp91uPFZr+JA0FubU4fLzzFYc=
|
||||
k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU=
|
||||
k8s.io/apiserver v0.20.2/go.mod h1:2nKd93WyMhZx4Hp3RfgH2K5PhwyTrprrkWYnI7id7jA=
|
||||
k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y=
|
||||
@ -685,19 +734,25 @@ k8s.io/component-base v0.20.2/go.mod h1:pzFtCiwe/ASD0iV7ySMu8SYVJjCapNM9bjvk7ptp
|
||||
k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
||||
k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
||||
k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
|
||||
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
|
||||
k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||
k8s.io/klog v0.3.1 h1:RVgyDHY/kFKtLqh67NvEWIgkMneNoIrdkN0CxDSQc68=
|
||||
k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
|
||||
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
||||
k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ=
|
||||
k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
||||
k8s.io/klog/v2 v2.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw=
|
||||
k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
|
||||
k8s.io/kube-openapi v0.0.0-20190709113604-33be087ad058/go.mod h1:nfDlWeOsu3pUf4yWGL+ERqohP4YsZcBJXWMK+gkzOA4=
|
||||
k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM=
|
||||
k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk=
|
||||
k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
k8s.io/utils v0.0.0-20210111153108-fddb29f9d009/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
kubevirt.io/controller-lifecycle-operator-sdk v0.2.1 h1:I1b14fnhwrVvQLmgksMo9vgje42hmH4QN5kqyYDqbMA=
|
||||
kubevirt.io/controller-lifecycle-operator-sdk v0.2.1/go.mod h1:ZJhLceiY2Gl5CXFGSp5eMGt/sksOiJP0289nAZFCQf0=
|
||||
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs=
|
||||
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
kubevirt.io/controller-lifecycle-operator-sdk v0.2.3 h1:auv8LrA7gnLfQREnlGVPwgJpTxOEgnw4+mzXlUqKTxY=
|
||||
kubevirt.io/controller-lifecycle-operator-sdk v0.2.3/go.mod h1:ZJhLceiY2Gl5CXFGSp5eMGt/sksOiJP0289nAZFCQf0=
|
||||
modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
|
||||
modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
|
||||
modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
|
||||
@ -709,10 +764,13 @@ rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg=
|
||||
sigs.k8s.io/controller-runtime v0.8.3/go.mod h1:U/l+DUopBc1ecfRZ5aviA9JDmGFQKvLf5YkZNx2e0sU=
|
||||
sigs.k8s.io/controller-tools v0.5.0/go.mod h1:JTsstrMpxs+9BUj6eGuAaEb6SDSPTeVtUyp0jmnAM/I=
|
||||
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s=
|
||||
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs=
|
||||
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e h1:4Z09Hglb792X0kfOBBJUPFEyvVfQWrYT/l8h5EKA6JQ=
|
||||
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.2 h1:YHQV7Dajm86OuqnIR6zAelnDWBRjo+YhYV9PmGrh1s8=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
|
||||
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
||||
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
|
||||
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
|
||||
|
@ -1,3 +1,4 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
|
@ -1,3 +1,4 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
|
@ -1,3 +1,4 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
|
@ -1,3 +1,4 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
"kubevirt.io/containerized-data-importer/pkg/controller"
|
||||
"kubevirt.io/containerized-data-importer/tests/framework"
|
||||
|
@ -567,7 +567,7 @@ func (f *Framework) UpdateCdiConfigResourceLimits(resourceCPU, resourceMemory, l
|
||||
}
|
||||
values := strings.Fields(res)
|
||||
if len(values) != 4 {
|
||||
return false, errors.New("length is not 4: " + string(len(values)))
|
||||
return false, errors.New(fmt.Sprintf("length is not 4: %d", len(values)))
|
||||
}
|
||||
reqCPU, err := strconv.ParseInt(values[0], 10, 64)
|
||||
if err != nil {
|
||||
|
@ -11,6 +11,7 @@ import (
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
||||
"kubevirt.io/containerized-data-importer/tests"
|
||||
"kubevirt.io/containerized-data-importer/tests/framework"
|
||||
"kubevirt.io/containerized-data-importer/tests/reporters"
|
||||
|
@ -16,6 +16,7 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
cdiClientset "kubevirt.io/containerized-data-importer/pkg/client/clientset/versioned"
|
||||
)
|
||||
|
@ -6,9 +6,10 @@ import (
|
||||
|
||||
"github.com/onsi/gomega"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
|
||||
cdiclientset "kubevirt.io/containerized-data-importer/pkg/client/clientset/versioned"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
425
vendor/github.com/docker/spdystream/LICENSE.docs
generated
vendored
425
vendor/github.com/docker/spdystream/LICENSE.docs
generated
vendored
@ -1,425 +0,0 @@
|
||||
Attribution-ShareAlike 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More_considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
such rights in consideration of benefits the Licensor receives from
|
||||
making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
|
||||
including for purposes of Section 3(b); and
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public licenses.
|
||||
Notwithstanding, Creative Commons may elect to apply one of its public
|
||||
licenses to material it publishes and in those instances will be
|
||||
considered the "Licensor." Except for the limited purpose of indicating
|
||||
that material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the public
|
||||
licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
16
vendor/github.com/docker/spdystream/utils.go
generated
vendored
16
vendor/github.com/docker/spdystream/utils.go
generated
vendored
@ -1,16 +0,0 @@
|
||||
package spdystream
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
var (
|
||||
DEBUG = os.Getenv("DEBUG")
|
||||
)
|
||||
|
||||
func debugMessage(fmt string, args ...interface{}) {
|
||||
if DEBUG != "" {
|
||||
log.Printf(fmt, args...)
|
||||
}
|
||||
}
|
6
vendor/github.com/evanphx/json-patch/.gitignore
generated
vendored
Normal file
6
vendor/github.com/evanphx/json-patch/.gitignore
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
# editor and IDE paraphernalia
|
||||
.idea
|
||||
.vscode
|
||||
|
||||
# macOS paraphernalia
|
||||
.DS_Store
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user