2017-02-27 16:28:41 +00:00
|
|
|
package mapstate
|
|
|
|
|
|
|
|
import (
|
2017-11-28 22:45:10 +00:00
|
|
|
"bytes"
|
2017-02-27 16:28:41 +00:00
|
|
|
"errors"
|
|
|
|
|
2017-11-28 22:45:10 +00:00
|
|
|
msgpack "github.com/multiformats/go-multicodec/msgpack"
|
|
|
|
|
2017-02-27 16:28:41 +00:00
|
|
|
"github.com/ipfs/ipfs-cluster/api"
|
|
|
|
)
|
|
|
|
|
|
|
|
type mapStateV1 struct {
|
|
|
|
Version int
|
|
|
|
PinMap map[string]struct{}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (st *MapState) migrateFrom(version int, snap []byte) error {
|
|
|
|
switch version {
|
|
|
|
case 1:
|
|
|
|
var mstv1 mapStateV1
|
2017-11-28 22:45:10 +00:00
|
|
|
buf := bytes.NewBuffer(snap)
|
|
|
|
dec := msgpack.Multicodec(msgpack.DefaultMsgpackHandle()).Decoder(buf)
|
|
|
|
if err := dec.Decode(&mstv1); err != nil {
|
2017-02-27 16:28:41 +00:00
|
|
|
return err
|
|
|
|
}
|
2017-11-28 22:45:10 +00:00
|
|
|
|
2017-02-27 16:28:41 +00:00
|
|
|
for k := range mstv1.PinMap {
|
|
|
|
st.PinMap[k] = api.PinSerial{
|
|
|
|
Cid: k,
|
|
|
|
Allocations: []string{},
|
|
|
|
ReplicationFactor: -1,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
default:
|
|
|
|
return errors.New("version migration not supported")
|
|
|
|
}
|
|
|
|
}
|