diff --git a/pkg/hostman/guestfs/fsdriver/drivers.go b/pkg/hostman/guestfs/fsdriver/drivers.go index 6d3bfa32ed..cb43123dbf 100644 --- a/pkg/hostman/guestfs/fsdriver/drivers.go +++ b/pkg/hostman/guestfs/fsdriver/drivers.go @@ -45,6 +45,7 @@ func Init(initPrivatePrefixes []string, cloudrootDir string) error { NewCentosRootFs, NewFedoraRootFs, NewRhelRootFs, NewDebianRootFs, NewCirrosRootFs, NewCirrosNewRootFs, NewUbuntuRootFs, NewGentooRootFs, NewArchLinuxRootFs, NewOpenWrtRootFs, NewCoreOsRootFs, + NewOpenEulerRootFs, } rootfsDrivers = append(rootfsDrivers, linuxFsDrivers...) rootfsDrivers = append(rootfsDrivers, NewMacOSRootFs) diff --git a/pkg/hostman/guestfs/fsdriver/linux.go b/pkg/hostman/guestfs/fsdriver/linux.go index 29e4568be5..69bb8d11f2 100644 --- a/pkg/hostman/guestfs/fsdriver/linux.go +++ b/pkg/hostman/guestfs/fsdriver/linux.go @@ -1335,6 +1335,54 @@ func (c *SRhelRootFs) DisableSerialConsole(rootFs IDiskPartition) error { return c.disableSerialConcole(c, rootFs) } +type SOpenEulerRootFs struct { + *SCentosRootFs +} + +func NewOpenEulerRootFs(part IDiskPartition) IRootFsDriver { + return &SOpenEulerRootFs{ + SCentosRootFs: NewCentosRootFs(part).(*SCentosRootFs), + } +} + +func (c *SOpenEulerRootFs) String() string { + return "OpenEulerRootFs" +} + +func (c *SOpenEulerRootFs) GetName() string { + return "OpenEuler" +} + +func (c *SOpenEulerRootFs) RootSignatures() []string { + sig := c.sLinuxRootFs.RootSignatures() + return append([]string{"/etc/sysconfig/network", "/etc/openEuler-release"}, sig...) +} + +func (c *SOpenEulerRootFs) GetReleaseInfo(rootFs IDiskPartition) *deployapi.ReleaseInfo { + rel, _ := rootFs.FileGetContents("/etc/openEuler-release", false) + var version string + if len(rel) > 0 { + re := regexp.MustCompile(`^\d+\.\d+`) + dat := strings.Split(string(rel), " ") + for _, v := range dat { + if re.Match([]byte(v)) { + version = v + break + } + } + } + version = strings.TrimSpace(version) + return deployapi.NewReleaseInfo(c.GetName(), version, c.GetArch(rootFs)) +} + +func (c *SOpenEulerRootFs) DeployNetworkingScripts(rootFs IDiskPartition, nics []*types.SServerNic) error { + relInfo := c.GetReleaseInfo(rootFs) + if err := c.sRedhatLikeRootFs.deployNetworkingScripts(rootFs, nics, relInfo); err != nil { + return err + } + return nil +} + type SGentooRootFs struct { *sLinuxRootFs }