type bits {
bit DEPRECATED-MASK;
}
- }
+ }
+
+ // field types
+ identity match-field {
+ description "Base identity for match Fields";
+ }
+
+ identity in_port {
+ base match-field;
+ description "Match for Switch input port.";
+ }
+ identity in_phy_port {
+ base match-field;
+ description "Match for Switch physical input port.";
+ }
+ identity metadata {
+ base match-field;
+ description "Match for Metadata passed between tables.";
+ }
+ identity eth_dst {
+ base match-field;
+ description "Match for Ethernet destination address.";
+ }
+ identity eth_src {
+ base match-field;
+ description "Match for Ethernet source address.";
+ }
+ identity eth_type {
+ base match-field;
+ description "Match for Ethernet frame type.";
+ }
+ identity vlan_vid {
+ base match-field;
+ description "Match for VLAN id.";
+ }
+ identity vlan_pcp {
+ base match-field;
+ description "Match for VLAN priority.";
+ }
+ identity ip_dscp {
+ base match-field;
+ description "Match for IP DSCP (6 bits in ToS field).";
+ }
+ identity ip_ecn {
+ base match-field;
+ description "Match for IP ECN (2 bits in ToS field).";
+ }
+ identity ip_proto {
+ base match-field;
+ description "Match for IP protocol.";
+ }
+ identity ipv4_src {
+ base match-field;
+ description "Match for IPv4 source address.";
+ }
+ identity ipv4_dst {
+ base match-field;
+ description "Match for IPv4 destination address.";
+ }
+ identity tcp_src {
+ base match-field;
+ description "Match for TCP source port.";
+ }
+ identity tcp_dst {
+ base match-field;
+ description "Match for TCP destination port.";
+ }
+ identity udp_src {
+ base match-field;
+ description "Match for UDP source port.";
+ }
+ identity udp_dst {
+ base match-field;
+ description "Match for UDP destination port.";
+ }
+ identity sctp_src {
+ base match-field;
+ description "Match for SCTP source port.";
+ }
+ identity sctp_dst {
+ base match-field;
+ description "Match for SCTP destination port.";
+ }
+ identity icmpv4_type {
+ base match-field;
+ description "Match for ICMP type.";
+ }
+ identity icmpv4_code {
+ base match-field;
+ description "Match for ICMP code.";
+ }
+ identity arp_op {
+ base match-field;
+ description "Match for ARP opcode.";
+ }
+ identity arp_spa {
+ base match-field;
+ description "Match for ARP source IPv4 address.";
+ }
+ identity arp_tpa {
+ base match-field;
+ description "Match for ARP target IPv4 address.";
+ }
+ identity arp_sha {
+ base match-field;
+ description "Match for ARP source hardware address.";
+ }
+ identity arp_tha {
+ base match-field;
+ description "Match for ARP target hardware address.";
+ }
+ identity ipv6_src {
+ base match-field;
+ description "Match for IPv6 source address.";
+ }
+ identity ipv6_dst {
+ base match-field;
+ description "Match for IPv6 destination address.";
+ }
+ identity ipv6_flabel {
+ base match-field;
+ description "Match for IPv6 Flow Label";
+ }
+ identity icmpv6_type {
+ base match-field;
+ description "Match for ICMPv6 type.";
+ }
+ identity icmpv6_code {
+ base match-field;
+ description "Match for ICMPv6 code.";
+ }
+ identity ipv6_nd_target {
+ base match-field;
+ description "Match for Target address for ND.";
+ }
+ identity ipv6_nd_sll {
+ base match-field;
+ description "Match for Source link-layer for ND.";
+ }
+ identity ipv6_nd_tll {
+ base match-field;
+ description "Match for Target link-layer for ND.";
+ }
+ identity mpls_label {
+ base match-field;
+ description "Match for MPLS label.";
+ }
+ identity mpls_tc {
+ base match-field;
+ description "Match for MPLS TC.";
+ }
+ identity mpls_bos {
+ base match-field;
+ description "Match for MPLS BoS bit.";
+ }
+ identity pbb_isid {
+ base match-field;
+ description "Match for PBB I-SID.";
+ }
+ identity tunnel_id {
+ base match-field;
+ description "Match for Logical Port Metadata";
+ }
+ identity ipv6_exthdr {
+ base match-field;
+ description "Match for IPv6 Extension Header pseudo-field";
+ }
+
+ grouping set-field-match {
+ list set-field-match {
+ leaf match-type {
+ type identityref {
+ base match-field;
+ }
+ }
+ leaf has-mask {
+ type boolean;
+ }
+ }
+ }
grouping table-feature-prop-type {
choice table-feature-prop-type {
case next-table {
container tables {
- list table-id {
- key "table";
-
- leaf table-id {
- type table-ref;
- }
+ leaf-list table-ids {
+ type uint8;
}
}
}
case next-table-miss {
container tables {
- list table-id {
- key "table-id";
-
- leaf table-id {
- type table-ref;
- }
+ leaf-list table-ids {
+ type uint8;
}
}
}
}
}
- case match {
- container matches {
- leaf-list match {
- type uint32;
- }
- }
+ case match {
+ uses set-field-match;
}
case wildcards {
- container wildcards {
- leaf-list wildcard {
- type uint32;
- }
- }
+ uses set-field-match;
}
case write-setfield {
- container write-setfield {
- leaf-list setfield {
- type uint32;
- }
- }
+ uses set-field-match;
}
case write-setfield-miss {
- container write-setfield-miss {
- leaf-list setfield {
- type uint32;
- }
- }
+ uses set-field-match;
}
case apply-setfield {
- container apply-setfield {
- leaf-list setfield {
- type uint32;
- }
- }
+ uses set-field-match;
}
case apply-setfield-miss {
- container apply-setfield-miss {
- leaf-list setfield {
- type uint32;
- }
- }
+ uses set-field-match;
}
}
}
key "table-id";
leaf table-id {
- type table-ref;
+ type uint8;
}
leaf name {
}
container table-properties {
- list instruction-id {
- key "order";
- leaf order {
- type int32;
- }
-
- uses table-feature-prop-type;
+ list table-feature-properties {
+ key "order";
+ leaf order {
+ type int32;
+ }
+ uses table-feature-prop-type;
}
}
+
}
}
-}
\ No newline at end of file
+}
/**
*
- * Use {@link #putOperationalData(Object, Object)} instead.
+ * @deprecated Use {@link #putOperationalData(Object, Object)} instead.
*
* @param path
* @param data
*/
+ @Deprecated
void putRuntimeData(P path, D data);
void putOperationalData(P path, D data);
void putConfigurationData(P path, D data);
/**
- * Use {@link #removeOperationalData(Object)}
+ * @deprecated Use {@link #removeOperationalData(Object)}
*
* @param path
*/
+ @Deprecated
void removeRuntimeData(P path);
void removeOperationalData(P path);
MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_XML})
public StructuredData readOperationalData(@PathParam("identifier") String identifier);
- @POST
- @Path("/operational/{identifier:.+}")
- @Produces({Draft02.MediaTypes.DATA+JSON,Draft02.MediaTypes.DATA+XML,
- MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_XML})
- public Response createOperationalData(@PathParam("identifier") String identifier, CompositeNode payload);
-
- @PUT
- @Path("/operational/{identifier:.+}")
- @Produces({Draft02.MediaTypes.DATA+JSON,Draft02.MediaTypes.DATA+XML,
- MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_XML})
- public Response updateOperationalData(@PathParam("identifier") String identifier, CompositeNode payload);
-
}
import java.util.List
import javax.ws.rs.core.Response
+import org.opendaylight.controller.md.sal.common.api.TransactionStatus
import org.opendaylight.controller.sal.rest.api.RestconfService
import org.opendaylight.yangtools.yang.data.api.CompositeNode
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode
-import org.opendaylight.controller.md.sal.common.api.TransactionStatus
-import javax.ws.rs.WebApplicationException
class RestconfImpl implements RestconfService {
createConfigurationData(identifier,payload);
}
- override createOperationalData(String identifier, CompositeNode payload) {
- val identifierWithSchemaNode = identifier.resolveInstanceIdentifier
- val value = resolveNodeNamespaceBySchema(payload, identifierWithSchemaNode.schemaNode)
- val status = broker.commitOperationalDataPut(identifierWithSchemaNode.instanceIdentifier,value).get();
- switch status.result {
- case TransactionStatus.COMMITED: Response.status(Response.Status.OK).build
- default: Response.status(Response.Status.INTERNAL_SERVER_ERROR).build
- }
- }
-
- override updateOperationalData(String identifier, CompositeNode payload) {
- val identifierWithSchemaNode = identifier.resolveInstanceIdentifier
- val value = resolveNodeNamespaceBySchema(payload, identifierWithSchemaNode.schemaNode)
- val status = broker.commitOperationalDataPut(identifierWithSchemaNode.instanceIdentifier,value).get();
- switch status.result {
- case TransactionStatus.COMMITED: Response.status(Response.Status.NO_CONTENT).build
- default: Response.status(Response.Status.INTERNAL_SERVER_ERROR).build
- }
- }
-
private def InstanceIdWithSchemaNode resolveInstanceIdentifier(String identifier) {
val identifierWithSchemaNode = identifier.toInstanceIdentifier
if (identifierWithSchemaNode === null) {
response = target(uri).request(MEDIA_TYPE_DRAFT02).post(entity);
assertEquals(200, response.getStatus());
- uri = createUri("/operational/", "ietf-interfaces:interfaces/interface/eth0");
+ uri = createUri("/config/", "ietf-interfaces:interfaces/interface/eth0");
response = target(uri).request(MEDIA_TYPE_DRAFT02).put(entity);
assertEquals(204, response.getStatus());
response = target(uri).request(MEDIA_TYPE_DRAFT02).post(entity);
response = target(uri).request(MEDIA_TYPE_DRAFT02).post(entity);
assertEquals(500, response.getStatus());
- uri = createUri("/operational/", "ietf-interfaces:interfaces/interface/eth0");
+ uri = createUri("/config/", "ietf-interfaces:interfaces/interface/eth0");
response = target(uri).request(MEDIA_TYPE_DRAFT02).put(entity);
assertEquals(500, response.getStatus());
response = target(uri).request(MEDIA_TYPE_DRAFT02).post(entity);