Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(270)

Unified Diff: state/apiserver/common/remove.go

Issue 12551043: state: implement the single FindEntity method
Patch Set: state: implement the single FindEntity method Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b