protogeni-rspec-common.rnc 3.03 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
#
# EMULAB-COPYRIGHT
# Copyright (c) 2008 University of Utah and the Flux Group.
# All rights reserved.
#

#
# Simple prototype of an RSpec, to be used by ProtoGENI
#

include "../../assign/top.rnc" {
    # Add some more stuff to nodes
13
    NodeContents =
14 15 16 17 18 19 20 21 22 23
        # Semantic change - the 'name' of a (physical) node is now
        # solely for human-readability. It's the UUID, which we add here,
        # that is the "true" identifier (ie. used in identifying link
        # endpoints.)
        attribute uuid { text },
        attribute name { text }?,
        # Each node has exactly one virtualization technology, which we simply
        # enumerate here
        attribute virtualization_type { "raw" | "trellis-vserver" |
        "planetlab-vserver" | "emulab-vnode" }?,
24
        NodeSpec.NodeType,
25 26 27 28 29
        # Inidicate whether or not this node is available - the idea is that a
        # full dump of the static physical topology will not include this, but
        # that we can later get updates that include only this attribute (and a
        # UUID) Just binary for now - probably will include more things, such
        # as a number of "free slots", later
30
        element available { xsd:boolean }?,
Robert Ricci's avatar
Robert Ricci committed
31 32
        # Optionally, include the URL for this component's CM
        CMURLSpec?
33
    LinkContents =
34 35 36 37
        # Semantic change - the 'name' of a (physical) link is now
        # solely for human-readability. It's the UUID, which we add here,
        # that is the "true" identifier.
        attribute uuid { text },
38 39 40 41 42 43 44 45
        attribute name { text }?,
        LinkEndPoints,
        ## The characteristics (bandwidth, latency, loss) which affect traffic.
        LinkCharacteristics,
        ## Type of this link - we use a named pattern here (defined below), so
        ## that it can be overriden in the virtual topology schema, where you are
        ## only allowed to have one
        LinkSpec.LinkType
Robert Ricci's avatar
Robert Ricci committed
46
        # TODO: Might add a URL for the CM for a link in the future
47
    InterfaceContents = 
48 49 50
        # Semantic change - the 'name' in an interface is solely for human
        # readability. It's the UUID that is used to uniquely identify a
        # node.
51 52 53
        element node_uuid { text },
        element node_name { text }?,
        element interface { text }
Robert Ricci's avatar
Robert Ricci committed
54 55 56 57 58
}

## How to contact a component manager. In the future, could include information
## about the version of the interface it supports, or something like that...
CMURLSpec = element component_manager_URL { xsd:anyURI }
59 60 61 62 63 64 65 66 67 68 69

RSpec = element rspec {
    # TODO: Include something about who generated this rspec?
    # When this RSpec was generated - optional, can be used for determining
    # staleness
    attribute generated { xsd:dateTime },
    # How long this rspec is valid - in the case of a ticket, this indicates
    # how long the holder may use the resources. For a resource request, it's
    # how long we want the resources. For an advertisement, it might be a hint
    # as to how long it's okay to cache this rspec.
    attribute valid_until { xsd:dateTime },
70 71
    # One or more nodes/links
    (NodeSpec | LinkSpec)*
72
}