https://gist.github.com/carlohamalainen/4982764
Example input:
+--------------------------------------+------------------------+--------+----------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+------------------------+--------+----------------------------+
| 10000000-0000-0000-0000-000000000001 | vm 1 | ACTIVE | cell1=192.168.1.1 |
| 10000000-0000-0000-0000-000000000002 | vm 2 | ACTIVE | cell2=192.168.1.2 |
| 10000000-0000-0000-0000-000000000003 | vm 3 | ACTIVE | cell2=192.168.1.3 |
| 10000000-0000-0000-0000-000000000004 | vm 4 | ACTIVE | cell1=192.168.1.4 |
| 10000000-0000-0000-0000-000000000005 | vm 5 | ACTIVE | cell1=192.168.1.5 |
| 10000000-0000-0000-0000-000000000006 | vm 6 | BUILD | cell1=192.168.1.6 |
| 10000000-0000-0000-0000-000000000007 | vm 7 | BUILD | cell1=192.168.1.7 |
| 10000000-0000-0000-0000-000000000008 | vm 8 | ACTIVE | cell2=192.168.1.8 |
| 10000000-0000-0000-0000-000000000009 | vm 9 | ACTIVE | cell1=192.168.1.9 |
| 10000000-0000-0000-0000-000000000010 | vm 10 | ACTIVE | cell1=192.168.1.10 |
| 10000000-0000-0000-0000-000000000011 | vm 11 | ACTIVE | cell2=192.168.1.11 |
| 10000000-0000-0000-0000-000000000012 | vm 12 | ACTIVE | cell2=192.168.1.12 |
| 10000000-0000-0000-0000-000000000013 | vm 13 | ACTIVE | cell1=192.168.1.13 |
| 10000000-0000-0000-0000-000000000014 | vm 14 | ACTIVE | cell1=192.168.1.14 |
| 10000000-0000-0000-0000-000000000015 | vm 15 | ACTIVE | cell1=192.168.1.15 |
| 10000000-0000-0000-0000-000000000016 | vm 16 | ACTIVE | cell2=192.168.1.16 |
| 10000000-0000-0000-0000-000000000017 | vm 17 | ACTIVE | cell1=192.168.1.17 |
| 10000000-0000-0000-0000-000000000018 | vm 18 | ACTIVE | cell2=192.168.1.18 |
| 10000000-0000-0000-0000-000000000019 | vm 19 | ACTIVE | cell2=192.168.1.19 |
| 10000000-0000-0000-0000-000000000020 | vm 20 | ACTIVE | cell1=192.168.1.20 |
| 10000000-0000-0000-0000-000000000021 | vm 21 | ACTIVE | cell2=192.168.1.21 |
| 10000000-0000-0000-0000-000000000022 | vm 22 | BUILD | |
| 10000000-0000-0000-0000-000000000023 | vm 23 | ACTIVE | cell1=192.168.1.22 |
| 10000000-0000-0000-0000-000000000024 | vm 24 | DERP | cell1=192.168.1.23 |
+--------------------------------------+------------------------+--------+----------------------------+
Example run:
$ ghc --make ReadNovaList.hs && cat nova_list_output.txt | ./ReadNovaList
("10000000-0000-0000-0000-000000000001","vm 1",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.1"}))
("10000000-0000-0000-0000-000000000002","vm 2",Active,Just (Network {networkCell = "cell2", networkIP = "192.168.1.2"}))
("10000000-0000-0000-0000-000000000003","vm 3",Active,Just (Network {networkCell = "cell2", networkIP = "192.168.1.3"}))
("10000000-0000-0000-0000-000000000004","vm 4",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.4"}))
("10000000-0000-0000-0000-000000000005","vm 5",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.5"}))
("10000000-0000-0000-0000-000000000006","vm 6",Building,Just (Network {networkCell = "cell1", networkIP = "192.168.1.6"}))
("10000000-0000-0000-0000-000000000007","vm 7",Building,Just (Network {networkCell = "cell1", networkIP = "192.168.1.7"}))
("10000000-0000-0000-0000-000000000008","vm 8",Active,Just (Network {networkCell = "cell2", networkIP = "192.168.1.8"}))
("10000000-0000-0000-0000-000000000009","vm 9",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.9"}))
("10000000-0000-0000-0000-000000000010","vm 10",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.10"}))
("10000000-0000-0000-0000-000000000011","vm 11",Active,Just (Network {networkCell = "cell2", networkIP = "192.168.1.11"}))
("10000000-0000-0000-0000-000000000012","vm 12",Active,Just (Network {networkCell = "cell2", networkIP = "192.168.1.12"}))
("10000000-0000-0000-0000-000000000013","vm 13",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.13"}))
("10000000-0000-0000-0000-000000000014","vm 14",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.14"}))
("10000000-0000-0000-0000-000000000015","vm 15",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.15"}))
("10000000-0000-0000-0000-000000000016","vm 16",Active,Just (Network {networkCell = "cell2", networkIP = "192.168.1.16"}))
("10000000-0000-0000-0000-000000000017","vm 17",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.17"}))
("10000000-0000-0000-0000-000000000018","vm 18",Active,Just (Network {networkCell = "cell2", networkIP = "192.168.1.18"}))
("10000000-0000-0000-0000-000000000019","vm 19",Active,Just (Network {networkCell = "cell2", networkIP = "192.168.1.19"}))
("10000000-0000-0000-0000-000000000020","vm 20",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.20"}))
("10000000-0000-0000-0000-000000000021","vm 21",Active,Just (Network {networkCell = "cell2", networkIP = "192.168.1.21"}))
("10000000-0000-0000-0000-000000000022","vm 22",Building,Nothing)
("10000000-0000-0000-0000-000000000023","vm 23",Active,Just (Network {networkCell = "cell1", networkIP = "192.168.1.22"}))
("10000000-0000-0000-0000-000000000024","vm 24",StatusError "DERP",Just (Network {networkCell = "cell1", networkIP = "192.168.1.23"}))