/*
* Copyright © 2017 Orange, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.transportpce.stubpce;
import java.util.ArrayList;
import java.util.List;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirection;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirection;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZ;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZKey;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToA;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToABuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToAKey;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.Resource;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.ResourceBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.Link;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.LinkBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.Node;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.NodeBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.response.parameters.sp.response.parameters.PathDescriptionBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/*
* Class for Sending
* PCE requests :
* - path-computation-request
* - cancel-resource-reserve.
* @author Martial Coulibaly ( martial.coulibaly@gfi.com ) on behalf of Orange
*
*/
public class SendingPceRPCs {
/* Logging. */
private static final Logger LOG = LoggerFactory.getLogger(SendingPceRPCs.class);
/* define procedure success (or not ). */
private Boolean success;
/* define type of request
* true
pathcomputation
* false
cancelresourcereserve .*/
private AToZDirection atozdirection;
private ZToADirection ztoadirection;
private PathDescriptionBuilder pathDescription;
public SendingPceRPCs() {
success = true;
atozdirection = null;
ztoadirection = null;
setPathDescription(null);
}
public void cancelResourceReserve() {
LOG.info("Wait for 10s til beginning the PCE cancelResourceReserve request");
try {
Thread.sleep(10000); //sleep for 10s
} catch (InterruptedException e) {
LOG.error(e.toString());
}
LOG.info("cancelResourceReserve ...");
}
public void pathComputation() {
LOG.info("Wait for 10s til beginning the PCE pathComputation request");
try {
Thread.sleep(10000); //sleep for 10s
} catch (InterruptedException e) {
LOG.error(e.toString());
}
LOG.info("PathComputation ...");
buildAToZ();
buildZToA();
setPathDescription(new PathDescriptionBuilder()
.setAToZDirection(atozdirection)
.setZToADirection(ztoadirection));
}
public void buildAToZ() {
Link atoB = new LinkBuilder()
.setLinkId("AtoB")
.build();
Link btoZ = new LinkBuilder()
.setLinkId("BtoZ")
.build();
Node roadmA = new NodeBuilder()
.setNodeId("RoadmA")
.build();
Node roadmB = new NodeBuilder()
.setNodeId("RoadmB")
.build();
Node roadmZ = new NodeBuilder()
.setNodeId("RoadmZ")
.build();
/*A -> Z*/
/*RoadmA*/
AToZKey roadmAKey = new AToZKey("RoadmA");
Resource roadmAResource = new ResourceBuilder()
.setResource(roadmA)
.build();
AToZ atoz = new AToZBuilder()
.setId("RoadmA")
.setKey(roadmAKey)
.setResource(roadmAResource)
.build();
/*Link AtoB*/
AToZKey atoBKey = new AToZKey("AtoB");
Resource atozResource = new ResourceBuilder()
.setResource(atoB)
.build();
AToZ atob = new AToZBuilder()
.setId("AtoB")
.setKey(atoBKey)
.setResource(atozResource)
.build();
/*RoadmB*/
AToZKey roadmBKey = new AToZKey("RoadmB");
Resource roadmBResource = new ResourceBuilder()
.setResource(roadmB)
.build();
AToZ roadmb = new AToZBuilder()
.setId("RoadmB")
.setKey(roadmBKey)
.setResource(roadmBResource)
.build();
/*Link BtoZ*/
AToZKey btoZKey = new AToZKey("BtoZ");
Resource botzResource = new ResourceBuilder()
.setResource(btoZ)
.build();
AToZ btoz = new AToZBuilder()
.setId("BtoZ")
.setKey(btoZKey)
.setResource(botzResource)
.build();
/*RoadmZ*/
AToZKey roadmZKey = new AToZKey("RoadmZ");
Resource roadmZResource = new ResourceBuilder()
.setResource(roadmZ)
.build();
AToZ roadmz = new AToZBuilder()
.setId("RoadmZ")
.setKey(roadmZKey)
.setResource(roadmZResource)
.build();
List atozList = new ArrayList();
atozList.add(atoz);
atozList.add(atob);
atozList.add(roadmb);
atozList.add(btoz);
atozList.add(roadmz);
atozdirection = new AToZDirectionBuilder()
.setRate((long)100)
.setAToZWavelengthNumber((long)200)
.setAToZ(atozList)
.build();
}
public void buildZToA() {
Link btoA = new LinkBuilder()
.setLinkId("BtoA")
.build();
Link ztoB = new LinkBuilder()
.setLinkId("ZtoB")
.build();
Node roadmA = new NodeBuilder()
.setNodeId("RoadmA")
.build();
Node roadmB = new NodeBuilder()
.setNodeId("RoadmB")
.build();
Node roadmZ = new NodeBuilder()
.setNodeId("RoadmZ")
.build();
/*Z -> A*/
/*RoadmZ*/
ZToAKey roadmZKey = new ZToAKey("RoadmZ");
Resource roadmZResource = new ResourceBuilder()
.setResource(roadmZ)
.build();
ZToA ztoa = new ZToABuilder()
.setId("RoadmZ")
.setKey(roadmZKey)
.setResource(roadmZResource)
.build();
/*Link ZtoB*/
ZToAKey ztoBKey = new ZToAKey("ZtoB");
Resource ztoBResource = new ResourceBuilder()
.setResource(ztoB)
.build();
ZToA ztob = new ZToABuilder()
.setId("ZtoB")
.setKey(ztoBKey)
.setResource(ztoBResource)
.build();
/*RoadmB*/
ZToAKey roadmBKey = new ZToAKey("RoadmB");
Resource roadmBResource = new ResourceBuilder()
.setResource(roadmB)
.build();
ZToA roadmb = new ZToABuilder()
.setId("RoadmB")
.setKey(roadmBKey)
.setResource(roadmBResource)
.build();
/*Link BtoA*/
ZToAKey btoAKey = new ZToAKey("BtoA");
Resource btoAResource = new ResourceBuilder()
.setResource(btoA)
.build();
ZToA btoa = new ZToABuilder()
.setId("BtoA")
.setKey(btoAKey)
.setResource(btoAResource)
.build();
/* RoadmA*/
ZToAKey roadmAKey = new ZToAKey("RoadmA");
Resource roadmAResource = new ResourceBuilder()
.setResource(roadmA)
.build();
ZToA roadma = new ZToABuilder()
.setId("RoadmA")
.setKey(roadmAKey)
.setResource(roadmAResource)
.build();
List ztoaList = new ArrayList();
ztoaList.add(ztoa);
ztoaList.add(ztob);
ztoaList.add(roadmb);
ztoaList.add(btoa);
ztoaList.add(roadma);
ztoadirection = new ZToADirectionBuilder()
.setRate((long)100)
.setZToAWavelengthNumber((long)100)
.setZToA(ztoaList)
.build();
}
public PathDescriptionBuilder getPathDescription() {
return pathDescription;
}
public void setPathDescription(PathDescriptionBuilder pathDescription) {
this.pathDescription = pathDescription;
}
public Boolean getSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
}