294
294
"series": "quantal",
295
"hardware": "arch=amd64 cpu-cores=1 mem=1024M root-disk=8192M",
295
"hardware": "arch=amd64 cores=1 mem=1024M root-disk=8192M",
297
297
unexposedService = dummyCharm(M{
298
298
"application-status": M{
299
"current": "unknown",
300
"message": "Waiting for agent initialization to finish",
299
"current": "waiting",
300
"message": "waiting for machine",
301
301
"since": "01 Apr 15 01:23+10:00",
304
304
exposedService = dummyCharm(M{
305
305
"application-status": M{
306
"current": "unknown",
307
"message": "Waiting for agent initialization to finish",
306
"current": "waiting",
307
"message": "waiting for machine",
308
308
"since": "01 Apr 15 01:23+10:00",
481
481
"instance without addresses",
482
482
addMachine{machineId: "0", cons: machineCons, job: state.JobManageModel},
483
483
startAliveMachine{"0"},
484
setMachineStatus{"0", status.StatusStarted, ""},
484
setMachineStatus{"0", status.Started, ""},
486
486
"machine 0 has no dns-name",
564
564
addMachine{machineId: "0", job: state.JobManageModel},
565
565
setAddresses{"0", network.NewAddresses("controller-0.dns")},
566
566
startAliveMachine{"0"},
567
setMachineStatus{"0", status.StatusStarted, ""},
567
setMachineStatus{"0", status.Started, ""},
568
568
addCharm{"dummy"},
569
569
addService{name: "dummy-application", charm: "dummy"},
570
570
addService{name: "exposed-application", charm: "dummy"},
602
602
addMachine{machineId: "1", job: state.JobHostUnits},
603
603
setAddresses{"1", network.NewAddresses("controller-1.dns")},
604
604
startAliveMachine{"1"},
605
setMachineStatus{"1", status.StatusStarted, ""},
605
setMachineStatus{"1", status.Started, ""},
606
606
addMachine{machineId: "2", job: state.JobHostUnits},
607
607
setAddresses{"2", network.NewAddresses("controller-2.dns")},
608
608
startAliveMachine{"2"},
609
setMachineStatus{"2", status.StatusStarted, ""},
609
setMachineStatus{"2", status.Started, ""},
611
611
"two more machines added",
627
627
addAliveUnit{"dummy-application", "1"},
628
628
addAliveUnit{"exposed-application", "2"},
629
setAgentStatus{"exposed-application/0", status.StatusError, "You Require More Vespene Gas", nil},
629
setAgentStatus{"exposed-application/0", status.Error, "You Require More Vespene Gas", nil},
630
630
// Open multiple ports with different protocols,
631
631
// ensure they're sorted on protocol, then number.
632
632
openUnitPort{"exposed-application/0", "udp", 10},
636
636
// Simulate some status with no info, while the agent is down.
637
637
// Status used to be down, we no longer support said state.
638
638
// now is one of: pending, started, error.
639
setUnitStatus{"dummy-application/0", status.StatusTerminated, "", nil},
640
setAgentStatus{"dummy-application/0", status.StatusIdle, "", nil},
639
setUnitStatus{"dummy-application/0", status.Terminated, "", nil},
640
setAgentStatus{"dummy-application/0", status.Idle, "", nil},
643
643
"add two units, one alive (in error state), one started",
704
704
startMachine{"3"},
705
705
// Simulate some status with info, while the agent is down.
706
706
setAddresses{"3", network.NewAddresses("controller-3.dns")},
707
setMachineStatus{"3", status.StatusStopped, "Really?"},
707
setMachineStatus{"3", status.Stopped, "Really?"},
708
708
addMachine{machineId: "4", job: state.JobHostUnits},
709
709
setAddresses{"4", network.NewAddresses("controller-4.dns")},
710
710
startAliveMachine{"4"},
711
setMachineStatus{"4", status.StatusError, "Beware the red toys"},
711
setMachineStatus{"4", status.Error, "Beware the red toys"},
712
712
ensureDyingUnit{"dummy-application/0"},
713
713
addMachine{machineId: "5", job: state.JobHostUnits},
714
714
ensureDeadMachine{"5"},
1021
1021
addMachine{machineId: "0", job: state.JobManageModel},
1022
1022
setAddresses{"0", network.NewAddresses("controller-0.dns")},
1023
1023
startAliveMachine{"0"},
1024
setMachineStatus{"0", status.StatusStarted, ""},
1024
setMachineStatus{"0", status.Started, ""},
1026
1026
addMachine{machineId: "1", job: state.JobHostUnits},
1027
1027
setAddresses{"1", network.NewAddresses("controller-1.dns")},
1028
1028
startAliveMachine{"1"},
1029
setMachineStatus{"1", status.StatusStarted, ""},
1029
setMachineStatus{"1", status.Started, ""},
1031
1031
addCharm{"wordpress"},
1032
1032
addService{name: "wordpress", charm: "wordpress"},
1081
1081
"server": L{"wordpress"},
1083
1083
"application-status": M{
1084
"current": "unknown",
1085
"message": "Waiting for agent initialization to finish",
1084
"current": "waiting",
1085
"message": "waiting for machine",
1086
1086
"since": "01 Apr 15 01:23+10:00",
1090
1090
"machine": "1",
1091
1091
"workload-status": M{
1092
"current": "unknown",
1093
"message": "Waiting for agent initialization to finish",
1092
"current": "waiting",
1093
"message": "waiting for machine",
1094
1094
"since": "01 Apr 15 01:23+10:00",
1096
1096
"juju-status": M{
1110
1110
addMachine{machineId: "0", job: state.JobManageModel},
1111
1111
setAddresses{"0", network.NewAddresses("controller-0.dns")},
1112
1112
startAliveMachine{"0"},
1113
setMachineStatus{"0", status.StatusStarted, ""},
1113
setMachineStatus{"0", status.Started, ""},
1115
1115
addMachine{machineId: "1", job: state.JobHostUnits},
1116
1116
setAddresses{"1", network.NewAddresses("controller-1.dns")},
1117
1117
startAliveMachine{"1"},
1118
setMachineStatus{"1", status.StatusStarted, ""},
1118
setMachineStatus{"1", status.Started, ""},
1120
1120
addCharm{"wordpress"},
1121
1121
addService{name: "wordpress", charm: "wordpress"},
1170
1170
"server": L{"wordpress"},
1172
1172
"application-status": M{
1173
"current": "unknown",
1174
"message": "Waiting for agent initialization to finish",
1173
"current": "waiting",
1174
"message": "waiting for machine",
1175
1175
"since": "01 Apr 15 01:23+10:00",
1179
1179
"machine": "1",
1180
1180
"workload-status": M{
1181
"current": "unknown",
1182
"message": "Waiting for agent initialization to finish",
1181
"current": "waiting",
1182
"message": "waiting for machine",
1183
1183
"since": "01 Apr 15 01:23+10:00",
1185
1185
"juju-status": M{
1224
1224
"dummy-application": dummyCharm(M{
1225
1225
"life": "dying",
1226
1226
"application-status": M{
1227
"current": "unknown",
1228
"message": "Waiting for agent initialization to finish",
1227
"current": "waiting",
1228
"message": "waiting for machine",
1229
1229
"since": "01 Apr 15 01:23+10:00",
1232
1232
"dummy-application/0": M{
1233
1233
"machine": "0",
1234
1234
"workload-status": M{
1235
"current": "unknown",
1236
"message": "Waiting for agent initialization to finish",
1235
"current": "waiting",
1236
"message": "waiting for machine",
1237
1237
"since": "01 Apr 15 01:23+10:00",
1239
1239
"juju-status": M{
1253
1253
addService{name: "dummy-application", charm: "dummy"},
1254
1254
addMachine{machineId: "0", job: state.JobHostUnits},
1255
1255
startAliveMachine{"0"},
1256
setMachineStatus{"0", status.StatusStarted, ""},
1256
setMachineStatus{"0", status.Started, ""},
1257
1257
addUnit{"dummy-application", "0"},
1258
setAgentStatus{"dummy-application/0", status.StatusIdle, "", nil},
1259
setUnitStatus{"dummy-application/0", status.StatusActive, "", nil},
1258
setAgentStatus{"dummy-application/0", status.Idle, "", nil},
1259
setUnitStatus{"dummy-application/0", status.Active, "", nil},
1261
1261
"unit shows that agent is lost",
1320
1320
addMachine{machineId: "1", job: state.JobHostUnits},
1321
1321
setAddresses{"1", network.NewAddresses("controller-1.dns")},
1322
1322
startAliveMachine{"1"},
1323
setMachineStatus{"1", status.StatusStarted, ""},
1323
setMachineStatus{"1", status.Started, ""},
1324
1324
addAliveUnit{"project", "1"},
1325
setAgentStatus{"project/0", status.StatusIdle, "", nil},
1326
setUnitStatus{"project/0", status.StatusActive, "", nil},
1325
setAgentStatus{"project/0", status.Idle, "", nil},
1326
setUnitStatus{"project/0", status.Active, "", nil},
1328
1328
addService{name: "mysql", charm: "mysql"},
1329
1329
setServiceExposed{"mysql", true},
1330
1330
addMachine{machineId: "2", job: state.JobHostUnits},
1331
1331
setAddresses{"2", network.NewAddresses("controller-2.dns")},
1332
1332
startAliveMachine{"2"},
1333
setMachineStatus{"2", status.StatusStarted, ""},
1333
setMachineStatus{"2", status.Started, ""},
1334
1334
addAliveUnit{"mysql", "2"},
1335
setAgentStatus{"mysql/0", status.StatusIdle, "", nil},
1336
setUnitStatus{"mysql/0", status.StatusActive, "", nil},
1335
setAgentStatus{"mysql/0", status.Idle, "", nil},
1336
setUnitStatus{"mysql/0", status.Active, "", nil},
1338
1338
addService{name: "varnish", charm: "varnish"},
1339
1339
setServiceExposed{"varnish", true},
1340
1340
addMachine{machineId: "3", job: state.JobHostUnits},
1341
1341
setAddresses{"3", network.NewAddresses("controller-3.dns")},
1342
1342
startAliveMachine{"3"},
1343
setMachineStatus{"3", status.StatusStarted, ""},
1343
setMachineStatus{"3", status.Started, ""},
1344
1344
addAliveUnit{"varnish", "3"},
1346
1346
addService{name: "private", charm: "wordpress"},
1348
1348
addMachine{machineId: "4", job: state.JobHostUnits},
1349
1349
setAddresses{"4", network.NewAddresses("controller-4.dns")},
1350
1350
startAliveMachine{"4"},
1351
setMachineStatus{"4", status.StatusStarted, ""},
1351
setMachineStatus{"4", status.Started, ""},
1352
1352
addAliveUnit{"private", "4"},
1354
1354
relateServices{"project", "mysql"},
1492
1492
addMachine{machineId: "1", job: state.JobHostUnits},
1493
1493
setAddresses{"1", network.NewAddresses("controller-1.dns")},
1494
1494
startAliveMachine{"1"},
1495
setMachineStatus{"1", status.StatusStarted, ""},
1495
setMachineStatus{"1", status.Started, ""},
1496
1496
addAliveUnit{"riak", "1"},
1497
setAgentStatus{"riak/0", status.StatusIdle, "", nil},
1498
setUnitStatus{"riak/0", status.StatusActive, "", nil},
1497
setAgentStatus{"riak/0", status.Idle, "", nil},
1498
setUnitStatus{"riak/0", status.Active, "", nil},
1499
1499
addMachine{machineId: "2", job: state.JobHostUnits},
1500
1500
setAddresses{"2", network.NewAddresses("controller-2.dns")},
1501
1501
startAliveMachine{"2"},
1502
setMachineStatus{"2", status.StatusStarted, ""},
1502
setMachineStatus{"2", status.Started, ""},
1503
1503
addAliveUnit{"riak", "2"},
1504
setAgentStatus{"riak/1", status.StatusIdle, "", nil},
1505
setUnitStatus{"riak/1", status.StatusActive, "", nil},
1504
setAgentStatus{"riak/1", status.Idle, "", nil},
1505
setUnitStatus{"riak/1", status.Active, "", nil},
1506
1506
addMachine{machineId: "3", job: state.JobHostUnits},
1507
1507
setAddresses{"3", network.NewAddresses("controller-3.dns")},
1508
1508
startAliveMachine{"3"},
1509
setMachineStatus{"3", status.StatusStarted, ""},
1509
setMachineStatus{"3", status.Started, ""},
1510
1510
addAliveUnit{"riak", "3"},
1511
setAgentStatus{"riak/2", status.StatusIdle, "", nil},
1512
setUnitStatus{"riak/2", status.StatusActive, "", nil},
1511
setAgentStatus{"riak/2", status.Idle, "", nil},
1512
setUnitStatus{"riak/2", status.Active, "", nil},
1515
1515
"multiples related peer units",
1597
1597
addMachine{machineId: "1", job: state.JobHostUnits},
1598
1598
setAddresses{"1", network.NewAddresses("controller-1.dns")},
1599
1599
startAliveMachine{"1"},
1600
setMachineStatus{"1", status.StatusStarted, ""},
1600
setMachineStatus{"1", status.Started, ""},
1601
1601
addAliveUnit{"wordpress", "1"},
1602
setAgentStatus{"wordpress/0", status.StatusIdle, "", nil},
1603
setUnitStatus{"wordpress/0", status.StatusActive, "", nil},
1602
setAgentStatus{"wordpress/0", status.Idle, "", nil},
1603
setUnitStatus{"wordpress/0", status.Active, "", nil},
1605
1605
addService{name: "mysql", charm: "mysql"},
1606
1606
setServiceExposed{"mysql", true},
1607
1607
addMachine{machineId: "2", job: state.JobHostUnits},
1608
1608
setAddresses{"2", network.NewAddresses("controller-2.dns")},
1609
1609
startAliveMachine{"2"},
1610
setMachineStatus{"2", status.StatusStarted, ""},
1610
setMachineStatus{"2", status.Started, ""},
1611
1611
addAliveUnit{"mysql", "2"},
1612
setAgentStatus{"mysql/0", status.StatusIdle, "", nil},
1613
setUnitStatus{"mysql/0", status.StatusActive, "", nil},
1612
setAgentStatus{"mysql/0", status.Idle, "", nil},
1613
setUnitStatus{"mysql/0", status.Active, "", nil},
1615
1615
addService{name: "logging", charm: "logging"},
1616
1616
setServiceExposed{"logging", true},
1623
1623
addSubordinate{"mysql/0", "logging"},
1625
1625
setUnitsAlive{"logging"},
1626
setAgentStatus{"logging/0", status.StatusIdle, "", nil},
1627
setUnitStatus{"logging/0", status.StatusActive, "", nil},
1628
setAgentStatus{"logging/1", status.StatusError, "somehow lost in all those logs", nil},
1626
setAgentStatus{"logging/0", status.Idle, "", nil},
1627
setUnitStatus{"logging/0", status.Active, "", nil},
1628
setAgentStatus{"logging/1", status.Error, "somehow lost in all those logs", nil},
1631
1631
"multiples related peer units",
1871
1871
addMachine{machineId: "0", job: state.JobManageModel},
1872
1872
setAddresses{"0", network.NewAddresses("controller-0.dns")},
1873
1873
startAliveMachine{"0"},
1874
setMachineStatus{"0", status.StatusStarted, ""},
1874
setMachineStatus{"0", status.Started, ""},
1875
1875
addCharm{"mysql"},
1876
1876
addService{name: "mysql", charm: "mysql"},
1877
1877
setServiceExposed{"mysql", true},
1880
1880
addMachine{machineId: "1", job: state.JobHostUnits},
1881
1881
setAddresses{"1", network.NewAddresses("controller-1.dns")},
1882
1882
startAliveMachine{"1"},
1883
setMachineStatus{"1", status.StatusStarted, ""},
1883
setMachineStatus{"1", status.Started, ""},
1884
1884
addAliveUnit{"mysql", "1"},
1885
setAgentStatus{"mysql/0", status.StatusIdle, "", nil},
1886
setUnitStatus{"mysql/0", status.StatusActive, "", nil},
1885
setAgentStatus{"mysql/0", status.Idle, "", nil},
1886
setUnitStatus{"mysql/0", status.Active, "", nil},
1888
1888
// step 14: A container on machine 1.
1889
1889
addContainer{"1", "1/lxd/0", state.JobHostUnits},
1890
1890
setAddresses{"1/lxd/0", network.NewAddresses("controller-2.dns")},
1891
1891
startAliveMachine{"1/lxd/0"},
1892
setMachineStatus{"1/lxd/0", status.StatusStarted, ""},
1892
setMachineStatus{"1/lxd/0", status.Started, ""},
1893
1893
addAliveUnit{"mysql", "1/lxd/0"},
1894
setAgentStatus{"mysql/1", status.StatusIdle, "", nil},
1895
setUnitStatus{"mysql/1", status.StatusActive, "", nil},
1894
setAgentStatus{"mysql/1", status.Idle, "", nil},
1895
setUnitStatus{"mysql/1", status.Active, "", nil},
1896
1896
addContainer{"1", "1/lxd/1", state.JobHostUnits},
1898
1898
// step 22: A nested container.
1899
1899
addContainer{"1/lxd/0", "1/lxd/0/lxd/0", state.JobHostUnits},
1900
1900
setAddresses{"1/lxd/0/lxd/0", network.NewAddresses("controller-3.dns")},
1901
1901
startAliveMachine{"1/lxd/0/lxd/0"},
1902
setMachineStatus{"1/lxd/0/lxd/0", status.StatusStarted, ""},
1902
setMachineStatus{"1/lxd/0/lxd/0", status.Started, ""},
1905
1905
"machines with nested containers",
2017
2017
addMachine{machineId: "0", job: state.JobManageModel},
2018
2018
setAddresses{"0", network.NewAddresses("controller-0.dns")},
2019
2019
startAliveMachine{"0"},
2020
setMachineStatus{"0", status.StatusStarted, ""},
2020
setMachineStatus{"0", status.Started, ""},
2021
2021
addMachine{machineId: "1", job: state.JobHostUnits},
2022
2022
setAddresses{"1", network.NewAddresses("controller-1.dns")},
2023
2023
startAliveMachine{"1"},
2024
setMachineStatus{"1", status.StatusStarted, ""},
2024
setMachineStatus{"1", status.Started, ""},
2025
2025
addCharm{"mysql"},
2026
2026
addService{name: "mysql", charm: "mysql"},
2027
2027
setServiceExposed{"mysql", true},
2041
2041
"can-upgrade-to": "cs:quantal/mysql-23",
2042
2042
"exposed": true,
2043
2043
"application-status": M{
2044
"current": "unknown",
2045
"message": "Waiting for agent initialization to finish",
2044
"current": "waiting",
2045
"message": "waiting for machine",
2046
2046
"since": "01 Apr 15 01:23+10:00",
2050
2050
"machine": "1",
2051
2051
"workload-status": M{
2052
"current": "unknown",
2053
"message": "Waiting for agent initialization to finish",
2052
"current": "waiting",
2053
"message": "waiting for machine",
2054
2054
"since": "01 Apr 15 01:23+10:00",
2056
2056
"juju-status": M{
2070
2070
addMachine{machineId: "0", job: state.JobManageModel},
2071
2071
setAddresses{"0", network.NewAddresses("controller-0.dns")},
2072
2072
startAliveMachine{"0"},
2073
setMachineStatus{"0", status.StatusStarted, ""},
2073
setMachineStatus{"0", status.Started, ""},
2074
2074
addMachine{machineId: "1", job: state.JobHostUnits},
2075
2075
setAddresses{"1", network.NewAddresses("controller-1.dns")},
2076
2076
startAliveMachine{"1"},
2077
setMachineStatus{"1", status.StatusStarted, ""},
2077
setMachineStatus{"1", status.Started, ""},
2078
2078
addCharm{"mysql"},
2079
2079
addService{name: "mysql", charm: "mysql"},
2080
2080
setServiceExposed{"mysql", true},
2125
2125
addMachine{machineId: "0", job: state.JobManageModel},
2126
2126
setAddresses{"0", network.NewAddresses("controller-0.dns")},
2127
2127
startAliveMachine{"0"},
2128
setMachineStatus{"0", status.StatusStarted, ""},
2128
setMachineStatus{"0", status.Started, ""},
2129
2129
addMachine{machineId: "1", job: state.JobHostUnits},
2130
2130
setAddresses{"1", network.NewAddresses("controller-1.dns")},
2131
2131
startAliveMachine{"1"},
2132
setMachineStatus{"1", status.StatusStarted, ""},
2132
setMachineStatus{"1", status.Started, ""},
2133
2133
addCharm{"mysql"},
2134
2134
addService{name: "mysql", charm: "mysql"},
2135
2135
setServiceExposed{"mysql", true},
2182
2182
addMachine{machineId: "0", job: state.JobManageModel},
2183
2183
setAddresses{"0", network.NewAddresses("controller-0.dns")},
2184
2184
startAliveMachine{"0"},
2185
setMachineStatus{"0", status.StatusStarted, ""},
2185
setMachineStatus{"0", status.Started, ""},
2186
2186
addMachine{machineId: "1", job: state.JobHostUnits},
2187
2187
setAddresses{"1", network.NewAddresses("controller-1.dns")},
2188
2188
startAliveMachine{"1"},
2189
setMachineStatus{"1", status.StatusStarted, ""},
2189
setMachineStatus{"1", status.Started, ""},
2190
2190
addCharm{"mysql"},
2191
2191
addService{name: "mysql", charm: "mysql"},
2192
2192
setServiceExposed{"mysql", true},
2238
2238
addMachine{machineId: "0", job: state.JobManageModel},
2239
2239
setAddresses{"0", network.NewAddresses("controller-0.dns")},
2240
2240
startAliveMachine{"0"},
2241
setMachineStatus{"0", status.StatusStarted, ""},
2241
setMachineStatus{"0", status.Started, ""},
2243
2243
addMachine{machineId: "1", job: state.JobHostUnits},
2244
2244
setAddresses{"1", network.NewAddresses("controller-1.dns")},
2245
2245
startAliveMachine{"1"},
2246
setMachineStatus{"1", status.StatusStarted, ""},
2246
setMachineStatus{"1", status.Started, ""},
2248
2248
addMachine{machineId: "2", job: state.JobHostUnits},
2249
2249
setAddresses{"2", network.NewAddresses("controller-2.dns")},
2250
2250
startAliveMachine{"2"},
2251
setMachineStatus{"2", status.StatusStarted, ""},
2251
setMachineStatus{"2", status.Started, ""},
2253
2253
addMachine{machineId: "3", job: state.JobHostUnits},
2254
2254
setAddresses{"3", network.NewAddresses("controller-3.dns")},
2255
2255
startAliveMachine{"3"},
2256
setMachineStatus{"3", status.StatusStarted, ""},
2256
setMachineStatus{"3", status.Started, ""},
2258
2258
addMachine{machineId: "4", job: state.JobHostUnits},
2259
2259
setAddresses{"4", network.NewAddresses("controller-4.dns")},
2260
2260
startAliveMachine{"4"},
2261
setMachineStatus{"4", status.StatusStarted, ""},
2261
setMachineStatus{"4", status.Started, ""},
2263
2263
addCharm{"mysql"},
2264
2264
addService{name: "mysql", charm: "mysql"},
2265
2265
setServiceExposed{"mysql", true},
2267
addService{name: "servicewithmeterstatus", charm: "mysql"},
2267
addCharm{"metered"},
2268
addService{name: "servicewithmeterstatus", charm: "metered"},
2269
2270
addAliveUnit{"mysql", "1"},
2270
2271
addAliveUnit{"servicewithmeterstatus", "2"},
2274
2275
setServiceExposed{"mysql", true},
2276
setAgentStatus{"mysql/0", status.StatusIdle, "", nil},
2277
setUnitStatus{"mysql/0", status.StatusActive, "", nil},
2278
setAgentStatus{"servicewithmeterstatus/0", status.StatusIdle, "", nil},
2279
setUnitStatus{"servicewithmeterstatus/0", status.StatusActive, "", nil},
2280
setAgentStatus{"servicewithmeterstatus/1", status.StatusIdle, "", nil},
2281
setUnitStatus{"servicewithmeterstatus/1", status.StatusActive, "", nil},
2282
setAgentStatus{"servicewithmeterstatus/2", status.StatusIdle, "", nil},
2283
setUnitStatus{"servicewithmeterstatus/2", status.StatusActive, "", nil},
2277
setAgentStatus{"mysql/0", status.Idle, "", nil},
2278
setUnitStatus{"mysql/0", status.Active, "", nil},
2279
setAgentStatus{"servicewithmeterstatus/0", status.Idle, "", nil},
2280
setUnitStatus{"servicewithmeterstatus/0", status.Active, "", nil},
2281
setAgentStatus{"servicewithmeterstatus/1", status.Idle, "", nil},
2282
setUnitStatus{"servicewithmeterstatus/1", status.Active, "", nil},
2283
setAgentStatus{"servicewithmeterstatus/2", status.Idle, "", nil},
2284
setUnitStatus{"servicewithmeterstatus/2", status.Active, "", nil},
2285
2286
setUnitMeterStatus{"servicewithmeterstatus/1", "GREEN", "test green status"},
2286
2287
setUnitMeterStatus{"servicewithmeterstatus/2", "RED", "test red status"},
2399
2400
addMachine{machineId: "0", job: state.JobManageModel},
2400
2401
setAddresses{"0", network.NewAddresses("controller-0.dns")},
2401
2402
startAliveMachine{"0"},
2402
setMachineStatus{"0", status.StatusStarted, ""},
2403
setMachineStatus{"0", status.Started, ""},
2404
2405
addCharm{"mysql"},
2405
2406
addService{name: "mysql", charm: "mysql"},
2407
2408
addMachine{machineId: "1", job: state.JobHostUnits},
2408
2409
setAddresses{"1", network.NewAddresses("controller-1.dns")},
2409
2410
startAliveMachine{"1"},
2410
setMachineStatus{"1", status.StatusStarted, ""},
2411
setMachineStatus{"1", status.Started, ""},
2411
2412
addAliveUnit{"mysql", "1"},
2412
2413
setUnitWorkloadVersion{"mysql/0", "the best!"},
2452
2453
addMachine{machineId: "0", job: state.JobManageModel},
2453
2454
setAddresses{"0", network.NewAddresses("controller-0.dns")},
2454
2455
startAliveMachine{"0"},
2455
setMachineStatus{"0", status.StatusStarted, ""},
2456
setMachineStatus{"0", status.Started, ""},
2457
2458
addCharm{"mysql"},
2458
2459
addService{name: "mysql", charm: "mysql"},
2460
2461
addMachine{machineId: "1", job: state.JobHostUnits},
2461
2462
setAddresses{"1", network.NewAddresses("controller-1.dns")},
2462
2463
startAliveMachine{"1"},
2463
setMachineStatus{"1", status.StatusStarted, ""},
2464
setMachineStatus{"1", status.Started, ""},
2464
2465
addAliveUnit{"mysql", "1"},
2465
2466
setUnitWorkloadVersion{"mysql/0", "the best!"},
2467
2468
addMachine{machineId: "2", job: state.JobHostUnits},
2468
2469
setAddresses{"2", network.NewAddresses("controller-2.dns")},
2469
2470
startAliveMachine{"2"},
2470
setMachineStatus{"2", status.StatusStarted, ""},
2471
setMachineStatus{"2", status.Started, ""},
2471
2472
addAliveUnit{"mysql", "2"},
2472
2473
setUnitWorkloadVersion{"mysql/1", "not as good"},
2484
2485
"mysql": mysqlCharm(M{
2485
2486
"version": "not as good",
2486
2487
"application-status": M{
2487
"current": "unknown",
2488
"message": "Waiting for agent initialization to finish",
2488
"current": "waiting",
2489
"message": "waiting for machine",
2489
2490
"since": "01 Apr 15 01:23+10:00",
2493
2494
"machine": "1",
2494
2495
"workload-status": M{
2495
"current": "unknown",
2496
"message": "Waiting for agent initialization to finish",
2496
"current": "waiting",
2497
"message": "waiting for machine",
2497
2498
"since": "01 Apr 15 01:23+10:00",
2499
2500
"juju-status": M{
3256
3273
mig, err := hostedSt.CreateMigration(state.MigrationSpec{
3257
3274
InitiatedBy: names.NewUserTag("admin"),
3258
3275
TargetInfo: migration.TargetInfo{
3259
ControllerTag: names.NewModelTag(utils.MustNewUUID().String()),
3276
ControllerTag: names.NewControllerTag(utils.MustNewUUID().String()),
3260
3277
Addrs: []string{"1.2.3.4:5555", "4.3.2.1:6666"},
3261
3278
CACert: "cert",
3262
3279
AuthTag: names.NewUserTag("user"),
3302
3319
addMachine{machineId: "1", job: state.JobHostUnits},
3303
3320
setAddresses{"1", network.NewAddresses("localhost")},
3304
3321
startAliveMachine{"1"},
3305
setMachineStatus{"1", status.StatusStarted, ""},
3322
setMachineStatus{"1", status.Started, ""},
3306
3323
addAliveUnit{"wordpress", "1"},
3307
setAgentStatus{"wordpress/0", status.StatusIdle, "", nil},
3308
setUnitStatus{"wordpress/0", status.StatusActive, "", nil},
3324
setAgentStatus{"wordpress/0", status.Idle, "", nil},
3325
setUnitStatus{"wordpress/0", status.Active, "", nil},
3309
3326
addService{name: "mysql", charm: "mysql"},
3310
3327
setServiceExposed{"mysql", true},
3311
3328
addMachine{machineId: "2", job: state.JobHostUnits},
3312
3329
setAddresses{"2", network.NewAddresses("10.0.0.1")},
3313
3330
startAliveMachine{"2"},
3314
setMachineStatus{"2", status.StatusStarted, ""},
3331
setMachineStatus{"2", status.Started, ""},
3315
3332
addAliveUnit{"mysql", "2"},
3316
setAgentStatus{"mysql/0", status.StatusIdle, "", nil},
3317
setUnitStatus{"mysql/0", status.StatusActive, "", nil},
3333
setAgentStatus{"mysql/0", status.Idle, "", nil},
3334
setUnitStatus{"mysql/0", status.Active, "", nil},
3318
3335
addService{name: "logging", charm: "logging"},
3319
3336
setServiceExposed{"logging", true},
3320
3337
relateServices{"wordpress", "mysql"},
3323
3340
addSubordinate{"wordpress/0", "logging"},
3324
3341
addSubordinate{"mysql/0", "logging"},
3325
3342
setUnitsAlive{"logging"},
3326
setAgentStatus{"logging/0", status.StatusIdle, "", nil},
3327
setUnitStatus{"logging/0", status.StatusActive, "", nil},
3328
setAgentStatus{"logging/1", status.StatusError, "somehow lost in all those logs", nil},
3343
setAgentStatus{"logging/0", status.Idle, "", nil},
3344
setUnitStatus{"logging/0", status.Active, "", nil},
3345
setAgentStatus{"logging/1", status.Error, "somehow lost in all those logs", nil},
3330
3347
for _, s := range steps {
3367
3384
addMachine{machineId: "1", job: state.JobHostUnits},
3368
3385
setAddresses{"1", network.NewAddresses("controller-1.dns")},
3369
3386
startAliveMachine{"1"},
3370
setMachineStatus{"1", status.StatusStarted, ""},
3387
setMachineStatus{"1", status.Started, ""},
3371
3388
addAliveUnit{"wordpress", "1"},
3372
setAgentStatus{"wordpress/0", status.StatusIdle, "", nil},
3373
setUnitStatus{"wordpress/0", status.StatusActive, "", nil},
3389
setAgentStatus{"wordpress/0", status.Idle, "", nil},
3390
setUnitStatus{"wordpress/0", status.Active, "", nil},
3375
3392
addService{name: "mysql", charm: "mysql"},
3376
3393
setServiceExposed{"mysql", true},
3377
3394
addMachine{machineId: "2", job: state.JobHostUnits},
3378
3395
setAddresses{"2", network.NewAddresses("controller-2.dns")},
3379
3396
startAliveMachine{"2"},
3380
setMachineStatus{"2", status.StatusStarted, ""},
3397
setMachineStatus{"2", status.Started, ""},
3381
3398
addAliveUnit{"mysql", "2"},
3382
setAgentStatus{"mysql/0", status.StatusIdle, "", nil},
3383
setUnitStatus{"mysql/0", status.StatusActive, "", nil},
3399
setAgentStatus{"mysql/0", status.Idle, "", nil},
3400
setUnitStatus{"mysql/0", status.Active, "", nil},
3385
3402
addService{name: "logging", charm: "logging"},
3386
3403
setServiceExposed{"logging", true},
3393
3410
addSubordinate{"mysql/0", "logging"},
3395
3412
setUnitsAlive{"logging"},
3396
setAgentStatus{"logging/0", status.StatusIdle, "", nil},
3397
setUnitStatus{"logging/0", status.StatusActive, "", nil},
3398
setAgentStatus{"logging/1", status.StatusError, "somehow lost in all those logs", nil},
3413
setAgentStatus{"logging/0", status.Idle, "", nil},
3414
setUnitStatus{"logging/0", status.Active, "", nil},
3415
setAgentStatus{"logging/1", status.Error, "somehow lost in all those logs", nil},
3401
3418
ctx.run(c, steps)
3435
3452
addMachine{machineId: "0", job: state.JobManageModel},
3436
3453
setAddresses{"0", network.NewAddresses("controller-0.dns")},
3437
3454
startMachineWithHardware{"0", instance.MustParseHardware("availability-zone=us-east-1a")},
3438
setMachineStatus{"0", status.StatusStarted, ""},
3455
setMachineStatus{"0", status.Started, ""},
3439
3456
addCharm{"wordpress"},
3440
3457
addCharm{"mysql"},
3441
3458
addCharm{"logging"},
3444
3461
addMachine{machineId: "1", job: state.JobHostUnits},
3445
3462
setAddresses{"1", network.NewAddresses("controller-1.dns")},
3446
3463
startAliveMachine{"1"},
3447
setMachineStatus{"1", status.StatusStarted, ""},
3464
setMachineStatus{"1", status.Started, ""},
3448
3465
addAliveUnit{"wordpress", "1"},
3449
setAgentStatus{"wordpress/0", status.StatusIdle, "", nil},
3450
setUnitStatus{"wordpress/0", status.StatusActive, "", nil},
3466
setAgentStatus{"wordpress/0", status.Idle, "", nil},
3467
setUnitStatus{"wordpress/0", status.Active, "", nil},
3451
3468
setUnitTools{"wordpress/0", version.MustParseBinary("1.2.3-trusty-ppc")},
3452
3469
addService{name: "mysql", charm: "mysql"},
3453
3470
setServiceExposed{"mysql", true},
3454
3471
addMachine{machineId: "2", job: state.JobHostUnits},
3455
3472
setAddresses{"2", network.NewAddresses("controller-2.dns")},
3456
3473
startAliveMachine{"2"},
3457
setMachineStatus{"2", status.StatusStarted, ""},
3474
setMachineStatus{"2", status.Started, ""},
3458
3475
addAliveUnit{"mysql", "2"},
3459
setAgentStatus{"mysql/0", status.StatusIdle, "", nil},
3476
setAgentStatus{"mysql/0", status.Idle, "", nil},
3462
status.StatusMaintenance,
3463
3480
"installing all the things", nil},
3464
3481
setUnitTools{"mysql/0", version.MustParseBinary("1.2.3-trusty-ppc")},
3465
3482
addService{name: "logging", charm: "logging"},
3470
3487
addSubordinate{"wordpress/0", "logging"},
3471
3488
addSubordinate{"mysql/0", "logging"},
3472
3489
setUnitsAlive{"logging"},
3473
setAgentStatus{"logging/0", status.StatusIdle, "", nil},
3474
setUnitStatus{"logging/0", status.StatusActive, "", nil},
3475
setAgentStatus{"logging/1", status.StatusError, "somehow lost in all those logs", nil},
3490
setAgentStatus{"logging/0", status.Idle, "", nil},
3491
setUnitStatus{"logging/0", status.Active, "", nil},
3492
setAgentStatus{"logging/1", status.Error, "somehow lost in all those logs", nil},
3476
3493
setUnitWorkloadVersion{"logging/1", "a bit too long, really"},
3477
3494
setUnitWorkloadVersion{"wordpress/0", "4.5.3"},
3478
3495
setUnitWorkloadVersion{"mysql/0", "5.7.13"},
3497
3514
MODEL CONTROLLER CLOUD/REGION VERSION NOTES
3498
3515
controller kontroll dummy/dummy-region 1.2.3 upgrade available: 1.2.4
3500
APP VERSION STATUS SCALE CHARM STORE REV OS NOTES
3501
logging a bi... error 2 logging jujucharms 1 ubuntu exposed
3502
mysql 5.7.13 maintenance 1 mysql jujucharms 1 ubuntu exposed
3503
wordpress 4.5.3 active 1 wordpress jujucharms 3 ubuntu exposed
3505
RELATION PROVIDES CONSUMES TYPE
3506
juju-info logging mysql regular
3507
logging-dir logging wordpress regular
3508
info mysql logging subordinate
3509
db mysql wordpress regular
3510
logging-directory wordpress logging subordinate
3517
APP VERSION STATUS SCALE CHARM STORE REV OS NOTES
3518
logging a bit too lo... error 2 logging jujucharms 1 ubuntu exposed
3519
mysql 5.7.13 maintenance 1 mysql jujucharms 1 ubuntu exposed
3520
wordpress 4.5.3 active 1 wordpress jujucharms 3 ubuntu exposed
3512
3522
UNIT WORKLOAD AGENT MACHINE PUBLIC-ADDRESS PORTS MESSAGE
3513
3523
mysql/0 maintenance idle 2 controller-2.dns installing all the things
3520
3530
1 started controller-1.dns controller-1 quantal
3521
3531
2 started controller-2.dns controller-2 quantal
3533
RELATION PROVIDES CONSUMES TYPE
3534
juju-info logging mysql regular
3535
logging-dir logging wordpress regular
3536
info mysql logging subordinate
3537
db mysql wordpress regular
3538
logging-directory wordpress logging subordinate
3524
3541
c.Assert(string(stdout), gc.Equals, expected)
3535
3552
Units: map[string]unitStatus{
3537
3554
JujuStatusInfo: statusInfoContents{
3538
Current: status.StatusExecuting,
3555
Current: status.Executing,
3539
3556
Message: "running config-changed hook",
3541
3558
WorkloadStatusInfo: statusInfoContents{
3542
Current: status.StatusMaintenance,
3559
Current: status.Maintenance,
3543
3560
Message: "doing some work",
3547
3564
JujuStatusInfo: statusInfoContents{
3548
Current: status.StatusExecuting,
3565
Current: status.Executing,
3549
3566
Message: "running action backup database",
3551
3568
WorkloadStatusInfo: statusInfoContents{
3552
Current: status.StatusMaintenance,
3569
Current: status.Maintenance,
3553
3570
Message: "doing some work",
3609
3626
addMachine{machineId: "0", job: state.JobManageModel},
3610
3627
setAddresses{"0", network.NewAddresses("controller-0.dns")},
3611
3628
startAliveMachine{"0"},
3612
setMachineStatus{"0", status.StatusStarted, ""},
3629
setMachineStatus{"0", status.Started, ""},
3615
3632
for _, s := range steps {
3686
3703
// And the machine's job is to manage the environment
3687
3704
addMachine{machineId: "0", job: state.JobManageModel},
3688
3705
startAliveMachine{"0"},
3689
setMachineStatus{"0", status.StatusStarted, ""},
3706
setMachineStatus{"0", status.Started, ""},
3690
3707
// And the machine's address is "controller-0.dns"
3691
3708
setAddresses{"0", network.NewAddresses("controller-0.dns")},
3692
3709
// And a container is started
3707
3724
// And the machine's job is to host units
3708
3725
addMachine{machineId: "1", job: state.JobHostUnits},
3709
3726
startAliveMachine{"1"},
3710
setMachineStatus{"1", status.StatusStarted, ""},
3727
setMachineStatus{"1", status.Started, ""},
3711
3728
// And the machine's address is "controller-1.dns"
3712
3729
setAddresses{"1", network.NewAddresses("controller-1.dns")},
3713
3730
// And a unit of "wordpress" is deployed to machine "1"
3714
3731
addAliveUnit{"wordpress", "1"},
3715
3732
// And the unit is started
3716
setAgentStatus{"wordpress/0", status.StatusIdle, "", nil},
3717
setUnitStatus{"wordpress/0", status.StatusActive, "", nil},
3733
setAgentStatus{"wordpress/0", status.Idle, "", nil},
3734
setUnitStatus{"wordpress/0", status.Active, "", nil},
3718
3735
// And a machine is started
3720
3737
// And the machine's ID is "2"
3721
3738
// And the machine's job is to host units
3722
3739
addMachine{machineId: "2", job: state.JobHostUnits},
3723
3740
startAliveMachine{"2"},
3724
setMachineStatus{"2", status.StatusStarted, ""},
3741
setMachineStatus{"2", status.Started, ""},
3725
3742
// And the machine's address is "controller-2.dns"
3726
3743
setAddresses{"2", network.NewAddresses("controller-2.dns")},
3727
3744
// And a unit of "mysql" is deployed to machine "2"
3728
3745
addAliveUnit{"mysql", "2"},
3729
3746
// And the unit is started
3730
setAgentStatus{"mysql/0", status.StatusIdle, "", nil},
3731
setUnitStatus{"mysql/0", status.StatusActive, "", nil},
3747
setAgentStatus{"mysql/0", status.Idle, "", nil},
3748
setUnitStatus{"mysql/0", status.Active, "", nil},
3732
3749
// And the "logging" service is added
3733
3750
addService{name: "logging", charm: "logging"},
3734
3751
// And the service is exposed
3741
3758
relateServices{"mysql", "logging"},
3742
3759
// And the "logging" service is a subordinate to unit 0 of the "wordpress" service
3743
3760
addSubordinate{"wordpress/0", "logging"},
3744
setAgentStatus{"logging/0", status.StatusIdle, "", nil},
3745
setUnitStatus{"logging/0", status.StatusActive, "", nil},
3761
setAgentStatus{"logging/0", status.Idle, "", nil},
3762
setUnitStatus{"logging/0", status.Active, "", nil},
3746
3763
// And the "logging" service is a subordinate to unit 0 of the "mysql" service
3747
3764
addSubordinate{"mysql/0", "logging"},
3748
setAgentStatus{"logging/1", status.StatusIdle, "", nil},
3749
setUnitStatus{"logging/1", status.StatusActive, "", nil},
3765
setAgentStatus{"logging/1", status.Idle, "", nil},
3766
setUnitStatus{"logging/1", status.Active, "", nil},
3750
3767
setUnitsAlive{"logging"},
3760
3777
defer s.resetContext(c, ctx)
3762
3779
// Given unit 1 of the "logging" service has an error
3763
setAgentStatus{"logging/1", status.StatusError, "mock error", nil}.step(c, ctx)
3780
setAgentStatus{"logging/1", status.Error, "mock error", nil}.step(c, ctx)
3764
3781
// And unit 0 of the "mysql" service has an error
3765
setAgentStatus{"mysql/0", status.StatusError, "mock error", nil}.step(c, ctx)
3782
setAgentStatus{"mysql/0", status.Error, "mock error", nil}.step(c, ctx)
3766
3783
// When I run juju status --format oneline started
3767
3784
_, stdout, stderr := runStatus(c, "--format", "oneline", "active")
3768
3785
c.Assert(string(stderr), gc.Equals, "")
3855
3872
defer s.resetContext(c, ctx)
3857
3874
// Given unit 1 of the "logging" service has an error
3858
setAgentStatus{"logging/1", status.StatusError, "mock error", nil}.step(c, ctx)
3875
setAgentStatus{"logging/1", status.Error, "mock error", nil}.step(c, ctx)
3859
3876
// When I run juju status --format oneline error
3860
3877
_, stdout, stderr := runStatus(c, "--format", "oneline", "error")
3861
3878
c.Assert(stderr, gc.IsNil)
4095
4112
addMachine{machineId: "0", job: state.JobManageModel},
4096
4113
setAddresses{"0", network.NewAddresses("controller-0.dns")},
4097
4114
startAliveMachine{"0"},
4098
setMachineStatus{"0", status.StatusStarted, ""},
4115
setMachineStatus{"0", status.Started, ""},
4099
4116
addCharm{"dummy"},
4100
4117
addService{name: "dummy-application", charm: "dummy"},
4102
4119
addMachine{machineId: "1", job: state.JobHostUnits},
4103
4120
startAliveMachine{"1"},
4104
4121
setAddresses{"1", network.NewAddresses("controller-1.dns")},
4105
setMachineStatus{"1", status.StatusStarted, ""},
4122
setMachineStatus{"1", status.Started, ""},
4107
4124
addAliveUnit{"dummy-application", "1"},
4122
4139
"applications": M{
4123
4140
"dummy-application": dummyCharm(M{
4124
4141
"application-status": M{
4125
"current": "unknown",
4126
"message": "Waiting for agent initialization to finish",
4142
"current": "waiting",
4143
"message": "waiting for machine",
4127
4144
"since": "01 Apr 15 01:23+10:00",
4130
4147
"dummy-application/0": M{
4131
4148
"machine": "1",
4132
4149
"workload-status": M{
4133
"current": "unknown",
4134
"message": "Waiting for agent initialization to finish",
4150
"current": "waiting",
4151
"message": "waiting for machine",
4135
4152
"since": "01 Apr 15 01:23+10:00",
4137
4154
"juju-status": M{
4176
4196
formatter := NewStatusFormatter(status, true)
4177
formatted := formatter.format()
4197
formatted, err := formatter.format()
4198
c.Assert(err, jc.ErrorIsNil)
4179
4200
c.Check(formatted, jc.DeepEquals, formattedStatus{
4180
4204
Machines: map[string]machineStatus{
4182
4206
JujuStatus: statusInfoContents{Current: "error", Message: "<error while provisioning>"},