2  * Copyright 2014-2015 Open Networking Laboratory
 
   4  * 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
 
   8  *     http://www.apache.org/licenses/LICENSE-2.0
 
  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.
 
  16 package org.onosproject.net.resource.link;
 
  18 import java.util.Collection;
 
  22 import com.google.common.annotations.Beta;
 
  23 import org.onosproject.net.Link;
 
  24 import org.onosproject.net.intent.Constraint;
 
  25 import org.onosproject.net.intent.IntentId;
 
  26 import org.onosproject.net.resource.ResourceRequest;
 
  29  * Representation of a request for link resource.
 
  31 public interface LinkResourceRequest extends ResourceRequest {
 
  34      * Returns the {@link IntentId} associated with the request.
 
  36      * @return the {@link IntentId} associated with the request
 
  41      * Returns the set of target links.
 
  43      * @return the set of target links
 
  45     Collection<Link> links();
 
  48      * Returns the set of resource requests.
 
  50      * @return the set of resource requests
 
  52     Set<ResourceRequest> resources();
 
  55      * Returns the set of resource request against the specified link.
 
  57      * @param link link whose associated resource request is to be returned
 
  58      * @return set of resource request against the specified link
 
  61     Set<ResourceRequest> resources(Link link);
 
  64      * Builder of link resource request.
 
  68          * Adds lambda request.
 
  71          * @deprecated in Emu Release
 
  74         Builder addLambdaRequest();
 
  77          * Adds lambda request.
 
  79          * @param lambda lambda to be requested
 
  83         Builder addLambdaRequest(LambdaResource lambda);
 
  89          * @deprecated in Emu Release
 
  92         Builder addMplsRequest();
 
  97          * @param label MPLS label to be requested
 
 101         Builder addMplsRequest(MplsLabel label);
 
 104          * Adds MPLS request against the specified links.
 
 106          * @param labels MPLS labels to be requested against links
 
 110         Builder addMplsRequest(Map<Link, MplsLabel> labels);
 
 113          * Adds bandwidth request with bandwidth value.
 
 115          * @param bandwidth bandwidth value to be requested
 
 118         Builder addBandwidthRequest(double bandwidth);
 
 121          * Adds the resources required for a constraint.
 
 123          * @param constraint the constraint
 
 126         Builder addConstraint(Constraint constraint);
 
 129          * Returns link resource request.
 
 131          * @return link resource request
 
 133         LinkResourceRequest build();