ARCHERY data model and DNS records rendering
ARCHERY implies a minimalistic data model that is targeting mostly static information to address the distributed e-Infrastructure resource grouping, software environments provisioning and service discovery needs.
The ARCHERY objects and their releations are embedded into the DNS infrastructure as a dedicated Resource Record sets according to the rendering described below.
ARCHERY objects
To represent the distributed e-infrastructure concept the ARCHERY data model defines three type of objects: the Endpoint Object, the Service Object and the Group Object.
Fig. 21 ARCHERY e-Infrastructure topology bjects, their attributes and relations in the data model.
To represent the community software environments in the e-infrastructure two additional type of objects are defined in the ARCHERY data model: the Software Object and the RTE Object.
Fig. 22 ARCHERY software environment objects, their attributes and relations in the data model.
Endpoint object
Endpoint object is used to capture information about a network location that can be used to access specific service functionality, including accessing information within ARCHERY registry service itself. For the later special endpoint types were defined (see below). The Endpoint object is described with the following set of attributes:
Endpoint URL - defines the network location by which the service functionality is accessible;
Endpoint Type - contains the value from the Endpoint type enumeration defined by the e-Infrastructure operators [1]. In addition to ordinary service endpoint types two special ARCHERY endpoint types
archery.group
andarchery.service
had been introduced for accessing the ARCHERY Group and Service objects within the registry. Another special types includesarchery.software
andarchery.rte
that used to access ARCHERY Software and RTE objects respectively when community software registry is embedded into the DNS.Endpoint State (optional) - Boolean value that indicates the endpoint availability. In case of an ARCHERY service endpoint, if the endpoint state is false (unavailable) it is still used to represent e-Infrastructure topology, but should not be used during service endpoints discovery. Missing attribute is interpreted as true i.e. the endpoint is available.
Service object
Service object represents an e-Infrastructure service, like Computing Element, Storage Element, etc. The Service object is described with the following set of attributes:
Service ID - holds the service identifier as an arbitrary string. For example the ID can be derived from the hostname;
Service Type - contains the value from the Service type enumeration defined by the e-Infrastructure operators;
Service Endpoints - an array of Endpoint objects associated with the Service.
Group object
Group object is used to organize other objects such as ARCHERY Service or Group. The grouping was introduced to the data model so that infrastructure topologies (i.e. hierarchies or federations) can be represented inside the registry in a flexible way. The Group object is described with the following set of attributes:
Group ID (optional) - holds the group identifier as an arbitrary string.
Group Type (optional) - defines the grouping type based on organizational structure; example values could be: Site, Country, Tier, etc.
ARCHERY Endpoints - an array of Endpoint objects of special defined ARCHERY endpoint types (
archery.group
,archery.service
orarchery.software
). These Endpoint objects describe the optional state and URL of the ARCHERY objects inside the registry.
Software object
Software objects are used to represent a community-defined RTEs regisry instances. The Software object provides community public key data and enumerates the available RTEs. It is described with the following set of attributes:
Registry ID (optional) - holds the software registry identifier as an arbitrary string.
PubKey Endpoint - and Endpoint object that contains URL to the public key location. It can points to external URLs or raw data inside the DNS. Technical implementation uses
gpg.pubkey
andgpg.pubkey.base64
endpoint types depending on Base64 encoding usage.RTEs Endpoints - and array of Endpoint objects of special defined ARCHERY endpoint type
archery.rte
. These Endpoint objects describe the optional state and URL of the ARCHERY RTE objects inside the registry.
RTE Object
RTE Object is used to represent a particular community-defined RTE script. It encapsulates the RTE ID (according to the naming and versioning convention), optional RTE description and contains Endpoints to signed RTE scripts. It is described with the following set of attributes:
RTE ID - holds the RTE identifier according to naming and versioning scheme
RTE Description (optional) - an arbitrary string that contains the human-readable description of RTE
RTE Data Endpoints - and array of Endpoint objects that points to signed RTE data. It can points to external URLs or raw data inside the DNS. Technical implementation uses
gpg.signed
andgpg.signed.base64
endpoint types depending on Base64 encoding usage.
Entry point group object
Following the data model the service endpoint discovery process can start from the entry point Group Object and recursively contacting all the ARCHERY Endpoints.
The Sotfware objects can be attached to any parent Group Object and discovered using the same recursive traversal of the e-Infrastructure topology.
ARCHERY object attributes allow taking into account group, service and/or endpoint types as well as availability status during the recursive discovery process to query only the subset of objects.
DNS Resource Records rendering
Rendering ARCHERY objects
ARCHERY objects are rendered using TXT
resource records (RRs). These TXT
RRs
contain the space separated key=value
pairs where keys correspond to
the data model object attributes. Boolean object attributes have values
specified as 0 or 1.
The Endpoint Object is rendered with a single TXT
RR where Endpoint
Object attributes – Endpoint URL, Endpoint Type and optional
Endpoint State are represented by the u
, t
, s
keys in
this specific order within the space separated key-value pairs.
The Service Object of the ARCHERY data model is rendered by a dedicated RRSet identified by unique domain name that can be used to access this object inside the registry.
The service RRSet is composed of
single service object identity RR and one RR for every Endpoint objects
associated with the service. The service object identity RR has the
format of o=service
followed by t=<Service Type>
and
id=<Service ID>
:
<DNS name> TXT "o=service t=<Service Type> id=<Service ID>"
<DNS name> TXT "u=<Endpoint URL> t=<Endpoint Type> [s={0|1}]"
<DNS name> TXT ...
<DNS name> TXT "u=<Endpoint URL> t=<Endpoint Type> [s={0|1}]"
The Group Object of is rendered by a dedicated RRSet identified by unique domain name that can be used to access this object inside the registry.
The Group RRSet is composed of
single Group object identity RR and one RR for every ARCHERY Endpoint
objects pointing to other Service or Group objects that are part of this
specific Group. The Group object identity RR has the format of
o=group
followed by optional t=<Group Type>
and optional
id=<Group ID>
:
<DNS name> TXT "o=group [t=<Group Type>] [id=<Group ID>]"
<DNS name> TXT "u=<DNS URL> t=archery.{group|service} [s={0|1}]"
<DNS name> TXT ...
<DNS name> TXT "u=<DNS URL> t=archery.{group|service} [s={0|1}]"
The Software Object of the ARCHERY data model is rendered by a dedicated RRSet identified by unique domain name that can be used to access this object inside the registry.
The software object RRSet is composed of
single object identity RR, PubKey Endpoint object RR and one RR for every RTEs Endpoint objects
associated with the registry. The software object identity RR has the
format of o=software
followed by optional id=<Registry ID>
:
<DNS name> TXT "o=software [id=<Registry ID>]"
<DNS name> TXT "u=<PubKey URL> t=gpg.pubkey[.base64]"
<DNS name> TXT "u=<DNS URL> t=archery.rte [s={0|1}]"
<DNS name> TXT ...
<DNS name> TXT "u=<DNS URL> t=archery.rte [s={0|1}]"
The RTE Object of the ARCHERY data model is rendered by a dedicated RRSet identified by unique domain name that can be used to access this object inside the registry.
The RTE object RRSet is composed of single object identity RR, and one RR for
every RTE Data Endpoint object pointing to signed RTE data location.
The RTE object identity RR has the format of o=rte
followed by
id=<RTE ID>
and optional d=<RTE Descition>
. The description should be
encoded to eliminate spaces, using the URLEncode is advised.
Typicaly there is only one RTE Data Endpoint object that point to either DNS or
external URL. Several RTE Data Endpoints imply external URL redundancy:
<DNS name> TXT "o=rte id=<RTE ID> [d=<RTE Description>]"
<DNS name> TXT "u=<RTE Data URL> t=gpg.singed[.base64] [s={0|1}]"
Embedding ARCHERY object relations
In the registry rendering the entry point Group Object is distinguished
by the predefined RRSet DNS name starting with the mandatory
_archery
. Any other objects may have arbitrary RRSet name in any DNS
zone. Exact RRSets naming scheme does not affect service discovery
process, but should be consistent and transparent from the operational
point of view.
The child-parent Endpoint Object to Service Object relation is implicitly defined by means of grouping within the same RRSet. The same applies to “RTE Data Endpoint Object to RTE Object” and “PubKey Endpoint object to Software Object” relations.
The ARCHERY Data model allows grouping of Service, Group and Software Objects into Group objects via the intermediate Endpoint objects. This grouping in the DNS rendering is implemented by using dedicated ARCHERY Endpoint types that are contained as RR text inside the Group object’s RRSet. The same applies to “RTEs Endpoint Object to Software Object” relations.
Both Group Object to Group Object, Group Object to Service Object, Group Object to Software Object and Software Object to RTE Object relations rest upon the unique DNS name of the RRSet of the pointed object.