From: Ed Warnicke Date: Mon, 13 Jan 2014 13:47:06 +0000 (+0000) Subject: Merge "OF 1.3: Remove range check for max-length attribute for Output action." X-Git-Tag: jenkins-controller-bulk-release-prepare-only-2-1~104 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=895aef4866b5abec10d5a117d940a6ee0b197593;hp=6052d035269c91d93c8a1e29faf5b5fdc39d9801 Merge "OF 1.3: Remove range check for max-length attribute for Output action." --- diff --git a/opendaylight/commons/opendaylight/pom.xml b/opendaylight/commons/opendaylight/pom.xml index 8933b1442f..24b1ed9cbc 100644 --- a/opendaylight/commons/opendaylight/pom.xml +++ b/opendaylight/commons/opendaylight/pom.xml @@ -61,6 +61,7 @@ 5.0.0 2010.09.24.2-SNAPSHOT 2010.09.24.2-SNAPSHOT + 2013.10.21.0-SNAPSHOT 2013.08.27.1 2013.09.07.1 3.17.1-GA @@ -666,6 +667,11 @@ ietf-yang-types ${ietf-yang-types.version} + + org.opendaylight.yangtools.model + ietf-topology + ${ietf-topology.version} + org.opendaylight.yangtools.model opendaylight-l2-types diff --git a/opendaylight/distribution/opendaylight/pom.xml b/opendaylight/distribution/opendaylight/pom.xml index 6fca9db636..f1eca41dee 100644 --- a/opendaylight/distribution/opendaylight/pom.xml +++ b/opendaylight/distribution/opendaylight/pom.xml @@ -152,7 +152,6 @@ org.opendaylight.yangtools.model ietf-topology - 2013.07.12.2-SNAPSHOT org.opendaylight.controller diff --git a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/flow/FlowTransaction.xtend b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/flow/FlowTransaction.xtend index 6fcadea8bf..dc2a7ee6f9 100644 --- a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/flow/FlowTransaction.xtend +++ b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/flow/FlowTransaction.xtend @@ -16,14 +16,16 @@ import org.opendaylight.yangtools.yang.binding.DataObject import org.opendaylight.yangtools.yang.binding.InstanceIdentifier import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowRef +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri class FlowTransaction extends AbstractTransaction { @Property - val SalFlowService salFlowService; + val SalFlowService salFlowService; + new(DataModification, DataObject> modification,SalFlowService salFlowService) { - super(modification) + super(modification) _salFlowService = salFlowService; } @@ -33,9 +35,10 @@ class FlowTransaction extends AbstractTransaction { val tableInstanceId = instanceId.firstIdentifierOf(Table); val nodeInstanceId = instanceId.firstIdentifierOf(Node); val builder = new RemoveFlowInputBuilder(flow); - builder.setFlowRef(new FlowRef(instanceId)); + builder.setFlowRef(new FlowRef(instanceId)); builder.setNode(new NodeRef(nodeInstanceId)); builder.setFlowTable(new FlowTableRef(tableInstanceId)); + builder.setTransactionUri(new Uri(modification.getIdentifier() as String)); _salFlowService.removeFlow(builder.build()); } } @@ -50,6 +53,7 @@ class FlowTransaction extends AbstractTransaction { builder.setFlowRef(new FlowRef(instanceId)); val ufb = new UpdatedFlowBuilder(updatedFlow); builder.setUpdatedFlow((ufb.build())); + builder.setTransactionUri(new Uri(modification.getIdentifier() as String)); val ofb = new OriginalFlowBuilder(originalFlow); builder.setOriginalFlow(ofb.build()); _salFlowService.updateFlow(builder.build()); @@ -64,6 +68,7 @@ class FlowTransaction extends AbstractTransaction { val nodeInstanceId = instanceId.firstIdentifierOf(Node); val builder = new AddFlowInputBuilder(flow); builder.setNode(new NodeRef(nodeInstanceId)); + builder.setTransactionUri(new Uri(modification.getIdentifier() as String)); builder.setFlowRef(new FlowRef(instanceId)); builder.setFlowTable(new FlowTableRef(tableInstanceId)); _salFlowService.addFlow(builder.build()); diff --git a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/group/GroupTransaction.xtend b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/group/GroupTransaction.xtend index d68ffa09fa..f79c9b61a6 100644 --- a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/group/GroupTransaction.xtend +++ b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/group/GroupTransaction.xtend @@ -14,14 +14,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node import org.opendaylight.yangtools.yang.binding.DataObject import org.opendaylight.yangtools.yang.binding.InstanceIdentifier +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri class GroupTransaction extends AbstractTransaction { @Property val SalGroupService groupService; - + new(DataModification, DataObject> modification,SalGroupService groupService) { - super(modification) + super(modification) _groupService = groupService; } @@ -31,6 +32,7 @@ class GroupTransaction extends AbstractTransaction { val nodeInstanceId = instanceId.firstIdentifierOf(Node); val builder = new RemoveGroupInputBuilder(group); builder.setNode(new NodeRef(nodeInstanceId)); + builder.setTransactionUri(new Uri(modification.getIdentifier() as String)); builder.setGroupRef(new GroupRef(instanceId)); _groupService.removeGroup(builder.build()); } @@ -46,6 +48,7 @@ class GroupTransaction extends AbstractTransaction { builder.setGroupRef(new GroupRef(instanceId)); val ufb = new UpdatedGroupBuilder(updatedGroup); builder.setUpdatedGroup((ufb.build())); + builder.setTransactionUri(new Uri(modification.getIdentifier() as String)); val ofb = new OriginalGroupBuilder(originalGroup); builder.setOriginalGroup(ofb.build()); _groupService.updateGroup(builder.build()); @@ -60,6 +63,7 @@ class GroupTransaction extends AbstractTransaction { val builder = new AddGroupInputBuilder(group); builder.setNode(new NodeRef(nodeInstanceId)); builder.setGroupRef(new GroupRef(instanceId)); + builder.setTransactionUri(new Uri(modification.getIdentifier() as String)); _groupService.addGroup(builder.build()); } } diff --git a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/meter/MeterTransaction.xtend b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/meter/MeterTransaction.xtend index d64f2518a8..594a16c34e 100644 --- a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/meter/MeterTransaction.xtend +++ b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/meter/MeterTransaction.xtend @@ -14,14 +14,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter import org.opendaylight.yangtools.yang.binding.DataObject import org.opendaylight.yangtools.yang.binding.InstanceIdentifier import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterRef +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri class MeterTransaction extends AbstractTransaction { @Property val SalMeterService salMeterService; - + new(DataModification, DataObject> modification,SalMeterService salMeterService) { - super(modification) + super(modification) _salMeterService = salMeterService; } @@ -32,6 +33,7 @@ class MeterTransaction extends AbstractTransaction { val builder = new RemoveMeterInputBuilder(meter); builder.setNode(new NodeRef(nodeInstanceId)); builder.setMeterRef(new MeterRef(instanceId)); + builder.setTransactionUri(new Uri(modification.getIdentifier() as String)); _salMeterService.removeMeter(builder.build()); } } @@ -46,6 +48,7 @@ class MeterTransaction extends AbstractTransaction { builder.setMeterRef(new MeterRef(instanceId)); val ufb = new UpdatedMeterBuilder(updatedMeter); builder.setUpdatedMeter((ufb.build())); + builder.setTransactionUri(new Uri(modification.getIdentifier() as String)); val ofb = new OriginalMeterBuilder(originalMeter); builder.setOriginalMeter(ofb.build()); _salMeterService.updateMeter(builder.build()); @@ -60,6 +63,7 @@ class MeterTransaction extends AbstractTransaction { val builder = new AddMeterInputBuilder(meter); builder.setNode(new NodeRef(nodeInstanceId)); builder.setMeterRef(new MeterRef(instanceId)); + builder.setTransactionUri(new Uri(modification.getIdentifier() as String)); _salMeterService.addMeter(builder.build()); } } diff --git a/opendaylight/md-sal/model/model-flow-service/src/main/yang/packet-processing.yang b/opendaylight/md-sal/model/model-flow-service/src/main/yang/packet-processing.yang index bfdf5049c3..00ecdbacf0 100644 --- a/opendaylight/md-sal/model/model-flow-service/src/main/yang/packet-processing.yang +++ b/opendaylight/md-sal/model/model-flow-service/src/main/yang/packet-processing.yang @@ -6,6 +6,8 @@ module packet-processing { import opendaylight-inventory {prefix inv;revision-date "2013-08-19";} import ietf-yang-types {prefix yang;revision-date "2010-09-24";} import opendaylight-l2-types {prefix types;revision-date "2013-08-27";} + import opendaylight-match-types {prefix match-type;revision-date "2013-10-26";} + import opendaylight-table-types {prefix table-type;revision-date "2013-10-26";} revision "2013-07-09" { description ""; @@ -34,11 +36,44 @@ module packet-processing { } } + identity packet-in-reason { + description "Base identity for all the available packet in reason"; + } + + identity no-match { + base packet-in-reason; + description "No matching flow in the classifier"; + } + + identity send-to-controller { + base packet-in-reason; + description "Explicit instruction to send packet to controller"; + } + + identity invalid-ttl { + base packet-in-reason; + description "Packet with invalid TTL"; + } notification packet-received { leaf cookie { type cookie; } + + leaf table-id { + type table-type:table-id; + } + + leaf packet-in-reason { + type identityref { + base packet-in-reason; + } + } + + container match { + uses match-type:match; + } + uses raw-packet; } @@ -56,4 +91,4 @@ module packet-processing { uses raw-packet; } } -} \ No newline at end of file +} diff --git a/opendaylight/md-sal/model/model-topology/pom.xml b/opendaylight/md-sal/model/model-topology/pom.xml index c91b9dd53a..e2ce7a9735 100644 --- a/opendaylight/md-sal/model/model-topology/pom.xml +++ b/opendaylight/md-sal/model/model-topology/pom.xml @@ -17,15 +17,15 @@ bundle - - org.opendaylight.controller.model - model-inventory - 1.0-SNAPSHOT - - - org.opendaylight.yangtools.model - ietf-topology - 2013.07.12.2-SNAPSHOT - + + org.opendaylight.controller.model + model-inventory + 1.0-SNAPSHOT + + + org.opendaylight.yangtools.model + ietf-topology + 2013.10.21.0-SNAPSHOT + diff --git a/opendaylight/md-sal/model/model-topology/src/main/yang/opendaylight-topology-inventory.yang b/opendaylight/md-sal/model/model-topology/src/main/yang/opendaylight-topology-inventory.yang index ceeef45f23..87de0f5ae1 100644 --- a/opendaylight/md-sal/model/model-topology/src/main/yang/opendaylight-topology-inventory.yang +++ b/opendaylight/md-sal/model/model-topology/src/main/yang/opendaylight-topology-inventory.yang @@ -8,7 +8,7 @@ module opendaylight-topology-inventory { import ietf-inet-types { prefix "inet"; } import opendaylight-inventory {prefix "inv";} import opendaylight-topology {prefix "odt";} - import network-topology {prefix "topo";} + import network-topology {prefix "topo"; revision-date "2013-07-12"; } organization "TBD"; @@ -33,4 +33,4 @@ module opendaylight-topology-inventory { type inv:node-connector-ref; } } -} \ No newline at end of file +} diff --git a/opendaylight/md-sal/model/model-topology/src/main/yang/opendaylight-topology.yang b/opendaylight/md-sal/model/model-topology/src/main/yang/opendaylight-topology.yang index 038a1b7c67..6bbfd4b479 100644 --- a/opendaylight/md-sal/model/model-topology/src/main/yang/opendaylight-topology.yang +++ b/opendaylight/md-sal/model/model-topology/src/main/yang/opendaylight-topology.yang @@ -7,7 +7,7 @@ module opendaylight-topology { import yang-ext { prefix "ext"; } import ietf-inet-types { prefix "inet"; } import opendaylight-inventory {prefix "inv";} - import network-topology {prefix "topo";} + import network-topology {prefix "topo"; revision-date "2013-07-12"; } organization "TBD"; diff --git a/opendaylight/md-sal/model/model-topology/src/main/yang/topology-view.yang b/opendaylight/md-sal/model/model-topology/src/main/yang/topology-view.yang index 2fecb327ca..1a10bf6fdd 100644 --- a/opendaylight/md-sal/model/model-topology/src/main/yang/topology-view.yang +++ b/opendaylight/md-sal/model/model-topology/src/main/yang/topology-view.yang @@ -6,7 +6,7 @@ module opendaylight-topology-view { import yang-ext { prefix "ext"; } import ietf-inet-types { prefix "inet"; } - import network-topology {prefix "topo";} + import network-topology {prefix "topo"; revision-date "2013-07-12"; } import opendaylight-topology {prefix "odl";} organization "TBD"; @@ -45,4 +45,4 @@ module opendaylight-topology-view { ext:augment-identifier "aggregated-node"; uses aggregate-node; } -} \ No newline at end of file +} diff --git a/opendaylight/md-sal/sal-dom-broker/pom.xml b/opendaylight/md-sal/sal-dom-broker/pom.xml index 4740b0d569..10e7946a7b 100644 --- a/opendaylight/md-sal/sal-dom-broker/pom.xml +++ b/opendaylight/md-sal/sal-dom-broker/pom.xml @@ -30,11 +30,6 @@ sal-common-impl 1.0-SNAPSHOT - - org.opendaylight.controller - sal-common-impl - 1.0-SNAPSHOT - org.opendaylight.controller sal-core-spi diff --git a/opendaylight/md-sal/sal-netconf-connector/pom.xml b/opendaylight/md-sal/sal-netconf-connector/pom.xml index 2323b09f99..67e2934a0e 100644 --- a/opendaylight/md-sal/sal-netconf-connector/pom.xml +++ b/opendaylight/md-sal/sal-netconf-connector/pom.xml @@ -98,12 +98,6 @@ test ${netconf.version} - - ${project.groupId} - yang-test - test - ${netconf.version} - ${project.groupId} config-manager diff --git a/opendaylight/md-sal/sal-remoterpc-connector/implementation/pom.xml b/opendaylight/md-sal/sal-remoterpc-connector/implementation/pom.xml index 6c72a610a7..d5648a0625 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/implementation/pom.xml +++ b/opendaylight/md-sal/sal-remoterpc-connector/implementation/pom.xml @@ -61,10 +61,6 @@ org.opendaylight.yangtools yang-data-impl - - org.opendaylight.yangtools - yang-common - diff --git a/opendaylight/md-sal/sal-rest-connector/pom.xml b/opendaylight/md-sal/sal-rest-connector/pom.xml index 5e798b6720..0bd86a3ead 100644 --- a/opendaylight/md-sal/sal-rest-connector/pom.xml +++ b/opendaylight/md-sal/sal-rest-connector/pom.xml @@ -42,7 +42,7 @@ yang-data-impl ${yang.version} - + org.opendaylight.yangtools yang-model-util ${yang.version} @@ -82,11 +82,6 @@ 2.4 test - - org.opendaylight.yangtools - yang-model-util - 0.5.9-SNAPSHOT - diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DeleteRestCallTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DeleteRestCallTest.java new file mode 100644 index 0000000000..7b164d4615 --- /dev/null +++ b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DeleteRestCallTest.java @@ -0,0 +1,101 @@ +package org.opendaylight.controller.sal.restconf.impl.test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.net.URI; +import java.net.URLEncoder; +import java.util.Set; +import java.util.concurrent.Future; +import java.util.logging.Level; + +import javax.ws.rs.client.Entity; +import javax.ws.rs.core.Application; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import org.glassfish.jersey.server.ResourceConfig; +import org.glassfish.jersey.test.JerseyTest; +import org.glassfish.jersey.test.TestProperties; +import org.junit.BeforeClass; +import org.junit.Test; +import org.opendaylight.controller.md.sal.common.api.TransactionStatus; +import org.opendaylight.controller.sal.rest.impl.StructuredDataToXmlProvider; +import org.opendaylight.controller.sal.rest.impl.XmlMapper; +import org.opendaylight.controller.sal.rest.impl.XmlToCompositeNodeProvider; +import org.opendaylight.controller.sal.restconf.impl.BrokerFacade; +import org.opendaylight.controller.sal.restconf.impl.ControllerContext; +import org.opendaylight.controller.sal.restconf.impl.RestconfImpl; +import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.data.api.CompositeNode; +import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; +import org.opendaylight.yangtools.yang.model.api.Module; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; + +import com.google.common.base.Charsets; + +public class DeleteRestCallTest extends JerseyTest { + + private static ControllerContext controllerContext; + private static BrokerFacade brokerFacade; + private static RestconfImpl restconfImpl; + private static final MediaType MEDIA_TYPE_DRAFT02 = new MediaType("application", "yang.data+xml"); + + @BeforeClass + public static void init() throws FileNotFoundException { + Set allModules = TestUtils.loadModulesFrom("/test-config-data/yang1"); + assertNotNull(allModules); + SchemaContext schemaContext = TestUtils.loadSchemaContext(allModules); + controllerContext = ControllerContext.getInstance(); + controllerContext.setSchemas(schemaContext); + brokerFacade = mock(BrokerFacade.class); + restconfImpl = RestconfImpl.getInstance(); + restconfImpl.setBroker(brokerFacade); + restconfImpl.setControllerContext(controllerContext); + } + + @Test + public void testDeleteConfigurationData() throws UnsupportedEncodingException, FileNotFoundException { + String uri2 = createUri("/config/", "test-interface:interfaces"); + + RpcResult rpcResult = new DummyRpcResult.Builder().result( + TransactionStatus.COMMITED).build(); + Future> dummyFuture = DummyFuture.builder().rpcResult(rpcResult).build(); + when(brokerFacade.commitConfigurationDataDelete(any(InstanceIdentifier.class))).thenReturn(dummyFuture); + + Response response = target(uri2).request(MEDIA_TYPE_DRAFT02).delete(); + assertEquals(200, response.getStatus()); + + rpcResult = new DummyRpcResult.Builder().result(TransactionStatus.FAILED).build(); + dummyFuture = DummyFuture.builder().rpcResult(rpcResult).build(); + + when(brokerFacade.commitConfigurationDataDelete(any(InstanceIdentifier.class))).thenReturn(dummyFuture); + + response = target(uri2).request(MEDIA_TYPE_DRAFT02).delete(); + assertEquals(500, response.getStatus()); + } + + private String createUri(String prefix, String encodedPart) throws UnsupportedEncodingException { + return URI.create(prefix + URLEncoder.encode(encodedPart, Charsets.US_ASCII.name()).toString()).toASCIIString(); + } + + @Override + protected Application configure() { + enable(TestProperties.LOG_TRAFFIC); + enable(TestProperties.DUMP_ENTITY); + enable(TestProperties.RECORD_LOG_LEVEL); + set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue()); + + ResourceConfig resourceConfig = new ResourceConfig(); + resourceConfig = resourceConfig.registerInstances(restconfImpl, StructuredDataToXmlProvider.INSTANCE, + XmlToCompositeNodeProvider.INSTANCE); + return resourceConfig; + } +}