blob: 613136027eb3fe9b782546ecb7ed97318a35a48b [file] [log] [blame]
/*
* Copyright 2018-present Open Networking Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.odtn.cli.impl;
import org.apache.karaf.shell.commands.Command;
import org.onlab.util.XmlString;
import org.onosproject.cli.AbstractShellCommand;
import org.onosproject.config.DynamicConfigService;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
import org.onosproject.net.PortNumber;
import org.onosproject.odtn.utils.tapi.TapiCepHandler;
import org.onosproject.odtn.utils.tapi.TapiCepRefHandler;
import org.onosproject.odtn.utils.tapi.TapiConnectionHandler;
import org.onosproject.odtn.utils.tapi.TapiConnectivityContextHandler;
import org.onosproject.odtn.utils.tapi.TapiConnectivityServiceHandler;
import org.onosproject.odtn.utils.tapi.TapiContextHandler;
import org.onosproject.odtn.utils.tapi.TapiNepHandler;
import org.onosproject.odtn.utils.tapi.TapiNodeHandler;
import org.onosproject.odtn.utils.tapi.TapiSepHandler;
import org.onosproject.odtn.utils.tapi.TapiSipHandler;
import org.onosproject.odtn.utils.tapi.TapiTopologyContextHandler;
import org.onosproject.odtn.utils.tapi.TapiTopologyHandler;
import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.tapicontext.DefaultServiceInterfacePoint;
import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.DefaultConnection;
import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.DefaultConnectivityService;
import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivityservice.DefaultEndPoint;
import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.augmentedtapicommoncontext.DefaultConnectivityContext;
import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.augmentedtapicommoncontext.DefaultTopologyContext;
import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.node.DefaultOwnedNodeEdgePoint;
import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topology.DefaultNode;
import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.DefaultTopology;
import org.onosproject.yang.model.Augmentable;
import org.onosproject.yang.model.DataNode;
import org.onosproject.yang.model.ModelConverter;
import org.onosproject.yang.model.ResourceId;
import org.slf4j.Logger;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.regex.Pattern;
import static org.onosproject.odtn.utils.YangToolUtil.*;
import static org.slf4j.LoggerFactory.getLogger;
@Command(scope = "onos", name = "odtn-tapi-handlers-test")
public class OdtnTapiHandlersTestCommand extends AbstractShellCommand {
private static final Logger log = getLogger(OdtnDcsModelCheckCommand.class);
private DynamicConfigService dcs;
private ModelConverter modelConverter;
private TapiContextHandler contextHandler;
@Override
public void execute() {
dcs = get(DynamicConfigService.class);
modelConverter = get(ModelConverter.class);
setupTapiContext();
DataNode data = contextHandler.getDataNode();
ResourceId empty = ResourceId.builder().build();
CharSequence strNode = toCharSequence(toXmlCompositeStream(toCompositeData(toResourceData(empty, data))));
StringBuilder exp = loadXml("/test-tapi-context.xml");
if (XmlString.prettifyXml(strNode).toString().contentEquals(exp)) {
log.info("result: ok");
} else {
log.info("result: failed");
}
}
private void printlog(String format, Object... objs) {
print(format.replaceAll(Pattern.quote("{}"), "%s"), objs);
log.info(format, objs);
}
private static StringBuilder loadXml(final String fileName) {
InputStream inputStream = OdtnTapiHandlersTestCommand.class.getResourceAsStream(fileName);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder result = new StringBuilder();
try {
String line;
while ((line = reader.readLine()) != null) {
result.append(line).append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
private void setupTapiContext() {
DeviceId did1 = DeviceId.deviceId("netconf:127.0.0.1:11001");
DeviceId did2 = DeviceId.deviceId("netconf:127.0.0.1:11002");
ConnectPoint cp11 = new ConnectPoint(did1, PortNumber.portNumber(1, "TRANSCEIVER"));
ConnectPoint cp12 = new ConnectPoint(did1, PortNumber.portNumber(2, "TRANSCEIVER"));
ConnectPoint cp21 = new ConnectPoint(did2, PortNumber.portNumber(1, "TRANSCEIVER"));
ConnectPoint cp22 = new ConnectPoint(did2, PortNumber.portNumber(2, "TRANSCEIVER"));
// context
contextHandler = TapiContextHandler.create();
DefaultContext context = contextHandler.getModelObject();
// context augmentation
Augmentable augmentableContext = context;
// context augmentation with topologyContext
org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context
.DefaultAugmentedTapiCommonContext augmentedTopologyContext
= new org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology
.context.DefaultAugmentedTapiCommonContext();
augmentableContext.addAugmentation(augmentedTopologyContext);
// context augmentation with connectivityServiceContext
org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context
.DefaultAugmentedTapiCommonContext augmentedConnectivityContext
= new org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity
.context.DefaultAugmentedTapiCommonContext();
augmentableContext.addAugmentation(augmentedConnectivityContext);
// topology context
DefaultTopologyContext topologyContext = TapiTopologyContextHandler.create().getModelObject();
augmentedTopologyContext.topologyContext(topologyContext);
// topology
TapiTopologyHandler topologyHandler = TapiTopologyHandler.create();
topologyHandler.setId(Uuid.of("00000000-0000-0000-0000-000000000001"));
DefaultTopology topology = topologyHandler.getModelObject();
topologyContext.addToTopology(topology);
// nodes
TapiNodeHandler nodeHandler1 = TapiNodeHandler.create();
nodeHandler1.setId(Uuid.of("00000000-0000-0000-0001-000000000001"));
DefaultNode node1 = nodeHandler1.setTopologyUuid(topology.uuid())
.setDeviceId(did1)
.getModelObject();
topology.addToNode(node1);
TapiNodeHandler nodeHandler2 = TapiNodeHandler.create();
nodeHandler2.setId(Uuid.of("00000000-0000-0000-0001-000000000002"));
DefaultNode node2 = nodeHandler2.setTopologyUuid(topology.uuid())
.setDeviceId(did2)
.getModelObject();
topology.addToNode(node2);
// sips
TapiSipHandler sipHandler1 = TapiSipHandler.create();
sipHandler1.setId(Uuid.of("00000000-0000-0000-0002-000000000001"));
DefaultServiceInterfacePoint sip1 = sipHandler1.setConnectPoint(cp11)
.getModelObject();
context.addToServiceInterfacePoint(sip1);
TapiSipHandler sipHandler2 = TapiSipHandler.create();
sipHandler2.setId(Uuid.of("00000000-0000-0000-0002-000000000002"));
DefaultServiceInterfacePoint sip2 = sipHandler2.setConnectPoint(cp21)
.getModelObject();
context.addToServiceInterfacePoint(sip2);
// neps
TapiNepHandler nepHandler11 = TapiNepHandler.create();
nepHandler11.setId(Uuid.of("00000000-0000-0000-0003-000000000011"));
DefaultOwnedNodeEdgePoint nep11 = nepHandler11
.setTopologyUuid(topology.uuid())
.setNodeUuid(node1.uuid())
.setConnectPoint(cp11)
.addSip(sip1.uuid())
.getModelObject();
nodeHandler1.addNep(nep11);
TapiNepHandler nepHandler12 = TapiNepHandler.create();
nepHandler12.setId(Uuid.of("00000000-0000-0000-0003-000000000012"));
DefaultOwnedNodeEdgePoint nep12 = nepHandler12
.setTopologyUuid(topology.uuid())
.setNodeUuid(node1.uuid())
.setConnectPoint(cp12)
.getModelObject();
nodeHandler1.addNep(nep12);
TapiNepHandler nepHandler21 = TapiNepHandler.create();
nepHandler21.setId(Uuid.of("00000000-0000-0000-0003-000000000021"));
DefaultOwnedNodeEdgePoint nep21 = nepHandler21
.setTopologyUuid(topology.uuid())
.setNodeUuid(node2.uuid())
.setConnectPoint(cp21)
.addSip(sip2.uuid())
.getModelObject();
nodeHandler2.addNep(nep21);
TapiNepHandler nepHandler22 = TapiNepHandler.create();
nepHandler22.setId(Uuid.of("00000000-0000-0000-0003-000000000022"));
DefaultOwnedNodeEdgePoint nep22 = nepHandler22
.setTopologyUuid(topology.uuid())
.setNodeUuid(node2.uuid())
.setConnectPoint(cp22)
.getModelObject();
nodeHandler2.addNep(nep22);
// connectivity context
DefaultConnectivityContext connectivityContext = TapiConnectivityContextHandler.create().getModelObject();
augmentedConnectivityContext.connectivityContext(connectivityContext);
// connectivityService
TapiConnectivityServiceHandler connectivityServiceHandler = TapiConnectivityServiceHandler.create();
connectivityServiceHandler.setId(Uuid.of("00000000-0000-0000-0004-000000000001"));
DefaultConnectivityService connectivityService = connectivityServiceHandler.getModelObject();
connectivityContext.addToConnectivityService(connectivityService);
// connection
TapiConnectionHandler connectionHandler = TapiConnectionHandler.create();
connectionHandler.setId(Uuid.of("00000000-0000-0000-0005-000000000001"));
DefaultConnection connection1 = connectionHandler.getModelObject();
connectivityServiceHandler.addConnection(connection1.uuid());
connectivityContext.addToConnection(connection1);
// seps
TapiSepHandler sepHandler1 = TapiSepHandler.create();
sepHandler1.setId(Uuid.of("00000000-0000-0000-0006-000000000001"));
DefaultEndPoint sep1 = sepHandler1.getModelObject();
connectivityServiceHandler.addSep(sep1);
TapiSepHandler sepHandler2 = TapiSepHandler.create();
sepHandler2.setId(Uuid.of("00000000-0000-0000-0006-000000000002"));
DefaultEndPoint sep2 = sepHandler2.getModelObject();
connectivityServiceHandler.addSep(sep2);
// ceps
TapiCepHandler cepHandler11 = TapiCepHandler.create();
cepHandler11.setId(Uuid.of("00000000-0000-0000-0007-000000000011"));
org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity
.ceplist.DefaultConnectionEndPoint
cep11 = cepHandler11
.setTopologyUuid(topology.uuid())
.setNodeUuid(node1.uuid())
.setNepUuid(nep11.uuid())
.setParentNep()
.getModelObject();
nepHandler11.addCep(cep11);
org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity
.connection.DefaultConnectionEndPoint
cepRef11 = TapiCepRefHandler.create()
.setCep(cep11)
.getModelObject();
connectionHandler.addCep(cepRef11);
TapiCepHandler cepHandler21 = TapiCepHandler.create();
cepHandler21.setId(Uuid.of("00000000-0000-0000-0007-000000000021"));
org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity
.ceplist.DefaultConnectionEndPoint
cep21 = cepHandler21
.setTopologyUuid(topology.uuid())
.setNodeUuid(node1.uuid())
.setNepUuid(nep21.uuid())
.setParentNep()
.getModelObject();
nepHandler21.addCep(cep21);
org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity
.connection.DefaultConnectionEndPoint
cepRef21 = TapiCepRefHandler.create()
.setCep(cep21)
.getModelObject();
connectionHandler.addCep(cepRef21);
}
}