()
| 92 | } |
| 93 | |
| 94 | func (d *DeviceManager) sync() error { |
| 95 | devices, err := d.ListAllDevices() |
| 96 | if err != nil { |
| 97 | return errors.Wrap(err, "failed to list devices") |
| 98 | } |
| 99 | |
| 100 | peers, err := d.wg.ListPeers() |
| 101 | if err != nil { |
| 102 | return errors.Wrap(err, "failed to list peers") |
| 103 | } |
| 104 | |
| 105 | // Remove any peers for devices that are no longer in storage |
| 106 | for _, peer := range peers { |
| 107 | if !deviceListContains(devices, peer.PublicKey.String()) { |
| 108 | if err := d.wg.RemovePeer(peer.PublicKey.String()); err != nil { |
| 109 | logrus.Error(errors.Wrapf(err, "failed to remove peer during sync: %s", peer.PublicKey.String())) |
| 110 | } |
| 111 | } |
| 112 | } |
| 113 | |
| 114 | // Add peers for all devices in storage |
| 115 | for _, device := range devices { |
| 116 | if err := d.wg.AddPeer(device.PublicKey, device.Address); err != nil { |
| 117 | logrus.Warn(errors.Wrapf(err, "failed to add device during sync: %s", device.Name)) |
| 118 | } |
| 119 | } |
| 120 | |
| 121 | return nil |
| 122 | } |
| 123 | |
| 124 | func (d *DeviceManager) ListAllDevices() ([]*storage.Device, error) { |
| 125 | return d.storage.List("") |
no test coverage detected