// fetchMachines returns a map from top level machine id to machines, where machines[0] is the host // machine and machines[1..n] are any containers (including nested ones). // // If machineIds is non-nil, only machines whose IDs are in the set are returned. func fetchMachines(st *state.State, machineIds *set.Strings) (map[string][]*state.Machine, error) { v := make(map[string][]*state.Machine) machines, err := st.AllMachines() if err != nil { return nil, err } // AllMachines gives us machines sorted by id. for _, m := range machines { if machineIds != nil && !machineIds.Contains(m.Id()) { continue } parentId, ok := m.ParentId() if !ok { // Only top level host machines go directly into the machine map. v[m.Id()] = []*state.Machine{m} } else { topParentId := state.TopParentId(m.Id()) machines, ok := v[topParentId] if !ok { panic(fmt.Errorf("unexpected machine id %q", parentId)) } machines = append(machines, m) v[topParentId] = machines } } return v, nil }
// fetchAllMachines returns a map[string]*state.Machine representing // a mapping of machine ids to machines. func fetchAllMachines(st *state.State) (map[string]*state.Machine, error) { v := make(map[string]*state.Machine) machines, err := st.AllMachines() if err != nil { return nil, err } for _, m := range machines { v[m.Id()] = m } return v, nil }
func assertMachineCount(c *C, st *state.State, expect int) { ms, err := st.AllMachines() c.Assert(err, IsNil) c.Assert(ms, HasLen, expect, Commentf("%v", ms)) }