Merge pull request #14319 from nikhiljindal/deploymentExamplew

Adding an example deployment yaml
This commit is contained in:
Eric Tune 2015-09-24 13:57:18 -07:00
commit 2eb60f4326
3 changed files with 54 additions and 1 deletions

View File

@ -29,6 +29,8 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/apis/experimental"
expValidation "k8s.io/kubernetes/pkg/apis/experimental/validation"
"k8s.io/kubernetes/pkg/capabilities"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util/yaml"
@ -99,6 +101,11 @@ func validateObject(obj runtime.Object) (errors []error) {
t.Namespace = api.NamespaceDefault
}
errors = validation.ValidateResourceQuota(t)
case *experimental.Deployment:
if t.Namespace == "" {
t.Namespace = api.NamespaceDefault
}
errors = expValidation.ValidateDeployment(t)
default:
return []error{fmt.Errorf("no validation defined for %#v", obj)}
}
@ -343,6 +350,9 @@ func TestExampleObjectSchemas(t *testing.T) {
"../examples/fibre_channel": {
"fc": &api.Pod{},
},
"../examples/experimental": {
"deployment": &experimental.Deployment{},
},
}
capabilities.SetForTests(capabilities.Capabilities{
@ -369,7 +379,11 @@ func TestExampleObjectSchemas(t *testing.T) {
}
//TODO: Add validate method for &schedulerapi.Policy
} else {
if err := testapi.Default.Codec().DecodeInto(data, expectedType); err != nil {
codec, err := testapi.GetCodecForObject(expectedType)
if err != nil {
t.Errorf("Could not get codec for %s: %s", expectedType, err)
}
if err := codec.DecodeInto(data, expectedType); err != nil {
t.Errorf("%s did not decode correctly: %v\n%s", path, err, string(data))
return
}

View File

@ -0,0 +1,20 @@
apiVersion: v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
name: nginx-deployment
spec:
replicas: 3
selector:
name: nginx
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80

View File

@ -22,6 +22,7 @@ import (
"os"
"strings"
"k8s.io/kubernetes/pkg/api"
_ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/experimental/install"
@ -208,3 +209,21 @@ func (g TestGroup) ResourcePath(resource, namespace, name string) string {
func (g TestGroup) RESTMapper() meta.RESTMapper {
return latest.GroupOrDie(g.Group).RESTMapper
}
// Get codec based on runtime.Object
func GetCodecForObject(obj runtime.Object) (runtime.Codec, error) {
_, kind, err := api.Scheme.ObjectVersionAndKind(obj)
if err != nil {
return nil, fmt.Errorf("unexpected encoding error: %v", err)
}
// TODO: caesarxuchao: we should detect which group an object belongs to
// by using the version returned by Schem.ObjectVersionAndKind() once we
// split the schemes for internal objects.
// TODO: caesarxuchao: we should add a map from kind to group in Scheme.
for _, group := range Groups {
if api.Scheme.Recognizes(group.GroupAndVersion(), kind) {
return group.Codec(), nil
}
}
return nil, fmt.Errorf("unexpected kind: %v", kind)
}