From EGIWiki
< GOCDB‎ | Release4‎ | Development
Revision as of 10:40, 5 December 2013 by Jamesm (talk | contribs) (Introduction)
Jump to: navigation, search
Main EGI.eu operations services Support Documentation Tools Activities Performance Technology Catch-all Services Resource Allocation Security

GOC DB menu: Home Documentation Index

<< Back to GOCDB/Release4/Development

Key-Value Pair Property Bag Extensiblity Mechanism


  • Original RT request: https://rt.egi.eu/rt/Ticket/Display.html?id=3764
  • Sites and Services can be extended so that they can define an optional set of custom key-value pairs (akin to GLUE2 ext mech).
  • The 'get_service_endpoint', 'get_site' and 'get_site_list' PI methods use the ‘extensions’ query parameter to filter sites/services by required key/value pair.
  • This is not yet in production and needs a thorough period of testing first.
  • Bugs are likely at this stage.
  • The extensions parameter only supports basic query syntax (e.g. no nesting of sub-queries).
  • The results of the get_site and get_service_endpoint PI queries nest new <EXTENSIONS> elements.
  • The format of the 'extensions' expression is one or more (key=value) pairs enclosed in brackets. (K=v) pairs can be optionally prefixed with one of following operators: AND, OR, NOT. If no operator is specified before the first (k=v) pair, then AND is assumed. The operator applies to ALL (k=v) pairs to the right of the operator until another operator is encountered, for example:

is equivalent to: (note no leading AND which is assumed)

PI Examples

  • The get_sites and get_service_endpoints PI methods will support the 'extensions' URL param. This can be used to filter the Sites and Services by the specified key-value pairs.

Will return all sites that define VO with a value of Alice. A wildcard could also be used:


Extensions also supports OR/AND/NOT operators. This can be used to search against multiple key values eg:


These can be used together:

?method= get_service_endpoint&extensions=OR(CPU_HS01_HOUR=1)(CPU_HS02_HOUR=2)

When no operator is the default will be AND, therefore the following:

?method= get_service_endpoint&extensions=(CPU_HS01_HOUR=1)(CPU_HS02_HOUR=2)

Is the same as:

?method= get_service_endpoint&extensions=AND(CPU_HS01_HOUR=1)(CPU_HS02_HOUR=2)

The extensions parameter can also be used in conjunction with the existing parameters previously supported:


These are currently in testing and can be viewed on the GocDB test server:










  • The extent to which the ldap syntax query string would be supported will have to be explored. A simplified version including only exact pattern matches and simple wildcards may cover most use cases.
  • The property bags may only be applied to a subset of entities and PI queries.

Sample PI XML Output

<?xml version="1.0" encoding="UTF-8"?>
		<OFFICIAL_NAME>HeCTOR, UK National Supercomputing Service
		<CONTACT_TEL>0131-650 5029</CONTACT_TEL>
		<COUNTRY>United Kingdom</COUNTRY>

Potential Use Cases

A number of potential use cases have been reported (https://rt.egi.eu/rt/Ticket/Display.html?id=3764), including:


There is the potential for proliferation of key-value pairs that should instead be recorded in fields/properties as part of the data model.