Ensure -o yaml populates kind/apiVersion

pull/8/head
Jordan Liggitt 2018-03-27 22:44:59 -04:00
parent 2bd8a7d5f7
commit a174d7a2de
No known key found for this signature in database
GPG Key ID: 39928704103C7229
4 changed files with 20 additions and 0 deletions

View File

@ -2386,6 +2386,13 @@ run_secrets_test() {
create_and_use_new_namespace create_and_use_new_namespace
kube::log::status "Testing secrets" kube::log::status "Testing secrets"
# Ensure dry run succeeds and includes kind, apiVersion and data
output_message=$(kubectl create secret generic test --from-literal=key1=value1 --dry-run -o yaml)
kube::test::if_has_string "${output_message}" 'kind: Secret'
kube::test::if_has_string "${output_message}" 'apiVersion: v1'
kube::test::if_has_string "${output_message}" 'key1: dmFsdWUx'
### Create a new namespace ### Create a new namespace
# Pre-condition: the test-secrets namespace does not exist # Pre-condition: the test-secrets namespace does not exist
kube::test::get_object_assert 'namespaces' '{{range.items}}{{ if eq $id_field \"test-secrets\" }}found{{end}}{{end}}:' ':' kube::test::get_object_assert 'namespaces' '{{range.items}}{{ if eq $id_field \"test-secrets\" }}found{{end}}{{end}}:' ':'

View File

@ -50,6 +50,7 @@ func TestCreateClusterRole(t *testing.T) {
verbs: "get,watch,list", verbs: "get,watch,list",
resources: "pods,pods", resources: "pods,pods",
expectedClusterRole: &rbac.ClusterRole{ expectedClusterRole: &rbac.ClusterRole{
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "ClusterRole"},
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
Name: clusterRoleName, Name: clusterRoleName,
}, },
@ -67,6 +68,7 @@ func TestCreateClusterRole(t *testing.T) {
verbs: "get,watch,list", verbs: "get,watch,list",
resources: "pods,deployments.extensions", resources: "pods,deployments.extensions",
expectedClusterRole: &rbac.ClusterRole{ expectedClusterRole: &rbac.ClusterRole{
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "ClusterRole"},
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
Name: clusterRoleName, Name: clusterRoleName,
}, },
@ -90,6 +92,7 @@ func TestCreateClusterRole(t *testing.T) {
verbs: "get", verbs: "get",
nonResourceURL: "/logs/,/healthz", nonResourceURL: "/logs/,/healthz",
expectedClusterRole: &rbac.ClusterRole{ expectedClusterRole: &rbac.ClusterRole{
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "ClusterRole"},
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
Name: clusterRoleName, Name: clusterRoleName,
}, },
@ -106,6 +109,7 @@ func TestCreateClusterRole(t *testing.T) {
nonResourceURL: "/logs/,/healthz", nonResourceURL: "/logs/,/healthz",
resources: "pods", resources: "pods",
expectedClusterRole: &rbac.ClusterRole{ expectedClusterRole: &rbac.ClusterRole{
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "ClusterRole"},
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
Name: clusterRoleName, Name: clusterRoleName,
}, },

View File

@ -51,6 +51,7 @@ func TestCreateRole(t *testing.T) {
verbs: "get,watch,list", verbs: "get,watch,list",
resources: "pods,pods", resources: "pods,pods",
expectedRole: &rbac.Role{ expectedRole: &rbac.Role{
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
Name: roleName, Name: roleName,
}, },
@ -68,6 +69,7 @@ func TestCreateRole(t *testing.T) {
verbs: "get,watch,list", verbs: "get,watch,list",
resources: "replicasets/scale", resources: "replicasets/scale",
expectedRole: &rbac.Role{ expectedRole: &rbac.Role{
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
Name: roleName, Name: roleName,
}, },
@ -85,6 +87,7 @@ func TestCreateRole(t *testing.T) {
verbs: "get,watch,list", verbs: "get,watch,list",
resources: "replicasets.extensions/scale", resources: "replicasets.extensions/scale",
expectedRole: &rbac.Role{ expectedRole: &rbac.Role{
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
Name: roleName, Name: roleName,
}, },
@ -102,6 +105,7 @@ func TestCreateRole(t *testing.T) {
verbs: "get,watch,list", verbs: "get,watch,list",
resources: "pods,deployments.extensions", resources: "pods,deployments.extensions",
expectedRole: &rbac.Role{ expectedRole: &rbac.Role{
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
Name: roleName, Name: roleName,
}, },

View File

@ -76,6 +76,11 @@ func (p *VersionedPrinter) PrintObj(obj runtime.Object, w io.Writer) error {
} }
if !needsConversion { if !needsConversion {
// We might be an external type, but have empty kind/apiVersion fields. Ensure they are populated before printing.
if obj.GetObjectKind().GroupVersionKind().Empty() {
obj = obj.DeepCopyObject()
obj.GetObjectKind().SetGroupVersionKind(gvks[0])
}
return p.printer.PrintObj(obj, w) return p.printer.PrintObj(obj, w)
} }