move NetworkManager.conf check to template_manager.go
This commit is contained in:
parent
8cc537f79b
commit
08d3ec2804
|
@ -45,21 +45,7 @@ func (mgr *OpensuseTumbleweedTemplateManager) InstallNetworkManager(handle *gues
|
|||
if err != nil {
|
||||
return fmt.Errorf("Could not install NetworkManager: %w", err)
|
||||
}
|
||||
// Make sure dhcp-client is installed because we use it as the
|
||||
// DHCP backend
|
||||
dhclientIsPresent, err := handle.Is_file("/sbin/dhclient", nil)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Could not determine if /sbin/dhclient is a file: %w", err)
|
||||
}
|
||||
if !dhclientIsPresent {
|
||||
return errors.New("dhclient is not present")
|
||||
}
|
||||
// Workaround for bug in cloud-init which prevents the NetworkManager
|
||||
// backend from being selected if NetworkManager.conf does not exist
|
||||
// https://github.com/canonical/cloud-init/blob/23.1.x/cloudinit/net/network_manager.py#L381
|
||||
const cfgFilePath = "/etc/NetworkManager/NetworkManager.conf"
|
||||
mgr.logger.Debug().Msg("Creating " + cfgFilePath)
|
||||
return handle.Touch(cfgFilePath)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mgr *OpensuseTumbleweedTemplateManager) removeWelcomeMessage(handle *guestfs.Guestfs) error {
|
||||
|
|
|
@ -405,13 +405,42 @@ func (mgr *TemplateManager) setupCommonNTPConfigs(handle *guestfs.Guestfs) error
|
|||
return errors.New("could not determine NTP backend")
|
||||
}
|
||||
|
||||
func (mgr *TemplateManager) setNetworkManagerOptions(handle *guestfs.Guestfs) (err error) {
|
||||
if err = handle.Mkdir_p("/etc/NetworkManager/conf.d"); err != nil {
|
||||
return
|
||||
func (mgr *TemplateManager) setNetworkManagerOptions(handle *guestfs.Guestfs) error {
|
||||
// We will force NetworkManager to use dhclient instead of its built-in DHCP
|
||||
// client. This is necessary because cloud-init is unable to read the DHCP
|
||||
// server identifier from NetworkManager's state files, and will always try
|
||||
// to read dhclient lease files even if NetworkManager is being used
|
||||
// https://github.com/canonical/cloud-init/blob/23.3.x/cloudinit/sources/DataSourceCloudStack.py#L233
|
||||
dhclientIsPresent, err := handle.Is_file("/sbin/dhclient", nil)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Could not determine if /sbin/dhclient is a file: %w", err)
|
||||
}
|
||||
path := "/etc/NetworkManager/conf.d/99_csclub.conf"
|
||||
mgr.logger.Debug().Msg("Writing to " + path)
|
||||
return handle.Write(path, getResource("network-manager-snippet"))
|
||||
if !dhclientIsPresent {
|
||||
return errors.New("dhclient is not present")
|
||||
}
|
||||
if err = handle.Mkdir_p("/etc/NetworkManager/conf.d"); err != nil {
|
||||
return err
|
||||
}
|
||||
snippetPath := "/etc/NetworkManager/conf.d/99_csclub.conf"
|
||||
mgr.logger.Debug().Msg("Writing to " + snippetPath)
|
||||
if err = handle.Write(snippetPath, getResource("network-manager-snippet")); err != nil {
|
||||
return err
|
||||
}
|
||||
// Workaround for bug in cloud-init which prevents the NetworkManager
|
||||
// backend from being selected if NetworkManager.conf does not exist
|
||||
// https://github.com/canonical/cloud-init/blob/23.3.x/cloudinit/net/network_manager.py#L413
|
||||
const cfgFilePath = "/etc/NetworkManager/NetworkManager.conf"
|
||||
nmCfgIsPresent, err := handle.Is_file(cfgFilePath, nil)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Could not determine if %s is a file: %w", cfgFilePath, err)
|
||||
}
|
||||
if !nmCfgIsPresent {
|
||||
mgr.logger.Debug().Msg("Creating " + cfgFilePath)
|
||||
if err = handle.Touch(cfgFilePath); err != nil {
|
||||
return fmt.Errorf("Could not create %s: %w", cfgFilePath, err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mgr *TemplateManager) usesNetworkManager(handle *guestfs.Guestfs) (bool, error) {
|
||||
|
|
Loading…
Reference in New Issue