Use code-generator to generate clientset/informer/lister (#1492)

To reduce maintenance effort and avoid writing duplicate informer code,
use code-generator to generate clientset/informer/lister code.
This commit is contained in:
Ta-Ching Chen
2020-01-16 15:18:38 +08:00
committed by GitHub
parent b96ca0735d
commit 574fb55fcf
169 changed files with 6325 additions and 2349 deletions
+44 -44
View File
@@ -182,43 +182,43 @@ func SpecSave(resource interface{}, specFile string) error {
case fv1.Package:
typedres.TypeMeta.APIVersion = fv1.CRD_VERSION
typedres.TypeMeta.Kind = "Package"
meta = typedres.Metadata
meta = typedres.ObjectMeta
kind = typedres.TypeMeta.Kind
data, err = yaml.Marshal(typedres)
case fv1.Function:
typedres.TypeMeta.APIVersion = fv1.CRD_VERSION
typedres.TypeMeta.Kind = "Function"
meta = typedres.Metadata
meta = typedres.ObjectMeta
kind = typedres.TypeMeta.Kind
data, err = yaml.Marshal(typedres)
case fv1.Environment:
typedres.TypeMeta.APIVersion = fv1.CRD_VERSION
typedres.TypeMeta.Kind = "Environment"
meta = typedres.Metadata
meta = typedres.ObjectMeta
kind = typedres.TypeMeta.Kind
data, err = yaml.Marshal(typedres)
case fv1.HTTPTrigger:
typedres.TypeMeta.APIVersion = fv1.CRD_VERSION
typedres.TypeMeta.Kind = "HTTPTrigger"
meta = typedres.Metadata
meta = typedres.ObjectMeta
kind = typedres.TypeMeta.Kind
data, err = yaml.Marshal(typedres)
case fv1.KubernetesWatchTrigger:
typedres.TypeMeta.APIVersion = fv1.CRD_VERSION
typedres.TypeMeta.Kind = "KubernetesWatchTrigger"
meta = typedres.Metadata
meta = typedres.ObjectMeta
kind = typedres.TypeMeta.Kind
data, err = yaml.Marshal(typedres)
case fv1.MessageQueueTrigger:
typedres.TypeMeta.APIVersion = fv1.CRD_VERSION
typedres.TypeMeta.Kind = "MessageQueueTrigger"
meta = typedres.Metadata
meta = typedres.ObjectMeta
kind = typedres.TypeMeta.Kind
data, err = yaml.Marshal(typedres)
case fv1.TimeTrigger:
typedres.TypeMeta.APIVersion = fv1.CRD_VERSION
typedres.TypeMeta.Kind = "TimeTrigger"
meta = typedres.Metadata
meta = typedres.ObjectMeta
kind = typedres.TypeMeta.Kind
data, err = yaml.Marshal(typedres)
default:
@@ -297,7 +297,7 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) {
// index packages, check outgoing refs, mark archives that are referenced
packages := make(map[string]bool)
for _, p := range fr.Packages {
packages[MapKey(&p.Metadata)] = false
packages[MapKey(&p.ObjectMeta)] = false
as := map[string]string{
"source": p.Spec.Source.URL,
@@ -311,8 +311,8 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) {
if _, ok := archives[aname]; !ok {
result = multierror.Append(result, fmt.Errorf(
"%v: package '%v' references unknown %v archive '%v%v'",
fr.SourceMap.Locations["Package"][p.Metadata.Namespace][p.Metadata.Name],
p.Metadata.Name,
fr.SourceMap.Locations["Package"][p.ObjectMeta.Namespace][p.ObjectMeta.Name],
p.ObjectMeta.Name,
archiveType,
ARCHIVE_URL_PREFIX,
aname))
@@ -339,7 +339,7 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) {
// index functions, check function package refs, mark referenced packages
functions := make(map[string]bool)
for _, f := range fr.Functions {
functions[MapKey(&f.Metadata)] = false
functions[MapKey(&f.ObjectMeta)] = false
pkgMeta := &metav1.ObjectMeta{
Name: f.Spec.Package.PackageRef.Name,
@@ -354,21 +354,21 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) {
// check that the package referenced by each function is in the same ns as the function
packageRefInFuncNs := func(f *fv1.Function) bool {
return f.Spec.Package.PackageRef.Namespace == f.Metadata.Namespace
return f.Spec.Package.PackageRef.Namespace == f.ObjectMeta.Namespace
}
if !packageRefInFuncNs(&f) {
result = multierror.Append(result, fmt.Errorf(
"%v: function '%v' references a package outside of its namespace %v/%v",
fr.SourceMap.Locations["Function"][f.Metadata.Namespace][f.Metadata.Name],
f.Metadata.Name,
fr.SourceMap.Locations["Function"][f.ObjectMeta.Namespace][f.ObjectMeta.Name],
f.ObjectMeta.Name,
f.Spec.Package.PackageRef.Namespace,
f.Spec.Package.PackageRef.Name))
} else if !packageRefExists() {
result = multierror.Append(result, fmt.Errorf(
"%v: function '%v' references unknown package %v/%v",
fr.SourceMap.Locations["Function"][f.Metadata.Namespace][f.Metadata.Name],
f.Metadata.Name,
fr.SourceMap.Locations["Function"][f.ObjectMeta.Namespace][f.ObjectMeta.Name],
f.ObjectMeta.Name,
pkgMeta.Namespace,
pkgMeta.Name))
} else {
@@ -415,7 +415,7 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) {
// check function refs from triggers
for _, t := range fr.HttpTriggers {
err := fr.validateFunctionReference(functions, t.Kind, &t.Metadata, t.Spec.FunctionReference)
err := fr.validateFunctionReference(functions, t.Kind, &t.ObjectMeta, t.Spec.FunctionReference)
if err != nil {
result = multierror.Append(result, err)
}
@@ -426,21 +426,21 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) {
result = multierror.Append(result, t.Validate())
}
for _, t := range fr.KubernetesWatchTriggers {
err := fr.validateFunctionReference(functions, t.Kind, &t.Metadata, t.Spec.FunctionReference)
err := fr.validateFunctionReference(functions, t.Kind, &t.ObjectMeta, t.Spec.FunctionReference)
if err != nil {
result = multierror.Append(result, err)
}
result = multierror.Append(result, t.Validate())
}
for _, t := range fr.TimeTriggers {
err := fr.validateFunctionReference(functions, t.Kind, &t.Metadata, t.Spec.FunctionReference)
err := fr.validateFunctionReference(functions, t.Kind, &t.ObjectMeta, t.Spec.FunctionReference)
if err != nil {
result = multierror.Append(result, err)
}
result = multierror.Append(result, t.Validate())
}
for _, t := range fr.MessageQueueTriggers {
err := fr.validateFunctionReference(functions, t.Kind, &t.Metadata, t.Spec.FunctionReference)
err := fr.validateFunctionReference(functions, t.Kind, &t.ObjectMeta, t.Spec.FunctionReference)
if err != nil {
result = multierror.Append(result, err)
}
@@ -453,7 +453,7 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) {
// Index envs, warn on functions referencing an environment for which spes does not exist
environments := make(map[string]struct{})
for _, e := range fr.Environments {
environments[fmt.Sprintf("%s:%s", e.Metadata.Name, e.Metadata.Namespace)] = struct{}{}
environments[fmt.Sprintf("%s:%s", e.ObjectMeta.Name, e.ObjectMeta.Namespace)] = struct{}{}
if ((e.Spec.Runtime.Container != nil) && (e.Spec.Runtime.PodSpec != nil)) || ((e.Spec.Builder.Container != nil) && (e.Spec.Builder.PodSpec != nil)) {
warnings = append(warnings, fmt.Sprintf("You have provided both - container spec and pod spec and while merging the pod spec will take precedence."))
}
@@ -466,7 +466,7 @@ func (fr *FissionResources) Validate(input cli.Input) ([]string, error) {
for _, f := range fr.Functions {
if _, ok := environments[fmt.Sprintf("%s:%s", f.Spec.Environment.Name, f.Spec.Environment.Namespace)]; !ok {
warnings = append(warnings, fmt.Sprintf("Environment %s is referenced in function %s but not declared in specs", f.Spec.Environment.Name, f.Metadata.Name))
warnings = append(warnings, fmt.Sprintf("Environment %s is referenced in function %s but not declared in specs", f.Spec.Environment.Name, f.ObjectMeta.Name))
}
strategy := f.Spec.InvokeStrategy.ExecutionStrategy
if strategy.ExecutorType == fv1.ExecutorTypeNewdeploy && strategy.SpecializationTimeout < fv1.DefaultSpecializationTimeOut {
@@ -521,7 +521,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error {
if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc))
}
m = &v.Metadata
m = &v.ObjectMeta
fr.Packages = append(fr.Packages, v)
case "Function":
var v fv1.Function
@@ -529,7 +529,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error {
if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc))
}
m = &v.Metadata
m = &v.ObjectMeta
fr.Functions = append(fr.Functions, v)
case "Environment":
var v fv1.Environment
@@ -537,7 +537,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error {
if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc))
}
m = &v.Metadata
m = &v.ObjectMeta
fr.Environments = append(fr.Environments, v)
case "HTTPTrigger":
var v fv1.HTTPTrigger
@@ -551,7 +551,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error {
v.Spec.RelativeURL = fmt.Sprintf("/%s", v.Spec.RelativeURL)
}
m = &v.Metadata
m = &v.ObjectMeta
fr.HttpTriggers = append(fr.HttpTriggers, v)
case "KubernetesWatchTrigger":
var v fv1.KubernetesWatchTrigger
@@ -559,7 +559,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error {
if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc))
}
m = &v.Metadata
m = &v.ObjectMeta
fr.KubernetesWatchTriggers = append(fr.KubernetesWatchTriggers, v)
case "TimeTrigger":
var v fv1.TimeTrigger
@@ -567,7 +567,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error {
if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc))
}
m = &v.Metadata
m = &v.ObjectMeta
fr.TimeTriggers = append(fr.TimeTriggers, v)
case "MessageQueueTrigger":
var v fv1.MessageQueueTrigger
@@ -575,7 +575,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location) error {
if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc))
}
m = &v.Metadata
m = &v.ObjectMeta
fr.MessageQueueTriggers = append(fr.MessageQueueTriggers, v)
// The following are not CRDs
@@ -637,7 +637,7 @@ func (fr *FissionResources) SpecExists(resource interface{}, compareMetadata boo
return nil
case *fv1.Package:
for _, p := range fr.Packages {
if compareMetadata && !reflect.DeepEqual(p.Metadata, typedres.Metadata) {
if compareMetadata && !reflect.DeepEqual(p.ObjectMeta, typedres.ObjectMeta) {
continue
}
if compareSpec && !reflect.DeepEqual(p.Spec, typedres.Spec) {
@@ -663,50 +663,50 @@ func (fr *FissionResources) ExistsInSpecs(resource interface{}) (bool, error) {
}
case fv1.Package:
for _, obj := range fr.Packages {
if obj.Metadata.Name == typedres.Metadata.Name &&
obj.Metadata.Namespace == typedres.Metadata.Namespace {
if obj.ObjectMeta.Name == typedres.ObjectMeta.Name &&
obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace {
return true, nil
}
}
case fv1.Function:
for _, obj := range fr.Functions {
if obj.Metadata.Name == typedres.Metadata.Name &&
obj.Metadata.Namespace == typedres.Metadata.Namespace {
if obj.ObjectMeta.Name == typedres.ObjectMeta.Name &&
obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace {
return true, nil
}
}
case fv1.Environment:
for _, obj := range fr.Environments {
if obj.Metadata.Name == typedres.Metadata.Name &&
obj.Metadata.Namespace == typedres.Metadata.Namespace {
if obj.ObjectMeta.Name == typedres.ObjectMeta.Name &&
obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace {
return true, nil
}
}
case fv1.HTTPTrigger:
for _, obj := range fr.HttpTriggers {
if obj.Metadata.Name == typedres.Metadata.Name &&
obj.Metadata.Namespace == typedres.Metadata.Namespace {
if obj.ObjectMeta.Name == typedres.ObjectMeta.Name &&
obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace {
return true, nil
}
}
case fv1.KubernetesWatchTrigger:
for _, obj := range fr.KubernetesWatchTriggers {
if obj.Metadata.Name == typedres.Metadata.Name &&
obj.Metadata.Namespace == typedres.Metadata.Namespace {
if obj.ObjectMeta.Name == typedres.ObjectMeta.Name &&
obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace {
return true, nil
}
}
case fv1.MessageQueueTrigger:
for _, obj := range fr.MessageQueueTriggers {
if obj.Metadata.Name == typedres.Metadata.Name &&
obj.Metadata.Namespace == typedres.Metadata.Namespace {
if obj.ObjectMeta.Name == typedres.ObjectMeta.Name &&
obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace {
return true, nil
}
}
case fv1.TimeTrigger:
for _, obj := range fr.TimeTriggers {
if obj.Metadata.Name == typedres.Metadata.Name &&
obj.Metadata.Namespace == typedres.Metadata.Namespace {
if obj.ObjectMeta.Name == typedres.ObjectMeta.Name &&
obj.ObjectMeta.Namespace == typedres.ObjectMeta.Namespace {
return true, nil
}
}