default namespace = “schema.mytestbed.net/omf/6.0/protocol”
start = (create | configure | request | release | inform | env)
# Shared elements among all types of messages common_elements =
# Message ID (optional) attribute mid { text }? # Time stamp & element ts { text } # Source (who sends it) (optional) & element src { text }? # Reply address (who sends it) (optional) & element replyto { text }? # Resource properties (optional) & element props { core_props, property * }? # Guard with filtering properties (optional) & element guard { property * }?
property = element * { valid_content? }
# Valid content type boolean_content = attribute type { “boolean” }, text integer_content = attribute type { “integer” }, text float_content = attribute type { “float” }, text string_content = attribute type { “string” }, text array_content = attribute type { “array” }
& element it { valid_content? | property * } *
hash_content = attribute type { “hash” }
& property *
valid_content = boolean_content | integer_content | float_content | string_content | array_content | hash_content
# Core Resource Proxy Properties res_id = element res_id { string_content } reason = element reason { string_content } membership = element membership { array_content | string_content } uid = element uid { string_content } type = element type { string_content } hrn = element hrn { string_content } name = element name { string_content } child_resources= element child_resources { array_content } available_properties= element available_properties { hash_content } supported_children_type= element supported_children_type { array_content } certificate = element certificate { string_content }
core_props = (res_id | reason | hrn | membership | uid | type | name | child_resources | available_properties | supported_children_type | certificate ) *
# Create message create = element create {
common_elements # Resource type is required & element rtype { text }
}
# Configure message configure = element configure {
common_elements
}
# Request message request = element request {
common_elements
}
# Release message release = element release {
common_elements & element res_id { text }?
}
# Inform message inform = element inform {
common_elements & element cid { text }? & element itype { "CREATION.OK" | "CREATION.FAILED" | "STATUS" | "RELEASED" | "ERROR" | "WARN" }
}
# Message can be wrapped in env(elope) env = element env {
create | configure | request | release | inform
}