Revision d4de2ea8

b/src/Ganeti/DataCollectors/InstStatus.hs
42 42
import Ganeti.DataCollectors.CLI
43 43
import Ganeti.DataCollectors.InstStatusTypes
44 44
import Ganeti.Hypervisor.Xen
45
import Ganeti.Hypervisor.Xen.Types
45 46
import Ganeti.Objects
46 47
import Ganeti.Utils
47 48

  
......
89 90
      currUInfo = idNum >>= (`Map.lookup` uptimes)
90 91
      uptime = fmap uInfoUptime currUInfo
91 92
      adminState = instAdminState inst
93
      actualState =
94
        if adminState == AdminDown && isNothing currDomain
95
          then ActualShutdown
96
          else case currDomain of
97
            (Just dom@(Domain _ _ _ _ (Just isHung))) ->
98
              if isHung
99
                then ActualHung
100
                else domState dom
101
            _ -> ActualUnknown
92 102
  return $
93 103
    InstStatus
94 104
      name
95 105
      (instUuid inst)
96 106
      adminState
107
      actualState
97 108
      uptime
98 109
      (instMtime inst)
99 110

  
b/src/Ganeti/DataCollectors/InstStatusTypes.hs
29 29
  ) where
30 30

  
31 31

  
32
import Ganeti.Hypervisor.Xen.Types
32 33
import Ganeti.Objects
33 34
import Ganeti.THH
34 35

  
......
37 38
  [ simpleField "name"         [t| String |]
38 39
  , simpleField "uuid"         [t| String |]
39 40
  , simpleField "adminState"   [t| AdminState |]
41
  , simpleField "actualState"  [t| ActualState |]
40 42
  , optionalNullSerField $
41 43
    simpleField "uptime"       [t| String |]
42 44
  , simpleField "mtime"        [t| Double |]

Also available in: Unified diff