func (m *InterfaceManager) autoConnect(task *state.Task, snapName string, blacklist map[string]bool) error { var conns map[string]connState err := task.State().Get("conns", &conns) if err != nil && err != state.ErrNoState { return err } if conns == nil { conns = make(map[string]connState) } // XXX: quick hack, auto-connect everything for _, plug := range m.repo.Plugs(snapName) { if blacklist[plug.Name] { continue } candidates := m.repo.AutoConnectCandidates(snapName, plug.Name) if len(candidates) != 1 { continue } slot := candidates[0] if err := m.repo.Connect(snapName, plug.Name, slot.Snap.Name(), slot.Name); err != nil { task.Logf("cannot auto connect %s:%s to %s:%s: %s", snapName, plug.Name, slot.Snap.Name(), slot.Name, err) } key := fmt.Sprintf("%s:%s %s:%s", snapName, plug.Name, slot.Snap.Name(), slot.Name) conns[key] = connState{Interface: plug.Interface, Auto: true} } task.State().Set("conns", conns) return nil }