OLD | NEW |
1 package ec2 | 1 package ec2 |
2 | 2 |
3 import ( | 3 import ( |
4 "bytes" | 4 "bytes" |
5 "fmt" | 5 "fmt" |
6 "io/ioutil" | 6 "io/ioutil" |
7 "launchpad.net/goyaml" | 7 "launchpad.net/goyaml" |
8 "launchpad.net/juju-core/state" | 8 "launchpad.net/juju-core/state" |
9 ) | 9 ) |
10 | 10 |
11 const stateFile = "provider-state" | 11 const stateFile = "provider-state" |
12 | 12 |
13 type bootstrapState struct { | 13 type bootstrapState struct { |
14 StateInstances []state.InstanceId `yaml:"state-instances"` | 14 StateInstances []state.InstanceId `yaml:"state-instances"` |
15 } | 15 } |
16 | 16 |
17 func (e *environ) saveState(state *bootstrapState) error { | 17 func (e *environ) saveState(state *bootstrapState) error { |
18 data, err := goyaml.Marshal(state) | 18 data, err := goyaml.Marshal(state) |
19 if err != nil { | 19 if err != nil { |
20 return err | 20 return err |
21 } | 21 } |
22 » return e.Storage().Put(stateFile, bytes.NewBuffer(data), int64(len(data)
)) | 22 » return e.Storage().Put(stateFile, bytes.NewReader(data), int64(len(data)
)) |
23 } | 23 } |
24 | 24 |
25 func (e *environ) loadState() (*bootstrapState, error) { | 25 func (e *environ) loadState() (*bootstrapState, error) { |
26 r, err := e.Storage().Get(stateFile) | 26 r, err := e.Storage().Get(stateFile) |
27 if err != nil { | 27 if err != nil { |
28 return nil, err | 28 return nil, err |
29 } | 29 } |
30 defer r.Close() | 30 defer r.Close() |
31 data, err := ioutil.ReadAll(r) | 31 data, err := ioutil.ReadAll(r) |
32 if err != nil { | 32 if err != nil { |
33 return nil, fmt.Errorf("error reading %q: %v", stateFile, err) | 33 return nil, fmt.Errorf("error reading %q: %v", stateFile, err) |
34 } | 34 } |
35 var state bootstrapState | 35 var state bootstrapState |
36 err = goyaml.Unmarshal(data, &state) | 36 err = goyaml.Unmarshal(data, &state) |
37 if err != nil { | 37 if err != nil { |
38 return nil, fmt.Errorf("error unmarshalling %q: %v", stateFile,
err) | 38 return nil, fmt.Errorf("error unmarshalling %q: %v", stateFile,
err) |
39 } | 39 } |
40 return &state, nil | 40 return &state, nil |
41 } | 41 } |
OLD | NEW |