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

Reply via email to