Use name from server when displaying create/update

Allows generated names from files to be displayed so users can
interact with them.
This commit is contained in:
Clayton Coleman
2015-02-06 11:57:52 -05:00
parent bb6b332a8b
commit 52c6c60b15
8 changed files with 82 additions and 42 deletions

View File

@@ -95,7 +95,7 @@ func (m *Helper) Delete(namespace, name string) error {
Error()
}
func (m *Helper) Create(namespace string, modify bool, data []byte) error {
func (m *Helper) Create(namespace string, modify bool, data []byte) (runtime.Object, error) {
if modify {
obj, err := m.Codec.Decode(data)
if err != nil {
@@ -111,11 +111,11 @@ func (m *Helper) Create(namespace string, modify bool, data []byte) error {
}
if version != "" {
if err := m.Versioner.SetResourceVersion(obj, ""); err != nil {
return err
return nil, err
}
newData, err := m.Codec.Encode(obj)
if err != nil {
return err
return nil, err
}
data = newData
}
@@ -124,11 +124,11 @@ func (m *Helper) Create(namespace string, modify bool, data []byte) error {
return createResource(m.RESTClient, m.Resource, namespace, data)
}
func createResource(c RESTClient, resource, namespace string, data []byte) error {
return c.Post().Namespace(namespace).Resource(resource).Body(data).Do().Error()
func createResource(c RESTClient, resource, namespace string, data []byte) (runtime.Object, error) {
return c.Post().Namespace(namespace).Resource(resource).Body(data).Do().Get()
}
func (m *Helper) Update(namespace, name string, overwrite bool, data []byte) error {
func (m *Helper) Update(namespace, name string, overwrite bool, data []byte) (runtime.Object, error) {
c := m.RESTClient
obj, err := m.Codec.Decode(data)
@@ -152,14 +152,14 @@ func (m *Helper) Update(namespace, name string, overwrite bool, data []byte) err
}
serverVersion, err := m.Versioner.ResourceVersion(serverObj)
if err != nil {
return err
return nil, err
}
if err := m.Versioner.SetResourceVersion(obj, serverVersion); err != nil {
return err
return nil, err
}
newData, err := m.Codec.Encode(obj)
if err != nil {
return err
return nil, err
}
data = newData
}
@@ -167,6 +167,6 @@ func (m *Helper) Update(namespace, name string, overwrite bool, data []byte) err
return updateResource(c, m.Resource, namespace, name, data)
}
func updateResource(c RESTClient, resource, namespace, name string, data []byte) error {
return c.Put().Namespace(namespace).Resource(resource).Name(name).Body(data).Do().Error()
func updateResource(c RESTClient, resource, namespace, name string, data []byte) (runtime.Object, error) {
return c.Put().Namespace(namespace).Resource(resource).Name(name).Body(data).Do().Get()
}

View File

@@ -193,7 +193,7 @@ func TestHelperCreate(t *testing.T) {
if test.Object != nil {
data = []byte(runtime.EncodeOrDie(testapi.Codec(), test.Object))
}
err := modifier.Create("bar", test.Modify, data)
_, err := modifier.Create("bar", test.Modify, data)
if (err != nil) != test.Err {
t.Errorf("%d: unexpected error: %t %v", i, test.Err, err)
}
@@ -448,7 +448,7 @@ func TestHelperUpdate(t *testing.T) {
if test.Object != nil {
data = []byte(runtime.EncodeOrDie(testapi.Codec(), test.Object))
}
err := modifier.Update("bar", "foo", test.Overwrite, data)
_, err := modifier.Update("bar", "foo", test.Overwrite, data)
if (err != nil) != test.Err {
t.Errorf("%d: unexpected error: %t %v", i, test.Err, err)
}

View File

@@ -87,6 +87,7 @@ func (i *Info) Visit(fn VisitorFunc) error {
return fn(i)
}
// Get retrieves the object from the Namespace and Name fields
func (i *Info) Get() error {
obj, err := NewHelper(i.Client, i.Mapping).Get(i.Namespace, i.Name)
if err != nil {
@@ -97,6 +98,38 @@ func (i *Info) Get() error {
return nil
}
// Refresh updates the object with another object. If ignoreError is set
// the Object will be updated even if name, namespace, or resourceVersion
// attributes cannot be loaded from the object.
func (i *Info) Refresh(obj runtime.Object, ignoreError bool) error {
name, err := i.Mapping.MetadataAccessor.Name(obj)
if err != nil {
if !ignoreError {
return err
}
} else {
i.Name = name
}
namespace, err := i.Mapping.MetadataAccessor.Namespace(obj)
if err != nil {
if !ignoreError {
return err
}
} else {
i.Namespace = namespace
}
version, err := i.Mapping.MetadataAccessor.ResourceVersion(obj)
if err != nil {
if !ignoreError {
return err
}
} else {
i.ResourceVersion = version
}
i.Object = obj
return nil
}
// Watch returns server changes to this object after it was retrieved.
func (i *Info) Watch(resourceVersion string) (watch.Interface, error) {
return NewHelper(i.Client, i.Mapping).WatchSingle(i.Namespace, i.Name, resourceVersion)