Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix internal -> v1beta3 round trip issues #2910

Merged
merged 3 commits into from
Dec 15, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 6 additions & 4 deletions pkg/api/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ func init() {
&NodeList{},
&Node{},
&Status{},
&ServerOpList{},
&ServerOp{},
&OperationList{},
&Operation{},
&Endpoints{},
&EndpointsList{},
&Binding{},
Expand All @@ -50,6 +50,8 @@ func init() {
// Legacy names are supported
Scheme.AddKnownTypeWithName("", "Minion", &Node{})
Scheme.AddKnownTypeWithName("", "MinionList", &NodeList{})
Scheme.AddKnownTypeWithName("", "ServerOp", &Operation{})
Scheme.AddKnownTypeWithName("", "ServerOpList", &OperationList{})
}

func (*Pod) IsAnAPIObject() {}
Expand All @@ -64,8 +66,8 @@ func (*Node) IsAnAPIObject() {}
func (*NodeList) IsAnAPIObject() {}
func (*Binding) IsAnAPIObject() {}
func (*Status) IsAnAPIObject() {}
func (*ServerOp) IsAnAPIObject() {}
func (*ServerOpList) IsAnAPIObject() {}
func (*Operation) IsAnAPIObject() {}
func (*OperationList) IsAnAPIObject() {}
func (*Event) IsAnAPIObject() {}
func (*EventList) IsAnAPIObject() {}
func (*ContainerManifest) IsAnAPIObject() {}
Expand Down
17 changes: 10 additions & 7 deletions pkg/api/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,9 @@ type PodSpec struct {
type PodStatus struct {
Phase PodPhase `json:"phase,omitempty"`

// A human readable message indicating details about why the pod is in this state.
Message string `json:"message,omitempty"`

// Host is the name of the node that this Pod is currently bound to, or empty if no
// assignment has been done.
Host string `json:"host,omitempty"`
Expand Down Expand Up @@ -754,8 +757,8 @@ type Binding struct {
// TODO: this could go in apiserver, but I'm including it here so clients needn't
// import both.
type Status struct {
TypeMeta `json:",inline"`
ObjectMeta `json:"metadata,omitempty"`
TypeMeta `json:",inline"`
ListMeta `json:"metadata,omitempty"`

// One of: "Success", "Failure", "Working" (for operations not yet completed)
Status string `json:"status,omitempty"`
Expand Down Expand Up @@ -920,18 +923,18 @@ const (
CauseTypeFieldValueNotSupported CauseType = "FieldValueNotSupported"
)

// ServerOp is an operation delivered to API clients.
type ServerOp struct {
// Operation is an operation delivered to API clients.
type Operation struct {
TypeMeta `json:",inline"`
ObjectMeta `json:"metadata,omitempty"`
}

// ServerOpList is a list of operations, as delivered to API clients.
type ServerOpList struct {
// OperationList is a list of operations, as delivered to API clients.
type OperationList struct {
TypeMeta `json:",inline"`
ListMeta `json:"metadata,omitempty"`

Items []ServerOp `json:"items"`
Items []Operation `json:"items"`
}

// ObjectReference contains enough information to let you inspect or modify the referred object.
Expand Down
2 changes: 2 additions & 0 deletions pkg/api/v1beta1/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ func init() {
if err := s.Convert(&in.Info, &out.Info, 0); err != nil {
return err
}
out.Message = in.Message
out.Host = in.Host
out.HostIP = in.HostIP
out.PodIP = in.PodIP
Expand All @@ -189,6 +190,7 @@ func init() {
return err
}

out.Message = in.Message
out.Host = in.Host
out.HostIP = in.HostIP
out.PodIP = in.PodIP
Expand Down
2 changes: 2 additions & 0 deletions pkg/api/v1beta1/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ func init() {
// Future names are supported, and declared first so they take precedence
api.Scheme.AddKnownTypeWithName("v1beta1", "Node", &Minion{})
api.Scheme.AddKnownTypeWithName("v1beta1", "NodeList", &MinionList{})
api.Scheme.AddKnownTypeWithName("v1beta1", "Operation", &ServerOp{})
api.Scheme.AddKnownTypeWithName("v1beta1", "OperationList", &ServerOpList{})

api.Scheme.AddKnownTypes("v1beta1",
&Pod{},
Expand Down
2 changes: 2 additions & 0 deletions pkg/api/v1beta2/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ func init() {
if err := s.Convert(&in.Info, &out.Info, 0); err != nil {
return err
}
out.Message = in.Message
out.Host = in.Host
out.HostIP = in.HostIP
out.PodIP = in.PodIP
Expand All @@ -307,6 +308,7 @@ func init() {
if err := s.Convert(&in.Info, &out.Info, 0); err != nil {
return err
}
out.Message = in.Message
out.Host = in.Host
out.HostIP = in.HostIP
out.PodIP = in.PodIP
Expand Down
2 changes: 2 additions & 0 deletions pkg/api/v1beta2/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ func init() {
// Future names are supported, and declared first so they take precedence
api.Scheme.AddKnownTypeWithName("v1beta2", "Node", &Minion{})
api.Scheme.AddKnownTypeWithName("v1beta2", "NodeList", &MinionList{})
api.Scheme.AddKnownTypeWithName("v1beta2", "Operation", &ServerOp{})
api.Scheme.AddKnownTypeWithName("v1beta2", "OperationList", &ServerOpList{})

api.Scheme.AddKnownTypes("v1beta2",
&Pod{},
Expand Down
2 changes: 2 additions & 0 deletions pkg/api/v1beta3/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ func init() {
// Legacy names are supported
api.Scheme.AddKnownTypeWithName("v1beta3", "Minion", &Node{})
api.Scheme.AddKnownTypeWithName("v1beta3", "MinionList", &NodeList{})
api.Scheme.AddKnownTypeWithName("v1beta3", "ServerOp", &Operation{})
api.Scheme.AddKnownTypeWithName("v1beta3", "ServerOpList", &OperationList{})
}

func (*Pod) IsAnAPIObject() {}
Expand Down
6 changes: 3 additions & 3 deletions pkg/apiserver/apiserver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,15 @@ func interfacesFor(version string) (*meta.VersionInterfaces, error) {
func init() {
// Certain API objects are returned regardless of the contents of storage:
// api.Status is returned in errors
// api.ServerOp/api.ServerOpList are returned by /operations
// api.Operation/api.OperationList are returned by /operations

// "internal" version
api.Scheme.AddKnownTypes("", &Simple{}, &SimpleList{},
&api.Status{}, &api.ServerOp{}, &api.ServerOpList{})
&api.Status{}, &api.Operation{}, &api.OperationList{})
// "version" version
// TODO: Use versioned api objects?
api.Scheme.AddKnownTypes(testVersion, &Simple{}, &SimpleList{},
&api.Status{}, &api.ServerOp{}, &api.ServerOpList{})
&api.Status{}, &api.Operation{}, &api.OperationList{})

defMapper := meta.NewDefaultRESTMapper(
versions,
Expand Down
6 changes: 3 additions & 3 deletions pkg/apiserver/operation.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ func (ops *Operations) insert(op *Operation) {
}

// List lists operations for an API client.
func (ops *Operations) List() *api.ServerOpList {
func (ops *Operations) List() *api.OperationList {
ops.lock.Lock()
defer ops.lock.Unlock()

Expand All @@ -124,9 +124,9 @@ func (ops *Operations) List() *api.ServerOpList {
ids = append(ids, id)
}
sort.StringSlice(ids).Sort()
ol := &api.ServerOpList{}
ol := &api.OperationList{}
for _, id := range ids {
ol.Items = append(ol.Items, api.ServerOp{ObjectMeta: api.ObjectMeta{Name: id}})
ol.Items = append(ol.Items, api.Operation{ObjectMeta: api.ObjectMeta{Name: id}})
}
return ol
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/apiserver/operation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ func TestOperationsList(t *testing.T) {
if err != nil {
t.Errorf("unexpected error: %v", err)
}
oplist, ok := obj.(*api.ServerOpList)
oplist, ok := obj.(*api.OperationList)
if !ok {
t.Fatalf("expected ServerOpList, got %#v", obj)
}
Expand Down