protogeni-rspec-common.rnc 3.33 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
        # 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.)
18 19 20 21
        attribute physical_uuid { text },
        attribute physical_name { text }?,
	attribute virtual_uuid { text }?,
	attribute virtual_name { text }?,
22 23 24 25
        # Each node has exactly one virtualization technology, which we simply
        # enumerate here
        attribute virtualization_type { "raw" | "trellis-vserver" |
        "planetlab-vserver" | "emulab-vnode" }?,
26
        NodeSpec.NodeType,
27 28 29 30 31
        # 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
32
        element available { xsd:boolean }?,
33
	InterfaceDecl*,
Robert Ricci's avatar
Robert Ricci committed
34 35
        # Optionally, include the URL for this component's CM
        CMURLSpec?
36
    LinkContents =
37 38 39
        # 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.
40 41 42 43
        attribute physical_uuid { text },
        attribute physical_name { text }?,
        attribute virtual_uuid { text }?,
        attribute virtual_name { text }?,
44 45 46 47 48 49 50
        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
51
        # TODO: Might add a URL for the CM for a link in the future
52
    InterfaceContents = 
53 54 55
        # Semantic change - the 'name' in an interface is solely for human
        # readability. It's the UUID that is used to uniquely identify a
        # node.
56
        element node_uuid { text },
57 58 59 60 61 62
        element interface_name { text }
}

# InterfaceDecl is for declaration of interfaces inside of a node.
InterfaceDecl = element interface {
	attribute name { text }
Robert Ricci's avatar
Robert Ricci committed
63 64 65 66 67
}

## 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 }
68 69 70 71 72 73 74 75 76 77 78

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 },
79 80
    # One or more nodes/links
    (NodeSpec | LinkSpec)*
81
}