OS.preserveNetwork finally written
This commit is contained in:
parent
e4511a78ba
commit
38eec6fc37
|
@ -8,6 +8,7 @@ propellor (1.4.0) UNRELEASED; urgency=medium
|
||||||
* Added systemd configuration properties.
|
* Added systemd configuration properties.
|
||||||
* Added journald configuration properties.
|
* Added journald configuration properties.
|
||||||
* Added more network interface configuration properties.
|
* Added more network interface configuration properties.
|
||||||
|
* Implemented OS.preserveNetwork.
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Thu, 15 Jan 2015 20:14:29 -0400
|
-- Joey Hess <id@joeyh.name> Thu, 15 Jan 2015 20:14:29 -0400
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ module Propellor.Property.OS (
|
||||||
import Propellor
|
import Propellor
|
||||||
import qualified Propellor.Property.Debootstrap as Debootstrap
|
import qualified Propellor.Property.Debootstrap as Debootstrap
|
||||||
import qualified Propellor.Property.Ssh as Ssh
|
import qualified Propellor.Property.Ssh as Ssh
|
||||||
|
import qualified Propellor.Property.Network as Network
|
||||||
import qualified Propellor.Property.User as User
|
import qualified Propellor.Property.User as User
|
||||||
import qualified Propellor.Property.File as File
|
import qualified Propellor.Property.File as File
|
||||||
import qualified Propellor.Property.Reboot as Reboot
|
import qualified Propellor.Property.Reboot as Reboot
|
||||||
|
@ -51,7 +52,7 @@ import Control.Exception (throw)
|
||||||
-- > `onChange` propertyList "fixing up after clean install"
|
-- > `onChange` propertyList "fixing up after clean install"
|
||||||
-- > [ preserveNetwork
|
-- > [ preserveNetwork
|
||||||
-- > , preserveResolvConf
|
-- > , preserveResolvConf
|
||||||
-- > , preserverRootSshAuthorized
|
-- > , preserveRootSshAuthorized
|
||||||
-- > , Apt.update
|
-- > , Apt.update
|
||||||
-- > -- , Grub.boots "/dev/sda"
|
-- > -- , Grub.boots "/dev/sda"
|
||||||
-- > -- `requires` Grub.installed Grub.PC
|
-- > -- `requires` Grub.installed Grub.PC
|
||||||
|
@ -192,7 +193,17 @@ confirmed desc (Confirmed c) = property desc $ do
|
||||||
-- interface that currently has a default route configured, using
|
-- interface that currently has a default route configured, using
|
||||||
-- the same (static) IP address.
|
-- the same (static) IP address.
|
||||||
preserveNetwork :: Property
|
preserveNetwork :: Property
|
||||||
preserveNetwork = undefined -- TODO
|
preserveNetwork = go `requires` Network.cleanInterfacesFile
|
||||||
|
where
|
||||||
|
go = property "preserve network configuration" $ do
|
||||||
|
ls <- liftIO $ lines <$> readProcess "ip"
|
||||||
|
["route", "list", "scope", "global"]
|
||||||
|
case words <$> headMaybe ls of
|
||||||
|
Just ("default":"via":_:"dev":iface:_) ->
|
||||||
|
ensureProperty $ Network.static iface
|
||||||
|
_ -> do
|
||||||
|
warningMessage "did not find any default ipv4 route"
|
||||||
|
return FailedChange
|
||||||
|
|
||||||
-- | </etc/resolv.conf> is copied from the old OS
|
-- | </etc/resolv.conf> is copied from the old OS
|
||||||
preserveResolvConf :: Property
|
preserveResolvConf :: Property
|
||||||
|
|
Loading…
Reference in New Issue