Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
ec5ad0f7
Commit
ec5ad0f7
authored
Mar 18, 2016
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #23112 from wojtek-t/rename_raw_json_in_raw_extension
Auto commit by PR queue bot
parents
d2fe5752
89585237
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
65 additions
and
52 deletions
+65
-52
help.go
pkg/api/meta/help.go
+3
-3
help_test.go
pkg/api/meta/help_test.go
+2
-2
rest.go
pkg/api/rest/rest.go
+1
-1
visitor.go
pkg/kubectl/resource/visitor.go
+5
-4
resource_printer_test.go
pkg/kubectl/resource_printer_test.go
+2
-2
sorting_printer_test.go
pkg/kubectl/sorting_printer_test.go
+12
-12
deep_copy_generated.go
pkg/runtime/deep_copy_generated.go
+3
-3
embedded.go
pkg/runtime/embedded.go
+4
-4
embedded_test.go
pkg/runtime/embedded_test.go
+2
-2
extension.go
pkg/runtime/extension.go
+4
-3
extension_test.go
pkg/runtime/extension_test.go
+1
-1
protobuf.go
pkg/runtime/protobuf/protobuf.go
+11
-4
types.go
pkg/runtime/types.go
+12
-8
decoder.go
pkg/watch/json/decoder.go
+1
-1
decoder_test.go
pkg/watch/json/decoder_test.go
+1
-1
types.go
pkg/watch/json/types.go
+1
-1
No files found.
pkg/api/meta/help.go
View file @
ec5ad0f7
...
@@ -76,9 +76,9 @@ func ExtractList(obj runtime.Object) ([]runtime.Object, error) {
...
@@ -76,9 +76,9 @@ func ExtractList(obj runtime.Object) ([]runtime.Object, error) {
switch
{
switch
{
case
item
.
Object
!=
nil
:
case
item
.
Object
!=
nil
:
list
[
i
]
=
item
.
Object
list
[
i
]
=
item
.
Object
case
item
.
Raw
JSON
!=
nil
:
case
item
.
Raw
!=
nil
:
// TODO: Set ContentEncoding and ContentType.
// TODO: Set ContentEncoding and ContentType
correctly
.
list
[
i
]
=
&
runtime
.
Unknown
{
Raw
:
item
.
Raw
JSON
}
list
[
i
]
=
&
runtime
.
Unknown
{
Raw
:
item
.
Raw
}
default
:
default
:
list
[
i
]
=
nil
list
[
i
]
=
nil
}
}
...
...
pkg/api/meta/help_test.go
View file @
ec5ad0f7
...
@@ -114,8 +114,8 @@ func TestExtractListGeneric(t *testing.T) {
...
@@ -114,8 +114,8 @@ func TestExtractListGeneric(t *testing.T) {
func
TestExtractListGenericV1
(
t
*
testing
.
T
)
{
func
TestExtractListGenericV1
(
t
*
testing
.
T
)
{
pl
:=
&
v1
.
List
{
pl
:=
&
v1
.
List
{
Items
:
[]
runtime
.
RawExtension
{
Items
:
[]
runtime
.
RawExtension
{
{
Raw
JSON
:
[]
byte
(
"foo"
)},
{
Raw
:
[]
byte
(
"foo"
)},
{
Raw
JSON
:
[]
byte
(
"bar"
)},
{
Raw
:
[]
byte
(
"bar"
)},
{
Object
:
&
v1
.
Pod
{
ObjectMeta
:
v1
.
ObjectMeta
{
Name
:
"other"
}}},
{
Object
:
&
v1
.
Pod
{
ObjectMeta
:
v1
.
ObjectMeta
{
Name
:
"other"
}}},
},
},
}
}
...
...
pkg/api/rest/rest.go
View file @
ec5ad0f7
...
@@ -57,7 +57,7 @@ type Storage interface {
...
@@ -57,7 +57,7 @@ type Storage interface {
// KindProvider specifies a different kind for its API than for its internal storage. This is necessary for external
// KindProvider specifies a different kind for its API than for its internal storage. This is necessary for external
// objects that are not compiled into the api server. For such objects, there is no in-memory representation for
// objects that are not compiled into the api server. For such objects, there is no in-memory representation for
// the object, so they must be represented as generic objects (e.g.
RawJSON
), but when we present the object as part of
// the object, so they must be represented as generic objects (e.g.
runtime.Unknown
), but when we present the object as part of
// API discovery we want to present the specific kind, not the generic internal representation.
// API discovery we want to present the specific kind, not the generic internal representation.
type
KindProvider
interface
{
type
KindProvider
interface
{
Kind
()
string
Kind
()
string
...
...
pkg/kubectl/resource/visitor.go
View file @
ec5ad0f7
...
@@ -474,14 +474,15 @@ func (v *StreamVisitor) Visit(fn VisitorFunc) error {
...
@@ -474,14 +474,15 @@ func (v *StreamVisitor) Visit(fn VisitorFunc) error {
}
}
return
err
return
err
}
}
ext
.
RawJSON
=
bytes
.
TrimSpace
(
ext
.
RawJSON
)
// TODO: This needs to be able to handle object in other encodings and schemas.
if
len
(
ext
.
RawJSON
)
==
0
||
bytes
.
Equal
(
ext
.
RawJSON
,
[]
byte
(
"null"
))
{
ext
.
Raw
=
bytes
.
TrimSpace
(
ext
.
Raw
)
if
len
(
ext
.
Raw
)
==
0
||
bytes
.
Equal
(
ext
.
Raw
,
[]
byte
(
"null"
))
{
continue
continue
}
}
if
err
:=
ValidateSchema
(
ext
.
Raw
JSON
,
v
.
Schema
);
err
!=
nil
{
if
err
:=
ValidateSchema
(
ext
.
Raw
,
v
.
Schema
);
err
!=
nil
{
return
fmt
.
Errorf
(
"error validating %q: %v"
,
v
.
Source
,
err
)
return
fmt
.
Errorf
(
"error validating %q: %v"
,
v
.
Source
,
err
)
}
}
info
,
err
:=
v
.
InfoForData
(
ext
.
Raw
JSON
,
v
.
Source
)
info
,
err
:=
v
.
InfoForData
(
ext
.
Raw
,
v
.
Source
)
if
err
!=
nil
{
if
err
!=
nil
{
if
fnErr
:=
fn
(
info
,
err
);
fnErr
!=
nil
{
if
fnErr
:=
fn
(
info
,
err
);
fnErr
!=
nil
{
return
fnErr
return
fnErr
...
...
pkg/kubectl/resource_printer_test.go
View file @
ec5ad0f7
...
@@ -299,10 +299,10 @@ func TestNamePrinter(t *testing.T) {
...
@@ -299,10 +299,10 @@ func TestNamePrinter(t *testing.T) {
},
},
Items
:
[]
runtime
.
RawExtension
{
Items
:
[]
runtime
.
RawExtension
{
{
{
Raw
JSON
:
[]
byte
(
`{"kind": "Pod", "apiVersion": "v1", "metadata": { "name": "foo"}}`
),
Raw
:
[]
byte
(
`{"kind": "Pod", "apiVersion": "v1", "metadata": { "name": "foo"}}`
),
},
},
{
{
Raw
JSON
:
[]
byte
(
`{"kind": "Pod", "apiVersion": "v1", "metadata": { "name": "bar"}}`
),
Raw
:
[]
byte
(
`{"kind": "Pod", "apiVersion": "v1", "metadata": { "name": "bar"}}`
),
},
},
},
},
},
},
...
...
pkg/kubectl/sorting_printer_test.go
View file @
ec5ad0f7
...
@@ -190,16 +190,16 @@ func TestSortingPrinter(t *testing.T) {
...
@@ -190,16 +190,16 @@ func TestSortingPrinter(t *testing.T) {
name
:
"v1.List in order"
,
name
:
"v1.List in order"
,
obj
:
&
api
.
List
{
obj
:
&
api
.
List
{
Items
:
[]
runtime
.
RawExtension
{
Items
:
[]
runtime
.
RawExtension
{
{
Raw
JSON
:
encodeOrDie
(
a
)},
{
Raw
:
encodeOrDie
(
a
)},
{
Raw
JSON
:
encodeOrDie
(
b
)},
{
Raw
:
encodeOrDie
(
b
)},
{
Raw
JSON
:
encodeOrDie
(
c
)},
{
Raw
:
encodeOrDie
(
c
)},
},
},
},
},
sort
:
&
api
.
List
{
sort
:
&
api
.
List
{
Items
:
[]
runtime
.
RawExtension
{
Items
:
[]
runtime
.
RawExtension
{
{
Raw
JSON
:
encodeOrDie
(
a
)},
{
Raw
:
encodeOrDie
(
a
)},
{
Raw
JSON
:
encodeOrDie
(
b
)},
{
Raw
:
encodeOrDie
(
b
)},
{
Raw
JSON
:
encodeOrDie
(
c
)},
{
Raw
:
encodeOrDie
(
c
)},
},
},
},
},
field
:
"{.metadata.name}"
,
field
:
"{.metadata.name}"
,
...
@@ -208,16 +208,16 @@ func TestSortingPrinter(t *testing.T) {
...
@@ -208,16 +208,16 @@ func TestSortingPrinter(t *testing.T) {
name
:
"v1.List in reverse"
,
name
:
"v1.List in reverse"
,
obj
:
&
api
.
List
{
obj
:
&
api
.
List
{
Items
:
[]
runtime
.
RawExtension
{
Items
:
[]
runtime
.
RawExtension
{
{
Raw
JSON
:
encodeOrDie
(
c
)},
{
Raw
:
encodeOrDie
(
c
)},
{
Raw
JSON
:
encodeOrDie
(
b
)},
{
Raw
:
encodeOrDie
(
b
)},
{
Raw
JSON
:
encodeOrDie
(
a
)},
{
Raw
:
encodeOrDie
(
a
)},
},
},
},
},
sort
:
&
api
.
List
{
sort
:
&
api
.
List
{
Items
:
[]
runtime
.
RawExtension
{
Items
:
[]
runtime
.
RawExtension
{
{
Raw
JSON
:
encodeOrDie
(
a
)},
{
Raw
:
encodeOrDie
(
a
)},
{
Raw
JSON
:
encodeOrDie
(
b
)},
{
Raw
:
encodeOrDie
(
b
)},
{
Raw
JSON
:
encodeOrDie
(
c
)},
{
Raw
:
encodeOrDie
(
c
)},
},
},
},
},
field
:
"{.metadata.name}"
,
field
:
"{.metadata.name}"
,
...
...
pkg/runtime/deep_copy_generated.go
View file @
ec5ad0f7
...
@@ -27,12 +27,12 @@ import (
...
@@ -27,12 +27,12 @@ import (
)
)
func
DeepCopy_runtime_RawExtension
(
in
RawExtension
,
out
*
RawExtension
,
c
*
conversion
.
Cloner
)
error
{
func
DeepCopy_runtime_RawExtension
(
in
RawExtension
,
out
*
RawExtension
,
c
*
conversion
.
Cloner
)
error
{
if
in
.
Raw
JSON
!=
nil
{
if
in
.
Raw
!=
nil
{
in
,
out
:=
in
.
Raw
JSON
,
&
out
.
RawJSON
in
,
out
:=
in
.
Raw
,
&
out
.
Raw
*
out
=
make
([]
byte
,
len
(
in
))
*
out
=
make
([]
byte
,
len
(
in
))
copy
(
*
out
,
in
)
copy
(
*
out
,
in
)
}
else
{
}
else
{
out
.
Raw
JSON
=
nil
out
.
Raw
=
nil
}
}
if
in
.
Object
==
nil
{
if
in
.
Object
==
nil
{
out
.
Object
=
nil
out
.
Object
=
nil
...
...
pkg/runtime/embedded.go
View file @
ec5ad0f7
...
@@ -92,19 +92,19 @@ func DefaultEmbeddedConversions() []interface{} {
...
@@ -92,19 +92,19 @@ func DefaultEmbeddedConversions() []interface{} {
return
[]
interface
{}{
return
[]
interface
{}{
func
(
in
*
Object
,
out
*
RawExtension
,
s
conversion
.
Scope
)
error
{
func
(
in
*
Object
,
out
*
RawExtension
,
s
conversion
.
Scope
)
error
{
if
in
==
nil
{
if
in
==
nil
{
out
.
Raw
JSON
=
[]
byte
(
"null"
)
out
.
Raw
=
[]
byte
(
"null"
)
return
nil
return
nil
}
}
obj
:=
*
in
obj
:=
*
in
if
unk
,
ok
:=
obj
.
(
*
Unknown
);
ok
{
if
unk
,
ok
:=
obj
.
(
*
Unknown
);
ok
{
if
unk
.
Raw
!=
nil
{
if
unk
.
Raw
!=
nil
{
out
.
Raw
JSON
=
unk
.
Raw
out
.
Raw
=
unk
.
Raw
return
nil
return
nil
}
}
obj
=
out
.
Object
obj
=
out
.
Object
}
}
if
obj
==
nil
{
if
obj
==
nil
{
out
.
Raw
JSON
=
nil
out
.
Raw
=
nil
return
nil
return
nil
}
}
out
.
Object
=
obj
out
.
Object
=
obj
...
@@ -116,7 +116,7 @@ func DefaultEmbeddedConversions() []interface{} {
...
@@ -116,7 +116,7 @@ func DefaultEmbeddedConversions() []interface{} {
*
out
=
in
.
Object
*
out
=
in
.
Object
return
nil
return
nil
}
}
data
:=
in
.
Raw
JSON
data
:=
in
.
Raw
if
len
(
data
)
==
0
||
(
len
(
data
)
==
4
&&
string
(
data
)
==
"null"
)
{
if
len
(
data
)
==
0
||
(
len
(
data
)
==
4
&&
string
(
data
)
==
"null"
)
{
*
out
=
nil
*
out
=
nil
return
nil
return
nil
...
...
pkg/runtime/embedded_test.go
View file @
ec5ad0f7
...
@@ -138,7 +138,7 @@ func TestArrayOfRuntimeObject(t *testing.T) {
...
@@ -138,7 +138,7 @@ func TestArrayOfRuntimeObject(t *testing.T) {
if
err
:=
json
.
Unmarshal
(
wire
,
obj
);
err
!=
nil
{
if
err
:=
json
.
Unmarshal
(
wire
,
obj
);
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
}
t
.
Logf
(
"exact wire is: %s"
,
string
(
obj
.
Items
[
0
]
.
Raw
JSON
))
t
.
Logf
(
"exact wire is: %s"
,
string
(
obj
.
Items
[
0
]
.
Raw
))
items
[
3
]
=
&
ObjectTest
{
Items
:
innerItems
}
items
[
3
]
=
&
ObjectTest
{
Items
:
innerItems
}
internal
.
Items
=
items
internal
.
Items
=
items
...
@@ -230,7 +230,7 @@ func TestNestedObject(t *testing.T) {
...
@@ -230,7 +230,7 @@ func TestNestedObject(t *testing.T) {
if
externalViaJSON
.
Kind
==
""
||
externalViaJSON
.
APIVersion
==
""
||
externalViaJSON
.
ID
!=
"outer"
{
if
externalViaJSON
.
Kind
==
""
||
externalViaJSON
.
APIVersion
==
""
||
externalViaJSON
.
ID
!=
"outer"
{
t
.
Errorf
(
"Expected objects to have type info set, got %#v"
,
externalViaJSON
)
t
.
Errorf
(
"Expected objects to have type info set, got %#v"
,
externalViaJSON
)
}
}
if
!
reflect
.
DeepEqual
(
externalViaJSON
.
EmptyObject
.
Raw
JSON
,
[]
byte
(
"null"
))
||
len
(
externalViaJSON
.
Object
.
RawJSON
)
==
0
{
if
!
reflect
.
DeepEqual
(
externalViaJSON
.
EmptyObject
.
Raw
,
[]
byte
(
"null"
))
||
len
(
externalViaJSON
.
Object
.
Raw
)
==
0
{
t
.
Errorf
(
"Expected deserialization of nested objects into bytes, got %#v"
,
externalViaJSON
)
t
.
Errorf
(
"Expected deserialization of nested objects into bytes, got %#v"
,
externalViaJSON
)
}
}
...
...
pkg/runtime/extension.go
View file @
ec5ad0f7
...
@@ -25,14 +25,14 @@ func (re *RawExtension) UnmarshalJSON(in []byte) error {
...
@@ -25,14 +25,14 @@ func (re *RawExtension) UnmarshalJSON(in []byte) error {
if
re
==
nil
{
if
re
==
nil
{
return
errors
.
New
(
"runtime.RawExtension: UnmarshalJSON on nil pointer"
)
return
errors
.
New
(
"runtime.RawExtension: UnmarshalJSON on nil pointer"
)
}
}
re
.
Raw
JSON
=
append
(
re
.
RawJSON
[
0
:
0
],
in
...
)
re
.
Raw
=
append
(
re
.
Raw
[
0
:
0
],
in
...
)
return
nil
return
nil
}
}
// Marshal may get called on pointers or values, so implement MarshalJSON on value.
// Marshal may get called on pointers or values, so implement MarshalJSON on value.
// http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go
// http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go
func
(
re
RawExtension
)
MarshalJSON
()
([]
byte
,
error
)
{
func
(
re
RawExtension
)
MarshalJSON
()
([]
byte
,
error
)
{
if
re
.
Raw
JSON
==
nil
{
if
re
.
Raw
==
nil
{
// TODO: this is to support legacy behavior of JSONPrinter and YAMLPrinter, which
// TODO: this is to support legacy behavior of JSONPrinter and YAMLPrinter, which
// expect to call json.Marshal on arbitrary versioned objects (even those not in
// expect to call json.Marshal on arbitrary versioned objects (even those not in
// the scheme). pkg/kubectl/resource#AsVersionedObjects and its interaction with
// the scheme). pkg/kubectl/resource#AsVersionedObjects and its interaction with
...
@@ -43,5 +43,6 @@ func (re RawExtension) MarshalJSON() ([]byte, error) {
...
@@ -43,5 +43,6 @@ func (re RawExtension) MarshalJSON() ([]byte, error) {
}
}
return
[]
byte
(
"null"
),
nil
return
[]
byte
(
"null"
),
nil
}
}
return
re
.
RawJSON
,
nil
// TODO: Check whether ContentType is actually JSON before returning it.
return
re
.
Raw
,
nil
}
}
pkg/runtime/extension_test.go
View file @
ec5ad0f7
...
@@ -28,7 +28,7 @@ func TestEmbeddedRawExtensionMarshal(t *testing.T) {
...
@@ -28,7 +28,7 @@ func TestEmbeddedRawExtensionMarshal(t *testing.T) {
Ext
runtime
.
RawExtension
Ext
runtime
.
RawExtension
}
}
extension
:=
test
{
Ext
:
runtime
.
RawExtension
{
Raw
JSON
:
[]
byte
(
`{"foo":"bar"}`
)}}
extension
:=
test
{
Ext
:
runtime
.
RawExtension
{
Raw
:
[]
byte
(
`{"foo":"bar"}`
)}}
data
,
err
:=
json
.
Marshal
(
extension
)
data
,
err
:=
json
.
Marshal
(
extension
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
...
...
pkg/runtime/protobuf/protobuf.go
View file @
ec5ad0f7
...
@@ -64,7 +64,10 @@ func (c codec) Decode(data []byte) (runtime.Object, error) {
...
@@ -64,7 +64,10 @@ func (c codec) Decode(data []byte) (runtime.Object, error) {
if
!
ok
{
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"runtime object is not a proto.Message: %v"
,
reflect
.
TypeOf
(
obj
))
return
nil
,
fmt
.
Errorf
(
"runtime object is not a proto.Message: %v"
,
reflect
.
TypeOf
(
obj
))
}
}
if
err
:=
proto
.
Unmarshal
(
unknown
.
RawJSON
,
pobj
);
err
!=
nil
{
if
unknown
.
ContentType
!=
runtime
.
ContentTypeProtobuf
{
return
nil
,
fmt
.
Errorf
(
"unmarshal non-protobuf object with protobuf decoder"
)
}
if
err
:=
proto
.
Unmarshal
(
unknown
.
Raw
,
pobj
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
if
unknown
.
APIVersion
!=
c
.
outputVersion
{
if
unknown
.
APIVersion
!=
c
.
outputVersion
{
...
@@ -90,13 +93,16 @@ func (c codec) DecodeInto(data []byte, obj runtime.Object) error {
...
@@ -90,13 +93,16 @@ func (c codec) DecodeInto(data []byte, obj runtime.Object) error {
if
err
:=
proto
.
Unmarshal
(
data
,
unknown
);
err
!=
nil
{
if
err
:=
proto
.
Unmarshal
(
data
,
unknown
);
err
!=
nil
{
return
err
return
err
}
}
if
unknown
.
ContentType
!=
runtime
.
ContentTypeProtobuf
{
return
nil
,
fmt
.
Errorf
(
"unmarshal non-protobuf object with protobuf decoder"
)
}
if
unknown
.
APIVersion
==
version
&&
unknown
.
Kind
==
kind
{
if
unknown
.
APIVersion
==
version
&&
unknown
.
Kind
==
kind
{
pobj
,
ok
:=
obj
.
(
proto
.
Message
)
pobj
,
ok
:=
obj
.
(
proto
.
Message
)
if
!
ok
{
if
!
ok
{
return
fmt
.
Errorf
(
"runtime object is not a proto.Message: %v"
,
reflect
.
TypeOf
(
obj
))
return
fmt
.
Errorf
(
"runtime object is not a proto.Message: %v"
,
reflect
.
TypeOf
(
obj
))
}
}
return
proto
.
Unmarshal
(
unknown
.
Raw
JSON
,
pobj
)
return
proto
.
Unmarshal
(
unknown
.
Raw
,
pobj
)
}
}
versioned
,
err
:=
c
.
creater
.
New
(
unknown
.
APIVersion
,
unknown
.
Kind
)
versioned
,
err
:=
c
.
creater
.
New
(
unknown
.
APIVersion
,
unknown
.
Kind
)
...
@@ -109,7 +115,7 @@ func (c codec) DecodeInto(data []byte, obj runtime.Object) error {
...
@@ -109,7 +115,7 @@ func (c codec) DecodeInto(data []byte, obj runtime.Object) error {
return
fmt
.
Errorf
(
"runtime object is not a proto.Message: %v"
,
reflect
.
TypeOf
(
obj
))
return
fmt
.
Errorf
(
"runtime object is not a proto.Message: %v"
,
reflect
.
TypeOf
(
obj
))
}
}
if
err
:=
proto
.
Unmarshal
(
unknown
.
Raw
JSON
,
pobj
);
err
!=
nil
{
if
err
:=
proto
.
Unmarshal
(
unknown
.
Raw
,
pobj
);
err
!=
nil
{
return
err
return
err
}
}
return
c
.
convertor
.
Convert
(
versioned
,
obj
)
return
c
.
convertor
.
Convert
(
versioned
,
obj
)
...
@@ -149,7 +155,8 @@ func (c codec) Encode(obj runtime.Object) (data []byte, err error) {
...
@@ -149,7 +155,8 @@ func (c codec) Encode(obj runtime.Object) (data []byte, err error) {
Kind
:
kind
,
Kind
:
kind
,
APIVersion
:
version
,
APIVersion
:
version
,
},
},
RawJSON
:
b
,
Raw
:
b
,
ContentType
:
runtime
.
ContentTypeProtobuf
,
})
.
Marshal
()
})
.
Marshal
()
}
}
...
...
pkg/runtime/types.go
View file @
ec5ad0f7
...
@@ -36,6 +36,12 @@ type TypeMeta struct {
...
@@ -36,6 +36,12 @@ type TypeMeta struct {
Kind
string
`json:"kind,omitempty" yaml:"kind,omitempty"`
Kind
string
`json:"kind,omitempty" yaml:"kind,omitempty"`
}
}
const
(
ContentTypeJSON
string
=
"application/json"
// TODO: Fix the value.
ContentTypeProtobuf
string
=
"application/protobuf"
)
// RawExtension is used to hold extensions in external versions.
// RawExtension is used to hold extensions in external versions.
//
//
// To use this, make a field which has RawExtension as its type in your external, versioned
// To use this, make a field which has RawExtension as its type in your external, versioned
...
@@ -80,17 +86,15 @@ type TypeMeta struct {
...
@@ -80,17 +86,15 @@ type TypeMeta struct {
//
//
// +protobuf=true
// +protobuf=true
type
RawExtension
struct
{
type
RawExtension
struct
{
// RawJSON is the underlying serialization of this object.
// Raw is the underlying serialization of this object.
RawJSON
[]
byte
//
// TODO: Determine how to detect ContentType and ContentEncoding of 'Raw' data.
Raw
[]
byte
// Object can hold a representation of this extension - useful for working with versioned
// Object can hold a representation of this extension - useful for working with versioned
// structs.
// structs.
Object
Object
`json:"-"`
Object
Object
`json:"-"`
}
}
// TODO; Where should it be?
// TODO; What value it should have?
const
ContentTypeJSON
string
=
"application/json"
// Unknown allows api objects with unknown types to be passed-through. This can be used
// Unknown allows api objects with unknown types to be passed-through. This can be used
// to deal with the API objects from a plug-in. Unknown objects still have functioning
// to deal with the API objects from a plug-in. Unknown objects still have functioning
// TypeMeta features-- kind, version, etc.
// TypeMeta features-- kind, version, etc.
...
@@ -105,10 +109,10 @@ type Unknown struct {
...
@@ -105,10 +109,10 @@ type Unknown struct {
// except for passing it through the system.
// except for passing it through the system.
Raw
[]
byte
Raw
[]
byte
// ContentEncoding is encoding used to encode 'Raw' data.
// ContentEncoding is encoding used to encode 'Raw' data.
// Unspecified mean no encoding.
// Unspecified mean
s
no encoding.
ContentEncoding
string
ContentEncoding
string
// ContentType is serialization method used to serialize 'Raw'.
// ContentType is serialization method used to serialize 'Raw'.
//
TODO: Define what unspecified means
.
//
Unspecified means ContentTypeJSON
.
ContentType
string
ContentType
string
}
}
...
...
pkg/watch/json/decoder.go
View file @
ec5ad0f7
...
@@ -56,7 +56,7 @@ func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) {
...
@@ -56,7 +56,7 @@ func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) {
return
""
,
nil
,
fmt
.
Errorf
(
"got invalid watch event type: %v"
,
got
.
Type
)
return
""
,
nil
,
fmt
.
Errorf
(
"got invalid watch event type: %v"
,
got
.
Type
)
}
}
obj
,
err
:=
runtime
.
Decode
(
d
.
codec
,
got
.
Object
.
Raw
JSON
)
obj
,
err
:=
runtime
.
Decode
(
d
.
codec
,
got
.
Object
.
Raw
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
nil
,
fmt
.
Errorf
(
"unable to decode watch event: %v"
,
err
)
return
""
,
nil
,
fmt
.
Errorf
(
"unable to decode watch event: %v"
,
err
)
}
}
...
...
pkg/watch/json/decoder_test.go
View file @
ec5ad0f7
...
@@ -43,7 +43,7 @@ func TestDecoder(t *testing.T) {
...
@@ -43,7 +43,7 @@ func TestDecoder(t *testing.T) {
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"Unexpected error %v"
,
err
)
t
.
Fatalf
(
"Unexpected error %v"
,
err
)
}
}
if
err
:=
encoder
.
Encode
(
&
WatchEvent
{
eventType
,
runtime
.
RawExtension
{
Raw
JSON
:
json
.
RawMessage
(
data
)}});
err
!=
nil
{
if
err
:=
encoder
.
Encode
(
&
WatchEvent
{
eventType
,
runtime
.
RawExtension
{
Raw
:
json
.
RawMessage
(
data
)}});
err
!=
nil
{
t
.
Errorf
(
"Unexpected error %v"
,
err
)
t
.
Errorf
(
"Unexpected error %v"
,
err
)
}
}
in
.
Close
()
in
.
Close
()
...
...
pkg/watch/json/types.go
View file @
ec5ad0f7
...
@@ -49,5 +49,5 @@ func Object(encoder runtime.Encoder, event *watch.Event) (interface{}, error) {
...
@@ -49,5 +49,5 @@ func Object(encoder runtime.Encoder, event *watch.Event) (interface{}, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
return
&
WatchEvent
{
event
.
Type
,
runtime
.
RawExtension
{
Raw
JSON
:
json
.
RawMessage
(
data
)}},
nil
return
&
WatchEvent
{
event
.
Type
,
runtime
.
RawExtension
{
Raw
:
json
.
RawMessage
(
data
)}},
nil
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment