Added local dev server
diff --git a/views/ngXosViews/diagnostic/mocks/data/instances.json b/views/ngXosViews/diagnostic/mocks/data/instances.json
new file mode 100644
index 0000000..a60b696
--- /dev/null
+++ b/views/ngXosViews/diagnostic/mocks/data/instances.json
@@ -0,0 +1,289 @@
+[
+ {
+ "humanReadableName": "sflow_service_instance",
+ "id": 8,
+ "created": "2016-02-17T22:01:02.663Z",
+ "updated": "2016-02-17T22:05:58.270Z",
+ "enacted": "2016-02-17T22:05:58.281Z",
+ "policed": "2016-02-17T22:05:59.137Z",
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455746758.281283, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "instance_id": "instance-00000005",
+ "instance_uuid": "42b75cb7-7205-4a68-9100-b2c1e3ea69b5",
+ "name": "sflow_service_instance",
+ "instance_name": "mysite_sflow-8",
+ "ip": "130.127.133.93",
+ "image": 1,
+ "creator": 1,
+ "slice": 8,
+ "deployment": 1,
+ "node": 2,
+ "numberCores": 0,
+ "flavor": 1,
+ "userData": null,
+ "networks": [
+ 21,
+ 20
+ ]
+ },
+ {
+ "humanReadableName": "client1",
+ "id": 4,
+ "created": "2016-02-17T22:00:58.284Z",
+ "updated": "2016-02-17T22:03:56.863Z",
+ "enacted": "2016-02-17T22:03:56.872Z",
+ "policed": "2016-02-17T22:03:56.953Z",
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455746636.872524, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "instance_id": "instance-00000001",
+ "instance_uuid": "cca264bb-8136-45dd-a5a3-41902a4bcf5b",
+ "name": "client1",
+ "instance_name": "mysite_clients-4",
+ "ip": "130.127.133.90",
+ "image": 1,
+ "creator": 1,
+ "slice": 3,
+ "deployment": 1,
+ "node": 1,
+ "numberCores": 0,
+ "flavor": 1,
+ "userData": null,
+ "networks": [
+ 10,
+ 4,
+ 11
+ ]
+ },
+ {
+ "humanReadableName": "mysite_ceilometer-7",
+ "id": 7,
+ "created": "2016-02-17T22:01:02.550Z",
+ "updated": "2016-02-17T22:06:15.667Z",
+ "enacted": "2016-02-17T22:06:15.672Z",
+ "policed": "2016-02-17T22:06:15.818Z",
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455746775.672678, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "instance_id": "instance-00000006",
+ "instance_uuid": "23d04870-5e0d-4b03-b2e2-032cbfec56fa",
+ "name": "mysite_ceilometer",
+ "instance_name": "mysite_ceilometer-7",
+ "ip": "130.127.133.90",
+ "image": 1,
+ "creator": 1,
+ "slice": 7,
+ "deployment": 1,
+ "node": 1,
+ "numberCores": 0,
+ "flavor": 1,
+ "userData": null,
+ "networks": [
+ 18,
+ 19,
+ 5
+ ]
+ },
+ {
+ "humanReadableName": "onos_app_1",
+ "id": 3,
+ "created": "2016-02-17T22:00:58.258Z",
+ "updated": "2016-02-17T22:04:43.301Z",
+ "enacted": "2016-02-17T22:04:43.309Z",
+ "policed": "2016-02-17T22:04:43.943Z",
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455746683.309321, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "instance_id": "instance-00000002",
+ "instance_uuid": "c21dc52f-363e-47f6-9a2a-489c0af392fb",
+ "name": "onos_app_1",
+ "instance_name": "mysite_onos_vbng-3",
+ "ip": "130.127.133.59",
+ "image": 1,
+ "creator": 1,
+ "slice": 5,
+ "deployment": 1,
+ "node": 3,
+ "numberCores": 0,
+ "flavor": 1,
+ "userData": null,
+ "networks": [
+ 15,
+ 14
+ ]
+ },
+ {
+ "humanReadableName": "ovs_vbng",
+ "id": 6,
+ "created": "2016-02-17T22:00:58.567Z",
+ "updated": "2016-02-17T22:06:33.495Z",
+ "enacted": "2016-02-17T22:06:33.562Z",
+ "policed": "2016-02-17T22:06:34.619Z",
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455746793.562678, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "instance_id": "instance-00000007",
+ "instance_uuid": "81dc0638-c9bc-4396-be17-ea805050e388",
+ "name": "ovs_vbng",
+ "instance_name": "mysite_vbng-6",
+ "ip": "130.127.133.59",
+ "image": 1,
+ "creator": 1,
+ "slice": 2,
+ "deployment": 1,
+ "node": 3,
+ "numberCores": 0,
+ "flavor": 1,
+ "userData": null,
+ "networks": [
+ 8,
+ 3,
+ 9
+ ]
+ },
+ {
+ "humanReadableName": "onos_app_2",
+ "id": 2,
+ "created": "2016-02-17T22:00:58.199Z",
+ "updated": "2016-02-17T22:05:26.512Z",
+ "enacted": "2016-02-17T22:05:26.521Z",
+ "policed": "2016-02-17T22:05:26.730Z",
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455746726.521625, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "instance_id": "instance-00000003",
+ "instance_uuid": "8e3f00c5-0957-4505-ae69-e03e41306435",
+ "name": "onos_app_2",
+ "instance_name": "mysite_onos_volt-2",
+ "ip": "130.127.133.93",
+ "image": 1,
+ "creator": 1,
+ "slice": 4,
+ "deployment": 1,
+ "node": 2,
+ "numberCores": 0,
+ "flavor": 1,
+ "userData": null,
+ "networks": [
+ 12,
+ 13
+ ]
+ },
+ {
+ "humanReadableName": "ovs_volt",
+ "id": 5,
+ "created": "2016-02-17T22:00:58.540Z",
+ "updated": "2016-02-17T22:06:50.666Z",
+ "enacted": "2016-02-17T22:06:50.680Z",
+ "policed": "2016-02-17T22:06:51.342Z",
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455746810.680553, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "instance_id": "instance-00000008",
+ "instance_uuid": "49c08f77-f05a-4c9b-859c-20c2982b19c6",
+ "name": "ovs_volt",
+ "instance_name": "mysite_volt-5",
+ "ip": "130.127.133.93",
+ "image": 1,
+ "creator": 1,
+ "slice": 6,
+ "deployment": 1,
+ "node": 2,
+ "numberCores": 0,
+ "flavor": 1,
+ "userData": null,
+ "networks": [
+ 17,
+ 16,
+ 4
+ ]
+ },
+ {
+ "humanReadableName": "mysite_vsg-1",
+ "id": 1,
+ "created": "2016-02-17T22:00:58.015Z",
+ "updated": "2016-02-17T22:05:44.877Z",
+ "enacted": "2016-02-17T22:05:44.887Z",
+ "policed": "2016-02-17T22:05:45.538Z",
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455746744.887768, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "instance_id": "instance-00000004",
+ "instance_uuid": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "name": "mysite_vsg",
+ "instance_name": "mysite_vsg-1",
+ "ip": "130.127.133.90",
+ "image": 1,
+ "creator": 1,
+ "slice": 1,
+ "deployment": 1,
+ "node": 1,
+ "numberCores": 0,
+ "flavor": 1,
+ "userData": null,
+ "networks": [
+ 1,
+ 6,
+ 7,
+ 2
+ ]
+ },
+ {
+ "humanReadableName": "mysite_vsg-2",
+ "id": 11,
+ "created": "2016-02-17T22:00:58.015Z",
+ "updated": "2016-02-17T22:05:44.877Z",
+ "enacted": "2016-02-17T22:05:44.887Z",
+ "policed": "2016-02-17T22:05:45.538Z",
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455746744.887768, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "instance_id": "instance-00000004",
+ "instance_uuid": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "name": "mysite_vsg",
+ "instance_name": "mysite_vsg-2",
+ "ip": "130.127.133.90",
+ "image": 1,
+ "creator": 1,
+ "slice": 1,
+ "deployment": 1,
+ "node": 2,
+ "numberCores": 0,
+ "flavor": 1,
+ "userData": null,
+ "networks": [
+ 1,
+ 6,
+ 7,
+ 2
+ ]
+ }
+]
\ No newline at end of file
diff --git a/views/ngXosViews/diagnostic/mocks/data/meterstatistics.json b/views/ngXosViews/diagnostic/mocks/data/meterstatistics.json
new file mode 100644
index 0000000..7be26c4
--- /dev/null
+++ b/views/ngXosViews/diagnostic/mocks/data/meterstatistics.json
@@ -0,0 +1,310 @@
+[
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "Existence of instance",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "instance",
+ "unit": "instance",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 1.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "Volume of RAM",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "memory",
+ "unit": "MB",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 2048.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "Volume of RAM used",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "memory.usage",
+ "unit": "MB",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 1754.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "CPU time used",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "cpu",
+ "unit": "ns",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 179260000000.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "Number of VCPUs",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "vcpus",
+ "unit": "vcpu",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 1.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "Number of read requests",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "disk.read.requests",
+ "unit": "request",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 10444.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "Number of write requests",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "disk.write.requests",
+ "unit": "request",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 58370.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "Volume of reads",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "disk.read.bytes",
+ "unit": "B",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 317620030.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "Volume of writes",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "disk.write.bytes",
+ "unit": "B",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 2818024448.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "Size of root disk",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "disk.root.size",
+ "unit": "GB",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 20.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-1",
+ "description": "Size of ephemeral disk",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996745",
+ "meter": "disk.ephemeral.size",
+ "unit": "GB",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 0.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "Existence of instance",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "instance",
+ "unit": "instance",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 1.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "Volume of RAM",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "memory",
+ "unit": "MB",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 2048.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "Volume of RAM used",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "memory.usage",
+ "unit": "MB",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 1534.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "CPU time used",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "cpu",
+ "unit": "ns",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 134920000000.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "Number of VCPUs",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "vcpus",
+ "unit": "vcpu",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 1.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "Number of read requests",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "disk.read.requests",
+ "unit": "request",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 10222.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "Number of write requests",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "disk.write.requests",
+ "unit": "request",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 38570.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "Volume of reads",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "disk.read.bytes",
+ "unit": "B",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 326340030.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "Volume of writes",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "disk.write.bytes",
+ "unit": "B",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 2818024448.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "Size of root disk",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "disk.root.size",
+ "unit": "GB",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 20.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ },
+ {
+ "resource_name": "mysite_vsg-2",
+ "description": "Size of ephemeral disk",
+ "resource": "075a3ae4-9e76-4198-8e6b-67c67b996746",
+ "meter": "disk.ephemeral.size",
+ "unit": "GB",
+ "category": "Nova",
+ "slice": "mysite_vsg",
+ "name": "none",
+ "service": "service_vsg",
+ "value": 0.0,
+ "time": "2016-02-17T22:19:00",
+ "project_id": "718dd78532a24a74b0491437bbef398c"
+ }
+]
\ No newline at end of file
diff --git a/views/ngXosViews/diagnostic/mocks/data/nodes.json b/views/ngXosViews/diagnostic/mocks/data/nodes.json
new file mode 100644
index 0000000..03ca1da
--- /dev/null
+++ b/views/ngXosViews/diagnostic/mocks/data/nodes.json
@@ -0,0 +1,53 @@
+[
+ {
+ "humanReadableName": "cp-3.teone-cord.xos-pg0.clemson.cloudlab.us",
+ "id": 3,
+ "created": "2016-02-17T22:00:53.717Z",
+ "updated": "2016-02-17T22:01:24.890Z",
+ "enacted": null,
+ "policed": null,
+ "backend_register": "{}",
+ "backend_status": "0 - Provisioning in progress",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": true,
+ "name": "cp-3.teone-cord.xos-pg0.clemson.cloudlab.us",
+ "site_deployment": "http://clnode067.clemson.cloudlab.us:9999/xos/sitedeployments/1/",
+ "site": "http://clnode067.clemson.cloudlab.us:9999/xos/sites/1/"
+ },
+ {
+ "humanReadableName": "cp-2.teone-cord.xos-pg0.clemson.cloudlab.us",
+ "id": 2,
+ "created": "2016-02-17T22:00:53.701Z",
+ "updated": "2016-02-17T22:01:24.891Z",
+ "enacted": null,
+ "policed": null,
+ "backend_register": "{}",
+ "backend_status": "0 - Provisioning in progress",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": true,
+ "name": "cp-2.teone-cord.xos-pg0.clemson.cloudlab.us",
+ "site_deployment": "http://clnode067.clemson.cloudlab.us:9999/xos/sitedeployments/1/",
+ "site": "http://clnode067.clemson.cloudlab.us:9999/xos/sites/1/"
+ },
+ {
+ "humanReadableName": "cp-1.teone-cord.xos-pg0.clemson.cloudlab.us",
+ "id": 1,
+ "created": "2016-02-17T22:00:53.680Z",
+ "updated": "2016-02-17T22:01:24.892Z",
+ "enacted": null,
+ "policed": null,
+ "backend_register": "{}",
+ "backend_status": "0 - Provisioning in progress",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": true,
+ "name": "cp-1.teone-cord.xos-pg0.clemson.cloudlab.us",
+ "site_deployment": "http://clnode067.clemson.cloudlab.us:9999/xos/sitedeployments/1/",
+ "site": "http://clnode067.clemson.cloudlab.us:9999/xos/sites/1/"
+ }
+]
\ No newline at end of file
diff --git a/views/ngXosViews/diagnostic/mocks/data/services.json b/views/ngXosViews/diagnostic/mocks/data/services.json
new file mode 100644
index 0000000..b3ae7b7
--- /dev/null
+++ b/views/ngXosViews/diagnostic/mocks/data/services.json
@@ -0,0 +1,177 @@
+[
+ {
+ "humanReadableName":"service_vbng",
+ "id":1,
+ "created":"2016-02-17T19:36:04.242Z",
+ "updated":"2016-02-17T19:36:04.242Z",
+ "enacted":null,
+ "policed":null,
+ "backend_register":"{}",
+ "backend_status":"0 - Provisioning in progress",
+ "deleted":false,
+ "write_protect":false,
+ "lazy_blocked":false,
+ "no_sync":false,
+ "description":null,
+ "enabled":true,
+ "kind":"vBNG",
+ "name":"service_vbng",
+ "versionNumber":"",
+ "published":true,
+ "view_url":"/admin/cord/vbngservice/$id$/",
+ "icon_url":null,
+ "public_key":null,
+ "service_specific_id":null,
+ "service_specific_attribute":null
+ },
+ {
+ "humanReadableName":"service_vsg",
+ "id":2,
+ "created":"2016-02-17T19:36:04.249Z",
+ "updated":"2016-02-17T19:36:04.249Z",
+ "enacted":null,
+ "policed":null,
+ "backend_register":"{}",
+ "backend_status":"0 - Provisioning in progress",
+ "deleted":false,
+ "write_protect":false,
+ "lazy_blocked":false,
+ "no_sync":false,
+ "description":null,
+ "enabled":true,
+ "kind":"vCPE",
+ "name":"service_vsg",
+ "versionNumber":"",
+ "published":true,
+ "view_url":"/admin/cord/vsgservice/$id$/",
+ "icon_url":null,
+ "public_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0bhkFHg3DxtQY1S0bN4nV2USTO2scHIrTO/WhZYFB9cqxKJPPlayMzi7sJxZFjsEPG9+gUJn7942eObs0mWkn7eIbph1rgKDhh2ZT6GFdJojgaRr0E3HhjmdHXF3IkCEz0DZ1aiBRX0dAEcp+B7eHvcg9QmBUN9TWhMlN82EKwMtWlrMwAqycNEcPiKiwMC3SPNPrq5qTrxIlzMG8Q51Z1b0FYx2oP0E44zecquFF8qfwoVbA48qT0fdPIdcQ0otEdsGaOxxurOPA86q1zYg60w+Hsygl8L2UpyUqEuXKm0OuhckCmCkcPlEysMAty0bx/9M3DwSkMJdOj81Jl+Bd teone@ctl.teone.xos-pg0.clemson.cloudlab.us\n",
+ "service_specific_id":null,
+ "service_specific_attribute":"{\"backend_network_label\": \"hpc_client\"}"
+ },
+ {
+ "humanReadableName":"service_volt",
+ "id":3,
+ "created":"2016-02-17T19:36:04.585Z",
+ "updated":"2016-02-17T19:36:04.585Z",
+ "enacted":null,
+ "policed":null,
+ "backend_register":"{}",
+ "backend_status":"0 - Provisioning in progress",
+ "deleted":false,
+ "write_protect":false,
+ "lazy_blocked":false,
+ "no_sync":false,
+ "description":null,
+ "enabled":true,
+ "kind":"vOLT",
+ "name":"service_volt",
+ "versionNumber":"",
+ "published":true,
+ "view_url":"/admin/cord/voltservice/$id$/",
+ "icon_url":null,
+ "public_key":null,
+ "service_specific_id":null,
+ "service_specific_attribute":null
+ },
+ {
+ "humanReadableName":"service_ceilometer",
+ "id":6,
+ "created":"2016-02-17T19:36:09.291Z",
+ "updated":"2016-02-17T19:36:09.291Z",
+ "enacted":null,
+ "policed":null,
+ "backend_register":"{}",
+ "backend_status":"0 - Provisioning in progress",
+ "deleted":false,
+ "write_protect":false,
+ "lazy_blocked":false,
+ "no_sync":false,
+ "description":null,
+ "enabled":true,
+ "kind":"ceilometer",
+ "name":"service_ceilometer",
+ "versionNumber":"",
+ "published":true,
+ "view_url":"/admin/ceilometer/ceilometerservice/$id$/",
+ "icon_url":null,
+ "public_key":null,
+ "service_specific_id":null,
+ "service_specific_attribute":"{\"ceilometer_pub_sub_url\": \"http://10.11.10.1:4455/\"}"
+ },
+ {
+ "humanReadableName":"service_sflow",
+ "id":7,
+ "created":"2016-02-17T19:36:09.339Z",
+ "updated":"2016-02-17T20:01:35.518Z",
+ "enacted":null,
+ "policed":null,
+ "backend_register":"{\"next_run\": 1455768095.518195, \"last_failure\": 1455739295.518198, \"last_success\": 1455737795.306011, \"exponent\": 293, \"failures\": 293}",
+ "backend_status":"2 - Exception('defer object service_sflow due to waiting on instance.instance_name',)",
+ "deleted":false,
+ "write_protect":false,
+ "lazy_blocked":false,
+ "no_sync":false,
+ "description":null,
+ "enabled":true,
+ "kind":"sflow",
+ "name":"service_sflow",
+ "versionNumber":"",
+ "published":true,
+ "view_url":"/admin/ceilometer/sflowservice/$id$/",
+ "icon_url":null,
+ "public_key":null,
+ "service_specific_id":null,
+ "service_specific_attribute":"{\"sflow_api_port\": 33333, \"sflow_port\": 6343}"
+ },
+ {
+ "humanReadableName":"service_ONOS_vOLT",
+ "id":4,
+ "created":"2016-02-17T19:36:04.840Z",
+ "updated":"2016-02-17T20:01:35.987Z",
+ "enacted":null,
+ "policed":null,
+ "backend_register":"{\"next_run\": 1455768095.987071, \"failures\": 282, \"last_success\": 1455737792.664808, \"exponent\": 282, \"last_failure\": 1455739295.987074}",
+ "backend_status":"2 - Exception('defer object service_ONOS_vOLT due to waiting on instance.instance_name',)",
+ "deleted":false,
+ "write_protect":false,
+ "lazy_blocked":false,
+ "no_sync":false,
+ "description":null,
+ "enabled":true,
+ "kind":"onos",
+ "name":"service_ONOS_vOLT",
+ "versionNumber":"",
+ "published":true,
+ "view_url":"/admin/onos/onosservice/$id$/",
+ "icon_url":null,
+ "public_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0bhkFHg3DxtQY1S0bN4nV2USTO2scHIrTO/WhZYFB9cqxKJPPlayMzi7sJxZFjsEPG9+gUJn7942eObs0mWkn7eIbph1rgKDhh2ZT6GFdJojgaRr0E3HhjmdHXF3IkCEz0DZ1aiBRX0dAEcp+B7eHvcg9QmBUN9TWhMlN82EKwMtWlrMwAqycNEcPiKiwMC3SPNPrq5qTrxIlzMG8Q51Z1b0FYx2oP0E44zecquFF8qfwoVbA48qT0fdPIdcQ0otEdsGaOxxurOPA86q1zYg60w+Hsygl8L2UpyUqEuXKm0OuhckCmCkcPlEysMAty0bx/9M3DwSkMJdOj81Jl+Bd teone@ctl.teone.xos-pg0.clemson.cloudlab.us\n",
+ "service_specific_id":null,
+ "service_specific_attribute":"{\"no_container\": false}"
+ },
+ {
+ "humanReadableName":"service_ONOS_vBNG",
+ "id":5,
+ "created":"2016-02-17T19:36:04.917Z",
+ "updated":"2016-02-17T20:01:36.011Z",
+ "enacted":null,
+ "policed":null,
+ "backend_register":"{\"next_run\": 1455768096.011113, \"failures\": 282, \"last_success\": 1455737792.697535, \"exponent\": 282, \"last_failure\": 1455739296.011116}",
+ "backend_status":"2 - Exception('defer object service_ONOS_vBNG due to waiting on instance.instance_name',)",
+ "deleted":false,
+ "write_protect":false,
+ "lazy_blocked":false,
+ "no_sync":false,
+ "description":null,
+ "enabled":true,
+ "kind":"onos",
+ "name":"service_ONOS_vBNG",
+ "versionNumber":"",
+ "published":true,
+ "view_url":"/admin/onos/onosservice/$id$/",
+ "icon_url":null,
+ "public_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0bhkFHg3DxtQY1S0bN4nV2USTO2scHIrTO/WhZYFB9cqxKJPPlayMzi7sJxZFjsEPG9+gUJn7942eObs0mWkn7eIbph1rgKDhh2ZT6GFdJojgaRr0E3HhjmdHXF3IkCEz0DZ1aiBRX0dAEcp+B7eHvcg9QmBUN9TWhMlN82EKwMtWlrMwAqycNEcPiKiwMC3SPNPrq5qTrxIlzMG8Q51Z1b0FYx2oP0E44zecquFF8qfwoVbA48qT0fdPIdcQ0otEdsGaOxxurOPA86q1zYg60w+Hsygl8L2UpyUqEuXKm0OuhckCmCkcPlEysMAty0bx/9M3DwSkMJdOj81Jl+Bd teone@ctl.teone.xos-pg0.clemson.cloudlab.us\n",
+ "service_specific_id":null,
+ "service_specific_attribute":"{\"no_container\": false}"
+ }
+]
\ No newline at end of file
diff --git a/views/ngXosViews/diagnostic/mocks/data/subscribers.json b/views/ngXosViews/diagnostic/mocks/data/subscribers.json
new file mode 100644
index 0000000..3642257
--- /dev/null
+++ b/views/ngXosViews/diagnostic/mocks/data/subscribers.json
@@ -0,0 +1,20 @@
+[
+ {
+ "humanReadableName":"My House",
+ "id":1,
+ "created":"2016-02-17T19:36:04.167Z",
+ "updated":"2016-02-17T19:36:05.413Z",
+ "enacted":null,
+ "policed":null,
+ "backend_register":"{}",
+ "backend_status":"0 - Provisioning in progress",
+ "deleted":false,
+ "write_protect":false,
+ "lazy_blocked":false,
+ "no_sync":false,
+ "kind":"CordSubscriberRoot",
+ "name":"My House",
+ "service_specific_attribute":"{\"url_filter_enable\": false, \"cdn_enable\": false, \"url_filter_level\": \"R\", \"users\": [{\"mac\": \"01:02:03:04:05:06\", \"level\": \"PG_13\", \"id\": 0, \"name\": \"Mom's PC\"}, {\"mac\": \"34:36:3B:C9:B6:A6\", \"id\": 1, \"name\": \"Jill's Laptop\", \"level\": \"PG_13\"}, {\"mac\": \"68:5B:35:9D:91:D5\", \"level\": \"PG_13\", \"id\": 2, \"name\": \"Jack's Laptop\"}, {\"id\": 3, \"mac\": \"90:E2:BA:82:F9:75\", \"name\": \"Dad's PC\", \"level\": \"PG_13\"}], \"firewall_enable\": false}",
+ "service_specific_id":"123"
+ }
+]
\ No newline at end of file
diff --git a/views/ngXosViews/diagnostic/mocks/data/tenants.json b/views/ngXosViews/diagnostic/mocks/data/tenants.json
new file mode 100644
index 0000000..3f7574c
--- /dev/null
+++ b/views/ngXosViews/diagnostic/mocks/data/tenants.json
@@ -0,0 +1,209 @@
+[
+ {
+ "humanReadableName": "coarse-tenant-1",
+ "id": 1,
+ "created": "2016-02-17T19:36:04.259Z",
+ "updated": "2016-02-17T19:36:04.259Z",
+ "enacted": null,
+ "policed": null,
+ "backend_register": "{}",
+ "backend_status": "0 - Provisioning in progress",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "kind": "coarse",
+ "provider_service": 1,
+ "subscriber_service": 2,
+ "subscriber_tenant": null,
+ "subscriber_user": null,
+ "subscriber_root": null,
+ "service_specific_id": null,
+ "service_specific_attribute": null,
+ "connect_method": "na"
+ },
+ {
+ "humanReadableName": "coarse-tenant-2",
+ "id": 2,
+ "created": "2016-02-17T19:36:04.600Z",
+ "updated": "2016-02-17T19:36:04.600Z",
+ "enacted": null,
+ "policed": null,
+ "backend_register": "{}",
+ "backend_status": "0 - Provisioning in progress",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "kind": "coarse",
+ "provider_service": 2,
+ "subscriber_service": 3,
+ "subscriber_tenant": null,
+ "subscriber_user": null,
+ "subscriber_root": null,
+ "service_specific_id": null,
+ "service_specific_attribute": null,
+ "connect_method": "na"
+ },
+ {
+ "humanReadableName": "vCPE-tenant-4",
+ "id": 4,
+ "created": "2016-02-17T19:36:04.650Z",
+ "updated": "2016-02-17T20:55:18.115Z",
+ "enacted": null,
+ "policed": null,
+ "backend_register": "{\"next_run\": 1455771318.072057, \"last_failure\": 1455742518.072061, \"last_success\": 1455737797.006782, \"exponent\": 871, \"failures\": 871}",
+ "backend_status": "2 - Exception('defer object vCPE-tenant-4 due to waiting on instance.instance_name',)",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "kind": "vCPE",
+ "provider_service": 2,
+ "subscriber_service": null,
+ "subscriber_tenant": "3",
+ "subscriber_user": null,
+ "subscriber_root": null,
+ "service_specific_id": null,
+ "service_specific_attribute": "{\"instance_id\": 1, \"creator_id\": 1}",
+ "connect_method": "na"
+ },
+ {
+ "humanReadableName": "ceilometer-tenant-8",
+ "id": 8,
+ "created": "2016-02-17T19:36:09.370Z",
+ "updated": "2016-02-17T20:55:19.823Z",
+ "enacted": null,
+ "policed": null,
+ "backend_register": "{\"next_run\": 1455771319.823556, \"failures\": 874, \"last_success\": 1455737795.314296, \"exponent\": 874, \"last_failure\": 1455742519.823559}",
+ "backend_status": "2 - Exception('defer object ceilometer-tenant-8 due to waiting on instance.instance_name',)",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "kind": "ceilometer",
+ "provider_service": 6,
+ "subscriber_service": null,
+ "subscriber_tenant": null,
+ "subscriber_user": null,
+ "subscriber_root": null,
+ "service_specific_id": null,
+ "service_specific_attribute": "{\"instance_id\": 7, \"creator_id\": 1, \"use_same_instance_for_multiple_tenants\": true}",
+ "connect_method": "na"
+ },
+ {
+ "humanReadableName": "vBNG-tenant-5",
+ "id": 5,
+ "created": "2016-02-17T19:36:04.769Z",
+ "updated": "2016-02-17T20:55:21.385Z",
+ "enacted": null,
+ "policed": null,
+ "backend_register": "{\"next_run\": 1455771321.384039, \"last_failure\": 1455742521.384043, \"last_success\": 1455737796.18277, \"exponent\": 881, \"failures\": 881}",
+ "backend_status": "2 - Exception('defer object vBNG-tenant-5 due to does not have a WAN IP yet',)",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "kind": "vBNG",
+ "provider_service": 1,
+ "subscriber_service": null,
+ "subscriber_tenant": "4",
+ "subscriber_user": null,
+ "subscriber_root": null,
+ "service_specific_id": null,
+ "service_specific_attribute": null,
+ "connect_method": "na"
+ },
+ {
+ "humanReadableName": "onos-tenant-6",
+ "id": 6,
+ "created": "2016-02-17T19:36:05.048Z",
+ "updated": "2016-02-17T20:41:16.675Z",
+ "enacted": "2016-02-17T20:41:16.729Z",
+ "policed": null,
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455741676.729897, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "kind": "onos",
+ "provider_service": 5,
+ "subscriber_service": 1,
+ "subscriber_tenant": null,
+ "subscriber_user": null,
+ "subscriber_root": null,
+ "service_specific_id": null,
+ "service_specific_attribute": "{\"creator_id\": 1, \"dependencies\": \"org.onosproject.proxyarp, org.onosproject.virtualbng, org.onosproject.openflow, org.onosproject.fwd\", \"name\": \"vBNG_ONOS_app\"}",
+ "connect_method": "na"
+ },
+ {
+ "humanReadableName": "vOLT-tenant-3",
+ "id": 3,
+ "created": "2016-02-17T19:36:04.631Z",
+ "updated": "2016-02-17T20:28:30.428Z",
+ "enacted": null,
+ "policed": null,
+ "backend_register": "{}",
+ "backend_status": "0 - Provisioning in progress",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "kind": "vOLT",
+ "provider_service": 3,
+ "subscriber_service": null,
+ "subscriber_tenant": null,
+ "subscriber_user": null,
+ "subscriber_root": "http://clnode078.clemson.cloudlab.us:9999/xos/tenantroots/1/",
+ "service_specific_id": "123",
+ "service_specific_attribute": "{\"creator_id\": 1, \"c_tag\": \"432\", \"s_tag\": \"222\"}",
+ "connect_method": "na"
+ },
+ {
+ "humanReadableName": "onos-tenant-7",
+ "id": 7,
+ "created": "2016-02-17T19:36:05.089Z",
+ "updated": "2016-02-17T20:40:54.451Z",
+ "enacted": "2016-02-17T20:40:54.468Z",
+ "policed": null,
+ "backend_register": "{\"next_run\": 0, \"last_success\": 1455741654.468755, \"exponent\": 0}",
+ "backend_status": "1 - OK",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "kind": "onos",
+ "provider_service": 4,
+ "subscriber_service": 3,
+ "subscriber_tenant": null,
+ "subscriber_user": null,
+ "subscriber_root": null,
+ "service_specific_id": null,
+ "service_specific_attribute": "{\"creator_id\": 1, \"dependencies\": \"org.onosproject.openflow-base, org.onosproject.olt, org.ciena.onos.ext_notifier, org.ciena.onos.volt_event_publisher\", \"name\": \"vOLT_ONOS_app\", \"install_dependencies\": \"onos-ext-notifier-1.0-SNAPSHOT.oar, onos-ext-volt-event-publisher-1.0-SNAPSHOT.oar\"}",
+ "connect_method": "na"
+ },
+ {
+ "humanReadableName": "vCPE-tenant-4",
+ "id": 14,
+ "created": "2016-02-17T19:36:04.650Z",
+ "updated": "2016-02-17T20:55:18.115Z",
+ "enacted": null,
+ "policed": null,
+ "backend_register": "{\"next_run\": 1455771318.072057, \"last_failure\": 1455742518.072061, \"last_success\": 1455737797.006782, \"exponent\": 871, \"failures\": 871}",
+ "backend_status": "2 - Exception('defer object vCPE-tenant-4 due to waiting on instance.instance_name',)",
+ "deleted": false,
+ "write_protect": false,
+ "lazy_blocked": false,
+ "no_sync": false,
+ "kind": "vCPE",
+ "provider_service": 2,
+ "subscriber_service": null,
+ "subscriber_tenant": "3",
+ "subscriber_user": null,
+ "subscriber_root": null,
+ "service_specific_id": null,
+ "service_specific_attribute": "{\"instance_id\": 11, \"creator_id\": 1}",
+ "connect_method": "na"
+ }
+]
\ No newline at end of file
diff --git a/views/ngXosViews/diagnostic/mocks/diagnostic.conf.json b/views/ngXosViews/diagnostic/mocks/diagnostic.conf.json
new file mode 100644
index 0000000..9f574fe
--- /dev/null
+++ b/views/ngXosViews/diagnostic/mocks/diagnostic.conf.json
@@ -0,0 +1,33 @@
+[
+ {
+ "url": "subscribers",
+ "base": "xos/",
+ "methods": ["GET"]
+ },
+ {
+ "url": "services",
+ "base": "xos/",
+ "methods": ["GET"]
+ },
+ {
+ "url": "tenants",
+ "base": "xos/",
+ "methods": ["GET"]
+ },
+ {
+ "url": "nodes",
+ "base": "xos/",
+ "methods": ["GET"]
+ },
+ {
+ "url": "instances",
+ "base": "xos/",
+ "methods": ["GET"],
+ "param": "id"
+ },
+ {
+ "url": "meterstatistics",
+ "base": "xoslib/",
+ "methods": ["GET"]
+ }
+]
\ No newline at end of file
diff --git a/views/ngXosViews/diagnostic/package.json b/views/ngXosViews/diagnostic/package.json
index f77d454..1a9b456 100644
--- a/views/ngXosViews/diagnostic/package.json
+++ b/views/ngXosViews/diagnostic/package.json
@@ -5,7 +5,9 @@
"scripts": {
"prestart": "npm install && bower install",
"start": "gulp serve",
+ "dev": "NODE_ENV=local gulp serve",
"prebuild": "npm install && bower install",
+ "server": "easy-mocker -c ./mocks/diagnostic.conf.json -d ./mocks/data",
"build": "gulp",
"test": "karma start",
"lint": "eslint src/js/"
@@ -21,6 +23,7 @@
"devDependencies": {
"browser-sync": "^2.9.11",
"del": "^2.0.2",
+ "easy-mocker": "^1.2.0",
"eslint": "^1.8.0",
"eslint-plugin-angular": "linkmesrl/eslint-plugin-angular",
"gulp": "^3.9.0",
@@ -36,14 +39,6 @@
"gulp-replace": "^0.5.4",
"gulp-uglify": "^1.4.2",
"http-proxy": "^1.12.0",
- "jasmine-core": "^2.4.1",
- "karma-jasmine": "^0.3.6",
- "lodash": "^3.10.1",
- "proxy-middleware": "^0.15.0",
- "run-sequence": "^1.1.4",
- "wiredep": "^3.0.0-beta",
- "wrench": "^1.5.8",
- "phantomjs": "^1.9.19",
"ink-docstrap": "^0.5.2",
"jasmine-core": "~2.3.4",
"karma": "^0.13.14",
@@ -52,6 +47,12 @@
"karma-jasmine": "~0.3.6",
"karma-mocha-reporter": "~1.1.1",
"karma-ng-html2js-preprocessor": "^0.2.0",
- "karma-phantomjs-launcher": "~0.2.1"
+ "karma-phantomjs-launcher": "~0.2.1",
+ "lodash": "^3.10.1",
+ "phantomjs": "^1.9.19",
+ "proxy-middleware": "^0.15.0",
+ "run-sequence": "^1.1.4",
+ "wiredep": "^3.0.0-beta",
+ "wrench": "^1.5.8"
}
}
diff --git a/views/ngXosViews/diagnostic/src/css/serviceTopology.css b/views/ngXosViews/diagnostic/src/css/serviceTopology.css
index 8b615ec..ebd17e5 100644
--- a/views/ngXosViews/diagnostic/src/css/serviceTopology.css
+++ b/views/ngXosViews/diagnostic/src/css/serviceTopology.css
@@ -193,6 +193,59 @@
animation:0.5s bounceOutRight ease;
}
+/* LOADER */
+.loader {
+ font-size: 10px;
+ margin: 150px auto;
+ text-indent: -9999em;
+ width: 11em;
+ height: 11em;
+ border-radius: 50%;
+ background: #ffffff;
+ background: -moz-linear-gradient(left, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
+ background: -webkit-linear-gradient(left, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
+ background: -o-linear-gradient(left, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
+ background: -ms-linear-gradient(left, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
+ background: linear-gradient(to right, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
+ position: relative;
+ animation: load3 1.4s infinite linear;
+ transform: translateZ(0);
+}
+.loader:before {
+ width: 50%;
+ height: 50%;
+ background: #105E9E;
+ border-radius: 100% 0 0 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ content: '';
+}
+.loader:after {
+ background: #fff;
+ width: 75%;
+ height: 75%;
+ border-radius: 50%;
+ content: '';
+ margin: auto;
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+
+@keyframes load3 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
/* ANIMATIONS */
@keyframes bounceInRight {
diff --git a/views/ngXosViews/diagnostic/src/js/diagnostic.js b/views/ngXosViews/diagnostic/src/js/diagnostic.js
index 2b31f31..63ab420 100644
--- a/views/ngXosViews/diagnostic/src/js/diagnostic.js
+++ b/views/ngXosViews/diagnostic/src/js/diagnostic.js
@@ -8,6 +8,8 @@
templateUrl: 'templates/diagnostic.tpl.html',
controllerAs: 'vm',
controller: function(Subscribers, ServiceRelation){
+ this.loader = true;
+ this.error = false;
Subscribers.query().$promise
.then((subscribers) => {
this.subscribers = subscribers;
@@ -15,6 +17,13 @@
})
.then((serviceChain) => {
this.serviceChain = serviceChain;
+ })
+ .catch(e => {
+ throw new Error(e);
+ this.error = e;
+ })
+ .finally(() => {
+ this.loader = false;
});
}
}
diff --git a/views/ngXosViews/diagnostic/src/js/serviceTopology.js b/views/ngXosViews/diagnostic/src/js/serviceTopology.js
index b358abf..3d602fe 100644
--- a/views/ngXosViews/diagnostic/src/js/serviceTopology.js
+++ b/views/ngXosViews/diagnostic/src/js/serviceTopology.js
@@ -32,6 +32,8 @@
const width = el.clientWidth - (serviceTopologyConfig.widthMargin * 2);
const height = el.clientHeight - (serviceTopologyConfig.heightMargin * 2);
+ console.log(el.clientWidth, el.clientHeight);
+
const treeLayout = d3.layout.tree()
.size([height, width]);
diff --git a/views/ngXosViews/diagnostic/src/templates/diagnostic.tpl.html b/views/ngXosViews/diagnostic/src/templates/diagnostic.tpl.html
index ff88b49..172b9f7 100644
--- a/views/ngXosViews/diagnostic/src/templates/diagnostic.tpl.html
+++ b/views/ngXosViews/diagnostic/src/templates/diagnostic.tpl.html
@@ -1,16 +1,30 @@
<div class="container-fluid">
- <div class="onethird-height">
- <service-topology service-chain="vm.serviceChain"></service-topology>
+ <div ng-hide="vm.error && vm.loader">
+ <div class="onethird-height">
+ <service-topology service-chain="vm.serviceChain"></service-topology>
+ </div>
+ <div class="twothird-height">
+ <!-- <div class="panel panel-primary subscriber-select">
+ <div class="panel-heading">Select a subscriber:</div>
+ <div class="panel-body">
+ <select class="form-control" ng-options="s as s.name for s in vm.subscribers" ng-model="vm.selectedSubscriber">
+ <option value="">Select a subscriber...</option>
+ </select>
+ </div>
+ </div> -->
+ <logic-topology ng-if="vm.subscribers" subscribers="vm.subscribers" selected="vm.selectedSubscriber"></logic-topology>
+ </div>
</div>
- <div class="twothird-height">
- <!-- <div class="panel panel-primary subscriber-select">
- <div class="panel-heading">Select a subscriber:</div>
- <div class="panel-body">
- <select class="form-control" ng-options="s as s.name for s in vm.subscribers" ng-model="vm.selectedSubscriber">
- <option value="">Select a subscriber...</option>
- </select>
+ <div class="row" ng-show="vm.error">
+ <div class="col-xs-12">
+ <div class="alert alert-danger">
+ {{vm.error}}
</div>
- </div> -->
- <logic-topology ng-if="vm.subscribers" subscribers="vm.subscribers" selected="vm.selectedSubscriber"></logic-topology>
+ </div>
+ </div>
+ <div class="row" ng-show="vm.loader">
+ <div class="col-xs-12">
+ <div class="loader">Loading</div>
+ </div>
</div>
</div>
\ No newline at end of file