Changes between Version 72 and Version 73 of OperationalMonitoring/DataSchema


Ignore:
Timestamp:
08/29/14 10:48:43 (10 years ago)
Author:
lnevers@bbn.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OperationalMonitoring/DataSchema

    v72 v73  
    11[[PageOutline]]
    22
    3 == REST Data Schema ==
    4 All of these inherit from the [http://unis.incntre.iu.edu/schema/20120709/networkresource network resource schema] with the exception of the opsconfig schema (which inherits from [http://unis.incntre.iu.edu/schema/20120709/domain domain schema]).
    5 
    6  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/opsconfig]: operational configuration metadata, including locations of and information about other datastores
    7  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/aggregate]: metadata about an aggregate (including lists of resources and slivers at that aggregate, and where to look for measurements about the aggregate)
    8  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/node]: metadata about a resources (including resource properties termed "config" above, and a list of relevant ports (or of all ports, whichever is easier) on that resource)
    9  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/port]: metadata about a network interface (including resource properties termed "config" above)
    10  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/port-vlan]: metadata about a tagged VLAN subinterface of a network interface
    11  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/sliver]: metadata about a sliver at an aggregate, including resources to which that sliver is mapped
    12  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/authority]: metadata about a GENI authority (including lists of GENI users and slivers at that authority)
    13  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/slice]: metadata about a slice at an authority, including GENI users with roles on that slice
    14  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/user]: metadata about a GENI user at an authority, including contact information
    15  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/experiment]: metadata about an operational monitoring experiment for monitoring the dataplane.
    16  * [http://www.gpolab.bbn.com/monitoring/schema/20140501/data]: Schema based on a combination of [http://unis.incntre.iu.edu/schema/20120709/metadata] and [http://unis.incntre.iu.edu/schema/20120709/tsdatum], contains both metadata and data about measurements.
    17  * For now, we would use the `ops_monitoring` namespace for operations monitoring, meaning:
    18    * When we add monitoring-relevant optional properties to objects, we'll put them in an `ops_monitoring` dictionary
    19    * When we setup operations monitoring measurements, we'll give them the eventType `ops_monitoring:<something>`
    20 
    21 === Data schema usage example ===
    22 
    23 Some examples usages of the above schemas to encode metadata and data needed for use cases 3 and 6 follow.
    24 
    25 These examples assume the following (fictitious) local datastore URLs.  These are arbitrary, and any place they appear, they can be replaced by whatever name the deployers prefer.  For simplicitly, i've shown one local datastore per aggregate here, but the architecture does ''not'' require that --- it would be perfectly fine to have one datastore for relational metadata and one for the data itself, or one for certain types of relational metadata and one for others.
     3== REST calls and JSON Replies for Monitoring Data ==
     4
     5Monitoring data collectors make REST calls to monitoring datastores.  Datastores reply with JSON data that conforms to a JSON schema that is specific to the type of REST call being responded to.
     6All of these schemas inherit from the [http://unis.incntre.iu.edu/schema/20120709/networkresource UNIS network resource schema] with the exception of the opsconfig schema.
     7This page gives examples of these REST calls and responses.
     8These examples assume the following (fictitious) local datastore URLs.
     9For simplicitly, we show one local datastore per aggregate here, but the architecture does ''not'' require that.  It is fine to have the data for an aggregate be split among multiple datastores.
    2610 * `https://datastore.geni.net/`: datastore containing configuration data for operational monitoring
    2711 * `https://datastore.instageni.gpolab.bbn.com/`: datastore for gpo-ig aggregate
     
    2913 * `https://datastore.externalchecks.geni.net/`: datastore for external checks in the monitoring framework (e.g. inter-aggregate pings, AM external availability)
    3014
    31 ==== Data about operational monitoring configuration ====
    32 
    33 Operational monitoring configuration data tells collectors where to find local datastores, and includes relevant metadata (like URNs and metadata about datastore or aggregate types) that collectors can use to decide which datastores to query.  It is described using [http://www.gpolab.bbn.com/monitoring/schema/20140501/opsconfig# the opsconfig schema].  Examples:
    34  * geni-prod: a hypothetical config datastore listing production aggregates and authorities:
     15==== Aggregate call and response ====
     16
     17Retrieves information about an aggregate, including lists of resources and slivers at that aggregate, version information, and where to look for measurements about the aggregate.
     18
     19General form of the REST call:
     20{{{
     21https://<datastore-host>/info/aggregate/<aggregate-id>
     22}}}
     23
     24<aggregate-id> is usually the aggregate's GENI-assigned nickname (common name).
     25
     26Example REST call for aggregate gpo-ig:
     27{{{
     28https://datastore.instageni.gpolab.bbn.com/info/aggregate/gpo-ig
     29}}}
     30
     31The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/aggregate# aggregate schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/aggregate.schema.jwc commented version of the aggregate schema].
    3532{{{
    3633{
    37   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/opsconfig#",
    38   "id": "geni-prod",
    39   "selfRef": "https://datastore.geni.net/opsconfigs/geni-prod",
    40   "ts": 1391192685740849,
    41   "aggregates": [
    42     {
    43       "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm",
    44       "amtype": "protogeni",
    45       "href": "https://datastore.instageni.gpolab.bbn.com/aggregates/gpo-ig"
    46     }
    47   ],
    48   "authorities": [
    49     {
    50       "urn": "urn:publicid:IDN+ch.geni.net+authority+ch",
    51       "href": "https://datastore.ch.geni.net/authorities/ch.geni.net"
    52     }
    53   ]
    54 }
    55 }}}
    56 
    57 ==== Data about an aggregate ====
    58 
    59 Aggregates are indexed by GENI-agreed short name and described using [http://www.gpolab.bbn.com/monitoring/schema/20140501/aggregate# the aggregate schema].  Examples:
    60 
    61 Hypothetical REST call for GPO-IG:
    62 {{{
    63 https://datastore.instageni.gpolab.bbn.com/info/aggregate/gpo-ig
    64 }}}
    65  Response:
    66 {{{
    67 {
    68   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/aggregate#",
     34  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/aggregate#",
    6935  "id": "gpo-ig",
    7036  "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/aggregate/gpo-ig",
     
    7238  "ts": 1391192685740849,
    7339  "measRef": "https://datastore.instageni.gpolab.bbn.com/data",
     40  "monitoring_version": "v2.0",
     41  "operational_status": "production",
    7442  "resources": [
    7543    {
    7644      "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc1",
    77       "href": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1"
     45      "resource_type": "node",
     46      "href": "https://datastore.instageni.gpolab.bbn.com/nodes/instageni.gpolab.bbn.com_node_pc1"
    7847    },
    7948    {
    8049      "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc2",
    81       "href": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc2"
    82     },
    83     {
    84       "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+link_001",
    85       "href": "https://datastore.instageni.gpolab.bbn.com/info/link/instageni.gpolab.bbn.com_link_001"
     50      "resource_type": "node",
     51      "href": "https://datastore.instageni.gpolab.bbn.com/nodes/instageni.gpolab.bbn.com_node_pc2"
    8652    }
    8753  ],
     
    8955    {
    9056      "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+sliver+26947",
    91       "href": "https://datastore.instageni.gpolab.bbn.com/info/sliver/instageni.gpolab.bbn.com_sliver_26947"
     57      "href": "https://datastore.instageni.gpolab.bbn.com/slivers/instageni.gpolab.bbn.com_sliver_36947"
    9258    }
    9359  ]
     
    9561}}}
    9662
    97 ==== Data about a node ====
    98 
    99 Nodes have an ID which is a URL-sanitized version of their URN and are described using [http://unis.incntre.iu.edu/schema/20140501/node# the node schema].  Examples:
    100  Hypothetical REST call for GPO-IG PC1:
     63==== Node call and response ====
     64
     65Retrieves information about a node.
     66
     67General form of the REST call:
     68{{{
     69https://<datastore-host>/info/node/<node object id>
     70}}}
     71
     72Example REST call for gpo-ig node pc1:
    10173{{{
    10274https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1
    10375}}}
    104  Response:
     76
     77The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/node node schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/node.schema.jwc commented version of the node schema].
    10578{{{
    10679{
    107   "$schema": "http://unis.incntre.iu.edu/schema/20140501/node#",
     80  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/node#",
    10881  "id": "instageni.gpolab.bbn.com_node_pc1",
    10982  "ts": 1391192705275101,
    110   "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
     83  "selfRef": "https://datastore.instageni.gpolab.bbn.com/nodes/instageni.gpolab.bbn.com_node_pc1",
    11184  "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc1",
    11285  "ops_monitoring:mem_total_kb": 50331648,
    113   "ops_monitoring:vm_server_type": "xen",
    114   "ports": [
     86  "node_type": "server",
     87  "virtualization_type": "xen",
     88  "interfaces": [
    11589    {
    11690      "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth0",
     
    133107}}}
    134108
    135 ==== Data about a link ====
    136 
    137 Links have an ID which is a URL-sanitized version of their URN and are described using [http://www.gpolab.bbn.com/monitoring/schema/20140501/link# the link schema].  Examples:
    138  Hypothetical REST call for GRNOC link salt_port_1750:
    139 {{{
    140 https://datastore.grnoc.iu.edu/info/link/salt_port_1750
    141 }}}
    142  Response:
     109==== Link call and response ====
     110
     111Retrieves information about a link.
     112
     113General form of the REST call:
     114{{{
     115https://<datastore-host>/info/link/<link object id>
     116}}}
     117
     118Example REST call for arbitrary_id_001:
     119{{{
     120https://datastore.grnoc.iu.edu/info/link/arbitrary_id_001
     121}}}
     122
     123The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/link# link schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/link.schema.jwc commented version of the link schema].
    143124{{{
    144125{
    145   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/link#",
    146   "id": "datastore.grnoc.iu.edu_link_001",
    147   "ts": 1391192705275101,
    148   "selfRef": "https://datastore.grnoc.iu.edu/info/link/salt_port_1750",
    149   "urn": "urn:publicid:IDN+datastore.grnoc.iu.edu+salt_port_1750",
    150   },
     126  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/link#",
     127  "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/link/arbitrary_id_001",
     128  "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+link+arbitrary_id_001",
     129  "ts": 1391194147100678,
     130  "id": "arbitrary_id_001",
    151131  "endpoints": [
    152     {
    153       "urn": "urn:publicid:IDN+al2s.net.internet2.edu+interface+sdn-sw.salt.net.internet2.edu_100GigabitEthernet3_2_1750",
    154       "href": "https://datastore.grnoc.iu.edu/info/interfacevlan/sdn-sw.salt.net.internet2.edu_100GigabitEthernet3_2_1750"
    155     },
    156     {
    157       "urn": "urn:publicid:IDN+al2s.net.internet2.edu+interface+sdn-sw.port.net.internet2.edu_100GigabitEthernet3_2_1750",
    158       "href": "https://datastore.grnoc.iu.edu/info/interfacevlan/sdn-sw.port.net.internet2.edu_100GigabitEthernet3_2_1750"   
    159     }
    160   ],
    161   "l2path": [ 
    162     {
    163       "urn": "urn:publicid:IDN+al2s.net.internet2.edu+interface+sdn-sw.salt.net.internet2.edu_100GigabitEthernet3_2_1750",
    164       "href": "https://datastore.grnoc.iu.edu/info/interfacevlan/sdn-sw.salt.net.internet2.edu_100GigabitEthernet3_2_1750"
    165     },
    166     {
    167       "urn": "urn:publicid:IDN+al2s.net.internet2.edu+interface+sdn-sw.salt.net.internet2.edu_100GigabitEthernet3_1_47",
    168       "href": "https://datastore.grnoc.iu.edu/info/interfacevlan/sdn-sw.salt.net.internet2.edu_100GigabitEthernet3_1_47"
    169     },
    170     {
    171       "urn": "urn:publicid:IDN+al2s.net.internet2.edu+interface+sdn-sw.seat.net.internet2.edu_100GigabitEthernet3_2_47",
    172       "href": "https://datastore.grnoc.iu.edu/info/interfacevlan/sdn-sw.seat.net.internet2.edu_100GigabitEthernet3_2_47"   
    173     },
    174     {
    175       "urn": "urn:publicid:IDN+al2s.net.internet2.edu+interface+sdn-sw.seat.net.internet2.edu_100GigabitEthernet3_1_38",
    176       "href": "https://datastore.grnoc.iu.edu/info/interfacevlan/sdn-sw.seat.net.internet2.edu_100GigabitEthernet3_1_38"   
    177     },
    178     {
    179       "urn": "urn:publicid:IDN+al2s.net.internet2.edu+interface+sdn-sw.port.net.internet2.edu_100GigabitEthernet3_1_38",
    180       "href": "https://datastore.grnoc.iu.edu/info/interfacevlan/sdn-sw.port.net.internet2.edu_100GigabitEthernet3_1_38"   
    181     },
    182     {
    183       "urn": "urn:publicid:IDN+al2s.net.internet2.edu+interface+sdn-sw.port.net.internet2.edu_100GigabitEthernet3_2_1750",
    184       "href": "https://datastore.grnoc.iu.edu/info/interfacevlan/sdn-sw.port.net.internet2.edu_100GigabitEthernet3_2_1750"   
     132    {
     133      "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc2:eth1:1750",
     134      "href": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc2:eth1:1750"
     135    },
     136    {
     137      "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth1:1750",
     138      "href": "https://datastore.instageni.gpolab.bbn.com/info/interfacevlan/instageni.gpolab.bbn.com_interface_pc1:eth1:1750"
    185139    }
    186140  ]
     
    188142}}}
    189143
    190 
    191 ==== Data about an interface ====
    192 
    193 Interfaces have an ID which is a URL-sanitized version of their URN and are described using [http://unis.incntre.iu.edu/schema/20120709/port# the port schema].  Notes:
    194  * I adopted the control/experimental terminology for interface roles from ProtoGENI listresources output.  We could also use control/data; at any rate, we should be consistent among all monitoring uses.
    195  * All bandwidths are fiction.
    196 
    197 Examples:
    198 
    199  Hypothetical REST call for pc1 eth0 (control) at gpo-ig:
     144==== Interface call and response ====
     145
     146Retrieves information about a network interface, a.k.a. port.
     147
     148General form of the REST call:
     149{{{
     150https://<datastore-host>/info/interface/<interface object id>
     151}}}
     152
     153Example REST call for pc1 eth0 at gpo-ig:
    200154{{{
    201155https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1:eth0
    202156}}}
    203  Response:
     157
     158The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/interface interface schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/interface.schema.jwc commented version of the interface schema].
    204159{{{
    205160{
    206   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/port#",
     161  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/interface#",
    207162  "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1:eth0",
    208163  "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth0",
    209164  "ts": 1391194147100678,
    210165  "id": "instageni.gpolab.bbn.com_interface_pc1:eth0",
    211   "address": {
    212     "type": "ipv4",
    213     "address": "192.1.242.140"
    214   },
     166  "addresses": [
     167    {
     168      "addrtype": "IPv4",
     169      "address": "192.1.242.140",
     170      "scope": "private"
     171    },
     172    {
     173      "addrtype": "IPv6",
     174      "address": "2001:cdba::3257:9652"
     175    }
     176  ],
    215177  "ops_monitoring:role": "control",
    216178  "ops_monitoring:max_bps": 10000000,
     
    219181}}}
    220182
    221  Hypothetical REST call for pc1 eth1 (dataplane) interface at gpo-ig:
    222 
    223 {{{
    224 https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1:eth1
    225 }}}
    226  Response:
     183==== Interface-VLAN call and response ====
     184
     185Retrieves information about a tagged VLAN subinterface of a network interface.
     186
     187General form of the REST call:
     188{{{
     189https://<datastore-host>/info/interfacevlan/<interfacevlan object id>
     190}}}
     191
     192Example REST call for VLAN 1750 on pc1 eth1:
     193{{{
     194https://datastore.instageni.gpolab.bbn.com/info/interfacevlan/instageni.gpolab.bbn.com_interface_pc1:eth1:1750
     195}}}
     196
     197The response conforms to the  [http://www.gpolab.bbn.com/monitoring/schema/20140828/interfacevlan interfacevlan schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/interfacevlan.schema.jwc commented version of the interfacevlan schema].
    227198{{{
    228199{
    229   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/port#",
    230   "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1:eth1",
    231   "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth1",
     200  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/interfacevlan#",
     201  "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/interfacevlan/instageni.gpolab.bbn.com_interface_pc1:eth1:1750",
     202  "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth1:1750",
    232203  "ts": 1391194147100678,
    233   "id": "instageni.gpolab.bbn.com_interface_pc1:eth1",
    234   "address": {
    235     "type": "mac",
    236     "address": "aa:aa:aa:aa:aa:ab"
    237   },
    238   "ops_monitoring:role": "experimental",
    239   "ops_monitoring:max_bps": 10000000,
    240   "ops_monitoring:max_pps": 1000000
     204  "id": "instageni.gpolab.bbn.com_interface_pc1:eth1:1750",
     205  "tag": 1750,
     206  "interface": {
     207    "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth1",
     208    "href": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1:eth1"
     209  }
    241210}
    242211}}}
    243212
    244 ==== Data about a slice authority ====
    245 
    246 GENI slice authorities are indexed by domain name and described using [http://www.gpolab.bbn.com/monitoring/schema/20140501/authority# the authority schema].  Examples:
    247 
    248 
    249  Hypothetical REST call for authority of ch.geni.net:
     213==== Slice authority call and response ====
     214
     215Retrieves information about a slice authority.
     216
     217General form of the REST call:
     218{{{
     219https://<datastore-host>/info/slice/<slice object id>
     220}}}
     221
     222Example REST call for authority of ch.geni.net:
    250223{{{
    251224https://datastore.ch.geni.net/info/authority/ch.geni.net
    252225}}}
    253  Response:
     226
     227The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/authority authority schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/authority.schema.jwc commented version of the authority schema].
    254228{{{
    255229{
    256   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/authority#",
     230  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/authority#",
    257231  "id": "ch.geni.net",
    258232  "selfRef": "https://datastore.ch.geni.net/info/authority/ch.geni.net",
     
    275249
    276250
    277 ==== Data about a VLAN ====
    278 
    279 Examples:
    280 
    281  Hypothetical REST call for VLAN 101 from nox to core controlled by ION (probably an incorrect example):
    282 {{{
    283 https://datastore.instageni.gpolab.bbn.com/info/interfacevlan/instageni.gpolab.bbn.com_interface_pc1:eth1:1750
    284 }}}
    285  Response:
     251==== User call and response ====
     252
     253Retrieves information about a GENI user.
     254
     255General form of the REST call:
     256{{{
     257https://<datastore-host>/info/user/<user object id>
     258}}}
     259
     260Example REST call for user tupty at ch.geni.net:
     261{{{
     262https://datastore.ch.geni.net/info/user/tupty
     263}}}
     264
     265The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/user user schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/user.schema.jwc commented version of the user schema].
    286266{{{
    287267{
    288   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/port-vlan#",
    289   "selfRef": "https://datastore.instageni.gpolab.bbn.com/interfacevlan/instageni.gpolab.bbn.com_interface_pc1:eth1:1750",
    290   "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth1:1750",
    291   "ts": 1391194147100678,
    292   "id": "instageni.gpolab.bbn.com_interface_pc1:eth1:1750",
    293   "tag": 1750,
    294   "port": {
    295     "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc1:eth1",
    296     "href": "https://datastore.instageni.gpolab.bbn.com/ports/instageni.gpolab.bbn.com_interface_pc1:eth1"
    297   }
    298 }
    299 }}}
    300 
    301 
    302 ==== Data about a GENI user ====
    303 
    304 GENI users have an ID based on the username and are described using [http://www.gpolab.bbn.com/monitoring/schema/20140501/user# the GENI user schema].  Examples:
    305 
    306  Hypothetical REST call for user tupty at ch.geni.net:
    307 {{{
    308  https://datastore.ch.geni.net/info/user/tupty
    309 }}}
    310  Response:
    311 {{{
    312 {
    313   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/user#",
     268  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/user#",
    314269  "id": "tupty",
    315270  "selfRef": "https://datastore.ch.geni.net/info/user/tupty",
     
    321276  },
    322277  "fullname": "Tim Exampleuser",
    323   "email": "tim@example.com"
     278  "email": "tupty@example.com"
    324279}
    325280}}}
    326281
    327 ==== Data about a GENI slice ====
    328 
    329 GENI slices have an ID based on the URN and are described using [http://www.gpolab.bbn.com/monitoring/schema/20140501/slice# the GENI slice schema].  Examples:
    330 Hypothetical REST call for tuptyexclusive slice:
    331 {{{
    332  https://datastore.ch.geni.net/info/slice/ch.geni.net_gpo-infra_slice_tuptyexclusive
    333 }}}
    334 
     282==== Slice call and response ====
     283
     284Retrieves information about  a slice at an authority.
     285
     286General form of the REST call:
     287{{{
     288https://<datastore-host>/info/slice/<slice object id>
     289}}}
     290
     291Example REST call for tuptyexclusive slice:
     292{{{
     293https://datastore.ch.geni.net/info/slice/ch.geni.net_gpo-infra_slice_tuptyexclusive
     294}}}
     295
     296The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/slice slice schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/slice.schema.jwc commented version of the slice schema].
    335297{{{
    336298{
    337   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/slice#",
     299  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/slice#",
    338300  "id": "ch.geni.net_gpo-infra_slice_tuptyexclusive",
    339301  "selfRef": "https://datastore.ch.geni.net/info/slice/ch.geni.net_gpo-infra_slice_tuptyexclusive",
     
    357319}}}
    358320
    359 ==== Data about a GENI sliver ====
    360 
    361 GENI sliver have an ID based on the URN and are described using [http://www.gpolab.bbn.com/monitoring/schema/20140501/sliver# the GENI sliver schema].  Examples:
    362  Hypothetical REST call for tuptyexclusive instageni sliver:
     321==== Sliver call and response ====
     322
     323Retrieves information about a sliver.
     324
     325General form of the REST call:
     326{{{
     327https://<datastore-host>/info/sliver/<sliver object id>
     328}}}
     329
     330Example REST call for tuptyexclusive instageni sliver:
    363331{{{
    364332https://datastore.instageni.gpolab.bbn.com/info/sliver/instageni.gpolab.bbn.com_sliver_26947
    365333}}}
    366  Response:
     334
     335The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/sliver sliver schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/sliver.schema.jwc commented version of the sliver schema].
    367336{{{
    368337{
    369   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/sliver#",
     338  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/sliver#",
    370339  "id": "instageni.gpolab.bbn.com_sliver_26947",
    371340  "selfRef": "https://datastore.instageni.gpolab.bbn.com/info/sliver/instageni.gpolab.bbn.com_sliver_26947",
     
    375344  "aggregate": {
    376345    "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm",
    377     "href": "https://datastore.instageni.gpolab.bbn.com/info/aggregates/gpo-ig"
     346    "href": "https://datastore.instageni.gpolab.bbn.com/info/aggregate/gpo-ig"
    378347  },
    379348  "slice_urn": "urn:publicid:IDN+ch.geni.net:gpo-infra+slice+tuptyexclusive",
     
    382351  "created": 1391626683000000,
    383352  "expires": 1391708989000000,
    384   "resources": [
    385     {
    386       "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc1",
    387       "href": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
    388     },
    389     {
    390       "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc2",
    391       "href": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc2",
    392     }
    393   ]
     353  "resource": {
     354    "resource_type": "node",
     355    "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc1",
     356    "href": "urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc1"
     357  }
    394358}
    395359}}}
    396360
    397 ==== Data about an external check datastore ====
    398 
     361==== External check datastore call and response ====
     362
     363Retrieves information about a sliver.
     364
     365General form of the REST call:
     366{{{
     367https://<datastore-host>/info/externalcheck/<extchk-id>
     368}}}
     369
     370Example REST call for GPO externalcheck store:
    399371{{{
    400372https://externalcheckstore.gpolab.bbn.com/info/externalcheck/gpo
    401373}}}
    402374
     375The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/externalcheck external check schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/externalcheck.schema.jwc commented version of the external check schema].
    403376{{{
    404377{
    405    "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/externalcheck#",
     378   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/externalcheck#",
    406379   "id": "gpo",
    407380   "selfRef": "https://externalcheckstore.gpolab.bbn.com/info/externalcheck/gpo",
    408    "ts": 1397762559284773,
    409    "measRef: "https://externalcheckstore.gpolab.bbn.com/data/",
     381   "ts": 1391192685740849,
     382   "measRef": "https://externalcheckstore.gpolab.bbn.com/data",
    410383   "experiments": [
    411384      {
     
    425398}
    426399}}}
    427 ==== Data about a monitoring experiment ====
    428 
    429 Operational monitoring measures the dataplane with a set of simple tests between aggregates described using [http://www.gpolab.bbn.com/monitoring/schema/20140501/experiment# the operational monitoring experiment schema].  Examples:
    430  Hypothetical REST call for missouri-ig to gpo-ig experiment:
    431 {{{
    432 https://datastore.externalchecks.geni.net/info/experiment/missouri-ig_to_gpo-ig
    433 }}}
    434  Response:
     400
     401==== Experiment call and response ====
     402
     403Retrieves information data about an operational monitoring experiment for monitoring the dataplane between aggregates.
     404
     405General form of the REST call:
     406{{{
     407https://<datastore-host>/info/experiment/<experiment id>
     408}}}
     409
     410Example REST call for missouri-ig to gpo-ig experiment:
     411{{{
     412https://datastore.externalchecks.geni.net/info/experiment/missouri-ig_to_gpo-ig_rtt
     413}}}
     414
     415The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/experiment experiment schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/experiment.schema.jwc commented version of the experiment schema].
    435416{{{
    436417{
    437   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/experiment#",
    438   "id": "missouri-ig_to_gpo-ig",
    439   "selfRef": "https://datastore.externalchecks.geni.net/info/experiment/missouri-ig_to_gpo-ig",
     418  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/experiment#",
     419  "id": "missouri-ig_to_gpo-ig_rtt",
     420  "selfRef": "https://datastore.externalchecks.geni.net/info/experiment/missouri-ig_to_gpo-ig_rtt",
    440421  "slice_urn": "urn:publicid:IDN+ch.geni.net:gpo-infra+slice+tuptyexclusive",
    441422  "slice_uuid": "8c6b97fa-493b-400f-95ee-19accfaf4ae8",
     
    453434
    454435
    455 ==== Measurements used for the use cases ====
    456 
    457 Measurements have an opaque ID which is generated by the local datastore which serves them, and must be persistent, so that the caller has the option of asking for the measurement by ID.  They are described using the data schema outlined above.  Examples:
    458 Hypothetical REST call for CPU utilization metric on pc1:
     436==== Time-series measurements call and response ====
     437
     438Retrieve time series measurements, a.k.a. simply "data" or "events."
     439
     440General form of the REST call:
     441{{{
     442https://<datastore-host>/data/?q=
     443        {"filters":
     444            {"eventType":[<list of measurementNames>],
     445             "ts":{"gte":<lower bound timestamp>, "lte":<upper bound timestamp},
     446             "obj":{"type":"<object type name>", "id":[<list of object ids>]}}}
     447}}}
     448 (The above is split into multiple lines for readability; actual calls are all on one line.)
     449If <list of object ids> is "*", it means "all objects known to the datastore of type <object type name>."
     450
     451The response is a list "[...]" in which each element conforms to the  [http://www.gpolab.bbn.com/monitoring/schema/20140828/data data schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/data.schema.jwc commented version of the data schema].
     452Each element of the list applies to one (eventType, object id) pair.
     453
     454Example REST call for CPU utilization metric on pc1:
    459455{{{
    460456https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:cpu_util"],"ts":{"gte":0, "lte": 1391199016651285},"obj":{"type":"node","id":["instageni.gpolab.bbn.com_node_pc1"]}}}
    461457}}}
    462 Response
    463 {{{
    464 {
    465   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/data#",
    466   "id": "cpu_util:instageni.gpolab.bbn.com_node_pc1",
    467   "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
    468   "eventType": "ops_monitoring:cpu_util",
    469   "description": "CPU utilization percentage",
    470   "units": "percent",
    471   "tsdata": [
    472     { "ts": 1391198716651283, "v": 45 },
    473     { "ts": 1391198776651284, "v": 44 },
    474     { "ts": 1391198836651284, "v": 44 },
    475     { "ts": 1391198896651284, "v": 47 },
    476     { "ts": 1391198956651284, "v": 46 },
    477     { "ts": 1391199016651285, "v": 47 }
    478   ]
    479 }
    480 }}}
    481 Hypothetical REST call for percentage of swap available on pc1:
     458
     459Response:
     460{{{
     461[
     462  {
     463    "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#",
     464    "id": "cpu_util:instageni.gpolab.bbn.com_node_pc1",
     465    "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
     466    "eventType": "ops_monitoring:cpu_util",
     467    "description": "CPU utilization percentage",
     468    "units": "percent",
     469    "tsdata": [
     470      { "ts": 1391198716651283, "v": 45 },
     471      { "ts": 1391198776651284, "v": 44 },
     472      { "ts": 1391198836651284, "v": 44 },
     473      { "ts": 1391198896651284, "v": 47 },
     474      { "ts": 1391198956651284, "v": 46 },
     475      { "ts": 1391199016651285, "v": 47 }
     476    ]
     477  }
     478]
     479}}}
     480
     481Example REST call for percentage of swap available on pc1:
    482482{{{
    483483https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:swap_free"],"ts":{"gt":0,"lt":1391199016651285},"obj":{"type":"node","id":["instageni.gpolab.bbn.com_node_pc1"]}}}
    484484
    485485}}}
     486
    486487Response:
    487488{{{
    488 {
    489   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/data#",
    490   "id": "swap_free:instageni.gpolab.bbn.com_node_pc1",
    491   "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
    492   "eventType": "ops_monitoring:swap_free",
    493   "description": "Percentage of swap available",
    494   "units": "percent",
    495   "tsdata": [
    496     { "ts": 1391198716651283, "v": 95 },
    497     { "ts": 1391198776651284, "v": 95 },
    498     { "ts": 1391198836651284, "v": 95 },
    499     { "ts": 1391198896651284, "v": 95 },
    500     { "ts": 1391198956651284, "v": 95 },
    501     { "ts": 1391199016651285, "v": 95 }
    502   ]
    503 }
    504 }}}
    505 Hypothetical REST call for memory in active use on pc1:
     489[
     490  {
     491    "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#",
     492    "id": "swap_free:instageni.gpolab.bbn.com_node_pc1",
     493    "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
     494    "eventType": "ops_monitoring:swap_free",
     495    "description": "Percentage of swap available",
     496    "units": "percent",
     497    "tsdata": [
     498      { "ts": 1391198716651283, "v": 95 },
     499      { "ts": 1391198776651284, "v": 95 },
     500      { "ts": 1391198836651284, "v": 95 },
     501      { "ts": 1391198896651284, "v": 95 },
     502      { "ts": 1391198956651284, "v": 95 },
     503      { "ts": 1391199016651285, "v": 95 }
     504    ]
     505  }
     506]
     507}}}
     508
     509Example REST call for memory in active use on pc1:
    506510{{{
    507511https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:mem_active_kb"],"ts":{"gte":0, "lt": 1391299016651285},"obj":{"type":"node","id":["instageni.gpolab.bbn.com_node_pc1"]}}}
    508512}}}
     513
    509514Response:
    510515{{{
    511 {
    512   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/data#",
    513   "id": "mem_active_kb:instageni.gpolab.bbn.com_node_pc1",
    514   "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
    515   "eventType": "ops_monitoring:mem_active_kb",
    516   "description": "Memory in active use",
    517   "units": "integer",
    518   "tsdata": [
    519     { "ts": 1391198716651283, "v": 20030048 },
    520     { "ts": 1391198776651284, "v": 20031148 },
    521     { "ts": 1391198836651284, "v": 20031148 },
    522     { "ts": 1391198896651284, "v": 22222222 },
    523     { "ts": 1391198956651284, "v": 22222222 },
    524     { "ts": 1391199016651285, "v": 22222222 }
    525   ]
    526 }
    527 }}}
    528  Hypothetical call for bytes per second received by `pc1:eth0`:
     516[
     517  {
     518    "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#",
     519    "id": "mem_active_kb:instageni.gpolab.bbn.com_node_pc1",
     520    "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
     521    "eventType": "ops_monitoring:mem_active_kb",
     522    "description": "Memory in active use",
     523    "units": "integer",
     524    "tsdata": [
     525      { "ts": 1391198716651283, "v": 20030048 },
     526      { "ts": 1391198776651284, "v": 20031148 },
     527      { "ts": 1391198836651284, "v": 20031148 },
     528      { "ts": 1391198896651284, "v": 22222222 },
     529      { "ts": 1391198956651284, "v": 22222222 },
     530      { "ts": 1391199016651285, "v": 22222222 }
     531    ]
     532  }
     533]
     534}}}
     535
     536Example REST call for bytes per second received by `pc1:eth0`:
    529537{{{
    530538https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:rx_bytes"],"ts":{"gte":0, "lte":1391299016651285},"obj":{"type":"interface","id":["instageni.gpolab.bbn.com_node_pc1:eth0"]}}}
    531539}}}
     540
    532541Response:
    533542{{{
    534 {
    535   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/data#",
    536   "id": "rx_bps:instageni.gpolab.bbn.com_interface_pc1:eth0",
    537   "subject": "https://datastore.instageni.gpolab.bbn.com/info/ports/instageni.gpolab.bbn.com_interface_pc1:eth0",
    538   "eventType": "ops_monitoring:rx_bps",
    539   "description": "bytes per second received on this interface",
    540   "units": "float",
    541   "tsdata": [
    542     { "ts": 1391198716651283, "v": 2453.64 },
    543     { "ts": 1391198776651284, "v": 800.2 },
    544     { "ts": 1391198836651284, "v": 2400.3 },
    545     { "ts": 1391198896651284, "v": 1984.3 },
    546     { "ts": 1391198956651284, "v": 0 },
    547     { "ts": 1391199016651285, "v": 0 }
    548   ]
    549 }
    550 }}}
    551 Hypothetical REST call for boolean metric indicating whether pc1 is available for use according to the aggregate responsible for it:
     543[
     544  {
     545    "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#",
     546    "id": "rx_bps:instageni.gpolab.bbn.com_interface_pc1:eth0",
     547    "subject": "https://datastore.instageni.gpolab.bbn.com/info/interface/instageni.gpolab.bbn.com_interface_pc1:eth0",
     548    "eventType": "ops_monitoring:rx_bps",
     549    "description": "bytes per second received on this interface",
     550    "units": "float",
     551    "tsdata": [
     552      { "ts": 1391198716651283, "v": 2453.64 },
     553      { "ts": 1391198776651284, "v": 800.2 },
     554      { "ts": 1391198836651284, "v": 2400.3 },
     555      { "ts": 1391198896651284, "v": 1984.3 },
     556      { "ts": 1391198956651284, "v": 0 },
     557      { "ts": 1391199016651285, "v": 0 }
     558    ]
     559  }
     560]
     561}}}
     562
     563Example REST call for boolean metric indicating whether pc1 is available for use according to the aggregate responsible for it:
    552564{{{
    553565https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:is_available"],"ts":{"gte":0, "lte":1391299016651285},"obj":{"type":"node","id":["instageni.gpolab.bbn.com_node_pc1"]}}}
    554566}}}
     567
    555568Response:
    556569{{{
    557 {
    558   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/data#",
    559   "id": "is_available:instageni.gpolab.bbn.com_node_pc1",
    560   "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
    561   "eventType": "ops_monitoring:is_available",
    562   "description": "is the subject node available, according to the aggregate",
    563   "units": "boolean",
    564   "tsdata": [
    565     { "ts": 1391198716651283, "v": 1 },
    566     { "ts": 1391198776651284, "v": 1 },
    567     { "ts": 1391198836651284, "v": 1 },
    568     { "ts": 1391198896651284, "v": 1 },
    569     { "ts": 1391198956651284, "v": 0 },
    570     { "ts": 1391199016651285, "v": 0 }
    571   ]
    572 }
    573 }}}
    574 
    575 ==== Bulk Data Queries ====
    576 Queries on multiple eventTypes and object ID's will be presented in a list format.  Here is an example query for event types cpu utilization and active memory utilization for nodes pc1 and pc2 of instageni-bbn.
    577 Also it is advised to provide timestamp filters with data queries.  Here is the format for [wiki:OperationalMonitoring/DatastorePolling#DataQueries timestamp filters] .
    578 
    579 Example call:
     570[
     571  {
     572    "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#",
     573    "id": "is_available:instageni.gpolab.bbn.com_node_pc1",
     574    "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
     575    "eventType": "ops_monitoring:is_available",
     576    "description": "is the subject node available, according to the aggregate",
     577    "units": "boolean",
     578    "tsdata": [
     579      { "ts": 1391198716651283, "v": 1 },
     580      { "ts": 1391198776651284, "v": 1 },
     581      { "ts": 1391198836651284, "v": 1 },
     582      { "ts": 1391198896651284, "v": 1 },
     583      { "ts": 1391198956651284, "v": 0 },
     584      { "ts": 1391199016651285, "v": 0 }
     585    ]
     586  }
     587]
     588}}}
     589
     590Example REST call requesting multiple eventTypes and object ids:
    580591{{{
    581592https://datastore.instageni.gpolab.bbn.com/data/?q={"filters":{"eventType": ["ops_monitoring:mem_used","ops_monitoring:cpu_util"],"ts":{"gte":1391192225475202,"lt":1391192225480000},"obj":{"type":"node","id":["instageni.gpolab.bbn.com_node_pc1","instageni.gpolab.bbn.com_node_pc2"]}}}}
    582593}}}
    583594
     595Response:
    584596{{{
    585597[
    586598 {
    587    "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/data#",
     599   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#",
    588600    "id": "cpu_util:instageni.gpolab.bbn.com_node_pc1",
    589601    "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
     
    602614,
    603615 {
    604    "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/data#",
     616   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#",
    605617   "id": "cpu_util:instageni.gpolab.bbn.com_node_pc2",
    606618   "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc2",
     
    619631,
    620632 {
    621   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/data#",
     633  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#",
    622634  "id": "mem_active_kb:instageni.gpolab.bbn.com_node_pc1",
    623635  "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc1",
     
    636648,
    637649 {
    638   "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140501/data#",
     650  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/data#",
    639651  "id": "mem_active_kb:instageni.gpolab.bbn.com_node_pc2",
    640652  "subject": "https://datastore.instageni.gpolab.bbn.com/info/node/instageni.gpolab.bbn.com_node_pc2",
     
    653665]
    654666}}}
     667
     668==== Operational monitoring configuration (opsconfig) call and response ====
     669
     670Retrieves a variety of configuration information, including:
     671 * locations (URLs) of and information about other datastores
     672 * GENI authorities
     673 * Database schemas used to store monitoring information
     674 * A list of possible event types for time-series measurements
     675
     676Example REST call for geni-prod,  a hypothetical config datastore listing production aggregates and authorities:
     677{{{
     678https://datastore.geni.net/info/opsconfig/geni-prod
     679}}}
     680
     681The response conforms to the [http://www.gpolab.bbn.com/monitoring/schema/20140828/opsconfig opsconfig schema], [http://www.gpolab.bbn.com/monitoring/schema/20140828/opsconfig.schema.jwc commented version of the opsconfig schema].
     682{{{
     683{
     684  "$schema": "http://www.gpolab.bbn.com/monitoring/schema/20140828/opsconfig#",
     685  "id": "geni-prod",
     686  "selfRef": "https://datastore.geni.net/opsconfigs/geni-prod",
     687  "ts": 1391192685740849,
     688  "aggregatestores": [
     689    {
     690      "urn": "urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm",
     691      "amtype": "protogeni",
     692      "href": "https://datastore.instageni.gpolab.bbn.com/info/aggregate/gpo-ig"
     693    }
     694  ],
     695  "externalcheckstores": [
     696    {
     697      "href": "https://externalcheckstore.gpolab.bbn.com/info/externalcheck/gpo"
     698    }
     699  ],
     700  "authorities": [
     701    {
     702      "urn": "urn:publicid:IDN+ch.geni.net+authority+ch",
     703      "href": "https://datastore.ch.geni.net/authorities/ch.geni.net"
     704    }
     705  ],
     706  "info": [
     707    {  "name": "aggregate",
     708       "db_schema": [
     709                 ["$schema", "varchar"],
     710                 ["id", "varchar"],
     711                 ["selfRef","varchar"],
     712                 ["urn","varchar"],
     713                 ["ts","int8"],
     714                 ["measRef","varchar"]
     715          ]
     716    },
     717    {   "name":"node",
     718        "db_schema": [
     719                 ["$schema", "varchar"],
     720                 ["id", "varchar"],
     721                 ["selfRef","varchar"],
     722                 ["urn","varchar"],
     723                 ["ts","int8"],
     724                 ["properties$mem_total_kb","int8"]
     725          ]
     726    },
     727    {  "name": "link",
     728       "db_schema": [
     729                 ["$schema", "varchar"],
     730                 ["id", "varchar"],
     731                 ["selfRef","varchar"],
     732                 ["urn","varchar"],
     733                 ["ts","int8"]
     734          ]
     735    },
     736    {  "name": "sliver",
     737       "db_schema": [
     738                 ["$schema", "varchar"],
     739                 ["id", "varchar"],
     740                 ["selfRef","varchar"],
     741                 ["urn","varchar"],
     742                 ["uuid","varchar"],
     743                 ["ts","int8"],
     744                 ["aggregate_urn","varchar"],
     745                 ["aggregate_href","varchar"],
     746                 ["slice_urn","varchar"],
     747                 ["slice_uuid","varchar"],
     748                 ["creator","varchar"],
     749                 ["created","int8"],
     750                 ["expires","int8"]
     751          ]
     752    },
     753    {  "name":"interface",
     754       "db_schema": [
     755                 ["$schema", "varchar"],
     756                 ["id", "varchar"],
     757                 ["selfRef","varchar"],
     758                 ["urn","varchar"],
     759                 ["ts","int8"],
     760                 ["address_type","varchar"],
     761                 ["address_address","varchar"],
     762                 ["properties$role","varchar"],
     763                 ["properties$max_bps","int8"],
     764                 ["properties$max_pps","int8"]
     765          ]
     766    },
     767    {   "name": "interfacevlan",
     768        "db_schema": [
     769                 ["$schema", "varchar"],
     770                 ["id", "varchar"],
     771                 ["selfRef","varchar"],
     772                 ["urn","varchar"],
     773                 ["ts","int8"],
     774                 ["tag","int8"],
     775                 ["interface_urn","varchar"],
     776                 ["interface_href","varchar"]
     777          ]
     778   },
     779   {   "name": "slice",
     780       "db_schema": [
     781                 ["$schema", "varchar"],
     782                 ["id", "varchar"],
     783                 ["selfRef","varchar"],
     784                 ["urn","varchar"],
     785                 ["uuid","varchar"],
     786                 ["ts","int8"],
     787                 ["authority_urn","varchar"],
     788                 ["authority_href","varchar"],
     789                 ["created","int8"],
     790                 ["expires","int8"]
     791          ]
     792    },
     793    {   "name":"user",
     794        "db_schema": [
     795                 ["$schema", "varchar"],
     796                 ["id", "varchar"],
     797                 ["selfRef","varchar"],
     798                 ["urn","varchar"],
     799                 ["ts","int8"],
     800                 ["authority_urn","varchar"],
     801                 ["authority_href","varchar"],
     802                 ["fullname","varchar"],
     803                 ["email","varchar"]
     804          ]
     805    },
     806    {   "name":"authority",
     807        "db_schema": [
     808                 ["$schema", "varchar"],
     809                 ["id", "varchar"],
     810                 ["selfRef","varchar"],
     811                 ["urn","varchar"],
     812                 ["ts","int8"]
     813          ]
     814    },
     815    {   "name":"externalcheck",
     816        "db_schema": [
     817                 ["$schema", "varchar"],
     818                 ["id", "varchar"],
     819                 ["selfRef","varchar"],
     820                 ["ts","int8"],
     821                 ["measRef","varchar"]
     822          ]
     823    },
     824    {   "name":"experiment",
     825        "db_schema": [
     826                 ["$schema", "varchar"],
     827                 ["id", "varchar"],
     828                 ["selfRef","varchar"],
     829                 ["ts","int8"],         
     830                 ["slice_urn","varchar"],
     831                 ["slice_uuid","varchar"],
     832                 ["source_aggregate_urn","varchar"],
     833                 ["source_aggregate_href","varchar"],
     834                 ["destination_aggregate_urn","varchar"],
     835                 ["destination_aggregate_href","varchar"]
     836          ]
     837    },
     838    {   "name":"opsconfig",
     839        "db_schema": [
     840                 ["$schema", "varchar"],
     841                 ["id","varchar"],
     842                 ["selfRef","varchar"],
     843                 ["ts","int8"]
     844        ]
     845    },
     846    {   "name":"aggregate_resource",
     847        "db_schema" : [
     848                 ["id","varchar"],
     849                 ["aggregate_id","varchar"],
     850                 ["urn","varchar"],
     851                 ["selfRef","varchar"]
     852          ]
     853    },
     854    {   "name":"aggregate_sliver",
     855        "db_schema" : [
     856                 ["id","varchar"],
     857                 ["aggregate_id","varchar"],
     858                 ["urn","varchar"],
     859                 ["selfRef","varchar"]
     860         ]
     861    },
     862    {   "name":"link_interfacevlan",
     863        "db_schema" : [
     864                 ["id","varchar"],
     865                 ["link_id","varchar"],
     866                 ["urn","varchar"],
     867                 ["selfRef","varchar"]
     868          ]
     869    },
     870    {   "name":"sliver_resource",
     871        "db_schema" : [
     872                 ["id","varchar"],
     873                 ["sliver_id","varchar"],
     874                 ["urn","varchar"],
     875                 ["selfRef","varchar"]
     876         ]
     877    },
     878    {   "name":"node_interface",
     879        "db_schema": [
     880                 ["id","varchar"],
     881                 ["node_id","varchar"],
     882                 ["urn","varchar"],
     883                 ["selfRef","varchar"]
     884          ]
     885    },
     886    {   "name":"slice_user",
     887        "db_schema": [
     888                 ["id","varchar"],
     889                 ["slice_id","varchar"],
     890                 ["urn","varchar"],
     891                 ["role","varchar"],
     892                 ["selfRef","varchar"]
     893        ]
     894    },
     895    {   "name":"authority_user",
     896        "db_schema": [
     897                 ["id","varchar"],
     898                 ["authority_id","varchar"],
     899                 ["urn","varchar"],
     900                 ["selfRef","varchar"]
     901        ]
     902    },
     903    {   "name":"authority_slice",
     904        "db_schema": [
     905                 ["id","varchar"],
     906                 ["authority_id","varchar"],
     907                 ["urn","varchar"],
     908                 ["selfRef","varchar"]
     909        ]
     910    },
     911    {   "name":"opsconfig_aggregate",
     912        "db_schema": [
     913                 ["id","varchar"],
     914                 ["opsconfig_id","varchar"],
     915                 ["amtype","varchar"],
     916                 ["urn","varchar"],
     917                 ["selfRef","varchar"]
     918        ]
     919    },
     920    {   "name":"opsconfig_authority",
     921        "db_schema": [
     922                 ["id","varchar"],
     923                 ["opsconfig_id","varchar"],
     924                 ["urn","varchar"],
     925                 ["selfRef","varchar"]
     926        ]
     927    },
     928    {   "name":"opsconfig_event",
     929        "db_schema": [
     930                 ["object_type","varchar"],
     931                 ["name","varchar"],
     932                 ["id","varchar"],
     933                 ["ts","varchar"],
     934                 ["v","varchar"],
     935                 ["units","varchar"]
     936        ]
     937    },
     938    {   "name":"externalcheck_experiment",
     939        "db_schema": [
     940                 ["id","varchar"],
     941                 ["externalcheck_id","varchar"],
     942                 ["selfRef","varchar"]
     943        ]
     944    }
     945  ],
     946  "events":
     947    {
     948      "node": [
     949          {    "name": "cpu_util",
     950               "id": "varchar",
     951               "ts": "int8",
     952               "v": "float4",
     953               "units": "percent"
     954          },
     955          {    "name": "mem_used_kb",
     956               "id": "varchar",
     957               "ts": "int8",
     958               "v": "int8",
     959               "units": "kilobytes"
     960          },   
     961          {    "name": "swap_free",
     962               "id": "varchar",
     963               "ts": "int8",
     964               "v": "float4",
     965               "units": "percent"
     966          },
     967          {    "name": "is_available",
     968               "id": "varchar",
     969               "ts": "int8",
     970               "v": "int2",
     971               "units": "boolean"
     972          },
     973          {    "name": "disk_part_max_used",
     974               "id": "varchar",
     975               "ts": "int8",
     976               "v": "float4",
     977               "units":"percent"
     978          }
     979       ],
     980       "aggregate": [
     981          {    "name": "num_vms_allocated",
     982               "id": "varchar",
     983               "ts": "int8",
     984               "v": "int4",
     985               "units": "count"
     986          },
     987          {    "name": "is_available",
     988               "id": "varchar",
     989               "ts": "int8",
     990               "v": "int2",
     991               "units": "boolean"
     992          }
     993       ],
     994       "interface": [
     995          {    "name": "rx_bps",
     996               "id": "varchar",
     997               "ts": "int8",
     998               "v":"float4",
     999               "units":"bps"
     1000          },
     1001          {    "name": "tx_bps",
     1002               "id": "varchar",
     1003               "ts": "int8",
     1004               "v":"float4",
     1005               "units":"bps"
     1006          },
     1007          {    "name":"rx_pps",
     1008               "id": "varchar",
     1009               "ts": "int8",
     1010               "v":"float4",
     1011               "units":"pps"
     1012          },
     1013          {    "name":"tx_pps", 
     1014               "id": "varchar",
     1015               "ts": "int8",
     1016               "v":"float4",
     1017               "units":"pps"
     1018          },
     1019          {    "name":"rx_eps", 
     1020               "id": "varchar",
     1021               "ts": "int8",
     1022               "v":"float4",
     1023               "units":"pps"
     1024          },
     1025          {    "name":"tx_eps",
     1026               "id": "varchar",
     1027               "ts": "int8",
     1028               "v":"float4",
     1029               "units":"pps"
     1030          },
     1031          {    "name":"rx_dps",
     1032               "id": "varchar",
     1033               "ts": "int8",
     1034               "v":"float4",
     1035               "units":"pps"
     1036          },
     1037          {    "name":"tx_dps",
     1038               "id": "varchar",
     1039               "ts": "int8",
     1040               "v":"float4",
     1041               "units":"pps"
     1042          }
     1043       ],
     1044       "interfacevlan": [
     1045          {    "name": "rx_bps",
     1046               "id": "varchar",
     1047               "ts": "int8",
     1048               "v":"float4",
     1049               "units":"bps"
     1050          },
     1051          {    "name": "tx_bps",
     1052               "id": "varchar",
     1053               "ts": "int8",
     1054               "v":"float4",
     1055               "units":"bps"
     1056          },
     1057          {    "name":"rx_pps",
     1058               "id": "varchar",
     1059               "ts": "int8",
     1060               "v":"float4",
     1061               "units":"pps"
     1062          },
     1063          {    "name":"tx_pps", 
     1064               "id": "varchar",
     1065               "ts": "int8",
     1066               "v":"float4",
     1067               "units":"pps"
     1068          },
     1069          {    "name":"rx_eps", 
     1070               "id": "varchar",
     1071               "ts": "int8",
     1072               "v":"float4",
     1073               "units":"pps"
     1074          },
     1075          {    "name":"tx_eps",
     1076               "id": "varchar",
     1077               "ts": "int8",
     1078               "v":"float4",
     1079               "units":"pps"
     1080          },
     1081          {    "name":"rx_dps",
     1082               "id": "varchar",
     1083               "ts": "int8",
     1084               "v":"float4",
     1085               "units":"pps"
     1086          },
     1087          {    "name":"tx_dps",
     1088               "id": "varchar",
     1089               "ts": "int8",
     1090               "v":"float4",
     1091               "units":"pps"
     1092          }
     1093       ],
     1094       "experiment": [
     1095          {    "name": "ping_rtt_ms",
     1096               "id": "varchar",
     1097               "ts": "int8",
     1098               "v":"float4",
     1099               "units":"milliseconds"
     1100          }
     1101       ]
     1102    }
     1103}
     1104}}}