blob: bae189d6348e9cbb68d94132f3e0248721b46e63 [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.simplefabric.api;
import org.onlab.packet.VlanId;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
import org.onosproject.net.EncapsulationType;
import org.onosproject.net.Host;
import org.onosproject.net.HostId;
import org.onosproject.net.intf.Interface;
import java.util.Set;
/**
* Interface of fabric network.
*/
public interface FabricNetwork {
/**
* Gets DefaultFabricNetwork name.
*
* @return the name of DefaultFabricNetwork
*/
String name();
/**
* Gets DefaultFabricNetwork interfaceNames.
*
* @return the interfaceNames of DefaultFabricNetwork
*/
Set<String> interfaceNames();
/**
* Gets DefaultFabricNetwork encapsulation type.
*
* @return the encapsulation type of DefaultFabricNetwork
*/
EncapsulationType encapsulation();
/**
* Gets DefaultFabricNetwork forward flag.
*
* @return the forward flag of DefaultFabricNetwork
*/
boolean isForward();
/**
* Gets DefaultFabricNetwork broadcast flag.
*
* @return the broadcast flag of DefaultFabricNetwork
*/
boolean isBroadcast();
/**
* Gets DefaultFabricNetwork interfaces.
*
* @return the interfaces of DefaultFabricNetwork
*/
Set<Interface> interfaces();
/**
* Gets DefaultFabricNetwork hosts.
*
* @return the hosts of DefaultFabricNetwork
*/
Set<HostId> hostIds();
/**
* Gets DefaultFabricNetwork isDirty flag.
*
* @return the isDirty flag of DefaultFabricNetwork
*/
boolean isDirty();
/**
* Checks if the interface is of DefaultFabricNetwork.
*
* @param iface the interface to be checked
* @return true if DefaultFabricNetwork contains the interface
*/
boolean contains(Interface iface);
/**
* Checks if the ConnectPoint and Vlan is of DefaultFabricNetwork.
*
* @param port the ConnectPoint to be checked
* @param vlanId the VlanId of the ConnectPoint to be checked
* @return true if DefaultFabricNetwork contains the interface of the ConnnectPoint and VlanId
*/
boolean contains(ConnectPoint port, VlanId vlanId);
/**
* Checks if the DeviceId is of DefaultFabricNetwork.
*
* @param deviceId the DeviceId to be checked
* @return true if DefaultFabricNetwork contains any interface of the DeviceId
*/
boolean contains(DeviceId deviceId);
/**
* Adds interface to DefaultFabricNetwork.
*
* @param iface the Interface to be added
*/
void addInterface(Interface iface);
/**
* Adds host to DefaultFabricNetwork.
*
* @param host the Host to be added
*/
void addHost(Host host);
/**
* Sets DefaultFabricNetwork isDirty flag.
*
* @param newDirty the isDirty flag to be set
*/
void setDirty(boolean newDirty);
/**
* Builder of FabricNetwork.
*/
interface Builder {
/**
* Returns FabricNetwork builder with supplied network name.
*
* @param name network name
* @return FabricNetwork instance builder
*/
Builder name(String name);
/**
* Returns FabricNetwork builder with supplied interface names.
*
* @param interfaceNames interface names
* @return FabricNetwork instance builder
*/
Builder interfaceNames(Set<String> interfaceNames);
/**
* Returns FabricNetwork builder with supplied encapsulation type.
*
* @param encapsulation encapsulation type
* @return FabricNetwork instance builder
*/
Builder encapsulation(EncapsulationType encapsulation);
/**
* Returns FabricNetwork builder with supplied forward flag.
*
* @param forward forward flag
* @return FabricNetwork instance builder
*/
Builder forward(boolean forward);
/**
* Returns FabricNetwork builder with supplied broadcast flag.
*
* @param broadcast broadcast flag
* @return FabricNetwork instance builder
*/
Builder broadcast(boolean broadcast);
/**
* Builds an immutable FabricNetwork instance.
*
* @return FabricNetwork instance
*/
FabricNetwork build();
}
}