Index: state/apiserver/common/remove.go |
=== modified file 'state/apiserver/common/remove.go' |
--- state/apiserver/common/remove.go 2013-08-05 12:34:21 +0000 |
+++ state/apiserver/common/remove.go 2013-08-07 10:56:20 +0000 |
@@ -12,32 +12,32 @@ |
// Remover implements a common Remove method for use by various facades. |
type Remover struct { |
- st Removerer |
+ st state.EntityFinder |
getCanModify GetAuthFunc |
} |
-type Removerer interface { |
- // state.State implements Remover to provide ways for us to call |
- // object.Remove (for machines, units, etc). This is used to allow |
- // us to test with mocks without having to actually bring up |
- // state. |
- Remover(tag string) (state.Remover, error) |
-} |
- |
// NewRemover returns a new Remover. The GetAuthFunc will be used on |
// each invocation of Remove to determine current permissions. |
-func NewRemover(st Removerer, getCanModify GetAuthFunc) *Remover { |
+func NewRemover(st state.EntityFinder, getCanModify GetAuthFunc) *Remover { |
return &Remover{ |
st: st, |
getCanModify: getCanModify, |
} |
} |
-func (r *Remover) removeEntity(tag string) (err error) { |
- var remover state.Remover |
- if remover, err = r.st.Remover(tag); err != nil { |
+func (r *Remover) removeEntity(tag string) error { |
+ entity, err := r.st.FindEntity(tag) |
+ if err != nil { |
return err |
} |
+ remover, ok := entity.(interface { |
+ state.Lifer |
+ state.Remover |
+ state.EnsureDeader |
+ }) |
+ if !ok { |
+ return NotSupportedError(tag, "removal") |
+ } |
// Only remove entites that are not Alive. |
if life := remover.Life(); life == state.Alive { |
return fmt.Errorf("cannot remove entity %q: still alive", tag) |