mirror of
https://github.com/kubernetes/sample-controller.git
synced 2026-04-12 00:00:26 +08:00
Compare commits
6 Commits
kubernetes
...
kubernetes
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ff3d6b015 | ||
|
|
edf73dabe5 | ||
|
|
8ec2db261d | ||
|
|
541fac8336 | ||
|
|
0f1d5c27c3 | ||
|
|
86077011f5 |
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,2 +0,0 @@
|
|||||||
Sorry, we do not accept changes directly against this repository. Please see
|
|
||||||
CONTRIBUTING.md for information on where and how to contribute instead.
|
|
||||||
64
BUILD
Normal file
64
BUILD
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"controller.go",
|
||||||
|
"main.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/sample-controller",
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/github.com/golang/glog:go_default_library",
|
||||||
|
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
|
||||||
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/informers:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/listers/apps/v1beta2:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/tools/record:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/util/workqueue:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned/scheme:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/informers/externalversions:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/listers/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/signals:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
go_binary(
|
||||||
|
name = "sample-controller",
|
||||||
|
importpath = "k8s.io/sample-controller",
|
||||||
|
library = ":go_default_library",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller:all-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/client/clientset/versioned:all-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions:all-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/client/listers/samplecontroller/v1alpha1:all-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/signals:all-srcs",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# Contributing guidelines
|
|
||||||
|
|
||||||
Do not open pull requests directly against this repository, they will be ignored. Instead, please open pull requests against [kubernetes/kubernetes](https://git.k8s.io/kubernetes/). Please follow the same [contributing guide](https://git.k8s.io/kubernetes/CONTRIBUTING.md) you would follow for any other pull request made to kubernetes/kubernetes.
|
|
||||||
|
|
||||||
This repository is published from [kubernetes/kubernetes/staging/src/k8s.io/sample-controller](https://git.k8s.io/kubernetes/staging/src/k8s.io/sample-controller) by the [kubernetes publishing-bot](https://git.k8s.io/publishing-bot).
|
|
||||||
|
|
||||||
Please see [Staging Directory and Publishing](https://git.k8s.io/community/contributors/devel/staging.md) for more information
|
|
||||||
710
Godeps/Godeps.json
generated
710
Godeps/Godeps.json
generated
File diff suppressed because it is too large
Load Diff
2
Godeps/OWNERS
generated
2
Godeps/OWNERS
generated
@@ -1,2 +0,0 @@
|
|||||||
approvers:
|
|
||||||
- dep-approvers
|
|
||||||
2
OWNERS
2
OWNERS
@@ -7,5 +7,3 @@ reviewers:
|
|||||||
- sttts
|
- sttts
|
||||||
- munnerz
|
- munnerz
|
||||||
- nikhita
|
- nikhita
|
||||||
labels:
|
|
||||||
- sig/api-machinery
|
|
||||||
|
|||||||
56
README.md
56
README.md
@@ -3,8 +3,6 @@
|
|||||||
This repository implements a simple controller for watching Foo resources as
|
This repository implements a simple controller for watching Foo resources as
|
||||||
defined with a CustomResourceDefinition (CRD).
|
defined with a CustomResourceDefinition (CRD).
|
||||||
|
|
||||||
**Note:** go-get or vendor this package as `k8s.io/sample-controller`.
|
|
||||||
|
|
||||||
This particular example demonstrates how to perform basic operations such as:
|
This particular example demonstrates how to perform basic operations such as:
|
||||||
|
|
||||||
* How to register a new custom resource (custom resource type) of type `Foo` using a CustomResourceDefinition.
|
* How to register a new custom resource (custom resource type) of type `Foo` using a CustomResourceDefinition.
|
||||||
@@ -25,25 +23,15 @@ Changes should not be made to these files manually, and when creating your own
|
|||||||
controller based off of this implementation you should not copy these files and
|
controller based off of this implementation you should not copy these files and
|
||||||
instead run the `update-codegen` script to generate your own.
|
instead run the `update-codegen` script to generate your own.
|
||||||
|
|
||||||
## Details
|
|
||||||
|
|
||||||
The sample controller uses [client-go library](https://github.com/kubernetes/client-go/tree/master/tools/cache) extensively.
|
|
||||||
The details of interaction points of the sample controller with various mechanisms from this library are
|
|
||||||
explained [here](docs/controller-client-go.md).
|
|
||||||
|
|
||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
|
|
||||||
This is an example of how to build a kube-like controller with a single type.
|
This is an example of how to build a kube-like controller with a single type.
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
**Prerequisite**: Since the sample-controller uses `apps/v1` deployments, the Kubernetes cluster version should be greater than 1.9.
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# assumes you have a working kubeconfig, not required if operating in-cluster
|
# assumes you have a working kubeconfig, not required if operating in-cluster
|
||||||
$ go build -o sample-controller .
|
$ go run *.go -kubeconfig=$HOME/.kube/config
|
||||||
$ ./sample-controller -kubeconfig=$HOME/.kube/config
|
|
||||||
|
|
||||||
# create a CustomResourceDefinition
|
# create a CustomResourceDefinition
|
||||||
$ kubectl create -f artifacts/examples/crd.yaml
|
$ kubectl create -f artifacts/examples/crd.yaml
|
||||||
@@ -85,48 +73,6 @@ type User struct {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Validation
|
|
||||||
|
|
||||||
To validate custom resources, use the [`CustomResourceValidation`](https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/#validation) feature.
|
|
||||||
|
|
||||||
This feature is beta and enabled by default in v1.9.
|
|
||||||
|
|
||||||
### Example
|
|
||||||
|
|
||||||
The schema in [`crd-validation.yaml`](./artifacts/examples/crd-validation.yaml) applies the following validation on the custom resource:
|
|
||||||
`spec.replicas` must be an integer and must have a minimum value of 1 and a maximum value of 10.
|
|
||||||
|
|
||||||
In the above steps, use `crd-validation.yaml` to create the CRD:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# create a CustomResourceDefinition supporting validation
|
|
||||||
$ kubectl create -f artifacts/examples/crd-validation.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
## Subresources
|
|
||||||
|
|
||||||
Custom Resources support `/status` and `/scale` subresources as a [beta feature](https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#subresources) in v1.11 and is enabled by default.
|
|
||||||
This feature is [alpha](https://v1-10.docs.kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/#subresources) in v1.10 and to enable it you need to set the `CustomResourceSubresources` feature gate on the [kube-apiserver](https://kubernetes.io/docs/admin/kube-apiserver):
|
|
||||||
|
|
||||||
```sh
|
|
||||||
--feature-gates=CustomResourceSubresources=true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Example
|
|
||||||
|
|
||||||
The CRD in [`crd-status-subresource.yaml`](./artifacts/examples/crd-status-subresource.yaml) enables the `/status` subresource
|
|
||||||
for custom resources.
|
|
||||||
This means that [`UpdateStatus`](./controller.go#L330) can be used by the controller to update only the status part of the custom resource.
|
|
||||||
|
|
||||||
To understand why only the status part of the custom resource should be updated, please refer to the [Kubernetes API conventions](https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status).
|
|
||||||
|
|
||||||
In the above steps, use `crd-status-subresource.yaml` to create the CRD:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# create a CustomResourceDefinition supporting the status subresource
|
|
||||||
$ kubectl create -f artifacts/examples/crd-status-subresource.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
## Cleanup
|
## Cleanup
|
||||||
|
|
||||||
You can clean up the created CustomResourceDefinition with:
|
You can clean up the created CustomResourceDefinition with:
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
# Defined below are the security contacts for this repo.
|
|
||||||
#
|
|
||||||
# They are the contact point for the Product Security Team to reach out
|
|
||||||
# to for triaging and handling of incoming issues.
|
|
||||||
#
|
|
||||||
# The below names agree to abide by the
|
|
||||||
# [Embargo Policy](https://github.com/kubernetes/sig-release/blob/master/security-release-process-documentation/security-release-process.md#embargo-policy)
|
|
||||||
# and will be removed and replaced if they violate that agreement.
|
|
||||||
#
|
|
||||||
# DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE
|
|
||||||
# INSTRUCTIONS AT https://kubernetes.io/security/
|
|
||||||
|
|
||||||
cjcullen
|
|
||||||
jessfraz
|
|
||||||
liggitt
|
|
||||||
philips
|
|
||||||
tallclair
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: foos.samplecontroller.k8s.io
|
|
||||||
spec:
|
|
||||||
group: samplecontroller.k8s.io
|
|
||||||
version: v1alpha1
|
|
||||||
names:
|
|
||||||
kind: Foo
|
|
||||||
plural: foos
|
|
||||||
scope: Namespaced
|
|
||||||
subresources:
|
|
||||||
status: {}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: foos.samplecontroller.k8s.io
|
|
||||||
spec:
|
|
||||||
group: samplecontroller.k8s.io
|
|
||||||
version: v1alpha1
|
|
||||||
names:
|
|
||||||
kind: Foo
|
|
||||||
plural: foos
|
|
||||||
scope: Namespaced
|
|
||||||
validation:
|
|
||||||
openAPIV3Schema:
|
|
||||||
properties:
|
|
||||||
spec:
|
|
||||||
properties:
|
|
||||||
replicas:
|
|
||||||
type: integer
|
|
||||||
minimum: 1
|
|
||||||
maximum: 10
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# Kubernetes Community Code of Conduct
|
|
||||||
|
|
||||||
Please refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/community/code-of-conduct.md)
|
|
||||||
@@ -21,19 +21,18 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
appsv1 "k8s.io/api/apps/v1"
|
appsv1beta2 "k8s.io/api/apps/v1beta2"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/util/runtime"
|
"k8s.io/apimachinery/pkg/util/runtime"
|
||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
appsinformers "k8s.io/client-go/informers/apps/v1"
|
kubeinformers "k8s.io/client-go/informers"
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
|
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||||
appslisters "k8s.io/client-go/listers/apps/v1"
|
appslisters "k8s.io/client-go/listers/apps/v1beta2"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
"k8s.io/client-go/util/workqueue"
|
"k8s.io/client-go/util/workqueue"
|
||||||
@@ -41,7 +40,7 @@ import (
|
|||||||
samplev1alpha1 "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
samplev1alpha1 "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
||||||
clientset "k8s.io/sample-controller/pkg/client/clientset/versioned"
|
clientset "k8s.io/sample-controller/pkg/client/clientset/versioned"
|
||||||
samplescheme "k8s.io/sample-controller/pkg/client/clientset/versioned/scheme"
|
samplescheme "k8s.io/sample-controller/pkg/client/clientset/versioned/scheme"
|
||||||
informers "k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1"
|
informers "k8s.io/sample-controller/pkg/client/informers/externalversions"
|
||||||
listers "k8s.io/sample-controller/pkg/client/listers/samplecontroller/v1alpha1"
|
listers "k8s.io/sample-controller/pkg/client/listers/samplecontroller/v1alpha1"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -89,13 +88,18 @@ type Controller struct {
|
|||||||
func NewController(
|
func NewController(
|
||||||
kubeclientset kubernetes.Interface,
|
kubeclientset kubernetes.Interface,
|
||||||
sampleclientset clientset.Interface,
|
sampleclientset clientset.Interface,
|
||||||
deploymentInformer appsinformers.DeploymentInformer,
|
kubeInformerFactory kubeinformers.SharedInformerFactory,
|
||||||
fooInformer informers.FooInformer) *Controller {
|
sampleInformerFactory informers.SharedInformerFactory) *Controller {
|
||||||
|
|
||||||
|
// obtain references to shared index informers for the Deployment and Foo
|
||||||
|
// types.
|
||||||
|
deploymentInformer := kubeInformerFactory.Apps().V1beta2().Deployments()
|
||||||
|
fooInformer := sampleInformerFactory.Samplecontroller().V1alpha1().Foos()
|
||||||
|
|
||||||
// Create event broadcaster
|
// Create event broadcaster
|
||||||
// Add sample-controller types to the default Kubernetes Scheme so Events can be
|
// Add sample-controller types to the default Kubernetes Scheme so Events can be
|
||||||
// logged for sample-controller types.
|
// logged for sample-controller types.
|
||||||
utilruntime.Must(samplescheme.AddToScheme(scheme.Scheme))
|
samplescheme.AddToScheme(scheme.Scheme)
|
||||||
glog.V(4).Info("Creating event broadcaster")
|
glog.V(4).Info("Creating event broadcaster")
|
||||||
eventBroadcaster := record.NewBroadcaster()
|
eventBroadcaster := record.NewBroadcaster()
|
||||||
eventBroadcaster.StartLogging(glog.Infof)
|
eventBroadcaster.StartLogging(glog.Infof)
|
||||||
@@ -130,8 +134,8 @@ func NewController(
|
|||||||
deploymentInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
|
deploymentInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
|
||||||
AddFunc: controller.handleObject,
|
AddFunc: controller.handleObject,
|
||||||
UpdateFunc: func(old, new interface{}) {
|
UpdateFunc: func(old, new interface{}) {
|
||||||
newDepl := new.(*appsv1.Deployment)
|
newDepl := new.(*appsv1beta2.Deployment)
|
||||||
oldDepl := old.(*appsv1.Deployment)
|
oldDepl := old.(*appsv1beta2.Deployment)
|
||||||
if newDepl.ResourceVersion == oldDepl.ResourceVersion {
|
if newDepl.ResourceVersion == oldDepl.ResourceVersion {
|
||||||
// Periodic resync will send update events for all known Deployments.
|
// Periodic resync will send update events for all known Deployments.
|
||||||
// Two different versions of the same Deployment will always have different RVs.
|
// Two different versions of the same Deployment will always have different RVs.
|
||||||
@@ -273,7 +277,7 @@ func (c *Controller) syncHandler(key string) error {
|
|||||||
deployment, err := c.deploymentsLister.Deployments(foo.Namespace).Get(deploymentName)
|
deployment, err := c.deploymentsLister.Deployments(foo.Namespace).Get(deploymentName)
|
||||||
// If the resource doesn't exist, we'll create it
|
// If the resource doesn't exist, we'll create it
|
||||||
if errors.IsNotFound(err) {
|
if errors.IsNotFound(err) {
|
||||||
deployment, err = c.kubeclientset.AppsV1().Deployments(foo.Namespace).Create(newDeployment(foo))
|
deployment, err = c.kubeclientset.AppsV1beta2().Deployments(foo.Namespace).Create(newDeployment(foo))
|
||||||
}
|
}
|
||||||
|
|
||||||
// If an error occurs during Get/Create, we'll requeue the item so we can
|
// If an error occurs during Get/Create, we'll requeue the item so we can
|
||||||
@@ -295,8 +299,8 @@ func (c *Controller) syncHandler(key string) error {
|
|||||||
// number does not equal the current desired replicas on the Deployment, we
|
// number does not equal the current desired replicas on the Deployment, we
|
||||||
// should update the Deployment resource.
|
// should update the Deployment resource.
|
||||||
if foo.Spec.Replicas != nil && *foo.Spec.Replicas != *deployment.Spec.Replicas {
|
if foo.Spec.Replicas != nil && *foo.Spec.Replicas != *deployment.Spec.Replicas {
|
||||||
glog.V(4).Infof("Foo %s replicas: %d, deployment replicas: %d", name, *foo.Spec.Replicas, *deployment.Spec.Replicas)
|
glog.V(4).Infof("Foor: %d, deplR: %d", *foo.Spec.Replicas, *deployment.Spec.Replicas)
|
||||||
deployment, err = c.kubeclientset.AppsV1().Deployments(foo.Namespace).Update(newDeployment(foo))
|
deployment, err = c.kubeclientset.AppsV1beta2().Deployments(foo.Namespace).Update(newDeployment(foo))
|
||||||
}
|
}
|
||||||
|
|
||||||
// If an error occurs during Update, we'll requeue the item so we can
|
// If an error occurs during Update, we'll requeue the item so we can
|
||||||
@@ -317,16 +321,16 @@ func (c *Controller) syncHandler(key string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Controller) updateFooStatus(foo *samplev1alpha1.Foo, deployment *appsv1.Deployment) error {
|
func (c *Controller) updateFooStatus(foo *samplev1alpha1.Foo, deployment *appsv1beta2.Deployment) error {
|
||||||
// NEVER modify objects from the store. It's a read-only, local cache.
|
// NEVER modify objects from the store. It's a read-only, local cache.
|
||||||
// You can use DeepCopy() to make a deep copy of original object and modify this copy
|
// You can use DeepCopy() to make a deep copy of original object and modify this copy
|
||||||
// Or create a copy manually for better performance
|
// Or create a copy manually for better performance
|
||||||
fooCopy := foo.DeepCopy()
|
fooCopy := foo.DeepCopy()
|
||||||
fooCopy.Status.AvailableReplicas = deployment.Status.AvailableReplicas
|
fooCopy.Status.AvailableReplicas = deployment.Status.AvailableReplicas
|
||||||
// If the CustomResourceSubresources feature gate is not enabled,
|
// Until #38113 is merged, we must use Update instead of UpdateStatus to
|
||||||
// we must use Update instead of UpdateStatus to update the Status block of the Foo resource.
|
// update the Status block of the Foo resource. UpdateStatus will not
|
||||||
// UpdateStatus will not allow changes to the Spec of the resource,
|
// allow changes to the Spec of the resource, which is ideal for ensuring
|
||||||
// which is ideal for ensuring nothing other than resource status has been updated.
|
// nothing other than resource status has been updated.
|
||||||
_, err := c.sampleclientset.SamplecontrollerV1alpha1().Foos(foo.Namespace).Update(fooCopy)
|
_, err := c.sampleclientset.SamplecontrollerV1alpha1().Foos(foo.Namespace).Update(fooCopy)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -387,12 +391,12 @@ func (c *Controller) handleObject(obj interface{}) {
|
|||||||
// newDeployment creates a new Deployment for a Foo resource. It also sets
|
// newDeployment creates a new Deployment for a Foo resource. It also sets
|
||||||
// the appropriate OwnerReferences on the resource so handleObject can discover
|
// the appropriate OwnerReferences on the resource so handleObject can discover
|
||||||
// the Foo resource that 'owns' it.
|
// the Foo resource that 'owns' it.
|
||||||
func newDeployment(foo *samplev1alpha1.Foo) *appsv1.Deployment {
|
func newDeployment(foo *samplev1alpha1.Foo) *appsv1beta2.Deployment {
|
||||||
labels := map[string]string{
|
labels := map[string]string{
|
||||||
"app": "nginx",
|
"app": "nginx",
|
||||||
"controller": foo.Name,
|
"controller": foo.Name,
|
||||||
}
|
}
|
||||||
return &appsv1.Deployment{
|
return &appsv1beta2.Deployment{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: foo.Spec.DeploymentName,
|
Name: foo.Spec.DeploymentName,
|
||||||
Namespace: foo.Namespace,
|
Namespace: foo.Namespace,
|
||||||
@@ -404,7 +408,7 @@ func newDeployment(foo *samplev1alpha1.Foo) *appsv1.Deployment {
|
|||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Spec: appsv1.DeploymentSpec{
|
Spec: appsv1beta2.DeploymentSpec{
|
||||||
Replicas: foo.Spec.Replicas,
|
Replicas: foo.Spec.Replicas,
|
||||||
Selector: &metav1.LabelSelector{
|
Selector: &metav1.LabelSelector{
|
||||||
MatchLabels: labels,
|
MatchLabels: labels,
|
||||||
|
|||||||
@@ -1,313 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2017 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
apps "k8s.io/api/apps/v1"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
"k8s.io/apimachinery/pkg/util/diff"
|
|
||||||
kubeinformers "k8s.io/client-go/informers"
|
|
||||||
k8sfake "k8s.io/client-go/kubernetes/fake"
|
|
||||||
core "k8s.io/client-go/testing"
|
|
||||||
"k8s.io/client-go/tools/cache"
|
|
||||||
"k8s.io/client-go/tools/record"
|
|
||||||
|
|
||||||
samplecontroller "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
|
||||||
"k8s.io/sample-controller/pkg/client/clientset/versioned/fake"
|
|
||||||
informers "k8s.io/sample-controller/pkg/client/informers/externalversions"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
alwaysReady = func() bool { return true }
|
|
||||||
noResyncPeriodFunc = func() time.Duration { return 0 }
|
|
||||||
)
|
|
||||||
|
|
||||||
type fixture struct {
|
|
||||||
t *testing.T
|
|
||||||
|
|
||||||
client *fake.Clientset
|
|
||||||
kubeclient *k8sfake.Clientset
|
|
||||||
// Objects to put in the store.
|
|
||||||
fooLister []*samplecontroller.Foo
|
|
||||||
deploymentLister []*apps.Deployment
|
|
||||||
// Actions expected to happen on the client.
|
|
||||||
kubeactions []core.Action
|
|
||||||
actions []core.Action
|
|
||||||
// Objects from here preloaded into NewSimpleFake.
|
|
||||||
kubeobjects []runtime.Object
|
|
||||||
objects []runtime.Object
|
|
||||||
}
|
|
||||||
|
|
||||||
func newFixture(t *testing.T) *fixture {
|
|
||||||
f := &fixture{}
|
|
||||||
f.t = t
|
|
||||||
f.objects = []runtime.Object{}
|
|
||||||
f.kubeobjects = []runtime.Object{}
|
|
||||||
return f
|
|
||||||
}
|
|
||||||
|
|
||||||
func newFoo(name string, replicas *int32) *samplecontroller.Foo {
|
|
||||||
return &samplecontroller.Foo{
|
|
||||||
TypeMeta: metav1.TypeMeta{APIVersion: samplecontroller.SchemeGroupVersion.String()},
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: name,
|
|
||||||
Namespace: metav1.NamespaceDefault,
|
|
||||||
},
|
|
||||||
Spec: samplecontroller.FooSpec{
|
|
||||||
DeploymentName: fmt.Sprintf("%s-deployment", name),
|
|
||||||
Replicas: replicas,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fixture) newController() (*Controller, informers.SharedInformerFactory, kubeinformers.SharedInformerFactory) {
|
|
||||||
f.client = fake.NewSimpleClientset(f.objects...)
|
|
||||||
f.kubeclient = k8sfake.NewSimpleClientset(f.kubeobjects...)
|
|
||||||
|
|
||||||
i := informers.NewSharedInformerFactory(f.client, noResyncPeriodFunc())
|
|
||||||
k8sI := kubeinformers.NewSharedInformerFactory(f.kubeclient, noResyncPeriodFunc())
|
|
||||||
|
|
||||||
c := NewController(f.kubeclient, f.client,
|
|
||||||
k8sI.Apps().V1().Deployments(), i.Samplecontroller().V1alpha1().Foos())
|
|
||||||
|
|
||||||
c.foosSynced = alwaysReady
|
|
||||||
c.deploymentsSynced = alwaysReady
|
|
||||||
c.recorder = &record.FakeRecorder{}
|
|
||||||
|
|
||||||
for _, f := range f.fooLister {
|
|
||||||
i.Samplecontroller().V1alpha1().Foos().Informer().GetIndexer().Add(f)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, d := range f.deploymentLister {
|
|
||||||
k8sI.Apps().V1().Deployments().Informer().GetIndexer().Add(d)
|
|
||||||
}
|
|
||||||
|
|
||||||
return c, i, k8sI
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fixture) run(fooName string) {
|
|
||||||
f.runController(fooName, true, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fixture) runExpectError(fooName string) {
|
|
||||||
f.runController(fooName, true, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fixture) runController(fooName string, startInformers bool, expectError bool) {
|
|
||||||
c, i, k8sI := f.newController()
|
|
||||||
if startInformers {
|
|
||||||
stopCh := make(chan struct{})
|
|
||||||
defer close(stopCh)
|
|
||||||
i.Start(stopCh)
|
|
||||||
k8sI.Start(stopCh)
|
|
||||||
}
|
|
||||||
|
|
||||||
err := c.syncHandler(fooName)
|
|
||||||
if !expectError && err != nil {
|
|
||||||
f.t.Errorf("error syncing foo: %v", err)
|
|
||||||
} else if expectError && err == nil {
|
|
||||||
f.t.Error("expected error syncing foo, got nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
actions := filterInformerActions(f.client.Actions())
|
|
||||||
for i, action := range actions {
|
|
||||||
if len(f.actions) < i+1 {
|
|
||||||
f.t.Errorf("%d unexpected actions: %+v", len(actions)-len(f.actions), actions[i:])
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
expectedAction := f.actions[i]
|
|
||||||
checkAction(expectedAction, action, f.t)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(f.actions) > len(actions) {
|
|
||||||
f.t.Errorf("%d additional expected actions:%+v", len(f.actions)-len(actions), f.actions[len(actions):])
|
|
||||||
}
|
|
||||||
|
|
||||||
k8sActions := filterInformerActions(f.kubeclient.Actions())
|
|
||||||
for i, action := range k8sActions {
|
|
||||||
if len(f.kubeactions) < i+1 {
|
|
||||||
f.t.Errorf("%d unexpected actions: %+v", len(k8sActions)-len(f.kubeactions), k8sActions[i:])
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
expectedAction := f.kubeactions[i]
|
|
||||||
checkAction(expectedAction, action, f.t)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(f.kubeactions) > len(k8sActions) {
|
|
||||||
f.t.Errorf("%d additional expected actions:%+v", len(f.kubeactions)-len(k8sActions), f.kubeactions[len(k8sActions):])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// checkAction verifies that expected and actual actions are equal and both have
|
|
||||||
// same attached resources
|
|
||||||
func checkAction(expected, actual core.Action, t *testing.T) {
|
|
||||||
if !(expected.Matches(actual.GetVerb(), actual.GetResource().Resource) && actual.GetSubresource() == expected.GetSubresource()) {
|
|
||||||
t.Errorf("Expected\n\t%#v\ngot\n\t%#v", expected, actual)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
|
|
||||||
t.Errorf("Action has wrong type. Expected: %t. Got: %t", expected, actual)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
switch a := actual.(type) {
|
|
||||||
case core.CreateAction:
|
|
||||||
e, _ := expected.(core.CreateAction)
|
|
||||||
expObject := e.GetObject()
|
|
||||||
object := a.GetObject()
|
|
||||||
|
|
||||||
if !reflect.DeepEqual(expObject, object) {
|
|
||||||
t.Errorf("Action %s %s has wrong object\nDiff:\n %s",
|
|
||||||
a.GetVerb(), a.GetResource().Resource, diff.ObjectGoPrintDiff(expObject, object))
|
|
||||||
}
|
|
||||||
case core.UpdateAction:
|
|
||||||
e, _ := expected.(core.UpdateAction)
|
|
||||||
expObject := e.GetObject()
|
|
||||||
object := a.GetObject()
|
|
||||||
|
|
||||||
if !reflect.DeepEqual(expObject, object) {
|
|
||||||
t.Errorf("Action %s %s has wrong object\nDiff:\n %s",
|
|
||||||
a.GetVerb(), a.GetResource().Resource, diff.ObjectGoPrintDiff(expObject, object))
|
|
||||||
}
|
|
||||||
case core.PatchAction:
|
|
||||||
e, _ := expected.(core.PatchAction)
|
|
||||||
expPatch := e.GetPatch()
|
|
||||||
patch := a.GetPatch()
|
|
||||||
|
|
||||||
if !reflect.DeepEqual(expPatch, expPatch) {
|
|
||||||
t.Errorf("Action %s %s has wrong patch\nDiff:\n %s",
|
|
||||||
a.GetVerb(), a.GetResource().Resource, diff.ObjectGoPrintDiff(expPatch, patch))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// filterInformerActions filters list and watch actions for testing resources.
|
|
||||||
// Since list and watch don't change resource state we can filter it to lower
|
|
||||||
// nose level in our tests.
|
|
||||||
func filterInformerActions(actions []core.Action) []core.Action {
|
|
||||||
ret := []core.Action{}
|
|
||||||
for _, action := range actions {
|
|
||||||
if len(action.GetNamespace()) == 0 &&
|
|
||||||
(action.Matches("list", "foos") ||
|
|
||||||
action.Matches("watch", "foos") ||
|
|
||||||
action.Matches("list", "deployments") ||
|
|
||||||
action.Matches("watch", "deployments")) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
ret = append(ret, action)
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fixture) expectCreateDeploymentAction(d *apps.Deployment) {
|
|
||||||
f.kubeactions = append(f.kubeactions, core.NewCreateAction(schema.GroupVersionResource{Resource: "deployments"}, d.Namespace, d))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fixture) expectUpdateDeploymentAction(d *apps.Deployment) {
|
|
||||||
f.kubeactions = append(f.kubeactions, core.NewUpdateAction(schema.GroupVersionResource{Resource: "deployments"}, d.Namespace, d))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fixture) expectUpdateFooStatusAction(foo *samplecontroller.Foo) {
|
|
||||||
action := core.NewUpdateAction(schema.GroupVersionResource{Resource: "foos"}, foo.Namespace, foo)
|
|
||||||
// TODO: Until #38113 is merged, we can't use Subresource
|
|
||||||
//action.Subresource = "status"
|
|
||||||
f.actions = append(f.actions, action)
|
|
||||||
}
|
|
||||||
|
|
||||||
func getKey(foo *samplecontroller.Foo, t *testing.T) string {
|
|
||||||
key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(foo)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Unexpected error getting key for foo %v: %v", foo.Name, err)
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return key
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCreatesDeployment(t *testing.T) {
|
|
||||||
f := newFixture(t)
|
|
||||||
foo := newFoo("test", int32Ptr(1))
|
|
||||||
|
|
||||||
f.fooLister = append(f.fooLister, foo)
|
|
||||||
f.objects = append(f.objects, foo)
|
|
||||||
|
|
||||||
expDeployment := newDeployment(foo)
|
|
||||||
f.expectCreateDeploymentAction(expDeployment)
|
|
||||||
f.expectUpdateFooStatusAction(foo)
|
|
||||||
|
|
||||||
f.run(getKey(foo, t))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDoNothing(t *testing.T) {
|
|
||||||
f := newFixture(t)
|
|
||||||
foo := newFoo("test", int32Ptr(1))
|
|
||||||
d := newDeployment(foo)
|
|
||||||
|
|
||||||
f.fooLister = append(f.fooLister, foo)
|
|
||||||
f.objects = append(f.objects, foo)
|
|
||||||
f.deploymentLister = append(f.deploymentLister, d)
|
|
||||||
f.kubeobjects = append(f.kubeobjects, d)
|
|
||||||
|
|
||||||
f.expectUpdateFooStatusAction(foo)
|
|
||||||
f.run(getKey(foo, t))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUpdateDeployment(t *testing.T) {
|
|
||||||
f := newFixture(t)
|
|
||||||
foo := newFoo("test", int32Ptr(1))
|
|
||||||
d := newDeployment(foo)
|
|
||||||
|
|
||||||
// Update replicas
|
|
||||||
foo.Spec.Replicas = int32Ptr(2)
|
|
||||||
expDeployment := newDeployment(foo)
|
|
||||||
|
|
||||||
f.fooLister = append(f.fooLister, foo)
|
|
||||||
f.objects = append(f.objects, foo)
|
|
||||||
f.deploymentLister = append(f.deploymentLister, d)
|
|
||||||
f.kubeobjects = append(f.kubeobjects, d)
|
|
||||||
|
|
||||||
f.expectUpdateFooStatusAction(foo)
|
|
||||||
f.expectUpdateDeploymentAction(expDeployment)
|
|
||||||
f.run(getKey(foo, t))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNotControlledByUs(t *testing.T) {
|
|
||||||
f := newFixture(t)
|
|
||||||
foo := newFoo("test", int32Ptr(1))
|
|
||||||
d := newDeployment(foo)
|
|
||||||
|
|
||||||
d.ObjectMeta.OwnerReferences = []metav1.OwnerReference{}
|
|
||||||
|
|
||||||
f.fooLister = append(f.fooLister, foo)
|
|
||||||
f.objects = append(f.objects, foo)
|
|
||||||
f.deploymentLister = append(f.deploymentLister, d)
|
|
||||||
f.kubeobjects = append(f.kubeobjects, d)
|
|
||||||
|
|
||||||
f.runExpectError(getKey(foo, t))
|
|
||||||
}
|
|
||||||
|
|
||||||
func int32Ptr(i int32) *int32 { return &i }
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
# client-go under the hood
|
|
||||||
|
|
||||||
The [client-go](https://github.com/kubernetes/client-go/) library contains various mechanisms that you can use when
|
|
||||||
developing your custom controllers. These mechanisms are defined in the
|
|
||||||
[tools/cache folder](https://github.com/kubernetes/client-go/tree/master/tools/cache) of the library.
|
|
||||||
|
|
||||||
Here is a pictorial representation showing how the various components in
|
|
||||||
the client-go library work and their interaction points with the custom
|
|
||||||
controller code that you will write.
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<img src="images/client-go-controller-interaction.jpeg" height="600" width="700"/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## client-go components
|
|
||||||
|
|
||||||
* Reflector: A reflector, which is defined in [type *Reflector* inside package *cache*](https://github.com/kubernetes/client-go/blob/master/tools/cache/reflector.go),
|
|
||||||
watches the Kubernetes API for the specified resource type (kind).
|
|
||||||
The function in which this is done is *ListAndWatch*.
|
|
||||||
The watch could be for an in-built resource or it could be for a custom resource.
|
|
||||||
When the reflector receives notification about existence of new
|
|
||||||
resource instance through the watch API, it gets the newly created object
|
|
||||||
using the corresponding listing API and puts it in the Delta Fifo queue
|
|
||||||
inside the *watchHandler* function.
|
|
||||||
|
|
||||||
|
|
||||||
* Informer: An informer defined in the [base controller inside package *cache*](https://github.com/kubernetes/client-go/blob/master/tools/cache/controller.go) pops objects from the Delta Fifo queue.
|
|
||||||
The function in which this is done is *processLoop*. The job of this base controller
|
|
||||||
is to save the object for later retrieval, and to invoke our controller passing it the object.
|
|
||||||
|
|
||||||
* Indexer: An indexer provides indexing functionality over objects.
|
|
||||||
It is defined in [type *Indexer* inside package *cache*](https://github.com/kubernetes/client-go/blob/master/tools/cache/index.go). A typical indexing use-case is to create an index based on object labels. Indexer can
|
|
||||||
maintain indexes based on several indexing functions.
|
|
||||||
Indexer uses a thread-safe data store to store objects and their keys.
|
|
||||||
There is a default function named *MetaNamespaceKeyFunc* defined in [type Store inside package cache](https://github.com/kubernetes/client-go/blob/master/tools/cache/store.go)
|
|
||||||
that generates an object’s key as `<namespace>/<name>` combination for that object.
|
|
||||||
|
|
||||||
|
|
||||||
## Custom Controller components
|
|
||||||
|
|
||||||
* Informer reference: This is the reference to the Informer instance that knows
|
|
||||||
how to work with your custom resource objects. Your custom controller code needs
|
|
||||||
to create the appropriate Informer.
|
|
||||||
|
|
||||||
* Indexer reference: This is the reference to the Indexer instance that knows
|
|
||||||
how to work with your custom resource objects. Your custom controller code needs
|
|
||||||
to create this. You will be using this reference for retrieving objects for
|
|
||||||
later processing.
|
|
||||||
|
|
||||||
The base controller in client-go provides the *NewIndexerInformer* function to create Informer and Indexer.
|
|
||||||
In your code you can either [directly invoke this function](https://github.com/kubernetes/client-go/blob/master/examples/workqueue/main.go#L174) or [use factory methods for creating an informer.](https://github.com/kubernetes/sample-controller/blob/master/main.go#L61)
|
|
||||||
|
|
||||||
* Resource Event Handlers: These are the callback functions which will be called by
|
|
||||||
the Informer when it wants to deliver an object to your controller. The typical
|
|
||||||
pattern to write these functions is to obtain the dispatched object’s key
|
|
||||||
and enqueue that key in a work queue for further processing.
|
|
||||||
|
|
||||||
* Work queue: This is the queue that you create in your controller code to decouple
|
|
||||||
delivery of an object from its processing. Resource event handler functions are written
|
|
||||||
to extract the delivered object’s key and add that to the work queue.
|
|
||||||
|
|
||||||
* Process Item: This is the function that you create in your code which processes items
|
|
||||||
from the work queue. There can be one or more other functions that do the actual processing.
|
|
||||||
These functions will typically use the [Indexer reference](https://github.com/kubernetes/client-go/blob/master/examples/workqueue/main.go#L73), or a Listing wrapper to retrieve the object corresponding to the key.
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 109 KiB |
@@ -1,16 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright 2017 The Kubernetes Authors.
|
# Copyright 2017 The Kubernetes Authors.
|
||||||
#
|
#
|
||||||
@@ -28,8 +28,7 @@ CODEGEN_PKG=${CODEGEN_PKG:-$(cd ${SCRIPT_ROOT}; ls -d -1 ./vendor/k8s.io/code-ge
|
|||||||
${CODEGEN_PKG}/generate-groups.sh "deepcopy,client,informer,lister" \
|
${CODEGEN_PKG}/generate-groups.sh "deepcopy,client,informer,lister" \
|
||||||
k8s.io/sample-controller/pkg/client k8s.io/sample-controller/pkg/apis \
|
k8s.io/sample-controller/pkg/client k8s.io/sample-controller/pkg/apis \
|
||||||
samplecontroller:v1alpha1 \
|
samplecontroller:v1alpha1 \
|
||||||
--output-base "$(dirname ${BASH_SOURCE})/../../.." \
|
--output-base "$(dirname ${BASH_SOURCE})/../../.."
|
||||||
--go-header-file ${SCRIPT_ROOT}/hack/boilerplate.go.txt
|
|
||||||
|
|
||||||
# To use your own boilerplate text use:
|
# To use your own boilerplate text append:
|
||||||
# --go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
# --go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Copyright 2017 The Kubernetes Authors.
|
# Copyright 2017 The Kubernetes Authors.
|
||||||
#
|
#
|
||||||
|
|||||||
4
main.go
4
main.go
@@ -61,9 +61,7 @@ func main() {
|
|||||||
kubeInformerFactory := kubeinformers.NewSharedInformerFactory(kubeClient, time.Second*30)
|
kubeInformerFactory := kubeinformers.NewSharedInformerFactory(kubeClient, time.Second*30)
|
||||||
exampleInformerFactory := informers.NewSharedInformerFactory(exampleClient, time.Second*30)
|
exampleInformerFactory := informers.NewSharedInformerFactory(exampleClient, time.Second*30)
|
||||||
|
|
||||||
controller := NewController(kubeClient, exampleClient,
|
controller := NewController(kubeClient, exampleClient, kubeInformerFactory, exampleInformerFactory)
|
||||||
kubeInformerFactory.Apps().V1().Deployments(),
|
|
||||||
exampleInformerFactory.Samplecontroller().V1alpha1().Foos())
|
|
||||||
|
|
||||||
go kubeInformerFactory.Start(stopCh)
|
go kubeInformerFactory.Start(stopCh)
|
||||||
go exampleInformerFactory.Start(stopCh)
|
go exampleInformerFactory.Start(stopCh)
|
||||||
|
|||||||
25
pkg/apis/samplecontroller/BUILD
Normal file
25
pkg/apis/samplecontroller/BUILD
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["register.go"],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/apis/samplecontroller",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1:all-srcs",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
33
pkg/apis/samplecontroller/v1alpha1/BUILD
Normal file
33
pkg/apis/samplecontroller/v1alpha1/BUILD
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"doc.go",
|
||||||
|
"register.go",
|
||||||
|
"types.go",
|
||||||
|
"zz_generated.deepcopy.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/apis/samplecontroller:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -17,7 +17,6 @@ limitations under the License.
|
|||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
@@ -48,6 +47,5 @@ func addKnownTypes(scheme *runtime.Scheme) error {
|
|||||||
&Foo{},
|
&Foo{},
|
||||||
&FooList{},
|
&FooList{},
|
||||||
)
|
)
|
||||||
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// +genclient
|
// +genclient
|
||||||
|
// +genclient:noStatus
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
// Foo is a specification for a Foo resource
|
// Foo is a specification for a Foo resource
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// +build !ignore_autogenerated
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -16,7 +16,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
@@ -48,8 +48,9 @@ func (in *Foo) DeepCopy() *Foo {
|
|||||||
func (in *Foo) DeepCopyObject() runtime.Object {
|
func (in *Foo) DeepCopyObject() runtime.Object {
|
||||||
if c := in.DeepCopy(); c != nil {
|
if c := in.DeepCopy(); c != nil {
|
||||||
return c
|
return c
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
@@ -81,8 +82,9 @@ func (in *FooList) DeepCopy() *FooList {
|
|||||||
func (in *FooList) DeepCopyObject() runtime.Object {
|
func (in *FooList) DeepCopyObject() runtime.Object {
|
||||||
if c := in.DeepCopy(); c != nil {
|
if c := in.DeepCopy(); c != nil {
|
||||||
return c
|
return c
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
@@ -90,8 +92,12 @@ func (in *FooSpec) DeepCopyInto(out *FooSpec) {
|
|||||||
*out = *in
|
*out = *in
|
||||||
if in.Replicas != nil {
|
if in.Replicas != nil {
|
||||||
in, out := &in.Replicas, &out.Replicas
|
in, out := &in.Replicas, &out.Replicas
|
||||||
*out = new(int32)
|
if *in == nil {
|
||||||
**out = **in
|
*out = nil
|
||||||
|
} else {
|
||||||
|
*out = new(int32)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
37
pkg/client/clientset/versioned/BUILD
Normal file
37
pkg/client/clientset/versioned/BUILD
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"clientset.go",
|
||||||
|
"doc.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/client/clientset/versioned",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/github.com/golang/glog:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/discovery:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/rest:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned/typed/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/client/clientset/versioned/fake:all-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/client/clientset/versioned/scheme:all-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/client/clientset/versioned/typed/samplecontroller/v1alpha1:all-srcs",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,11 +14,10 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package versioned
|
package versioned
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
glog "github.com/golang/glog"
|
||||||
discovery "k8s.io/client-go/discovery"
|
discovery "k8s.io/client-go/discovery"
|
||||||
rest "k8s.io/client-go/rest"
|
rest "k8s.io/client-go/rest"
|
||||||
flowcontrol "k8s.io/client-go/util/flowcontrol"
|
flowcontrol "k8s.io/client-go/util/flowcontrol"
|
||||||
@@ -73,6 +72,7 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
|
|||||||
|
|
||||||
cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy)
|
cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
glog.Errorf("failed to create the DiscoveryClient: %v", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &cs, nil
|
return &cs, nil
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,7 +14,5 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
// This package has the automatically generated clientset.
|
// This package has the automatically generated clientset.
|
||||||
package versioned
|
package versioned
|
||||||
|
|||||||
40
pkg/client/clientset/versioned/fake/BUILD
Normal file
40
pkg/client/clientset/versioned/fake/BUILD
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"clientset_generated.go",
|
||||||
|
"doc.go",
|
||||||
|
"register.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/client/clientset/versioned/fake",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/discovery:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/discovery/fake:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/testing:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned/typed/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned/typed/samplecontroller/v1alpha1/fake:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package fake
|
package fake
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -41,20 +39,11 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cs := &Clientset{}
|
fakePtr := testing.Fake{}
|
||||||
cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
|
fakePtr.AddReactor("*", "*", testing.ObjectReaction(o))
|
||||||
cs.AddReactor("*", "*", testing.ObjectReaction(o))
|
fakePtr.AddWatchReactor("*", testing.DefaultWatchReactor(watch.NewFake(), nil))
|
||||||
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
|
|
||||||
gvr := action.GetResource()
|
|
||||||
ns := action.GetNamespace()
|
|
||||||
watch, err := o.Watch(gvr, ns)
|
|
||||||
if err != nil {
|
|
||||||
return false, nil, err
|
|
||||||
}
|
|
||||||
return true, watch, nil
|
|
||||||
})
|
|
||||||
|
|
||||||
return cs
|
return &Clientset{fakePtr, &fakediscovery.FakeDiscovery{Fake: &fakePtr}}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clientset implements clientset.Interface. Meant to be embedded into a
|
// Clientset implements clientset.Interface. Meant to be embedded into a
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,7 +14,5 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
// This package has the automatically generated fake clientset.
|
// This package has the automatically generated fake clientset.
|
||||||
package fake
|
package fake
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package fake
|
package fake
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -23,15 +21,16 @@ import (
|
|||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
|
||||||
samplecontrollerv1alpha1 "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
samplecontrollerv1alpha1 "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
||||||
)
|
)
|
||||||
|
|
||||||
var scheme = runtime.NewScheme()
|
var scheme = runtime.NewScheme()
|
||||||
var codecs = serializer.NewCodecFactory(scheme)
|
var codecs = serializer.NewCodecFactory(scheme)
|
||||||
var parameterCodec = runtime.NewParameterCodec(scheme)
|
var parameterCodec = runtime.NewParameterCodec(scheme)
|
||||||
var localSchemeBuilder = runtime.SchemeBuilder{
|
|
||||||
samplecontrollerv1alpha1.AddToScheme,
|
func init() {
|
||||||
|
v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"})
|
||||||
|
AddToScheme(scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddToScheme adds all types of this clientset into the given scheme. This allows composition
|
// AddToScheme adds all types of this clientset into the given scheme. This allows composition
|
||||||
@@ -39,18 +38,16 @@ var localSchemeBuilder = runtime.SchemeBuilder{
|
|||||||
//
|
//
|
||||||
// import (
|
// import (
|
||||||
// "k8s.io/client-go/kubernetes"
|
// "k8s.io/client-go/kubernetes"
|
||||||
// clientsetscheme "k8s.io/client-go/kubernetes/scheme"
|
// clientsetscheme "k8s.io/client-go/kuberentes/scheme"
|
||||||
// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
|
// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
|
||||||
// )
|
// )
|
||||||
//
|
//
|
||||||
// kclientset, _ := kubernetes.NewForConfig(c)
|
// kclientset, _ := kubernetes.NewForConfig(c)
|
||||||
// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
|
// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
|
||||||
//
|
//
|
||||||
// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
|
// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
|
||||||
// correctly.
|
// correctly.
|
||||||
var AddToScheme = localSchemeBuilder.AddToScheme
|
func AddToScheme(scheme *runtime.Scheme) {
|
||||||
|
samplecontrollerv1alpha1.AddToScheme(scheme)
|
||||||
|
|
||||||
func init() {
|
|
||||||
v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"})
|
|
||||||
utilruntime.Must(AddToScheme(scheme))
|
|
||||||
}
|
}
|
||||||
|
|||||||
32
pkg/client/clientset/versioned/scheme/BUILD
Normal file
32
pkg/client/clientset/versioned/scheme/BUILD
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"doc.go",
|
||||||
|
"register.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/client/clientset/versioned/scheme",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,7 +14,5 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
// This package contains the scheme of the automatically generated clientset.
|
// This package contains the scheme of the automatically generated clientset.
|
||||||
package scheme
|
package scheme
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package scheme
|
package scheme
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -23,15 +21,16 @@ import (
|
|||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
|
||||||
samplecontrollerv1alpha1 "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
samplecontrollerv1alpha1 "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Scheme = runtime.NewScheme()
|
var Scheme = runtime.NewScheme()
|
||||||
var Codecs = serializer.NewCodecFactory(Scheme)
|
var Codecs = serializer.NewCodecFactory(Scheme)
|
||||||
var ParameterCodec = runtime.NewParameterCodec(Scheme)
|
var ParameterCodec = runtime.NewParameterCodec(Scheme)
|
||||||
var localSchemeBuilder = runtime.SchemeBuilder{
|
|
||||||
samplecontrollerv1alpha1.AddToScheme,
|
func init() {
|
||||||
|
v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
|
||||||
|
AddToScheme(Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddToScheme adds all types of this clientset into the given scheme. This allows composition
|
// AddToScheme adds all types of this clientset into the given scheme. This allows composition
|
||||||
@@ -39,18 +38,16 @@ var localSchemeBuilder = runtime.SchemeBuilder{
|
|||||||
//
|
//
|
||||||
// import (
|
// import (
|
||||||
// "k8s.io/client-go/kubernetes"
|
// "k8s.io/client-go/kubernetes"
|
||||||
// clientsetscheme "k8s.io/client-go/kubernetes/scheme"
|
// clientsetscheme "k8s.io/client-go/kuberentes/scheme"
|
||||||
// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
|
// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
|
||||||
// )
|
// )
|
||||||
//
|
//
|
||||||
// kclientset, _ := kubernetes.NewForConfig(c)
|
// kclientset, _ := kubernetes.NewForConfig(c)
|
||||||
// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
|
// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
|
||||||
//
|
//
|
||||||
// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
|
// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
|
||||||
// correctly.
|
// correctly.
|
||||||
var AddToScheme = localSchemeBuilder.AddToScheme
|
func AddToScheme(scheme *runtime.Scheme) {
|
||||||
|
samplecontrollerv1alpha1.AddToScheme(scheme)
|
||||||
|
|
||||||
func init() {
|
|
||||||
v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
|
|
||||||
utilruntime.Must(AddToScheme(Scheme))
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"doc.go",
|
||||||
|
"foo.go",
|
||||||
|
"generated_expansion.go",
|
||||||
|
"samplecontroller_client.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/client/clientset/versioned/typed/samplecontroller/v1alpha1",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/rest:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned/scheme:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/client/clientset/versioned/typed/samplecontroller/v1alpha1/fake:all-srcs",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,7 +14,5 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
// This package has the automatically generated typed clients.
|
// This package has the automatically generated typed clients.
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"doc.go",
|
||||||
|
"fake_foo.go",
|
||||||
|
"fake_samplecontroller_client.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/client/clientset/versioned/typed/samplecontroller/v1alpha1/fake",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/rest:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/testing:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned/typed/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,7 +14,5 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
// Package fake has the automatically generated clients.
|
// Package fake has the automatically generated clients.
|
||||||
package fake
|
package fake
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package fake
|
package fake
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -62,7 +60,7 @@ func (c *FakeFoos) List(opts v1.ListOptions) (result *v1alpha1.FooList, err erro
|
|||||||
if label == nil {
|
if label == nil {
|
||||||
label = labels.Everything()
|
label = labels.Everything()
|
||||||
}
|
}
|
||||||
list := &v1alpha1.FooList{ListMeta: obj.(*v1alpha1.FooList).ListMeta}
|
list := &v1alpha1.FooList{}
|
||||||
for _, item := range obj.(*v1alpha1.FooList).Items {
|
for _, item := range obj.(*v1alpha1.FooList).Items {
|
||||||
if label.Matches(labels.Set(item.Labels)) {
|
if label.Matches(labels.Set(item.Labels)) {
|
||||||
list.Items = append(list.Items, item)
|
list.Items = append(list.Items, item)
|
||||||
@@ -100,18 +98,6 @@ func (c *FakeFoos) Update(foo *v1alpha1.Foo) (result *v1alpha1.Foo, err error) {
|
|||||||
return obj.(*v1alpha1.Foo), err
|
return obj.(*v1alpha1.Foo), err
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateStatus was generated because the type contains a Status member.
|
|
||||||
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
|
||||||
func (c *FakeFoos) UpdateStatus(foo *v1alpha1.Foo) (*v1alpha1.Foo, error) {
|
|
||||||
obj, err := c.Fake.
|
|
||||||
Invokes(testing.NewUpdateSubresourceAction(foosResource, "status", c.ns, foo), &v1alpha1.Foo{})
|
|
||||||
|
|
||||||
if obj == nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return obj.(*v1alpha1.Foo), err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete takes name of the foo and deletes it. Returns an error if one occurs.
|
// Delete takes name of the foo and deletes it. Returns an error if one occurs.
|
||||||
func (c *FakeFoos) Delete(name string, options *v1.DeleteOptions) error {
|
func (c *FakeFoos) Delete(name string, options *v1.DeleteOptions) error {
|
||||||
_, err := c.Fake.
|
_, err := c.Fake.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package fake
|
package fake
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -37,7 +35,6 @@ type FoosGetter interface {
|
|||||||
type FooInterface interface {
|
type FooInterface interface {
|
||||||
Create(*v1alpha1.Foo) (*v1alpha1.Foo, error)
|
Create(*v1alpha1.Foo) (*v1alpha1.Foo, error)
|
||||||
Update(*v1alpha1.Foo) (*v1alpha1.Foo, error)
|
Update(*v1alpha1.Foo) (*v1alpha1.Foo, error)
|
||||||
UpdateStatus(*v1alpha1.Foo) (*v1alpha1.Foo, error)
|
|
||||||
Delete(name string, options *v1.DeleteOptions) error
|
Delete(name string, options *v1.DeleteOptions) error
|
||||||
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
|
DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
|
||||||
Get(name string, options v1.GetOptions) (*v1alpha1.Foo, error)
|
Get(name string, options v1.GetOptions) (*v1alpha1.Foo, error)
|
||||||
@@ -121,22 +118,6 @@ func (c *foos) Update(foo *v1alpha1.Foo) (result *v1alpha1.Foo, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateStatus was generated because the type contains a Status member.
|
|
||||||
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
|
||||||
|
|
||||||
func (c *foos) UpdateStatus(foo *v1alpha1.Foo) (result *v1alpha1.Foo, err error) {
|
|
||||||
result = &v1alpha1.Foo{}
|
|
||||||
err = c.client.Put().
|
|
||||||
Namespace(c.ns).
|
|
||||||
Resource("foos").
|
|
||||||
Name(foo.Name).
|
|
||||||
SubResource("status").
|
|
||||||
Body(foo).
|
|
||||||
Do().
|
|
||||||
Into(result)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete takes name of the foo and deletes it. Returns an error if one occurs.
|
// Delete takes name of the foo and deletes it. Returns an error if one occurs.
|
||||||
func (c *foos) Delete(name string, options *v1.DeleteOptions) error {
|
func (c *foos) Delete(name string, options *v1.DeleteOptions) error {
|
||||||
return c.client.Delete().
|
return c.client.Delete().
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
type FooExpansion interface{}
|
type FooExpansion interface{}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by client-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
39
pkg/client/informers/externalversions/BUILD
Normal file
39
pkg/client/informers/externalversions/BUILD
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"factory.go",
|
||||||
|
"generic.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/client/informers/externalversions",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces:all-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller:all-srcs",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,15 +14,11 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by informer-gen. DO NOT EDIT.
|
// This file was automatically generated by informer-gen
|
||||||
|
|
||||||
package externalversions
|
package externalversions
|
||||||
|
|
||||||
import (
|
import (
|
||||||
reflect "reflect"
|
|
||||||
sync "sync"
|
|
||||||
time "time"
|
|
||||||
|
|
||||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
@@ -30,18 +26,17 @@ import (
|
|||||||
versioned "k8s.io/sample-controller/pkg/client/clientset/versioned"
|
versioned "k8s.io/sample-controller/pkg/client/clientset/versioned"
|
||||||
internalinterfaces "k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces"
|
internalinterfaces "k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces"
|
||||||
samplecontroller "k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller"
|
samplecontroller "k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
time "time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SharedInformerOption defines the functional option type for SharedInformerFactory.
|
|
||||||
type SharedInformerOption func(*sharedInformerFactory) *sharedInformerFactory
|
|
||||||
|
|
||||||
type sharedInformerFactory struct {
|
type sharedInformerFactory struct {
|
||||||
client versioned.Interface
|
client versioned.Interface
|
||||||
namespace string
|
namespace string
|
||||||
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
lock sync.Mutex
|
lock sync.Mutex
|
||||||
defaultResync time.Duration
|
defaultResync time.Duration
|
||||||
customResync map[reflect.Type]time.Duration
|
|
||||||
|
|
||||||
informers map[reflect.Type]cache.SharedIndexInformer
|
informers map[reflect.Type]cache.SharedIndexInformer
|
||||||
// startedInformers is used for tracking which informers have been started.
|
// startedInformers is used for tracking which informers have been started.
|
||||||
@@ -49,62 +44,23 @@ type sharedInformerFactory struct {
|
|||||||
startedInformers map[reflect.Type]bool
|
startedInformers map[reflect.Type]bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
|
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
|
||||||
func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) SharedInformerOption {
|
|
||||||
return func(factory *sharedInformerFactory) *sharedInformerFactory {
|
|
||||||
for k, v := range resyncConfig {
|
|
||||||
factory.customResync[reflect.TypeOf(k)] = v
|
|
||||||
}
|
|
||||||
return factory
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
|
|
||||||
func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerOption {
|
|
||||||
return func(factory *sharedInformerFactory) *sharedInformerFactory {
|
|
||||||
factory.tweakListOptions = tweakListOptions
|
|
||||||
return factory
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithNamespace limits the SharedInformerFactory to the specified namespace.
|
|
||||||
func WithNamespace(namespace string) SharedInformerOption {
|
|
||||||
return func(factory *sharedInformerFactory) *sharedInformerFactory {
|
|
||||||
factory.namespace = namespace
|
|
||||||
return factory
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
|
|
||||||
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
|
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
|
||||||
return NewSharedInformerFactoryWithOptions(client, defaultResync)
|
return NewFilteredSharedInformerFactory(client, defaultResync, v1.NamespaceAll, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
|
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
|
||||||
// Listers obtained via this SharedInformerFactory will be subject to the same filters
|
// Listers obtained via this SharedInformerFactory will be subject to the same filters
|
||||||
// as specified here.
|
// as specified here.
|
||||||
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
|
|
||||||
func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
|
func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
|
||||||
return NewSharedInformerFactoryWithOptions(client, defaultResync, WithNamespace(namespace), WithTweakListOptions(tweakListOptions))
|
return &sharedInformerFactory{
|
||||||
}
|
|
||||||
|
|
||||||
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
|
|
||||||
func NewSharedInformerFactoryWithOptions(client versioned.Interface, defaultResync time.Duration, options ...SharedInformerOption) SharedInformerFactory {
|
|
||||||
factory := &sharedInformerFactory{
|
|
||||||
client: client,
|
client: client,
|
||||||
namespace: v1.NamespaceAll,
|
namespace: namespace,
|
||||||
|
tweakListOptions: tweakListOptions,
|
||||||
defaultResync: defaultResync,
|
defaultResync: defaultResync,
|
||||||
informers: make(map[reflect.Type]cache.SharedIndexInformer),
|
informers: make(map[reflect.Type]cache.SharedIndexInformer),
|
||||||
startedInformers: make(map[reflect.Type]bool),
|
startedInformers: make(map[reflect.Type]bool),
|
||||||
customResync: make(map[reflect.Type]time.Duration),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply all options
|
|
||||||
for _, opt := range options {
|
|
||||||
factory = opt(factory)
|
|
||||||
}
|
|
||||||
|
|
||||||
return factory
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start initializes all requested informers.
|
// Start initializes all requested informers.
|
||||||
@@ -153,13 +109,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
|
|||||||
if exists {
|
if exists {
|
||||||
return informer
|
return informer
|
||||||
}
|
}
|
||||||
|
informer = newFunc(f.client, f.defaultResync)
|
||||||
resyncPeriod, exists := f.customResync[informerType]
|
|
||||||
if !exists {
|
|
||||||
resyncPeriod = f.defaultResync
|
|
||||||
}
|
|
||||||
|
|
||||||
informer = newFunc(f.client, resyncPeriod)
|
|
||||||
f.informers[informerType] = informer
|
f.informers[informerType] = informer
|
||||||
|
|
||||||
return informer
|
return informer
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,13 +14,12 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by informer-gen. DO NOT EDIT.
|
// This file was automatically generated by informer-gen
|
||||||
|
|
||||||
package externalversions
|
package externalversions
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
cache "k8s.io/client-go/tools/cache"
|
cache "k8s.io/client-go/tools/cache"
|
||||||
v1alpha1 "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
v1alpha1 "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["factory_interfaces.go"],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,17 +14,16 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by informer-gen. DO NOT EDIT.
|
// This file was automatically generated by informer-gen
|
||||||
|
|
||||||
package internalinterfaces
|
package internalinterfaces
|
||||||
|
|
||||||
import (
|
import (
|
||||||
time "time"
|
|
||||||
|
|
||||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
cache "k8s.io/client-go/tools/cache"
|
cache "k8s.io/client-go/tools/cache"
|
||||||
versioned "k8s.io/sample-controller/pkg/client/clientset/versioned"
|
versioned "k8s.io/sample-controller/pkg/client/clientset/versioned"
|
||||||
|
time "time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type NewInformerFunc func(versioned.Interface, time.Duration) cache.SharedIndexInformer
|
type NewInformerFunc func(versioned.Interface, time.Duration) cache.SharedIndexInformer
|
||||||
|
|||||||
29
pkg/client/informers/externalversions/samplecontroller/BUILD
Normal file
29
pkg/client/informers/externalversions/samplecontroller/BUILD
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["interface.go"],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1:all-srcs",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by informer-gen. DO NOT EDIT.
|
// This file was automatically generated by informer-gen
|
||||||
|
|
||||||
package samplecontroller
|
package samplecontroller
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"foo.go",
|
||||||
|
"interface.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/clientset/versioned:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/client/listers/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,21 +14,20 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by informer-gen. DO NOT EDIT.
|
// This file was automatically generated by informer-gen
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
time "time"
|
|
||||||
|
|
||||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
watch "k8s.io/apimachinery/pkg/watch"
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
cache "k8s.io/client-go/tools/cache"
|
cache "k8s.io/client-go/tools/cache"
|
||||||
samplecontrollerv1alpha1 "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
samplecontroller_v1alpha1 "k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1"
|
||||||
versioned "k8s.io/sample-controller/pkg/client/clientset/versioned"
|
versioned "k8s.io/sample-controller/pkg/client/clientset/versioned"
|
||||||
internalinterfaces "k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces"
|
internalinterfaces "k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces"
|
||||||
v1alpha1 "k8s.io/sample-controller/pkg/client/listers/samplecontroller/v1alpha1"
|
v1alpha1 "k8s.io/sample-controller/pkg/client/listers/samplecontroller/v1alpha1"
|
||||||
|
time "time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FooInformer provides access to a shared informer and lister for
|
// FooInformer provides access to a shared informer and lister for
|
||||||
@@ -70,7 +69,7 @@ func NewFilteredFooInformer(client versioned.Interface, namespace string, resync
|
|||||||
return client.SamplecontrollerV1alpha1().Foos(namespace).Watch(options)
|
return client.SamplecontrollerV1alpha1().Foos(namespace).Watch(options)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&samplecontrollerv1alpha1.Foo{},
|
&samplecontroller_v1alpha1.Foo{},
|
||||||
resyncPeriod,
|
resyncPeriod,
|
||||||
indexers,
|
indexers,
|
||||||
)
|
)
|
||||||
@@ -81,7 +80,7 @@ func (f *fooInformer) defaultInformer(client versioned.Interface, resyncPeriod t
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (f *fooInformer) Informer() cache.SharedIndexInformer {
|
func (f *fooInformer) Informer() cache.SharedIndexInformer {
|
||||||
return f.factory.InformerFor(&samplecontrollerv1alpha1.Foo{}, f.defaultInformer)
|
return f.factory.InformerFor(&samplecontroller_v1alpha1.Foo{}, f.defaultInformer)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fooInformer) Lister() v1alpha1.FooLister {
|
func (f *fooInformer) Lister() v1alpha1.FooLister {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by informer-gen. DO NOT EDIT.
|
// This file was automatically generated by informer-gen
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
|
|||||||
31
pkg/client/listers/samplecontroller/v1alpha1/BUILD
Normal file
31
pkg/client/listers/samplecontroller/v1alpha1/BUILD
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"expansion_generated.go",
|
||||||
|
"foo.go",
|
||||||
|
],
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/client/listers/samplecontroller/v1alpha1",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by lister-gen. DO NOT EDIT.
|
// This file was automatically generated by lister-gen
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by lister-gen. DO NOT EDIT.
|
// This file was automatically generated by lister-gen
|
||||||
|
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
|
|||||||
30
pkg/signals/BUILD
Normal file
30
pkg/signals/BUILD
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"signal.go",
|
||||||
|
"signal_posix.go",
|
||||||
|
] + select({
|
||||||
|
"@io_bazel_rules_go//go/platform:windows_amd64": [
|
||||||
|
"signal_windows.go",
|
||||||
|
],
|
||||||
|
"//conditions:default": [],
|
||||||
|
}),
|
||||||
|
importpath = "k8s.io/sample-controller/pkg/signals",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user