root / Ganeti / HTools / Instance.hs @ 234d8af0
History | View | Annotate | Download (2.2 kB)
1 | e4f08c46 | Iustin Pop | {-| Module describing an instance. |
---|---|---|---|
2 | e4f08c46 | Iustin Pop | |
3 | e4f08c46 | Iustin Pop | The instance data type holds very few fields, the algorithm |
4 | e4f08c46 | Iustin Pop | intelligence is in the "Node" and "Cluster" modules. |
5 | e4f08c46 | Iustin Pop | |
6 | e4f08c46 | Iustin Pop | -} |
7 | 669d7e3d | Iustin Pop | module Ganeti.HTools.Instance where |
8 | e4f08c46 | Iustin Pop | |
9 | f82f1f39 | Iustin Pop | data Instance = Instance { mem :: Int -- ^ memory of the instance |
10 | f82f1f39 | Iustin Pop | , dsk :: Int -- ^ disk size of instance |
11 | f82f1f39 | Iustin Pop | , running :: Bool -- ^ whether the instance |
12 | f82f1f39 | Iustin Pop | -- is running |
13 | f82f1f39 | Iustin Pop | , run_st :: String -- ^ original (text) run status |
14 | f82f1f39 | Iustin Pop | , pnode :: Int -- ^ original primary node |
15 | f82f1f39 | Iustin Pop | , snode :: Int -- ^ original secondary node |
16 | f82f1f39 | Iustin Pop | , idx :: Int -- ^ internal index for |
17 | f82f1f39 | Iustin Pop | -- book-keeping |
18 | e4f08c46 | Iustin Pop | } deriving (Show) |
19 | e4f08c46 | Iustin Pop | |
20 | f82f1f39 | Iustin Pop | create :: Int -> Int -> String -> Int -> Int -> Instance |
21 | f82f1f39 | Iustin Pop | create mem_init dsk_init run_init pn sn = |
22 | 47a8bade | Iustin Pop | Instance { |
23 | 47a8bade | Iustin Pop | mem = mem_init, |
24 | 47a8bade | Iustin Pop | dsk = dsk_init, |
25 | f82f1f39 | Iustin Pop | running = case run_init of |
26 | f82f1f39 | Iustin Pop | "running" -> True |
27 | f82f1f39 | Iustin Pop | "ERROR_up" -> True |
28 | f82f1f39 | Iustin Pop | _ -> False, |
29 | f82f1f39 | Iustin Pop | run_st = run_init, |
30 | 47a8bade | Iustin Pop | pnode = pn, |
31 | 47a8bade | Iustin Pop | snode = sn, |
32 | 47a8bade | Iustin Pop | idx = -1 |
33 | 47a8bade | Iustin Pop | } |
34 | e4f08c46 | Iustin Pop | |
35 | e4f08c46 | Iustin Pop | -- | Changes the primary node of the instance. |
36 | fd934a28 | Iustin Pop | setPri :: Instance -- ^ the original instance |
37 | fd934a28 | Iustin Pop | -> Int -- ^ the new primary node |
38 | e4f08c46 | Iustin Pop | -> Instance -- ^ the modified instance |
39 | e4f08c46 | Iustin Pop | setPri t p = t { pnode = p } |
40 | e4f08c46 | Iustin Pop | |
41 | e4f08c46 | Iustin Pop | -- | Changes the secondary node of the instance. |
42 | fd934a28 | Iustin Pop | setSec :: Instance -- ^ the original instance |
43 | fd934a28 | Iustin Pop | -> Int -- ^ the new secondary node |
44 | e4f08c46 | Iustin Pop | -> Instance -- ^ the modified instance |
45 | e4f08c46 | Iustin Pop | setSec t s = t { snode = s } |
46 | e4f08c46 | Iustin Pop | |
47 | e4f08c46 | Iustin Pop | -- | Changes both nodes of the instance. |
48 | fd934a28 | Iustin Pop | setBoth :: Instance -- ^ the original instance |
49 | fd934a28 | Iustin Pop | -> Int -- ^ new primary node index |
50 | fd934a28 | Iustin Pop | -> Int -- ^ new secondary node index |
51 | e4f08c46 | Iustin Pop | -> Instance -- ^ the modified instance |
52 | e4f08c46 | Iustin Pop | setBoth t p s = t { pnode = p, snode = s } |
53 | e4f08c46 | Iustin Pop | |
54 | e4f08c46 | Iustin Pop | -- | Changes the index. |
55 | e4f08c46 | Iustin Pop | -- This is used only during the building of the data structures. |
56 | fd934a28 | Iustin Pop | setIdx :: Instance -- ^ the original instance |
57 | fd934a28 | Iustin Pop | -> Int -- ^ new index |
58 | e4f08c46 | Iustin Pop | -> Instance -- ^ the modified instance |
59 | e4f08c46 | Iustin Pop | setIdx t i = t { idx = i } |