add UsesNetworkManager method

This commit is contained in:
Max Erenberg 2022-06-25 06:07:14 -04:00
parent f84ace7700
commit 023f454c31
5 changed files with 15 additions and 29 deletions

View File

@ -68,11 +68,8 @@ func (mgr *AlmaLinuxTemplateManager) DownloadTemplate(version, codename string)
return mgr.DownloadTemplateGeneric(filename, url)
}
func (mgr *AlmaLinuxTemplateManager) GetIpv6ScriptsTemplateData() map[string]string {
return map[string]string{
"networkService": "NetworkManager.service",
"networkTarget": "network-online.target",
}
func (mgr *AlmaLinuxTemplateManager) UsesNetworkManager() bool {
return true
}
func (mgr *AlmaLinuxTemplateManager) addCloudInitSnippet(handle *guestfs.Guestfs) error {

View File

@ -75,11 +75,9 @@ func (mgr *DebianTemplateManager) HasSELinuxEnabled() bool {
return false
}
func (mgr *DebianTemplateManager) GetIpv6ScriptsTemplateData() map[string]string {
return map[string]string{
"networkService": "networking.service",
"networkTarget": "network.target",
}
func (mgr *DebianTemplateManager) UsesNetworkManager() bool {
// Debian uses /etc/network/interfaces instead
return false
}
func (mgr *DebianTemplateManager) PerformDistroSpecificModifications(handle *guestfs.Guestfs) (err error) {

View File

@ -113,11 +113,8 @@ func (mgr *FedoraTemplateManager) DownloadTemplate(version, codename string) (pa
return mgr.DownloadTemplateGeneric(filename, url)
}
func (mgr *FedoraTemplateManager) GetIpv6ScriptsTemplateData() map[string]string {
return map[string]string{
"networkService": "NetworkManager.service",
"networkTarget": "network-online.target",
}
func (mgr *FedoraTemplateManager) UsesNetworkManager() bool {
return true
}
func (mgr *FedoraTemplateManager) addCloudInitSnippet(handle *guestfs.Guestfs) error {

View File

@ -58,11 +58,8 @@ type ITemplateManager interface {
// An IDistroSpecificTemplateManager performs the distro-specific tasks
// when modifying a VM template. It is used by the generic TemplateManager.
type IDistroSpecificTemplateManager interface {
// GetIpv6ScriptsTemplateData returns template data used by the
// IPv6 scripts. The required keys are "networkService" and
// "networkTarget"; the values should be a systemd service and target,
// respectively.
GetIpv6ScriptsTemplateData() map[string]string
// UsesNetworkManager returns whether the distro uses NetworkManager
UsesNetworkManager() bool
// PerformDistroSpecificModifications is called after
// performDistroAgnosticModifications to modify a template in a
// distro-specific way.
@ -90,8 +87,7 @@ func (mgr *TemplateManager) DownloadTemplateGeneric(filename, url string) (path
}
func (mgr *TemplateManager) performDistroAgnosticModifications(handle *guestfs.Guestfs) (err error) {
templateData := mgr.impl.GetIpv6ScriptsTemplateData()
if err = mgr.setupIpv6Scripts(handle, templateData); err != nil {
if err = mgr.setupIpv6Scripts(handle); err != nil {
return
}
if err = mgr.setResolvConf(handle); err != nil {
@ -250,10 +246,10 @@ func (mgr *TemplateManager) setNetworkManagerOptions(handle *guestfs.Guestfs) (e
return handle.Write(path, getResource("network-manager-snippet"))
}
func (mgr *TemplateManager) setupIpv6Scripts(handle *guestfs.Guestfs, templateData map[string]string) (err error) {
func (mgr *TemplateManager) setupIpv6Scripts(handle *guestfs.Guestfs) (err error) {
log := mgr.logger
scripts := []string{"99_csclub_ipv6_addr.sh"}
if templateData["networkService"] == "NetworkManager.service" {
if mgr.impl.UsesNetworkManager() {
scripts = append(scripts, "98_csclub_disable_nm_ipv6.sh")
} else {
scripts = append(scripts, "98_csclub_disable_ipv6_ra.sh")

View File

@ -108,11 +108,9 @@ func (mgr *UbuntuTemplateManager) HasSELinuxEnabled() bool {
return false
}
func (mgr *UbuntuTemplateManager) GetIpv6ScriptsTemplateData() map[string]string {
return map[string]string{
"networkService": "systemd-networkd.service",
"networkTarget": "network.target",
}
func (mgr *UbuntuTemplateManager) UsesNetworkManager() bool {
// Ubuntu uses systemd-networkd instead
return false
}
func (mgr *UbuntuTemplateManager) PerformDistroSpecificModifications(handle *guestfs.Guestfs) (err error) {