in google_guest_agent/network/manager/netplan_linux.go [735:794]
func (n *netplan) rollbackConfigs(ctx context.Context, nics *Interfaces, removeVlan bool) error {
var reload bool
interfaces, err := interfaceNames(nics.EthernetInterfaces)
if err != nil {
return fmt.Errorf("failed to get list of interface names: %v", err)
}
netplanEthernetDropinFile := n.dropinFile(netplanEthernetSuffix)
existingEthernetCfgs := netplanDropin{}
if utils.FileExists(netplanEthernetDropinFile, utils.TypeFile) {
if err := readYamlFile(netplanEthernetDropinFile, &existingEthernetCfgs); err != nil {
return fmt.Errorf("unable to read %q trying rollback configs: %w", netplanEthernetDropinFile, err)
}
}
var deleteMe []string
for _, iface := range interfaces {
// Set networkd drop-in override file for removal.
networkdDropinFile := n.networkdDropinFile(iface)
deleteMe = append(deleteMe, networkdDropinFile)
// Set netplan ethernet drop-in file for removal.
if _, ok := existingEthernetCfgs.Network.Ethernets[iface]; ok {
deleteMe = append(deleteMe, netplanEthernetDropinFile)
}
}
if removeVlan {
if done, err := n.rollbackVlanNics(ctx, nics); err != nil {
logger.Debugf("Failed to remove vlan interfaces: %v", err)
} else {
if done {
reload = true
}
}
}
for _, configFile := range deleteMe {
logger.Debugf("Removing config file: %q", configFile)
if err := os.Remove(configFile); err != nil {
if !os.IsNotExist(err) {
logger.Debugf("Failed to remove drop-in file(%s): %s", configFile, err)
} else {
logger.Debugf("No such drop-in file(%s), ignoring.", configFile)
}
continue
}
reload = true
}
if !reload {
return nil
}
if err := n.reloadConfigs(ctx); err != nil {
return fmt.Errorf("error reloading configs: %v", err)
}
return nil
}