Generate conversions/deep-copies for experimental. Currently we make (and register) duplicate functions but this is benign.

This commit is contained in:
Muhammed Uluyol 2015-08-07 11:26:44 -07:00
parent 4d5899955e
commit 567bb15432
17 changed files with 661 additions and 127 deletions

View File

@ -8,6 +8,7 @@ matrix:
install: install:
- go get github.com/tools/godep - go get github.com/tools/godep
- go get golang.org/x/tools/cmd/goimports
- ./hack/travis/install-etcd.sh - ./hack/travis/install-etcd.sh
- ./hack/build-go.sh - ./hack/build-go.sh

View File

@ -22,9 +22,12 @@ import (
"os" "os"
"path" "path"
"runtime" "runtime"
"strings"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
_ "k8s.io/kubernetes/pkg/api/v1" _ "k8s.io/kubernetes/pkg/api/v1"
_ "k8s.io/kubernetes/pkg/expapi"
_ "k8s.io/kubernetes/pkg/expapi/v1"
pkg_runtime "k8s.io/kubernetes/pkg/runtime" pkg_runtime "k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
@ -32,9 +35,11 @@ import (
flag "github.com/spf13/pflag" flag "github.com/spf13/pflag"
) )
const pkgBase = "k8s.io/kubernetes/pkg"
var ( var (
functionDest = flag.StringP("funcDest", "f", "-", "Output for conversion functions; '-' means stdout") functionDest = flag.StringP("funcDest", "f", "-", "Output for conversion functions; '-' means stdout")
version = flag.StringP("version", "v", "v1", "Version for conversion.") groupVersion = flag.StringP("version", "v", "api/v1", "groupPath/version for conversion.")
) )
func main() { func main() {
@ -53,13 +58,20 @@ func main() {
funcOut = file funcOut = file
} }
generator := pkg_runtime.NewConversionGenerator(api.Scheme.Raw(), path.Join("k8s.io/kubernetes/pkg/api", *version)) group, version := path.Split(*groupVersion)
apiShort := generator.AddImport("k8s.io/kubernetes/pkg/api") group = strings.TrimRight(group, "/")
generator.AddImport("k8s.io/kubernetes/pkg/api/resource")
versionPath := path.Join(pkgBase, group, version)
generator := pkg_runtime.NewConversionGenerator(api.Scheme.Raw(), versionPath)
apiShort := generator.AddImport(path.Join(pkgBase, "api"))
generator.AddImport(path.Join(pkgBase, "api/resource"))
// TODO(wojtek-t): Change the overwrites to a flag. // TODO(wojtek-t): Change the overwrites to a flag.
generator.OverwritePackage(*version, "") generator.OverwritePackage(version, "")
for _, knownType := range api.Scheme.KnownTypes(*version) { for _, knownType := range api.Scheme.KnownTypes(version) {
if err := generator.GenerateConversionsForType(*version, knownType); err != nil { if !strings.HasPrefix(knownType.PkgPath(), versionPath) {
continue
}
if err := generator.GenerateConversionsForType(version, knownType); err != nil {
glog.Errorf("error while generating conversion functions for %v: %v", knownType, err) glog.Errorf("error while generating conversion functions for %v: %v", knownType, err)
} }
} }

View File

@ -25,6 +25,8 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
_ "k8s.io/kubernetes/pkg/api/v1" _ "k8s.io/kubernetes/pkg/api/v1"
_ "k8s.io/kubernetes/pkg/expapi"
_ "k8s.io/kubernetes/pkg/expapi/v1"
pkg_runtime "k8s.io/kubernetes/pkg/runtime" pkg_runtime "k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
@ -32,9 +34,11 @@ import (
flag "github.com/spf13/pflag" flag "github.com/spf13/pflag"
) )
const pkgBase = "k8s.io/kubernetes/pkg"
var ( var (
functionDest = flag.StringP("func-dest", "f", "-", "Output for deep copy functions; '-' means stdout") functionDest = flag.StringP("funcDest", "f", "-", "Output for deep copy functions; '-' means stdout")
version = flag.StringP("version", "v", "v1", "Version for deep copies.") groupVersion = flag.StringP("version", "v", "", "groupPath/version for deep copies.")
overwrites = flag.StringP("overwrites", "o", "", "Comma-separated overwrites for package names") overwrites = flag.StringP("overwrites", "o", "", "Comma-separated overwrites for package names")
) )
@ -54,15 +58,15 @@ func main() {
funcOut = file funcOut = file
} }
knownVersion := *version group, version := path.Split(*groupVersion)
group = strings.TrimRight(group, "/")
registerTo := "api.Scheme" registerTo := "api.Scheme"
if knownVersion == "api" { if *groupVersion == "api/" {
knownVersion = api.Scheme.Raw().InternalVersion
registerTo = "Scheme" registerTo = "Scheme"
} }
pkgPath := path.Join("k8s.io/kubernetes/pkg/api", knownVersion) versionPath := path.Join(pkgBase, group, version)
generator := pkg_runtime.NewDeepCopyGenerator(api.Scheme.Raw(), pkgPath, util.NewStringSet("k8s.io/kubernetes")) generator := pkg_runtime.NewDeepCopyGenerator(api.Scheme.Raw(), versionPath, util.NewStringSet("k8s.io/kubernetes"))
generator.AddImport("k8s.io/kubernetes/pkg/api") generator.AddImport(path.Join(pkgBase, "api"))
if len(*overwrites) > 0 { if len(*overwrites) > 0 {
for _, overwrite := range strings.Split(*overwrites, ",") { for _, overwrite := range strings.Split(*overwrites, ",") {
@ -73,7 +77,10 @@ func main() {
generator.OverwritePackage(vals[0], vals[1]) generator.OverwritePackage(vals[0], vals[1])
} }
} }
for _, knownType := range api.Scheme.KnownTypes(knownVersion) { for _, knownType := range api.Scheme.KnownTypes(version) {
if !strings.HasPrefix(knownType.PkgPath(), versionPath) {
continue
}
if err := generator.AddType(knownType); err != nil { if err := generator.AddType(knownType); err != nil {
glog.Errorf("error while generating deep copy functions for %v: %v", knownType, err) glog.Errorf("error while generating deep copy functions for %v: %v", knownType, err)
} }

View File

@ -29,11 +29,11 @@ function generate_version() {
local version=$1 local version=$1
local TMPFILE="/tmp/conversion_generated.$(date +%s).go" local TMPFILE="/tmp/conversion_generated.$(date +%s).go"
echo "Generating for version ${version}" echo "Generating for ${version}"
sed 's/YEAR/2015/' hack/boilerplate/boilerplate.go.txt > "$TMPFILE" sed 's/YEAR/2015/' hack/boilerplate/boilerplate.go.txt > "$TMPFILE"
cat >> "$TMPFILE" <<EOF cat >> "$TMPFILE" <<EOF
package ${version} package ${version##*/}
// AUTO-GENERATED FUNCTIONS START HERE // AUTO-GENERATED FUNCTIONS START HERE
EOF EOF
@ -44,14 +44,19 @@ EOF
// AUTO-GENERATED FUNCTIONS END HERE // AUTO-GENERATED FUNCTIONS END HERE
EOF EOF
mv "$TMPFILE" "pkg/api/${version}/conversion_generated.go" env GOPATH=$(godep path):$GOPATH goimports -w "$TMPFILE"
mv "$TMPFILE" "pkg/${version}/conversion_generated.go"
} }
VERSIONS="v1" if ! which goimports >/dev/null; then
echo "goimports not in path, run go get golang.org/x/tools/cmd/goimports"
exit 1
fi
DEFAULT_VERSIONS="api/v1 expapi/v1"
VERSIONS=${VERSIONS:-$DEFAULT_VERSIONS}
for ver in $VERSIONS; do for ver in $VERSIONS; do
# Ensure that the version being processed is registered by setting # Ensure that the version being processed is registered by setting
# KUBE_API_VERSIONS. # KUBE_API_VERSIONS.
KUBE_API_VERSIONS="${ver}" generate_version "${ver}" KUBE_API_VERSIONS="${ver##*/}" generate_version "${ver}"
done done
# ex: ts=2 sw=2 et filetype=sh

View File

@ -27,22 +27,25 @@ gendeepcopy=$(kube::util::find-binary "gendeepcopy")
function result_file_name() { function result_file_name() {
local version=$1 local version=$1
if [ "${version}" == "api" ]; then echo "pkg/${version}/deep_copy_generated.go"
echo "pkg/api/deep_copy_generated.go"
else
echo "pkg/api/${version}/deep_copy_generated.go"
fi
} }
function generate_version() { function generate_version() {
local version=$1 local version=$1
local TMPFILE="/tmp/deep_copy_generated.$(date +%s).go" local TMPFILE="/tmp/deep_copy_generated.$(date +%s).go"
echo "Generating for version ${version}" echo "Generating for ${version}"
# version is group/version, so use the version number as the package name unless
# this is an internal version, in which case use the group name.
pkgname=${version##*/}
if [[ -z $pkgname ]]; then
pkgname=${version%/*}
fi
sed 's/YEAR/2015/' hack/boilerplate/boilerplate.go.txt > $TMPFILE sed 's/YEAR/2015/' hack/boilerplate/boilerplate.go.txt > $TMPFILE
cat >> $TMPFILE <<EOF cat >> $TMPFILE <<EOF
package ${version} package $pkgname
// AUTO-GENERATED FUNCTIONS START HERE // AUTO-GENERATED FUNCTIONS START HERE
EOF EOF
@ -53,27 +56,24 @@ EOF
// AUTO-GENERATED FUNCTIONS END HERE // AUTO-GENERATED FUNCTIONS END HERE
EOF EOF
gofmt -w -s "$TMPFILE" env GOPATH=$(godep path):$GOPATH goimports -w "$TMPFILE"
mv "$TMPFILE" `result_file_name ${version}` mv "$TMPFILE" `result_file_name ${version}`
} }
function generate_deep_copies() { function generate_deep_copies() {
local versions="api v1" local versions="$@"
# To avoid compile errors, remove the currently existing files. # To avoid compile errors, remove the currently existing files.
for ver in ${versions}; do for ver in ${versions}; do
rm -f `result_file_name ${ver}` rm -f `result_file_name ${ver}`
done done
apiVersions=""
for ver in ${versions}; do for ver in ${versions}; do
# Ensure that the version being processed is registered by setting # Ensure that the version being processed is registered by setting
# KUBE_API_VERSIONS. # KUBE_API_VERSIONS.
if [ "${ver}" != "api" ]; then apiVersions="${ver##*/}"
apiVersions="${ver}"
fi
KUBE_API_VERSIONS="${apiVersions}" generate_version "${ver}" KUBE_API_VERSIONS="${apiVersions}" generate_version "${ver}"
done done
} }
DEFAULT_VERSIONS="api/ api/v1 expapi/ expapi/v1"
VERSIONS=${VERSIONS:-$DEFAULT_VERSIONS}
generate_deep_copies generate_deep_copies
# ex: ts=2 sw=2 et filetype=sh

View File

@ -23,25 +23,31 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
kube::golang::setup_env kube::golang::setup_env
APIROOT="${KUBE_ROOT}/pkg/api" APIROOTS=${APIROOTS:-pkg/api pkg/expapi}
TMP_APIROOT="${KUBE_ROOT}/_tmp/api"
_tmp="${KUBE_ROOT}/_tmp" _tmp="${KUBE_ROOT}/_tmp"
mkdir -p "${_tmp}" cleanup() {
cp -a "${APIROOT}" "${TMP_APIROOT}" rm -rf "${_tmp}"
}
trap "cleanup" EXIT SIGINT
for APIROOT in ${APIROOTS}; do
mkdir -p "${_tmp}/${APIROOT%/*}"
cp -a "${KUBE_ROOT}/${APIROOT}" "${_tmp}/${APIROOT}"
done
"${KUBE_ROOT}/hack/update-generated-conversions.sh" "${KUBE_ROOT}/hack/update-generated-conversions.sh"
echo "diffing ${APIROOT} against freshly generated conversions" for APIROOT in ${APIROOTS}; do
ret=0 TMP_APIROOT="${_tmp}/${APIROOT}"
diff -Naupr -I 'Auto generated by' "${APIROOT}" "${TMP_APIROOT}" || ret=$? echo "diffing ${APIROOT} against freshly generated conversions"
cp -a ${TMP_APIROOT} "${KUBE_ROOT}/pkg" ret=0
rm -rf "${_tmp}" diff -Naupr -I 'Auto generated by' "${KUBE_ROOT}/${APIROOT}" "${TMP_APIROOT}" || ret=$?
if [[ $ret -eq 0 ]] cp -a "${TMP_APIROOT}" "${KUBE_ROOT}/${APIROOT%/*}"
then if [[ $ret -eq 0 ]]; then
echo "${APIROOT} up to date." echo "${APIROOT} up to date."
else else
echo "${APIROOT} is out of date. Please run hack/update-generated-conversions.sh" echo "${APIROOT} is out of date. Please run hack/update-generated-conversions.sh"
exit 1 exit 1
fi fi
done
# ex: ts=2 sw=2 et filetype=sh

View File

@ -25,25 +25,32 @@ kube::golang::setup_env
gendeepcopy=$(kube::util::find-binary "gendeepcopy") gendeepcopy=$(kube::util::find-binary "gendeepcopy")
APIROOT="${KUBE_ROOT}/pkg/api" APIROOTS=${APIROOTS:-pkg/api pkg/expapi}
TMP_APIROOT="${KUBE_ROOT}/_tmp/api"
_tmp="${KUBE_ROOT}/_tmp" _tmp="${KUBE_ROOT}/_tmp"
mkdir -p "${_tmp}" cleanup() {
cp -a "${APIROOT}" "${TMP_APIROOT}" rm -rf "${_tmp}"
}
trap "cleanup" EXIT SIGINT
for APIROOT in ${APIROOTS}; do
mkdir -p "${_tmp}/${APIROOT%/*}"
cp -a "${KUBE_ROOT}/${APIROOT}" "${_tmp}/${APIROOT}"
done
"${KUBE_ROOT}/hack/update-generated-deep-copies.sh" "${KUBE_ROOT}/hack/update-generated-deep-copies.sh"
echo "diffing ${APIROOT} against freshly generated deep copies"
ret=0 for APIROOT in ${APIROOTS}; do
diff -Naupr -I 'Auto generated by' "${APIROOT}" "${TMP_APIROOT}" || ret=$? TMP_APIROOT="${_tmp}/${APIROOT}"
cp -a ${TMP_APIROOT} "${KUBE_ROOT}/pkg" echo "diffing ${APIROOT} against freshly generated deep copies"
rm -rf "${_tmp}" ret=0
if [[ $ret -eq 0 ]] diff -Naupr -I 'Auto generated by' "${KUBE_ROOT}/${APIROOT}" "${TMP_APIROOT}" || ret=$?
then cp -a ${TMP_APIROOT} "${KUBE_ROOT}/${APIROOT%/*}"
if [[ $ret -eq 0 ]]; then
echo "${APIROOT} up to date." echo "${APIROOT} up to date."
else else
echo "${APIROOT} is out of date. Please run hack/update-generated-deep-copies.sh" echo "${APIROOT} is out of date. Please run hack/update-generated-deep-copies.sh"
exit 1 exit 1
fi fi
done
# ex: ts=2 sw=2 et filetype=sh

View File

@ -18,6 +18,8 @@ package api
// AUTO-GENERATED FUNCTIONS START HERE // AUTO-GENERATED FUNCTIONS START HERE
import ( import (
time "time"
resource "k8s.io/kubernetes/pkg/api/resource" resource "k8s.io/kubernetes/pkg/api/resource"
conversion "k8s.io/kubernetes/pkg/conversion" conversion "k8s.io/kubernetes/pkg/conversion"
fields "k8s.io/kubernetes/pkg/fields" fields "k8s.io/kubernetes/pkg/fields"
@ -25,7 +27,6 @@ import (
runtime "k8s.io/kubernetes/pkg/runtime" runtime "k8s.io/kubernetes/pkg/runtime"
util "k8s.io/kubernetes/pkg/util" util "k8s.io/kubernetes/pkg/util"
inf "speter.net/go/exp/math/dec/inf" inf "speter.net/go/exp/math/dec/inf"
time "time"
) )
func deepCopy_api_AWSElasticBlockStoreVolumeSource(in AWSElasticBlockStoreVolumeSource, out *AWSElasticBlockStoreVolumeSource, c *conversion.Cloner) error { func deepCopy_api_AWSElasticBlockStoreVolumeSource(in AWSElasticBlockStoreVolumeSource, out *AWSElasticBlockStoreVolumeSource, c *conversion.Cloner) error {

View File

@ -18,10 +18,11 @@ package v1
// AUTO-GENERATED FUNCTIONS START HERE // AUTO-GENERATED FUNCTIONS START HERE
import ( import (
reflect "reflect"
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"
resource "k8s.io/kubernetes/pkg/api/resource" resource "k8s.io/kubernetes/pkg/api/resource"
conversion "k8s.io/kubernetes/pkg/conversion" conversion "k8s.io/kubernetes/pkg/conversion"
reflect "reflect"
) )
func convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in *api.AWSElasticBlockStoreVolumeSource, out *AWSElasticBlockStoreVolumeSource, s conversion.Scope) error { func convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in *api.AWSElasticBlockStoreVolumeSource, out *AWSElasticBlockStoreVolumeSource, s conversion.Scope) error {

View File

@ -18,13 +18,14 @@ package v1
// AUTO-GENERATED FUNCTIONS START HERE // AUTO-GENERATED FUNCTIONS START HERE
import ( import (
time "time"
api "k8s.io/kubernetes/pkg/api" api "k8s.io/kubernetes/pkg/api"
resource "k8s.io/kubernetes/pkg/api/resource" resource "k8s.io/kubernetes/pkg/api/resource"
conversion "k8s.io/kubernetes/pkg/conversion" conversion "k8s.io/kubernetes/pkg/conversion"
runtime "k8s.io/kubernetes/pkg/runtime" runtime "k8s.io/kubernetes/pkg/runtime"
util "k8s.io/kubernetes/pkg/util" util "k8s.io/kubernetes/pkg/util"
inf "speter.net/go/exp/math/dec/inf" inf "speter.net/go/exp/math/dec/inf"
time "time"
) )
func deepCopy_resource_Quantity(in resource.Quantity, out *resource.Quantity, c *conversion.Cloner) error { func deepCopy_resource_Quantity(in resource.Quantity, out *resource.Quantity, c *conversion.Cloner) error {

View File

@ -1,19 +0,0 @@
/*
Copyright 2015 The Kubernetes Authors All rights reserved.
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 expapi
func addDeepCopyFuncs() {}

View File

@ -0,0 +1,138 @@
/*
Copyright 2015 The Kubernetes Authors All rights reserved.
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 expapi
// AUTO-GENERATED FUNCTIONS START HERE
import (
time "time"
api "k8s.io/kubernetes/pkg/api"
conversion "k8s.io/kubernetes/pkg/conversion"
util "k8s.io/kubernetes/pkg/util"
)
func deepCopy_api_ObjectMeta(in api.ObjectMeta, out *api.ObjectMeta, c *conversion.Cloner) error {
out.Name = in.Name
out.GenerateName = in.GenerateName
out.Namespace = in.Namespace
out.SelfLink = in.SelfLink
out.UID = in.UID
out.ResourceVersion = in.ResourceVersion
out.Generation = in.Generation
if err := deepCopy_util_Time(in.CreationTimestamp, &out.CreationTimestamp, c); err != nil {
return err
}
if in.DeletionTimestamp != nil {
out.DeletionTimestamp = new(util.Time)
if err := deepCopy_util_Time(*in.DeletionTimestamp, out.DeletionTimestamp, c); err != nil {
return err
}
} else {
out.DeletionTimestamp = nil
}
if in.Labels != nil {
out.Labels = make(map[string]string)
for key, val := range in.Labels {
out.Labels[key] = val
}
} else {
out.Labels = nil
}
if in.Annotations != nil {
out.Annotations = make(map[string]string)
for key, val := range in.Annotations {
out.Annotations[key] = val
}
} else {
out.Annotations = nil
}
return nil
}
func deepCopy_api_TypeMeta(in api.TypeMeta, out *api.TypeMeta, c *conversion.Cloner) error {
out.Kind = in.Kind
out.APIVersion = in.APIVersion
return nil
}
func deepCopy_expapi_ReplicationControllerDummy(in ReplicationControllerDummy, out *ReplicationControllerDummy, c *conversion.Cloner) error {
if err := deepCopy_api_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil {
return err
}
return nil
}
func deepCopy_expapi_Scale(in Scale, out *Scale, c *conversion.Cloner) error {
if err := deepCopy_api_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil {
return err
}
if err := deepCopy_api_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil {
return err
}
if err := deepCopy_expapi_ScaleSpec(in.Spec, &out.Spec, c); err != nil {
return err
}
if err := deepCopy_expapi_ScaleStatus(in.Status, &out.Status, c); err != nil {
return err
}
return nil
}
func deepCopy_expapi_ScaleSpec(in ScaleSpec, out *ScaleSpec, c *conversion.Cloner) error {
out.Replicas = in.Replicas
return nil
}
func deepCopy_expapi_ScaleStatus(in ScaleStatus, out *ScaleStatus, c *conversion.Cloner) error {
out.Replicas = in.Replicas
if in.Selector != nil {
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
return nil
}
func deepCopy_util_Time(in util.Time, out *util.Time, c *conversion.Cloner) error {
if newVal, err := c.DeepCopy(in.Time); err != nil {
return err
} else {
out.Time = newVal.(time.Time)
}
return nil
}
func init() {
err := api.Scheme.AddGeneratedDeepCopyFuncs(
deepCopy_api_ObjectMeta,
deepCopy_api_TypeMeta,
deepCopy_expapi_ReplicationControllerDummy,
deepCopy_expapi_Scale,
deepCopy_expapi_ScaleSpec,
deepCopy_expapi_ScaleStatus,
deepCopy_util_Time,
)
if err != nil {
// if one of the deep copy functions is malformed, detect it immediately.
panic(err)
}
}
// AUTO-GENERATED FUNCTIONS END HERE

View File

@ -0,0 +1,254 @@
/*
Copyright 2015 The Kubernetes Authors All rights reserved.
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 v1
// AUTO-GENERATED FUNCTIONS START HERE
import (
reflect "reflect"
api "k8s.io/kubernetes/pkg/api"
v1 "k8s.io/kubernetes/pkg/api/v1"
conversion "k8s.io/kubernetes/pkg/conversion"
expapi "k8s.io/kubernetes/pkg/expapi"
)
func convert_api_ObjectMeta_To_v1_ObjectMeta(in *api.ObjectMeta, out *v1.ObjectMeta, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.ObjectMeta))(in)
}
out.Name = in.Name
out.GenerateName = in.GenerateName
out.Namespace = in.Namespace
out.SelfLink = in.SelfLink
out.UID = in.UID
out.ResourceVersion = in.ResourceVersion
out.Generation = in.Generation
if err := s.Convert(&in.CreationTimestamp, &out.CreationTimestamp, 0); err != nil {
return err
}
if in.DeletionTimestamp != nil {
if err := s.Convert(&in.DeletionTimestamp, &out.DeletionTimestamp, 0); err != nil {
return err
}
} else {
out.DeletionTimestamp = nil
}
if in.Labels != nil {
out.Labels = make(map[string]string)
for key, val := range in.Labels {
out.Labels[key] = val
}
} else {
out.Labels = nil
}
if in.Annotations != nil {
out.Annotations = make(map[string]string)
for key, val := range in.Annotations {
out.Annotations[key] = val
}
} else {
out.Annotations = nil
}
return nil
}
func convert_api_TypeMeta_To_v1_TypeMeta(in *api.TypeMeta, out *v1.TypeMeta, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.TypeMeta))(in)
}
out.Kind = in.Kind
out.APIVersion = in.APIVersion
return nil
}
func convert_v1_ObjectMeta_To_api_ObjectMeta(in *v1.ObjectMeta, out *api.ObjectMeta, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*v1.ObjectMeta))(in)
}
out.Name = in.Name
out.GenerateName = in.GenerateName
out.Namespace = in.Namespace
out.SelfLink = in.SelfLink
out.UID = in.UID
out.ResourceVersion = in.ResourceVersion
out.Generation = in.Generation
if err := s.Convert(&in.CreationTimestamp, &out.CreationTimestamp, 0); err != nil {
return err
}
if in.DeletionTimestamp != nil {
if err := s.Convert(&in.DeletionTimestamp, &out.DeletionTimestamp, 0); err != nil {
return err
}
} else {
out.DeletionTimestamp = nil
}
if in.Labels != nil {
out.Labels = make(map[string]string)
for key, val := range in.Labels {
out.Labels[key] = val
}
} else {
out.Labels = nil
}
if in.Annotations != nil {
out.Annotations = make(map[string]string)
for key, val := range in.Annotations {
out.Annotations[key] = val
}
} else {
out.Annotations = nil
}
return nil
}
func convert_v1_TypeMeta_To_api_TypeMeta(in *v1.TypeMeta, out *api.TypeMeta, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*v1.TypeMeta))(in)
}
out.Kind = in.Kind
out.APIVersion = in.APIVersion
return nil
}
func convert_expapi_ReplicationControllerDummy_To_v1_ReplicationControllerDummy(in *expapi.ReplicationControllerDummy, out *ReplicationControllerDummy, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*expapi.ReplicationControllerDummy))(in)
}
if err := convert_api_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
return nil
}
func convert_expapi_Scale_To_v1_Scale(in *expapi.Scale, out *Scale, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*expapi.Scale))(in)
}
if err := convert_api_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
if err := convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil {
return err
}
if err := convert_expapi_ScaleSpec_To_v1_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
return err
}
if err := convert_expapi_ScaleStatus_To_v1_ScaleStatus(&in.Status, &out.Status, s); err != nil {
return err
}
return nil
}
func convert_expapi_ScaleSpec_To_v1_ScaleSpec(in *expapi.ScaleSpec, out *ScaleSpec, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*expapi.ScaleSpec))(in)
}
out.Replicas = in.Replicas
return nil
}
func convert_expapi_ScaleStatus_To_v1_ScaleStatus(in *expapi.ScaleStatus, out *ScaleStatus, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*expapi.ScaleStatus))(in)
}
out.Replicas = in.Replicas
if in.Selector != nil {
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
return nil
}
func convert_v1_ReplicationControllerDummy_To_expapi_ReplicationControllerDummy(in *ReplicationControllerDummy, out *expapi.ReplicationControllerDummy, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ReplicationControllerDummy))(in)
}
if err := convert_v1_TypeMeta_To_api_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
return nil
}
func convert_v1_Scale_To_expapi_Scale(in *Scale, out *expapi.Scale, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*Scale))(in)
}
if err := convert_v1_TypeMeta_To_api_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
if err := convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil {
return err
}
if err := convert_v1_ScaleSpec_To_expapi_ScaleSpec(&in.Spec, &out.Spec, s); err != nil {
return err
}
if err := convert_v1_ScaleStatus_To_expapi_ScaleStatus(&in.Status, &out.Status, s); err != nil {
return err
}
return nil
}
func convert_v1_ScaleSpec_To_expapi_ScaleSpec(in *ScaleSpec, out *expapi.ScaleSpec, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ScaleSpec))(in)
}
out.Replicas = in.Replicas
return nil
}
func convert_v1_ScaleStatus_To_expapi_ScaleStatus(in *ScaleStatus, out *expapi.ScaleStatus, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ScaleStatus))(in)
}
out.Replicas = in.Replicas
if in.Selector != nil {
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
return nil
}
func init() {
err := api.Scheme.AddGeneratedConversionFuncs(
convert_api_ObjectMeta_To_v1_ObjectMeta,
convert_api_TypeMeta_To_v1_TypeMeta,
convert_expapi_ReplicationControllerDummy_To_v1_ReplicationControllerDummy,
convert_expapi_ScaleSpec_To_v1_ScaleSpec,
convert_expapi_ScaleStatus_To_v1_ScaleStatus,
convert_expapi_Scale_To_v1_Scale,
convert_v1_ObjectMeta_To_api_ObjectMeta,
convert_v1_ReplicationControllerDummy_To_expapi_ReplicationControllerDummy,
convert_v1_ScaleSpec_To_expapi_ScaleSpec,
convert_v1_ScaleStatus_To_expapi_ScaleStatus,
convert_v1_Scale_To_expapi_Scale,
convert_v1_TypeMeta_To_api_TypeMeta,
)
if err != nil {
// If one of the conversion functions is malformed, detect it immediately.
panic(err)
}
}
// AUTO-GENERATED FUNCTIONS END HERE

View File

@ -1,19 +0,0 @@
/*
Copyright 2015 The Kubernetes Authors All rights reserved.
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 v1
func addDeepCopyFuncs() {}

View File

@ -0,0 +1,139 @@
/*
Copyright 2015 The Kubernetes Authors All rights reserved.
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 v1
// AUTO-GENERATED FUNCTIONS START HERE
import (
time "time"
api "k8s.io/kubernetes/pkg/api"
v1 "k8s.io/kubernetes/pkg/api/v1"
conversion "k8s.io/kubernetes/pkg/conversion"
util "k8s.io/kubernetes/pkg/util"
)
func deepCopy_v1_ObjectMeta(in v1.ObjectMeta, out *v1.ObjectMeta, c *conversion.Cloner) error {
out.Name = in.Name
out.GenerateName = in.GenerateName
out.Namespace = in.Namespace
out.SelfLink = in.SelfLink
out.UID = in.UID
out.ResourceVersion = in.ResourceVersion
out.Generation = in.Generation
if err := deepCopy_util_Time(in.CreationTimestamp, &out.CreationTimestamp, c); err != nil {
return err
}
if in.DeletionTimestamp != nil {
out.DeletionTimestamp = new(util.Time)
if err := deepCopy_util_Time(*in.DeletionTimestamp, out.DeletionTimestamp, c); err != nil {
return err
}
} else {
out.DeletionTimestamp = nil
}
if in.Labels != nil {
out.Labels = make(map[string]string)
for key, val := range in.Labels {
out.Labels[key] = val
}
} else {
out.Labels = nil
}
if in.Annotations != nil {
out.Annotations = make(map[string]string)
for key, val := range in.Annotations {
out.Annotations[key] = val
}
} else {
out.Annotations = nil
}
return nil
}
func deepCopy_v1_TypeMeta(in v1.TypeMeta, out *v1.TypeMeta, c *conversion.Cloner) error {
out.Kind = in.Kind
out.APIVersion = in.APIVersion
return nil
}
func deepCopy_v1_ReplicationControllerDummy(in ReplicationControllerDummy, out *ReplicationControllerDummy, c *conversion.Cloner) error {
if err := deepCopy_v1_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil {
return err
}
return nil
}
func deepCopy_v1_Scale(in Scale, out *Scale, c *conversion.Cloner) error {
if err := deepCopy_v1_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil {
return err
}
if err := deepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil {
return err
}
if err := deepCopy_v1_ScaleSpec(in.Spec, &out.Spec, c); err != nil {
return err
}
if err := deepCopy_v1_ScaleStatus(in.Status, &out.Status, c); err != nil {
return err
}
return nil
}
func deepCopy_v1_ScaleSpec(in ScaleSpec, out *ScaleSpec, c *conversion.Cloner) error {
out.Replicas = in.Replicas
return nil
}
func deepCopy_v1_ScaleStatus(in ScaleStatus, out *ScaleStatus, c *conversion.Cloner) error {
out.Replicas = in.Replicas
if in.Selector != nil {
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
return nil
}
func deepCopy_util_Time(in util.Time, out *util.Time, c *conversion.Cloner) error {
if newVal, err := c.DeepCopy(in.Time); err != nil {
return err
} else {
out.Time = newVal.(time.Time)
}
return nil
}
func init() {
err := api.Scheme.AddGeneratedDeepCopyFuncs(
deepCopy_v1_ObjectMeta,
deepCopy_v1_TypeMeta,
deepCopy_v1_ReplicationControllerDummy,
deepCopy_v1_Scale,
deepCopy_v1_ScaleSpec,
deepCopy_v1_ScaleStatus,
deepCopy_util_Time,
)
if err != nil {
// if one of the deep copy functions is malformed, detect it immediately.
panic(err)
}
}
// AUTO-GENERATED FUNCTIONS END HERE

View File

@ -24,7 +24,6 @@ import (
var Codec = runtime.CodecFor(api.Scheme, "v1") var Codec = runtime.CodecFor(api.Scheme, "v1")
func init() { func init() {
addDeepCopyFuncs()
addConversionFuncs() addConversionFuncs()
addDefaultingFuncs() addDefaultingFuncs()
addKnownTypes() addKnownTypes()

View File

@ -21,6 +21,7 @@ before_install:
install: install:
- go get golang.org/x/tools/cmd/cover - go get golang.org/x/tools/cmd/cover
- go get golang.org/x/tools/cmd/goimports
- go get github.com/mattn/goveralls - go get github.com/mattn/goveralls
- go get github.com/tools/godep - go get github.com/tools/godep
- ./hack/travis/install-etcd.sh - ./hack/travis/install-etcd.sh