blob: c5343711fcb4b9ea6974791ca96c6a16750faea9 [file] [log] [blame]
Thomas Vachuska781d18b2014-10-27 10:31:25 -07001/*
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07002 * Copyright 2014 Open Networking Laboratory
Thomas Vachuska781d18b2014-10-27 10:31:25 -07003 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
Thomas Vachuska781d18b2014-10-27 10:31:25 -07007 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07008 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
Thomas Vachuska781d18b2014-10-27 10:31:25 -070015 */
Thomas Vachuska140d5852014-10-16 12:17:45 -070016package org.onlab.onos.calendar;
17
18import org.onlab.onos.net.ConnectPoint;
19import org.onlab.onos.net.DeviceId;
20import org.onlab.onos.net.intent.IntentService;
21import org.onlab.rest.BaseResource;
22
23import javax.ws.rs.POST;
24import javax.ws.rs.Path;
25import javax.ws.rs.PathParam;
26import javax.ws.rs.core.Response;
27import java.net.URI;
28
29import static org.onlab.onos.net.PortNumber.portNumber;
30
31/**
32 * Web resource for triggering calendared intents.
33 */
34@Path("intent")
35public class BandwidthCalendarResource extends BaseResource {
36
37 @POST
38 @Path("{src}/{dst}/{srcPort}/{dstPort}/{bandwidth}")
39 public Response createIntent(@PathParam("src") String src,
40 @PathParam("dst") String dst,
41 @PathParam("srcPort") String srcPort,
42 @PathParam("dstPort") String dstPort,
43 @PathParam("bandwidth") String bandwidth) {
44 // TODO: implement calls to intent framework
45 IntentService service = get(IntentService.class);
46
47 ConnectPoint srcPoint = new ConnectPoint(deviceId(src), portNumber(srcPort));
48 ConnectPoint dstPoint = new ConnectPoint(deviceId(dst), portNumber(dstPort));
49
50 return Response.ok("Yo! We got src=" + srcPoint + "; dst=" + dstPoint +
51 "; bw=" + bandwidth + "; intent service " + service).build();
52 }
53
54 private DeviceId deviceId(String dpid) {
55 return DeviceId.deviceId(URI.create("of:" + dpid));
56 }
57
58}