func addToolsVersionForMachine(machine description.Machine, usedVersions map[version.Binary]bool) { tools := machine.Tools() usedVersions[tools.Version()] = true for _, container := range machine.Containers() { addToolsVersionForMachine(container, usedVersions) } }
func (i *importer) makeMachineDoc(m description.Machine) (*machineDoc, error) { id := m.Id() supported, supportedSet := m.SupportedContainers() supportedContainers := make([]instance.ContainerType, len(supported)) for j, c := range supported { supportedContainers[j] = instance.ContainerType(c) } jobs, err := i.makeMachineJobs(m.Jobs()) if err != nil { return nil, errors.Trace(err) } return &machineDoc{ DocID: i.st.docID(id), Id: id, ModelUUID: i.st.ModelUUID(), Nonce: m.Nonce(), Series: m.Series(), ContainerType: m.ContainerType(), Principals: nil, // TODO Life: Alive, Tools: i.makeTools(m.Tools()), Jobs: jobs, NoVote: true, // State servers can't be migrated yet. HasVote: false, // State servers can't be migrated yet. PasswordHash: m.PasswordHash(), Clean: true, // check this later Addresses: i.makeAddresses(m.ProviderAddresses()), MachineAddresses: i.makeAddresses(m.MachineAddresses()), PreferredPrivateAddress: i.makeAddress(m.PreferredPrivateAddress()), PreferredPublicAddress: i.makeAddress(m.PreferredPublicAddress()), SupportedContainersKnown: supportedSet, SupportedContainers: supportedContainers, Placement: m.Placement(), }, nil }