swarm/api: Correct updated resource update method calls in api

This commit is contained in:
lash 2018-03-08 10:12:14 +01:00
parent d7f4f43240
commit 64b4a0ba6f
3 changed files with 9 additions and 8 deletions

View file

@ -579,17 +579,17 @@ func (self *Api) BuildDirectoryTree(mhash string, nameresolver bool) (key storag
} }
// Look up mutable resource updates at specific periods and versions // Look up mutable resource updates at specific periods and versions
func (self *Api) ResourceLookup(ctx context.Context, name string, period uint32, version uint32) (storage.Key, []byte, error) { func (self *Api) ResourceLookup(ctx context.Context, name string, period uint32, version uint32, maxPeriod int) (storage.Key, []byte, error) {
var err error var err error
if version != 0 { if version != 0 {
if period == 0 { if period == 0 {
return nil, nil, storage.NewResourceError(storage.ErrInvalidValue, "Period can't be 0") return nil, nil, storage.NewResourceError(storage.ErrInvalidValue, "Period can't be 0")
} }
_, err = self.resource.LookupVersionByName(ctx, name, period, version, true) _, err = self.resource.LookupVersionByName(ctx, name, period, version, true, maxPeriod)
} else if period != 0 { } else if period != 0 {
_, err = self.resource.LookupHistoricalByName(ctx, name, period, true) _, err = self.resource.LookupHistoricalByName(ctx, name, period, true, maxPeriod)
} else { } else {
_, err = self.resource.LookupLatestByName(ctx, name, true) _, err = self.resource.LookupLatestByName(ctx, name, true, maxPeriod)
} }
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err

View file

@ -397,6 +397,7 @@ func (s *Server) HandleGetResource(w http.ResponseWriter, r *Request) {
s.handleGetResource(w, r, r.uri.Addr) s.handleGetResource(w, r, r.uri.Addr)
} }
// TODO: Enable pass maxPeriod parameter
func (s *Server) handleGetResource(w http.ResponseWriter, r *Request, name string) { func (s *Server) handleGetResource(w http.ResponseWriter, r *Request, name string) {
var params []string var params []string
if len(r.uri.Path) > 0 { if len(r.uri.Path) > 0 {
@ -411,7 +412,7 @@ func (s *Server) handleGetResource(w http.ResponseWriter, r *Request, name strin
log.Debug("handlegetdb", "name", name, "ruid", r.ruid) log.Debug("handlegetdb", "name", name, "ruid", r.ruid)
switch len(params) { switch len(params) {
case 0: case 0:
updateKey, data, err = s.api.ResourceLookup(r.Context(), name, 0, 0) updateKey, data, err = s.api.ResourceLookup(r.Context(), name, 0, 0, 0)
case 2: case 2:
version, err = strconv.ParseUint(params[1], 10, 32) version, err = strconv.ParseUint(params[1], 10, 32)
if err != nil { if err != nil {
@ -421,13 +422,13 @@ func (s *Server) handleGetResource(w http.ResponseWriter, r *Request, name strin
if err != nil { if err != nil {
break break
} }
updateKey, data, err = s.api.ResourceLookup(r.Context(), name, uint32(period), uint32(version)) updateKey, data, err = s.api.ResourceLookup(r.Context(), name, uint32(period), uint32(version), 0)
case 1: case 1:
period, err = strconv.ParseUint(params[0], 10, 32) period, err = strconv.ParseUint(params[0], 10, 32)
if err != nil { if err != nil {
break break
} }
updateKey, data, err = s.api.ResourceLookup(r.Context(), name, uint32(period), uint32(version)) updateKey, data, err = s.api.ResourceLookup(r.Context(), name, uint32(period), uint32(version), 0)
default: default:
Respond(w, r, "invalid mutable resource request", http.StatusBadRequest) Respond(w, r, "invalid mutable resource request", http.StatusBadRequest)
return return

View file

@ -70,7 +70,7 @@ func NewTestSwarmServer(t *testing.T) *TestSwarmServer {
t.Fatal(err) t.Fatal(err)
} }
rh, err := storage.NewTestResourceHandler(resourceDir, &fakeBackend{}, nil, -1) rh, err := storage.NewTestResourceHandler(resourceDir, &fakeBackend{}, nil, 0)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }