Search in sources :

Example 31 with Top

use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top in project controller by opendaylight.

the class Bug1418AugmentationTest method leafOnlyAugmentationUpdatedTest.

@Test
public void leafOnlyAugmentationUpdatedTest() {
    WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction();
    writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP, top());
    writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP_FOO, topLevelList(new TopLevelListKey(TOP_FOO_KEY)));
    writeTx.put(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, leafOnlyUsesAugment("test leaf"));
    assertCommit(writeTx.submit());
    final TestListener listener = createListener(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, AsyncDataBroker.DataChangeScope.SUBTREE);
    writeTx = getDataBroker().newWriteOnlyTransaction();
    writeTx.put(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, leafOnlyUsesAugment("test leaf changed"));
    assertCommit(writeTx.submit());
    AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> event = listener.event();
    assertContains(event.getUpdatedData(), SIMPLE_AUGMENT);
    assertContains(event.getOriginalData(), SIMPLE_AUGMENT);
    assertEmpty(event.getCreatedData());
    assertEmpty(event.getRemovedPaths());
}
Also used : WriteTransaction(org.opendaylight.controller.md.sal.binding.api.WriteTransaction) DataObject(org.opendaylight.yangtools.yang.binding.DataObject) InstanceIdentifier(org.opendaylight.yangtools.yang.binding.InstanceIdentifier) TopLevelListKey(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelListKey) Test(org.junit.Test) AbstractDataChangeListenerTest(org.opendaylight.controller.md.sal.binding.test.AbstractDataChangeListenerTest)

Example 32 with Top

use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top in project controller by opendaylight.

the class Bug1418AugmentationTest method leafOnlyAugmentationDeletedTest.

@Test
public void leafOnlyAugmentationDeletedTest() {
    WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction();
    writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP, top());
    writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP_FOO, topLevelList(new TopLevelListKey(TOP_FOO_KEY)));
    writeTx.put(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, leafOnlyUsesAugment("test leaf"));
    assertCommit(writeTx.submit());
    final TestListener listener = createListener(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, AsyncDataBroker.DataChangeScope.SUBTREE);
    writeTx = getDataBroker().newWriteOnlyTransaction();
    writeTx.delete(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT);
    assertCommit(writeTx.submit());
    AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> event = listener.event();
    assertContains(event.getRemovedPaths(), SIMPLE_AUGMENT);
    assertContains(event.getOriginalData(), SIMPLE_AUGMENT);
    assertEmpty(event.getCreatedData());
    assertEmpty(event.getUpdatedData());
}
Also used : WriteTransaction(org.opendaylight.controller.md.sal.binding.api.WriteTransaction) DataObject(org.opendaylight.yangtools.yang.binding.DataObject) InstanceIdentifier(org.opendaylight.yangtools.yang.binding.InstanceIdentifier) TopLevelListKey(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelListKey) Test(org.junit.Test) AbstractDataChangeListenerTest(org.opendaylight.controller.md.sal.binding.test.AbstractDataChangeListenerTest)

Example 33 with Top

use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top in project netvirt by opendaylight.

the class NeutronvpnNatManager method handleExternalNetworkForRouter.

public void handleExternalNetworkForRouter(@Nullable Router original, Router update) {
    Uuid routerId = update.getUuid();
    Uuid origExtNetId = null;
    Uuid updExtNetId = null;
    List<ExternalFixedIps> origExtFixedIps;
    LOG.trace("handleExternalNetwork for router {}", routerId);
    int extNetChanged = externalNetworkChanged(original, update);
    if (extNetChanged != EXTERNAL_NO_CHANGE) {
        if (extNetChanged == EXTERNAL_ADDED) {
            updExtNetId = update.getExternalGatewayInfo().getExternalNetworkId();
            LOG.trace("External Network {} addition detected for router {}", updExtNetId.getValue(), routerId.getValue());
            addExternalNetworkToRouter(update);
            return;
        }
        if (extNetChanged == EXTERNAL_REMOVED) {
            origExtNetId = original.getExternalGatewayInfo().getExternalNetworkId();
            origExtFixedIps = new ArrayList<ExternalFixedIps>(original.getExternalGatewayInfo().nonnullExternalFixedIps().values());
            LOG.trace("External Network removal detected for router {}", routerId.getValue());
            removeExternalNetworkFromRouter(origExtNetId, update, origExtFixedIps);
            // gateway mac unset handled as part of gateway clear deleting top-level routers node
            return;
        }
        origExtNetId = original.getExternalGatewayInfo().getExternalNetworkId();
        origExtFixedIps = new ArrayList<ExternalFixedIps>(original.getExternalGatewayInfo().nonnullExternalFixedIps().values());
        updExtNetId = update.getExternalGatewayInfo().getExternalNetworkId();
        LOG.trace("External Network changed from {} to {} for router {}", origExtNetId.getValue(), updExtNetId.getValue(), routerId.getValue());
        removeExternalNetworkFromRouter(origExtNetId, update, origExtFixedIps);
        addExternalNetworkToRouter(update);
        return;
    }
    if (snatSettingChanged(original, update)) {
        LOG.trace("SNAT settings on gateway changed for router {}", routerId.getValue());
        handleSnatSettingChangeForRouter(update);
    }
    if (externalFixedIpsChanged(original, update)) {
        LOG.trace("External Fixed IPs changed for router {}", routerId.getValue());
        handleExternalFixedIpsForRouter(update);
    }
}
Also used : ExternalFixedIps(org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.router.external_gateway_info.ExternalFixedIps) Uuid(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid)

Example 34 with Top

use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top in project netconf by opendaylight.

the class NetconfMessageTransformUtil method createEditConfigAnyxml.

/**
 * Create edit-config structure to invoke {@code operation} with {@code lastChildOverride} data on {@code dataPath}.
 *
 * @param ctx {@link EffectiveModelContext} device's model context
 * @param dataPath {@link YangInstanceIdentifier} path to data in device's data-store
 * @param operation Optional of {@link ModifyAction} action to be invoked
 * @param lastChildOverride Optional of {@code NormalizedNode} data on which action will be invoked
 * @return {@link DOMSourceAnyxmlNode} containing edit-config structure
 */
public static DOMSourceAnyxmlNode createEditConfigAnyxml(final EffectiveModelContext ctx, final YangInstanceIdentifier dataPath, final Optional<ModifyAction> operation, final Optional<NormalizedNode> lastChildOverride) {
    if (dataPath.isEmpty()) {
        Preconditions.checkArgument(lastChildOverride.isPresent(), "Data has to be present when creating structure for top level element");
        Preconditions.checkArgument(lastChildOverride.get() instanceof DataContainerChild, "Data has to be either container or a list node when creating structure for top level element, " + "but was: %s", lastChildOverride.get());
    }
    final var element = XmlUtil.createElement(BLANK_DOCUMENT, NETCONF_CONFIG_QNAME.getLocalName(), Optional.of(NETCONF_CONFIG_QNAME.getNamespace().toString()));
    final var metadata = operation.map(o -> leafMetadata(dataPath, o)).orElse(null);
    try {
        if (lastChildOverride.isPresent()) {
            // FIXME remove ImmutableNodes.fromInstanceId usage
            final var configContent = ImmutableNodes.fromInstanceId(ctx, dataPath, lastChildOverride.get());
            NetconfUtil.writeNormalizedNode(configContent, metadata, new DOMResult(element), SchemaPath.ROOT, ctx);
        } else {
            NetconfUtil.writeNormalizedNode(dataPath, metadata, new DOMResult(element), SchemaPath.ROOT, ctx);
        }
    } catch (final IOException | XMLStreamException e) {
        throw new IllegalStateException("Unable to serialize edit config content element for path " + dataPath, e);
    }
    return Builders.anyXmlBuilder().withNodeIdentifier(NETCONF_CONFIG_NODEID).withValue(new DOMSource(element)).build();
}
Also used : NodeIdentifier(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier) LoggerFactory(org.slf4j.LoggerFactory) NetconfUtil(org.opendaylight.netconf.util.NetconfUtil) XMLNamespace(org.opendaylight.yangtools.yang.common.XMLNamespace) ErrorSeverity(org.opendaylight.yangtools.yang.common.ErrorSeverity) XmlElement(org.opendaylight.netconf.api.xml.XmlElement) MessageCounter(org.opendaylight.netconf.sal.connect.util.MessageCounter) Absolute(org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute) NetconfMessage(org.opendaylight.netconf.api.NetconfMessage) NETCONF_QNAME(org.opendaylight.netconf.util.NetconfUtil.NETCONF_QNAME) NetconfState(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.NetconfState) Locale(java.util.Locale) Document(org.w3c.dom.Document) Map(java.util.Map) XMLStreamException(javax.xml.stream.XMLStreamException) FailedNetconfMessage(org.opendaylight.netconf.api.FailedNetconfMessage) YangInstanceIdentifier(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier) XMLStreamWriter(javax.xml.stream.XMLStreamWriter) URI(java.net.URI) ContainerNode(org.opendaylight.yangtools.yang.data.api.schema.ContainerNode) DOMDataTreeIdentifier(org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier) XmlUtil(org.opendaylight.netconf.api.xml.XmlUtil) ImmutableMap(com.google.common.collect.ImmutableMap) Collection(java.util.Collection) NodeWithValue(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue) DataContainerChild(org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild) Instant(java.time.Instant) XMLStreamNormalizedNodeStreamWriter(org.opendaylight.yangtools.yang.data.codec.xml.XMLStreamNormalizedNodeStreamWriter) DateTimeParseException(java.time.format.DateTimeParseException) List(java.util.List) Builder(org.opendaylight.yangtools.rfc7952.data.util.ImmutableNormalizedMetadata.Builder) PathArgument(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument) CreateSubscriptionInput(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.CreateSubscriptionInput) ImmutableNodes(org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes) SchemaOrderedNormalizedNodeWriter(org.opendaylight.yangtools.yang.data.impl.schema.SchemaOrderedNormalizedNodeWriter) YangConstants(org.opendaylight.yangtools.yang.common.YangConstants) Entry(java.util.Map.Entry) Optional(java.util.Optional) NormalizedMetadata(org.opendaylight.yangtools.rfc7952.data.api.NormalizedMetadata) NonNull(org.eclipse.jdt.annotation.NonNull) DOMSource(javax.xml.transform.dom.DOMSource) SchemaPath(org.opendaylight.yangtools.yang.model.api.SchemaPath) NETCONF_DATA_QNAME(org.opendaylight.netconf.util.NetconfUtil.NETCONF_DATA_QNAME) NetconfDocumentedException(org.opendaylight.netconf.api.NetconfDocumentedException) RpcResult(org.opendaylight.yangtools.yang.common.RpcResult) ImmutableNormalizedMetadata(org.opendaylight.yangtools.rfc7952.data.util.ImmutableNormalizedMetadata) Deque(java.util.Deque) DataSchemaContextNode(org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode) ModifyAction(org.opendaylight.netconf.api.ModifyAction) ErrorType(org.opendaylight.yangtools.yang.common.ErrorType) ImmutableList(com.google.common.collect.ImmutableList) DocumentedException(org.opendaylight.netconf.api.DocumentedException) SimpleEntry(java.util.AbstractMap.SimpleEntry) Builders(org.opendaylight.yangtools.yang.data.impl.schema.Builders) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) ErrorTag(org.opendaylight.yangtools.yang.common.ErrorTag) AnyxmlNode(org.opendaylight.yangtools.yang.data.api.schema.AnyxmlNode) IOException(java.io.IOException) NodeIdentifierWithPredicates(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates) DataSchemaContextTree(org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree) EffectiveModelContext(org.opendaylight.yangtools.yang.model.api.EffectiveModelContext) QName(org.opendaylight.yangtools.yang.common.QName) DOMSourceAnyxmlNode(org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode) Element(org.w3c.dom.Element) EditContent(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.edit.config.input.EditContent) RpcResultBuilder(org.opendaylight.yangtools.yang.common.RpcResultBuilder) NetconfCapabilityChange(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfCapabilityChange) NormalizedNodeStreamWriter(org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter) NetconfNotification(org.opendaylight.netconf.notifications.NetconfNotification) Preconditions(com.google.common.base.Preconditions) ArrayDeque(java.util.ArrayDeque) DOMResult(javax.xml.transform.dom.DOMResult) NetconfMessageUtil(org.opendaylight.netconf.util.messages.NetconfMessageUtil) RpcError(org.opendaylight.yangtools.yang.common.RpcError) NormalizedNode(org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode) DOMSource(javax.xml.transform.dom.DOMSource) DOMResult(javax.xml.transform.dom.DOMResult) XMLStreamException(javax.xml.stream.XMLStreamException) DataContainerChild(org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild) IOException(java.io.IOException)

Example 35 with Top

use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top in project mdsal by opendaylight.

the class CachingCodecTest method testTopAndListCache.

@Test
public void testTopAndListCache() {
    final BindingNormalizedNodeCachingCodec<Top> cachingCodec = createCachingCodec(Top.class, TopLevelList.class);
    final NormalizedNode first = cachingCodec.serialize(TOP_TWO_LIST_DATA);
    final NormalizedNode second = cachingCodec.serialize(TOP_TWO_LIST_DATA);
    assertEquals(first, second);
    assertSame(first, second);
    final NormalizedNode third = cachingCodec.serialize(TOP_THREE_LIST_DATA);
    verifyListItemSame(first, third);
}
Also used : Top(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top) NormalizedNode(org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)41 Top (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top)27 AbstractDataTreeChangeListenerTest (org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataTreeChangeListenerTest)11 InstanceIdentifier (org.opendaylight.yangtools.yang.binding.InstanceIdentifier)11 DataObject (org.opendaylight.yangtools.yang.binding.DataObject)10 WriteTransaction (org.opendaylight.controller.md.sal.binding.api.WriteTransaction)9 WriteTransaction (org.opendaylight.mdsal.binding.api.WriteTransaction)9 YangInstanceIdentifier (org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier)9 TopLevelList (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.two.level.list.TopLevelList)8 ContainerNode (org.opendaylight.yangtools.yang.data.api.schema.ContainerNode)8 NormalizedNode (org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode)8 ReadWriteTransaction (org.opendaylight.mdsal.binding.api.ReadWriteTransaction)7 TopBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.TopBuilder)7 Top (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.Top)6 TopLevelListKey (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.two.level.list.TopLevelListKey)6 NodeIdentifier (org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier)6 AbstractDataChangeListenerTest (org.opendaylight.controller.md.sal.binding.test.AbstractDataChangeListenerTest)5 TopLevelListKey (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelListKey)5 TopLevelList (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelList)4 AbstractConcurrentDataBrokerTest (org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest)3