On Thu, Apr 17, 2014 at 01:13PM, Jose A. Lopes wrote:
> On Apr 16 15:19, Ilias Tsitsimpis wrote:
> > Add 'ReqInstanceDisks' request type and allow Confd to query for the
> > disks of an instance. The helper function 'getInstanceDisks' returns the
> > list of instances on the given node along with their disks and is used
> > by the function 'addInstNameToLv'.
> > 
> > Update the test's data file 'instance-prim-sec' and rename it to
> > 'instance-disks' as it doesn't return the primary and secondary
> > instances of a node any more, but it returns the instances and their
> > disks.
> > 
> > Signed-off-by: Ilias Tsitsimpis <[email protected]>
> > ---
> >  Makefile.am                                  |   2 +-
> >  src/Ganeti/Confd/ClientFunctions.hs          |  45 ++++++--
> >  src/Ganeti/Confd/Server.hs                   |  11 ++
> >  src/Ganeti/Confd/Types.hs                    |   1 +
> >  src/Ganeti/Constants.hs                      |   3 +
> >  src/Ganeti/DataCollectors/InstStatus.hs      |   2 +-
> >  src/Ganeti/DataCollectors/Lv.hs              |  45 ++++----
> >  test/data/instance-disks.txt                 | 152 
> > +++++++++++++++++++++++++++
> >  test/data/instance-prim-sec.txt              |  88 ----------------
> >  test/hs/shelltests/htools-mon-collector.test |   2 +-
> >  10 files changed, 230 insertions(+), 121 deletions(-)
> >  create mode 100644 test/data/instance-disks.txt
> >  delete mode 100644 test/data/instance-prim-sec.txt
> > 
> > diff --git a/Makefile.am b/Makefile.am
> > index 58c0310..7d63bfd 100644
> > --- a/Makefile.am
> > +++ b/Makefile.am
> > @@ -1422,7 +1422,7 @@ TEST_FILES = \
> >     test/data/cluster_config_2.10.json \
> >     test/data/cluster_config_2.11.json \
> >     test/data/instance-minor-pairing.txt \
> > -   test/data/instance-prim-sec.txt \
> > +   test/data/instance-disks.txt \
> >     test/data/ip-addr-show-dummy0.txt \
> >     test/data/ip-addr-show-lo-ipv4.txt \
> >     test/data/ip-addr-show-lo-ipv6.txt \
> > diff --git a/src/Ganeti/Confd/ClientFunctions.hs 
> > b/src/Ganeti/Confd/ClientFunctions.hs
> > index 03f8e43..84d8f1e 100644
> > --- a/src/Ganeti/Confd/ClientFunctions.hs
> > +++ b/src/Ganeti/Confd/ClientFunctions.hs
> > @@ -25,6 +25,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, 
> > Boston, MA
> >  
> >  module Ganeti.Confd.ClientFunctions
> >    ( getInstances
> > +  , getInstanceDisks
> >    ) where
> >  
> >  import qualified Text.JSON as J
> > @@ -42,12 +43,40 @@ getInstances
> >    :: String
> >    -> Maybe String
> >    -> Maybe Int
> > -  -> IO (BT.Result ([Ganeti.Objects.Instance], [Ganeti.Objects.Instance]))
> > +  -> BT.ResultT String IO ([Ganeti.Objects.Instance], 
> > [Ganeti.Objects.Instance])
> >  getInstances node srvAddr srvPort = do
> > -  client <- getConfdClient srvAddr srvPort
> > -  reply <- query client ReqNodeInstances $ PlainQuery node
> > -  return $
> > -    case fmap (J.readJSON . confdReplyAnswer) reply of
> > -      Just (J.Ok instances) -> BT.Ok instances
> > -      Just (J.Error msg) -> BT.Bad msg
> > -      Nothing -> BT.Bad "No answer from the Confd server"
> > +  client <- liftIO $ getConfdClient srvAddr srvPort
> > +  reply <- liftIO $ query client ReqNodeInstances $ PlainQuery node
> > +  case fmap (J.readJSON . confdReplyAnswer) reply of
> > +    Just (J.Ok instances) -> return instances
> > +    Just (J.Error msg) -> fail msg
> > +    Nothing -> fail "No answer from the Confd server"
> > +
> > +-- | Get the list of disks that belong to a given instance
> > +-- The server address and the server port parameters are mainly intended
> > +-- for testing purposes. If they are Nothing, the default values will be 
> > used.
> > +getDisks
> > +  :: Ganeti.Objects.Instance
> > +  -> Maybe String
> > +  -> Maybe Int
> > +  -> BT.ResultT String IO [Ganeti.Objects.Disk]
> > +getDisks inst srvAddr srvPort = do
> > +  client <- liftIO $ getConfdClient srvAddr srvPort
> > +  reply <- liftIO $ query client ReqInstanceDisks . PlainQuery . instUuid 
> > $ inst
> > +  case fmap (J.readJSON . confdReplyAnswer) reply of
> > +    Just (J.Ok disks) -> return disks
> > +    Just (J.Error msg) -> fail msg
> > +    Nothing -> fail "No answer from the Confd server"
> > +
> > +-- | Get the list of instances on the given node along with their disks
> > +-- The server address and the server port parameters are mainly intended
> > +-- for testing purposes. If they are Nothing, the default values will be 
> > used.
> > +getInstanceDisks
> > +  :: String
> > +  -> Maybe String
> > +  -> Maybe Int
> > +  -> BT.ResultT String IO [(Ganeti.Objects.Instance, 
> > [Ganeti.Objects.Disk])]
> > +getInstanceDisks node srvAddr srvPort =
> > +  getInstances node srvAddr srvPort >>=
> > +    return . uncurry (++) >>=
> > +    mapM (\i -> getDisks i srvAddr srvPort >>= return . (,) i)
> > diff --git a/src/Ganeti/Confd/Server.hs b/src/Ganeti/Confd/Server.hs
> > index f51b9fb..2b9efaf 100644
> > --- a/src/Ganeti/Confd/Server.hs
> > +++ b/src/Ganeti/Confd/Server.hs
> > @@ -221,6 +221,17 @@ buildResponse cdata req@(ConfdRequest { confdRqType = 
> > ReqNodeInstances }) = do
> >        instances = getNodeInstances cfg node_uuid
> >    return (ReplyStatusOk, J.showJSON instances)
> >  
> > +-- | Return the list of disks for an instance given the instance uuid.
> > +buildResponse cdata req@(ConfdRequest { confdRqType = ReqInstanceDisks }) 
> > = do
> > +  let cfg = fst cdata
> > +  inst_uuid <-
> > +    case confdRqQuery req of
> > +      PlainQuery str -> return str
> > +      _ -> fail $ "Invalid query type " ++ show (confdRqQuery req)
> > +  case getInstDisksByName cfg inst_uuid of
> > +    Ok disks -> return (ReplyStatusOk, J.showJSON disks)
> > +    Bad e -> fail $ "Could not retrieve disks: " ++ show e
> > +
> >  -- | Creates a ConfdReply from a given answer.
> >  serializeResponse :: Result StatusAnswer -> ConfdReply
> >  serializeResponse r =
> > diff --git a/src/Ganeti/Confd/Types.hs b/src/Ganeti/Confd/Types.hs
> > index 03aded6..acf4b26 100644
> > --- a/src/Ganeti/Confd/Types.hs
> > +++ b/src/Ganeti/Confd/Types.hs
> > @@ -63,6 +63,7 @@ $(declareILADT "ConfdRequestType"
> >    , ("ReqInstIpsList",      6)
> >    , ("ReqNodeDrbd",         7)
> >    , ("ReqNodeInstances",    8)
> > +  , ("ReqInstanceDisks",    9)
> >    ])
> >  $(makeJSONInstance ''ConfdRequestType)
> >  
> > diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs
> > index f9c3ef1..67d6609 100644
> > --- a/src/Ganeti/Constants.hs
> > +++ b/src/Ganeti/Constants.hs
> > @@ -4056,6 +4056,9 @@ confdReqNodeDrbd = Types.confdRequestTypeToRaw 
> > ReqNodeDrbd
> >  confdReqNodeInstances :: Int
> >  confdReqNodeInstances = Types.confdRequestTypeToRaw ReqNodeInstances
> >  
> > +confdReqInstanceDisks :: Int
> > +confdReqInstanceDisks = Types.confdRequestTypeToRaw ReqInstanceDisks
> > +
> >  confdReqs :: FrozenSet Int
> >  confdReqs =
> >    ConstantUtils.mkSet .
> > diff --git a/src/Ganeti/DataCollectors/InstStatus.hs 
> > b/src/Ganeti/DataCollectors/InstStatus.hs
> > index ed898d9..936c5b3 100644
> > --- a/src/Ganeti/DataCollectors/InstStatus.hs
> > +++ b/src/Ganeti/DataCollectors/InstStatus.hs
> > @@ -180,7 +180,7 @@ computeGlobalStatus instStatusList =
> >  buildInstStatusReport :: Maybe String -> Maybe Int -> IO DCReport
> >  buildInstStatusReport srvAddr srvPort = do
> >    node <- getHostName
> > -  answer <- getInstances node srvAddr srvPort
> > +  answer <- runResultT $ getInstances node srvAddr srvPort
> >    inst <- exitIfBad "Can't get instance info from ConfD" answer
> >    d <- getInferredDomInfo
> >    reportData <-
> > diff --git a/src/Ganeti/DataCollectors/Lv.hs 
> > b/src/Ganeti/DataCollectors/Lv.hs
> > index d296b0f..9f53660 100644
> > --- a/src/Ganeti/DataCollectors/Lv.hs
> > +++ b/src/Ganeti/DataCollectors/Lv.hs
> > @@ -122,20 +122,21 @@ getLvInfo inputFile = do
> >          ++ show contexts ++ "\n" ++ errorMessage
> >      A.Done _ lvinfoD -> return lvinfoD
> >  
> > --- | Get the list of instances on the current node (both primary and 
> > secondary)
> > +-- | Get the list of instances on the current node along with their disks,
> >  -- either from a provided file or by querying Confd.
> > -getInstanceList :: Options -> IO ([Instance], [Instance])
> > -getInstanceList opts = do
> > +getInstDiskList :: Options -> IO [(Instance, [Disk])]
> > +getInstDiskList opts = do
> >    let srvAddr = optConfdAddr opts
> >        srvPort = optConfdPort opts
> >        instFile = optInstances opts
> > -      fromConfdUnchecked :: IO (BT.Result ([Instance], [Instance]))
> > -      fromConfdUnchecked = getHostName >>= \n -> getInstances n srvAddr 
> > srvPort
> > -      fromConfd :: IO (BT.Result ([Instance], [Instance]))
> > +      fromConfdUnchecked :: IO (BT.Result [(Instance, [Disk])])
> > +      fromConfdUnchecked = getHostName >>=
> > +        \n -> BT.runResultT $ getInstanceDisks n srvAddr srvPort
> > +      fromConfd :: IO (BT.Result [(Instance, [Disk])])
> >        fromConfd =
> >          liftM (either (BT.Bad . show) id) (E.try fromConfdUnchecked :: 
> > -          IO (Either IOError (BT.Result ([Instance], [Instance]))))
> > -      fromFile :: FilePath -> IO (BT.Result ([Instance], [Instance]))
> > +          IO (Either IOError (BT.Result [(Instance, [Disk])])))
> > +      fromFile :: FilePath -> IO (BT.Result [(Instance, [Disk])])
> >        fromFile inputFile = do
> >          contents <-
> >            ((E.try $ readFile inputFile) :: IO (Either IOError String))
> 
> Move these functions in to a 'where' clause.

Interdiff:

diff --git a/src/Ganeti/DataCollectors/Lv.hs b/src/Ganeti/DataCollectors/Lv.hs
index 9f53660..852e70c 100644
--- a/src/Ganeti/DataCollectors/Lv.hs
+++ b/src/Ganeti/DataCollectors/Lv.hs
@@ -126,24 +126,24 @@ getLvInfo inputFile = do
 -- either from a provided file or by querying Confd.
 getInstDiskList :: Options -> IO [(Instance, [Disk])]
 getInstDiskList opts = do
-  let srvAddr = optConfdAddr opts
-      srvPort = optConfdPort opts
-      instFile = optInstances opts
-      fromConfdUnchecked :: IO (BT.Result [(Instance, [Disk])])
-      fromConfdUnchecked = getHostName >>=
-        \n -> BT.runResultT $ getInstanceDisks n srvAddr srvPort
-      fromConfd :: IO (BT.Result [(Instance, [Disk])])
-      fromConfd =
-        liftM (either (BT.Bad . show) id) (E.try fromConfdUnchecked :: 
-          IO (Either IOError (BT.Result [(Instance, [Disk])])))
-      fromFile :: FilePath -> IO (BT.Result [(Instance, [Disk])])
-      fromFile inputFile = do
-        contents <-
-          ((E.try $ readFile inputFile) :: IO (Either IOError String))
-            >>= exitIfBad "reading from file" . either (BT.Bad . show) BT.Ok
-        return . fromJResult "Not a list of instances" $ J.decode contents
   instances <- maybe fromConfd fromFile instFile
   exitIfBad "Unable to obtain the list of instances" instances
+  where srvAddr = optConfdAddr opts
+        srvPort = optConfdPort opts
+        instFile = optInstances opts
+        fromConfdUnchecked :: IO (BT.Result [(Instance, [Disk])])
+        fromConfdUnchecked = getHostName >>=
+          \n -> BT.runResultT $ getInstanceDisks n srvAddr srvPort
+        fromConfd :: IO (BT.Result [(Instance, [Disk])])
+        fromConfd =
+          liftM (either (BT.Bad . show) id) (E.try fromConfdUnchecked ::
+            IO (Either IOError (BT.Result [(Instance, [Disk])])))
+        fromFile :: FilePath -> IO (BT.Result [(Instance, [Disk])])
+        fromFile inputFile = do
+          contents <-
+            ((E.try $ readFile inputFile) :: IO (Either IOError String))
+              >>= exitIfBad "reading from file" . either (BT.Bad . show) BT.Ok
+          return . fromJResult "Not a list of instances" $ J.decode contents
 
 -- | Adds the name of the instance to the information about one logical volume.
 addInstNameToOneLv :: [(Instance, [Disk])] -> LVInfo -> LVInfo


Thanks,
Ilias

> Rest LGTM.
> 
> Thanks,
> Jose
> 
> > @@ -145,28 +146,28 @@ getInstanceList opts = do
> >    exitIfBad "Unable to obtain the list of instances" instances
> >  
> >  -- | Adds the name of the instance to the information about one logical 
> > volume.
> > -addInstNameToOneLv :: [Instance] -> LVInfo -> LVInfo
> > -addInstNameToOneLv instances lvInfo =
> > -  let vg_name = lviVgName lvInfo
> > -      lv_name = lviName lvInfo
> > -      instanceHasDisk = any (includesLogicalId vg_name lv_name) . instDisks
> > -      rightInstance = find instanceHasDisk instances
> > -    in 
> > -      case rightInstance of
> > -        Nothing -> lvInfo
> > -        Just i -> lvInfo { lviInstance = Just $ instName i }
> > +addInstNameToOneLv :: [(Instance, [Disk])] -> LVInfo -> LVInfo
> > +addInstNameToOneLv instDiskList lvInfo =
> > + let vg_name = lviVgName lvInfo
> > +     lv_name = lviName lvInfo
> > +     instanceHasDisk = any (includesLogicalId vg_name lv_name) . snd
> > +     rightInstance = find instanceHasDisk instDiskList
> > +   in
> > +     case rightInstance of
> > +       Nothing -> lvInfo
> > +       Just (i, _) -> lvInfo { lviInstance = Just $ instName i }
> >  
> >  -- | Adds the name of the instance to the information about logical 
> > volumes.
> > -addInstNameToLv :: [Instance] -> [LVInfo] -> [LVInfo]
> > -addInstNameToLv instances = map (addInstNameToOneLv instances)
> > +addInstNameToLv :: [(Instance, [Disk])] -> [LVInfo] -> [LVInfo]
> > +addInstNameToLv instDisksList = map (addInstNameToOneLv instDisksList)
> >  
> >  -- | This function computes the JSON representation of the LV status.
> >  buildJsonReport :: Options -> IO J.JSValue
> >  buildJsonReport opts = do
> >    let inputFile = optInputFile opts
> >    lvInfo <- getLvInfo inputFile
> > -  (prim, sec) <- getInstanceList opts
> > -  return . J.showJSON $ addInstNameToLv (prim ++ sec) lvInfo
> > +  instDiskList <- getInstDiskList opts
> > +  return . J.showJSON $ addInstNameToLv instDiskList lvInfo
> >  
> >  -- | This function computes the DCReport for the logical volumes.
> >  buildDCReport :: Options -> IO DCReport
> > diff --git a/test/data/instance-disks.txt b/test/data/instance-disks.txt
> > new file mode 100644
> > index 0000000..67568c2
> > --- /dev/null
> > +++ b/test/data/instance-disks.txt
> > @@ -0,0 +1,152 @@
> > +[[{"admin_state": "up",
> > +   "beparams": {},
> > +   "ctime": 1372838883.9710441,
> > +   "disk_template": "drbd",
> > +   "disks": [
> > +     {
> > +       "children": [
> > +         {
> > +           "dev_type": "plain",
> > +           "logical_id": [
> > +             "xenvg",
> > +             "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_data"
> > +           ],
> > +           "params": {},
> > +           "physical_id": [
> > +             "xenvg",
> > +             "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_data"
> > +           ],
> > +           "size": 1024,
> > +           "uuid": "eaff6322-1bfb-4d59-b306-4535730917cc",
> > +           "serial_no": 1,
> > +           "ctime": 1372838946.2599809,
> > +           "mtime": 1372838946.2599809
> > +         },
> > +         {
> > +           "dev_type": "plain",
> > +           "logical_id": [
> > +             "xenvg",
> > +             "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_meta"
> > +           ],
> > +           "params": {},
> > +           "physical_id": [
> > +             "xenvg",
> > +             "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_meta"
> > +           ],
> > +           "size": 128,
> > +           "uuid": "bf512e95-2a49-4cb3-8d1f-30a503f6bf1b",
> > +           "serial_no": 1,
> > +           "ctime": 1372838946.2599809,
> > +           "mtime": 1372838946.2599809
> > +         }
> > +       ],
> > +       "dev_type": "drbd",
> > +       "iv_name": "disk/0",
> > +       "logical_id": [
> > +         "60e687a0-21fc-4577-997f-ccd08925fa65",
> > +         "c739c7f3-79d8-4e20-ac68-662e16577d2e",
> > +         11000,
> > +         0,
> > +         0,
> > +         "9bdb15fb7ab6bb4610a313d654ed4d0d2433713e"
> > +       ],
> > +       "mode": "rw",
> > +       "params": {},
> > +       "physical_id": [
> > +         "172.16.241.3",
> > +         11000,
> > +         "172.16.241.2",
> > +         11000,
> > +         0,
> > +         "9bdb15fb7ab6bb4610a313d654ed4d0d2433713e"
> > +       ],
> > +       "size": 1024,
> > +       "uuid": "5d61e205-bf89-4ba8-a319-589b7bb7419e",
> > +       "serial_no": 1,
> > +       "ctime": 1372838946.2599809,
> > +       "mtime": 1372838946.2599809
> > +     }
> > +   ],
> > +   "disks_active": true,
> > +   "hvparams": {},
> > +   "hypervisor": "xen-pvm",
> > +   "mtime": 1372838946.2599809,
> > +   "name": "instance1.example.com",
> > +   "nics": [
> > +     {
> > +       "mac": "aa:00:00:1d:ba:63",
> > +       "nicparams": {},
> > +       "uuid": "7b7f4249-fab8-4b3f-b446-d7a2aff37644"
> > +     }
> > +   ],
> > +   "os": "busybox",
> > +   "osparams": {},
> > +   "osparams_private": {},
> > +   "primary_node": "60e687a0-21fc-4577-997f-ccd08925fa65",
> > +   "serial_no": 2,
> > +   "uuid": "aec390cb-5eae-44e6-bcc2-ec14d31347f0"
> > + },
> > + [{
> > +   "children": [
> > +     {
> > +       "dev_type": "plain",
> > +       "logical_id": [
> > +         "xenvg",
> > +         "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_data"
> > +         ],
> > +       "params": {},
> > +       "physical_id": [
> > +         "xenvg",
> > +         "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_data"
> > +         ],
> > +       "size": 1024,
> > +       "uuid": "eaff6322-1bfb-4d59-b306-4535730917cc",
> > +       "serial_no": 1,
> > +       "ctime": 1372838946.2599809,
> > +       "mtime": 1372838946.2599809
> > +       },
> > +     {
> > +       "dev_type": "plain",
> > +       "logical_id": [
> > +         "xenvg",
> > +         "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_meta"
> > +         ],
> > +       "params": {},
> > +       "physical_id": [
> > +         "xenvg",
> > +         "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_meta"
> > +         ],
> > +       "size": 128,
> > +       "uuid": "bf512e95-2a49-4cb3-8d1f-30a503f6bf1b",
> > +       "serial_no": 1,
> > +       "mtime": 1372838946.2599809,
> > +       "ctime": 1372838946.2599809
> > +       }
> > +     ],
> > +   "dev_type": "drbd",
> > +   "iv_name": "disk/0",
> > +   "logical_id": [
> > +     "60e687a0-21fc-4577-997f-ccd08925fa65",
> > +     "c739c7f3-79d8-4e20-ac68-662e16577d2e",
> > +     11000,
> > +     0,
> > +     0,
> > +     "9bdb15fb7ab6bb4610a313d654ed4d0d2433713e"
> > +     ],
> > +   "mode": "rw",
> > +   "params": {},
> > +   "physical_id": [
> > +     "172.16.241.3",
> > +     11000,
> > +     "172.16.241.2",
> > +     11000,
> > +     0,
> > +     "9bdb15fb7ab6bb4610a313d654ed4d0d2433713e"
> > +     ],
> > +   "size": 1024,
> > +   "uuid": "5d61e205-bf89-4ba8-a319-589b7bb7419e",
> > +   "serial_no": 1,
> > +   "ctime": 1372838946.2599809,
> > +   "mtime": 1372838946.2599809
> > +  }]]
> > +]
> > diff --git a/test/data/instance-prim-sec.txt 
> > b/test/data/instance-prim-sec.txt
> > deleted file mode 100644
> > index b27fd5c..0000000
> > --- a/test/data/instance-prim-sec.txt
> > +++ /dev/null
> > @@ -1,88 +0,0 @@
> > -[[{"admin_state": "up",
> > -   "beparams": {},
> > -   "ctime": 1372838883.9710441,
> > -   "disk_template": "drbd",
> > -   "disks": [
> > -     {
> > -       "children": [
> > -         {
> > -           "dev_type": "plain",
> > -           "logical_id": [
> > -             "xenvg",
> > -             "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_data"
> > -           ],
> > -           "params": {},
> > -           "physical_id": [
> > -             "xenvg",
> > -             "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_data"
> > -           ],
> > -           "size": 1024,
> > -           "uuid": "eaff6322-1bfb-4d59-b306-4535730917cc",
> > -           "serial_no": 1,
> > -           "ctime": 1372838946.2599809,
> > -           "mtime": 1372838946.2599809
> > -         },
> > -         {
> > -           "dev_type": "plain",
> > -           "logical_id": [
> > -             "xenvg",
> > -             "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_meta"
> > -           ],
> > -           "params": {},
> > -           "physical_id": [
> > -             "xenvg",
> > -             "df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_meta"
> > -           ],
> > -           "size": 128,
> > -           "uuid": "bf512e95-2a49-4cb3-8d1f-30a503f6bf1b",
> > -           "serial_no": 1,
> > -           "ctime": 1372838946.2599809,
> > -           "mtime": 1372838946.2599809
> > -         }
> > -       ],
> > -       "dev_type": "drbd",
> > -       "iv_name": "disk/0",
> > -       "logical_id": [
> > -         "60e687a0-21fc-4577-997f-ccd08925fa65",
> > -         "c739c7f3-79d8-4e20-ac68-662e16577d2e",
> > -         11000,
> > -         0,
> > -         0,
> > -         "9bdb15fb7ab6bb4610a313d654ed4d0d2433713e"
> > -       ],
> > -       "mode": "rw",
> > -       "params": {},
> > -       "physical_id": [
> > -         "172.16.241.3",
> > -         11000,
> > -         "172.16.241.2",
> > -         11000,
> > -         0,
> > -         "9bdb15fb7ab6bb4610a313d654ed4d0d2433713e"
> > -       ],
> > -       "size": 1024,
> > -       "uuid": "5d61e205-bf89-4ba8-a319-589b7bb7419e",
> > -       "serial_no": 1,
> > -       "ctime": 1372838946.2599809,
> > -       "mtime": 1372838946.2599809
> > -     }
> > -   ],
> > -   "disks_active": true,
> > -   "hvparams": {},
> > -   "hypervisor": "xen-pvm",
> > -   "mtime": 1372838946.2599809,
> > -   "name": "instance1.example.com",
> > -   "nics": [
> > -     {
> > -       "mac": "aa:00:00:1d:ba:63",
> > -       "nicparams": {},
> > -       "uuid": "7b7f4249-fab8-4b3f-b446-d7a2aff37644"
> > -     }
> > -   ],
> > -   "os": "busybox",
> > -   "osparams": {},
> > -   "osparams_private": {},
> > -   "primary_node": "60e687a0-21fc-4577-997f-ccd08925fa65",
> > -   "serial_no": 2,
> > -   "uuid": "aec390cb-5eae-44e6-bcc2-ec14d31347f0"
> > - }], []]
> > diff --git a/test/hs/shelltests/htools-mon-collector.test 
> > b/test/hs/shelltests/htools-mon-collector.test
> > index 6fcecbd..f4d120e 100644
> > --- a/test/hs/shelltests/htools-mon-collector.test
> > +++ b/test/hs/shelltests/htools-mon-collector.test
> > @@ -104,6 +104,6 @@ Failed reading: versionInfo
> >  >>>= !0
> >  
> >  # Test that lv parses correctly a standard test file
> > -./test/hs/hpc-mon-collector lv -f $PYTESTDATA_DIR/lvs_lv.txt -i 
> > $PYTESTDATA_DIR/instance-prim-sec.txt
> > +./test/hs/hpc-mon-collector lv -f $PYTESTDATA_DIR/lvs_lv.txt -i 
> > $PYTESTDATA_DIR/instance-disks.txt
> >  >>>/"instance":"instance1.example.com"/
> >  >>>= 0
> > -- 
> > 1.9.1
> > 

Attachment: signature.asc
Description: Digital signature

Reply via email to