from it's UUID using ConfigState. Signed-off-by: BSRK Aditya <[email protected]> --- src/Ganeti/WConfd/ConfigModifications.hs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/src/Ganeti/WConfd/ConfigModifications.hs b/src/Ganeti/WConfd/ConfigModifications.hs index aa11b2a..ecb4860 100644 --- a/src/Ganeti/WConfd/ConfigModifications.hs +++ b/src/Ganeti/WConfd/ConfigModifications.hs @@ -43,16 +43,38 @@ import Control.Lens.Setter ((.~)) import Control.Lens.Traversal (mapMOf) import Data.Maybe (isJust) import Language.Haskell.TH (Name) +import Text.Printf (printf) -import Ganeti.JSON (alterContainerL) +import Ganeti.BasicTypes (GenericResult(..)) +import Ganeti.Errors (GanetiException(..)) +import Ganeti.JSON (alterContainerL, lookupContainer) import Ganeti.Locking.Locks (ClientId, ciIdentifier) import Ganeti.Logging.Lifted (logDebug) import Ganeti.Objects import Ganeti.Objects.Lens -import Ganeti.WConfd.ConfigState (csConfigDataL) +import Ganeti.WConfd.ConfigState (ConfigState, csConfigData, csConfigDataL) import Ganeti.WConfd.Monad (WConfdMonad, modifyConfigWithLock) import qualified Ganeti.WConfd.TempRes as T +type DiskUUID = String +type InstanceUUID = String + +-- * Accessor functions + +getDiskByUUID :: ConfigState -> DiskUUID -> GenericResult GanetiException Disk +getDiskByUUID cs uuid = lookupContainer + (Bad . ConfigurationError $ printf "Could not find disk with UUID %s" uuid) + uuid + (configDisks . csConfigData $ cs) + +getInstanceByUUID :: ConfigState + -> InstanceUUID + -> GenericResult GanetiException Instance +getInstanceByUUID cs uuid = lookupContainer + (Bad . ConfigurationError $ + printf "Could not find instance with UUID %s" uuid) + uuid + (configInstances . csConfigData $ cs) -- | Add a new instance to the configuration, release DRBD minors, -- and commit temporary IPs, all while temporarily holding the config -- 1.7.10.4
