From b731e2f1dd0972409b136aebc7b463dd72c9cfad Mon Sep 17 00:00:00 2001 From: CNlucius Date: Tue, 13 Sep 2016 11:40:12 +0800 Subject: ONOSFW-171 O/S-SFC-ONOS scenario documentation Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365 Signed-off-by: CNlucius --- framework/src/onos/core/api/pom.xml | 68 -- .../onosproject/app/ApplicationAdminService.java | 70 -- .../onosproject/app/ApplicationDescription.java | 96 -- .../java/org/onosproject/app/ApplicationEvent.java | 75 -- .../org/onosproject/app/ApplicationException.java | 49 - .../org/onosproject/app/ApplicationListener.java | 24 - .../org/onosproject/app/ApplicationService.java | 77 -- .../java/org/onosproject/app/ApplicationState.java | 33 - .../java/org/onosproject/app/ApplicationStore.java | 108 -- .../onosproject/app/ApplicationStoreDelegate.java | 24 - .../app/DefaultApplicationDescription.java | 135 --- .../java/org/onosproject/app/package-info.java | 20 - .../org/onosproject/cfg/ComponentConfigEvent.java | 74 -- .../onosproject/cfg/ComponentConfigService.java | 85 -- .../org/onosproject/cfg/ComponentConfigStore.java | 45 - .../cfg/ComponentConfigStoreDelegate.java | 24 - .../java/org/onosproject/cfg/ConfigProperty.java | 279 ----- .../java/org/onosproject/cfg/package-info.java | 24 - .../onosproject/cluster/ClusterAdminService.java | 53 - .../java/org/onosproject/cluster/ClusterEvent.java | 72 -- .../onosproject/cluster/ClusterEventListener.java | 24 - .../org/onosproject/cluster/ClusterMetadata.java | 185 --- .../onosproject/cluster/ClusterMetadataEvent.java | 56 - .../cluster/ClusterMetadataEventListener.java | 24 - .../cluster/ClusterMetadataService.java | 40 - .../onosproject/cluster/ClusterMetadataStore.java | 77 -- .../cluster/ClusterMetadataStoreDelegate.java | 24 - .../org/onosproject/cluster/ClusterService.java | 68 -- .../java/org/onosproject/cluster/ClusterStore.java | 84 -- .../onosproject/cluster/ClusterStoreDelegate.java | 24 - .../org/onosproject/cluster/ControllerNode.java | 61 - .../cluster/ControllerNodeToNodeId.java | 45 - .../onosproject/cluster/DefaultControllerNode.java | 104 -- .../java/org/onosproject/cluster/Leadership.java | 164 --- .../org/onosproject/cluster/LeadershipEvent.java | 107 -- .../cluster/LeadershipEventListener.java | 24 - .../org/onosproject/cluster/LeadershipService.java | 124 -- .../main/java/org/onosproject/cluster/NodeId.java | 63 - .../java/org/onosproject/cluster/Partition.java | 91 -- .../java/org/onosproject/cluster/RoleInfo.java | 80 -- .../java/org/onosproject/cluster/package-info.java | 20 - .../java/org/onosproject/codec/CodecContext.java | 50 - .../java/org/onosproject/codec/CodecService.java | 57 - .../main/java/org/onosproject/codec/JsonCodec.java | 115 -- .../java/org/onosproject/codec/package-info.java | 20 - .../java/org/onosproject/core/Application.java | 94 -- .../java/org/onosproject/core/ApplicationId.java | 36 - .../org/onosproject/core/ApplicationIdStore.java | 59 - .../java/org/onosproject/core/ApplicationRole.java | 38 - .../java/org/onosproject/core/CoreService.java | 96 -- .../org/onosproject/core/DefaultApplication.java | 160 --- .../org/onosproject/core/DefaultApplicationId.java | 81 -- .../java/org/onosproject/core/DefaultGroupId.java | 66 -- .../main/java/org/onosproject/core/GroupId.java | 31 - .../main/java/org/onosproject/core/IdBlock.java | 102 -- .../java/org/onosproject/core/IdBlockStore.java | 31 - .../java/org/onosproject/core/IdGenerator.java | 31 - .../java/org/onosproject/core/MetricsHelper.java | 56 - .../onosproject/core/UnavailableIdException.java | 49 - .../main/java/org/onosproject/core/Version.java | 144 --- .../java/org/onosproject/core/package-info.java | 20 - .../java/org/onosproject/event/AbstractEvent.java | 78 -- .../onosproject/event/AbstractListenerManager.java | 58 - .../event/DefaultEventSinkRegistry.java | 62 - .../src/main/java/org/onosproject/event/Event.java | 45 - .../onosproject/event/EventDeliveryService.java | 38 - .../org/onosproject/event/EventDispatcher.java | 33 - .../java/org/onosproject/event/EventFilter.java | 34 - .../java/org/onosproject/event/EventListener.java | 30 - .../main/java/org/onosproject/event/EventSink.java | 36 - .../org/onosproject/event/EventSinkRegistry.java | 60 - .../org/onosproject/event/ListenerRegistry.java | 99 -- .../org/onosproject/event/ListenerService.java | 38 - .../java/org/onosproject/event/package-info.java | 20 - .../mastership/MastershipAdminService.java | 45 - .../onosproject/mastership/MastershipEvent.java | 95 -- .../onosproject/mastership/MastershipListener.java | 24 - .../onosproject/mastership/MastershipService.java | 101 -- .../onosproject/mastership/MastershipStore.java | 125 -- .../mastership/MastershipStoreDelegate.java | 24 - .../org/onosproject/mastership/MastershipTerm.java | 71 -- .../mastership/MastershipTermService.java | 35 - .../org/onosproject/mastership/package-info.java | 20 - .../org/onosproject/net/AbstractAnnotated.java | 48 - .../org/onosproject/net/AbstractDescription.java | 64 - .../java/org/onosproject/net/AbstractElement.java | 45 - .../java/org/onosproject/net/AbstractModel.java | 49 - .../main/java/org/onosproject/net/Annotated.java | 30 - .../java/org/onosproject/net/AnnotationKeys.java | 173 --- .../main/java/org/onosproject/net/Annotations.java | 40 - .../java/org/onosproject/net/AnnotationsUtil.java | 45 - .../java/org/onosproject/net/ChannelSpacing.java | 44 - .../java/org/onosproject/net/ConnectPoint.java | 175 --- .../org/onosproject/net/DefaultAnnotations.java | 254 ---- .../java/org/onosproject/net/DefaultDevice.java | 142 --- .../org/onosproject/net/DefaultDisjointPath.java | 100 -- .../java/org/onosproject/net/DefaultEdgeLink.java | 96 -- .../main/java/org/onosproject/net/DefaultHost.java | 118 -- .../main/java/org/onosproject/net/DefaultLink.java | 131 -- .../net/DefaultOchSignalComparator.java | 37 - .../main/java/org/onosproject/net/DefaultPath.java | 105 -- .../main/java/org/onosproject/net/DefaultPort.java | 127 -- .../main/java/org/onosproject/net/Description.java | 26 - .../src/main/java/org/onosproject/net/Device.java | 83 -- .../main/java/org/onosproject/net/DeviceId.java | 99 -- .../java/org/onosproject/net/DisjointPath.java | 49 - .../main/java/org/onosproject/net/EdgeLink.java | 39 - .../src/main/java/org/onosproject/net/Element.java | 30 - .../main/java/org/onosproject/net/ElementId.java | 22 - .../org/onosproject/net/EncapsulationType.java | 30 - .../main/java/org/onosproject/net/GridType.java | 29 - .../src/main/java/org/onosproject/net/Host.java | 68 -- .../src/main/java/org/onosproject/net/HostId.java | 129 -- .../java/org/onosproject/net/HostLocation.java | 67 -- .../java/org/onosproject/net/IndexedLambda.java | 71 -- .../main/java/org/onosproject/net/IpElementId.java | 76 -- .../src/main/java/org/onosproject/net/Lambda.java | 45 - .../src/main/java/org/onosproject/net/Link.java | 114 -- .../src/main/java/org/onosproject/net/LinkKey.java | 110 -- .../java/org/onosproject/net/MastershipRole.java | 42 - .../org/onosproject/net/MutableAnnotations.java | 40 - .../main/java/org/onosproject/net/NetTools.java | 37 - .../java/org/onosproject/net/NetworkResource.java | 22 - .../java/org/onosproject/net/NshContextHeader.java | 83 -- .../java/org/onosproject/net/NshServiceIndex.java | 83 -- .../java/org/onosproject/net/NshServicePathId.java | 83 -- .../src/main/java/org/onosproject/net/OchPort.java | 117 -- .../main/java/org/onosproject/net/OchSignal.java | 176 --- .../java/org/onosproject/net/OchSignalType.java | 32 - .../main/java/org/onosproject/net/OduCltPort.java | 97 -- .../main/java/org/onosproject/net/OduSignalId.java | 139 --- .../java/org/onosproject/net/OduSignalType.java | 33 - .../src/main/java/org/onosproject/net/OmsPort.java | 131 -- .../src/main/java/org/onosproject/net/Path.java | 42 - .../src/main/java/org/onosproject/net/Port.java | 100 -- .../main/java/org/onosproject/net/PortNumber.java | 271 ----- .../main/java/org/onosproject/net/Provided.java | 32 - .../org/onosproject/net/SparseAnnotations.java | 44 - .../java/org/onosproject/net/TributarySlot.java | 73 -- .../onosproject/net/behaviour/BridgeConfig.java | 107 -- .../net/behaviour/BridgeDescription.java | 46 - .../org/onosproject/net/behaviour/BridgeName.java | 78 -- .../net/behaviour/ControllerConfig.java | 43 - .../onosproject/net/behaviour/ControllerInfo.java | 127 -- .../net/behaviour/DefaultBridgeDescription.java | 87 -- .../net/behaviour/DefaultNextGroup.java | 33 - .../net/behaviour/DefaultTunnelDescription.java | 87 -- .../net/behaviour/ExtensionSelectorResolver.java | 40 - .../net/behaviour/ExtensionTreatmentResolver.java | 40 - .../net/behaviour/IpTunnelEndPoint.java | 80 -- .../org/onosproject/net/behaviour/LambdaQuery.java | 40 - .../org/onosproject/net/behaviour/MplsQuery.java | 35 - .../org/onosproject/net/behaviour/NextGroup.java | 30 - .../org/onosproject/net/behaviour/Pipeliner.java | 57 - .../net/behaviour/PipelinerContext.java | 41 - .../org/onosproject/net/behaviour/PortAdmin.java | 33 - .../org/onosproject/net/behaviour/PortConfig.java | 40 - .../org/onosproject/net/behaviour/QueueConfig.java | 56 - .../org/onosproject/net/behaviour/QueueInfo.java | 56 - .../onosproject/net/behaviour/TunnelConfig.java | 65 - .../net/behaviour/TunnelDescription.java | 86 -- .../onosproject/net/behaviour/TunnelEndPoint.java | 28 - .../org/onosproject/net/behaviour/TunnelName.java | 79 -- .../org/onosproject/net/behaviour/VlanQuery.java | 35 - .../onosproject/net/behaviour/package-info.java | 21 - .../java/org/onosproject/net/config/Config.java | 475 -------- .../net/config/ConfigApplyDelegate.java | 33 - .../org/onosproject/net/config/ConfigFactory.java | 122 -- .../org/onosproject/net/config/ConfigOperator.java | 31 - .../onosproject/net/config/NetworkConfigEvent.java | 92 -- .../net/config/NetworkConfigListener.java | 24 - .../net/config/NetworkConfigRegistry.java | 75 -- .../net/config/NetworkConfigService.java | 148 --- .../onosproject/net/config/NetworkConfigStore.java | 132 --- .../net/config/NetworkConfigStoreDelegate.java | 24 - .../org/onosproject/net/config/SubjectFactory.java | 87 -- .../net/config/basics/AllowedEntityConfig.java | 49 - .../net/config/basics/BasicDeviceConfig.java | 90 -- .../net/config/basics/BasicElementConfig.java | 130 -- .../net/config/basics/BasicFeatureConfig.java | 54 - .../net/config/basics/BasicHostConfig.java | 97 -- .../net/config/basics/BasicLinkConfig.java | 145 --- .../net/config/basics/OpticalPortConfig.java | 190 --- .../net/config/basics/SubjectFactories.java | 109 -- .../net/config/basics/package-info.java | 20 - .../org/onosproject/net/config/package-info.java | 20 - .../net/device/DefaultDeviceDescription.java | 170 --- .../net/device/DefaultPortDescription.java | 142 --- .../net/device/DefaultPortStatistics.java | 346 ------ .../onosproject/net/device/DeviceAdminService.java | 34 - .../onosproject/net/device/DeviceClockService.java | 41 - .../onosproject/net/device/DeviceDescription.java | 80 -- .../org/onosproject/net/device/DeviceEvent.java | 141 --- .../org/onosproject/net/device/DeviceListener.java | 24 - .../org/onosproject/net/device/DeviceProvider.java | 57 - .../net/device/DeviceProviderRegistry.java | 25 - .../net/device/DeviceProviderService.java | 82 -- .../org/onosproject/net/device/DeviceService.java | 132 --- .../org/onosproject/net/device/DeviceStore.java | 170 --- .../net/device/DeviceStoreDelegate.java | 24 - .../onosproject/net/device/OchPortDescription.java | 111 -- .../net/device/OduCltPortDescription.java | 77 -- .../onosproject/net/device/OmsPortDescription.java | 109 -- .../onosproject/net/device/PortDescription.java | 56 - .../org/onosproject/net/device/PortStatistics.java | 100 -- .../org/onosproject/net/device/package-info.java | 20 - .../onosproject/net/driver/AbstractBehaviour.java | 37 - .../net/driver/AbstractHandlerBehaviour.java | 38 - .../java/org/onosproject/net/driver/Behaviour.java | 39 - .../org/onosproject/net/driver/DefaultDriver.java | 214 ---- .../onosproject/net/driver/DefaultDriverData.java | 100 -- .../net/driver/DefaultDriverHandler.java | 67 -- .../net/driver/DefaultDriverProvider.java | 86 -- .../net/driver/DefaultDriverProviderService.java | 23 - .../java/org/onosproject/net/driver/Driver.java | 132 --- .../onosproject/net/driver/DriverAdminService.java | 46 - .../org/onosproject/net/driver/DriverConnect.java | 36 - .../org/onosproject/net/driver/DriverData.java | 50 - .../org/onosproject/net/driver/DriverHandler.java | 57 - .../org/onosproject/net/driver/DriverProvider.java | 34 - .../org/onosproject/net/driver/DriverResolver.java | 34 - .../org/onosproject/net/driver/DriverService.java | 83 -- .../onosproject/net/driver/HandlerBehaviour.java | 38 - .../onosproject/net/driver/XmlDriverLoader.java | 176 --- .../org/onosproject/net/driver/package-info.java | 68 -- .../org/onosproject/net/edge/EdgePortEvent.java | 59 - .../org/onosproject/net/edge/EdgePortListener.java | 24 - .../org/onosproject/net/edge/EdgePortService.java | 75 -- .../org/onosproject/net/edge/package-info.java | 20 - .../onosproject/net/flow/AbstractExtension.java | 74 -- .../org/onosproject/net/flow/BatchOperation.java | 128 -- .../onosproject/net/flow/BatchOperationEntry.java | 90 -- .../onosproject/net/flow/BatchOperationResult.java | 38 - .../net/flow/CompletedBatchOperation.java | 96 -- .../org/onosproject/net/flow/DefaultFlowEntry.java | 137 --- .../org/onosproject/net/flow/DefaultFlowRule.java | 397 ------- .../net/flow/DefaultTableStatisticsEntry.java | 89 -- .../net/flow/DefaultTrafficSelector.java | 393 ------ .../net/flow/DefaultTrafficTreatment.java | 524 -------- .../net/flow/DefaultTypedFlowEntry.java | 122 -- .../java/org/onosproject/net/flow/Extension.java | 71 -- .../java/org/onosproject/net/flow/FlowEntry.java | 102 -- .../main/java/org/onosproject/net/flow/FlowId.java | 58 - .../java/org/onosproject/net/flow/FlowRule.java | 228 ---- .../onosproject/net/flow/FlowRuleBatchEntry.java | 49 - .../onosproject/net/flow/FlowRuleBatchEvent.java | 116 -- .../net/flow/FlowRuleBatchOperation.java | 54 - .../onosproject/net/flow/FlowRuleBatchRequest.java | 59 - .../org/onosproject/net/flow/FlowRuleEvent.java | 78 -- .../onosproject/net/flow/FlowRuleExtPayLoad.java | 82 -- .../org/onosproject/net/flow/FlowRuleListener.java | 24 - .../onosproject/net/flow/FlowRuleOperation.java | 67 -- .../onosproject/net/flow/FlowRuleOperations.java | 181 --- .../net/flow/FlowRuleOperationsContext.java | 28 - .../org/onosproject/net/flow/FlowRuleProvider.java | 58 - .../net/flow/FlowRuleProviderRegistry.java | 25 - .../net/flow/FlowRuleProviderService.java | 71 -- .../org/onosproject/net/flow/FlowRuleService.java | 114 -- .../org/onosproject/net/flow/FlowRuleStore.java | 117 -- .../net/flow/FlowRuleStoreDelegate.java | 24 - .../org/onosproject/net/flow/StoredFlowEntry.java | 50 - .../onosproject/net/flow/TableStatisticsEntry.java | 59 - .../org/onosproject/net/flow/TrafficSelector.java | 447 ------- .../org/onosproject/net/flow/TrafficTreatment.java | 473 -------- .../onosproject/net/flow/TypedStoredFlowEntry.java | 67 -- .../net/flow/criteria/ArpHaCriterion.java | 83 -- .../net/flow/criteria/ArpOpCriterion.java | 78 -- .../net/flow/criteria/ArpPaCriterion.java | 80 -- .../onosproject/net/flow/criteria/Criteria.java | 624 ---------- .../onosproject/net/flow/criteria/Criterion.java | 270 ----- .../net/flow/criteria/EthCriterion.java | 80 -- .../net/flow/criteria/EthTypeCriterion.java | 89 -- .../net/flow/criteria/ExtensionCriterion.java | 92 -- .../net/flow/criteria/ExtensionSelector.java | 32 - .../net/flow/criteria/ExtensionSelectorType.java | 98 -- .../onosproject/net/flow/criteria/IPCriterion.java | 80 -- .../net/flow/criteria/IPDscpCriterion.java | 76 -- .../net/flow/criteria/IPEcnCriterion.java | 76 -- .../net/flow/criteria/IPProtocolCriterion.java | 76 -- .../flow/criteria/IPv6ExthdrFlagsCriterion.java | 78 -- .../net/flow/criteria/IPv6FlowLabelCriterion.java | 76 -- .../criteria/IPv6NDLinkLayerAddressCriterion.java | 81 -- .../criteria/IPv6NDTargetAddressCriterion.java | 77 -- .../net/flow/criteria/IcmpCodeCriterion.java | 75 -- .../net/flow/criteria/IcmpTypeCriterion.java | 75 -- .../net/flow/criteria/Icmpv6CodeCriterion.java | 75 -- .../net/flow/criteria/Icmpv6TypeCriterion.java | 75 -- .../net/flow/criteria/IndexedLambdaCriterion.java | 80 -- .../net/flow/criteria/LambdaCriterion.java | 80 -- .../net/flow/criteria/MetadataCriterion.java | 75 -- .../net/flow/criteria/MplsBosCriterion.java | 63 - .../net/flow/criteria/MplsCriterion.java | 67 -- .../net/flow/criteria/MplsTcCriterion.java | 75 -- .../net/flow/criteria/OchSignalCriterion.java | 81 -- .../net/flow/criteria/OchSignalTypeCriterion.java | 78 -- .../net/flow/criteria/OduSignalIdCriterion.java | 82 -- .../net/flow/criteria/OduSignalTypeCriterion.java | 81 -- .../net/flow/criteria/PbbIsidCriterion.java | 75 -- .../net/flow/criteria/PortCriterion.java | 80 -- .../net/flow/criteria/SctpPortCriterion.java | 80 -- .../net/flow/criteria/TcpFlagsCriterion.java | 75 -- .../net/flow/criteria/TcpPortCriterion.java | 80 -- .../net/flow/criteria/TunnelIdCriterion.java | 74 -- .../net/flow/criteria/UdpPortCriterion.java | 80 -- .../net/flow/criteria/VlanIdCriterion.java | 76 -- .../net/flow/criteria/VlanPcpCriterion.java | 75 -- .../net/flow/criteria/package-info.java | 20 - .../instructions/ExtensionPropertyException.java | 32 - .../net/flow/instructions/ExtensionTreatment.java | 33 - .../flow/instructions/ExtensionTreatmentType.java | 104 -- .../net/flow/instructions/Instruction.java | 110 -- .../net/flow/instructions/Instructions.java | 948 --------------- .../instructions/L0ModificationInstruction.java | 139 --- .../instructions/L1ModificationInstruction.java | 88 -- .../instructions/L2ModificationInstruction.java | 517 -------- .../instructions/L3ModificationInstruction.java | 391 ------ .../instructions/L4ModificationInstruction.java | 114 -- .../net/flow/instructions/package-info.java | 20 - .../org/onosproject/net/flow/package-info.java | 26 - .../flowobjective/DefaultFilteringObjective.java | 255 ---- .../flowobjective/DefaultForwardingObjective.java | 289 ----- .../net/flowobjective/DefaultNextObjective.java | 287 ----- .../net/flowobjective/FilteringObjective.java | 182 --- .../net/flowobjective/FlowObjectiveService.java | 65 - .../net/flowobjective/FlowObjectiveStore.java | 50 - .../flowobjective/FlowObjectiveStoreDelegate.java | 26 - .../net/flowobjective/ForwardingObjective.java | 158 --- .../net/flowobjective/NextObjective.java | 220 ---- .../onosproject/net/flowobjective/Objective.java | 151 --- .../net/flowobjective/ObjectiveContext.java | 47 - .../net/flowobjective/ObjectiveError.java | 60 - .../net/flowobjective/ObjectiveEvent.java | 64 - .../net/flowobjective/package-info.java | 22 - .../org/onosproject/net/group/DefaultGroup.java | 229 ---- .../onosproject/net/group/DefaultGroupBucket.java | 266 ----- .../net/group/DefaultGroupDescription.java | 204 ---- .../org/onosproject/net/group/DefaultGroupKey.java | 72 -- .../main/java/org/onosproject/net/group/Group.java | 99 -- .../org/onosproject/net/group/GroupBucket.java | 80 -- .../org/onosproject/net/group/GroupBuckets.java | 76 -- .../onosproject/net/group/GroupDescription.java | 91 -- .../java/org/onosproject/net/group/GroupEvent.java | 99 -- .../java/org/onosproject/net/group/GroupKey.java | 31 - .../org/onosproject/net/group/GroupListener.java | 24 - .../org/onosproject/net/group/GroupOperation.java | 181 --- .../org/onosproject/net/group/GroupOperations.java | 50 - .../org/onosproject/net/group/GroupProvider.java | 37 - .../net/group/GroupProviderRegistry.java | 25 - .../net/group/GroupProviderService.java | 47 - .../org/onosproject/net/group/GroupService.java | 139 --- .../java/org/onosproject/net/group/GroupStore.java | 175 --- .../onosproject/net/group/GroupStoreDelegate.java | 24 - .../net/group/StoredGroupBucketEntry.java | 37 - .../onosproject/net/group/StoredGroupEntry.java | 75 -- .../org/onosproject/net/group/package-info.java | 20 - .../net/host/DefaultHostDescription.java | 143 --- .../org/onosproject/net/host/HostAdminService.java | 32 - .../org/onosproject/net/host/HostDescription.java | 58 - .../java/org/onosproject/net/host/HostEvent.java | 113 -- .../org/onosproject/net/host/HostListener.java | 24 - .../org/onosproject/net/host/HostProvider.java | 37 - .../onosproject/net/host/HostProviderRegistry.java | 25 - .../onosproject/net/host/HostProviderService.java | 65 - .../java/org/onosproject/net/host/HostService.java | 126 -- .../java/org/onosproject/net/host/HostStore.java | 128 -- .../onosproject/net/host/HostStoreDelegate.java | 24 - .../onosproject/net/host/InterfaceIpAddress.java | 192 --- .../org/onosproject/net/host/package-info.java | 20 - .../onosproject/net/intent/ConnectivityIntent.java | 187 --- .../org/onosproject/net/intent/Constraint.java | 53 - .../org/onosproject/net/intent/FlowRuleIntent.java | 97 -- .../onosproject/net/intent/HostToHostIntent.java | 211 ---- .../java/org/onosproject/net/intent/Intent.java | 218 ---- .../net/intent/IntentBatchDelegate.java | 35 - .../onosproject/net/intent/IntentClockService.java | 34 - .../org/onosproject/net/intent/IntentCompiler.java | 44 - .../org/onosproject/net/intent/IntentData.java | 327 ----- .../org/onosproject/net/intent/IntentEvent.java | 146 --- .../onosproject/net/intent/IntentException.java | 53 - .../net/intent/IntentExtensionService.java | 51 - .../java/org/onosproject/net/intent/IntentId.java | 87 -- .../org/onosproject/net/intent/IntentListener.java | 26 - .../onosproject/net/intent/IntentOperation.java | 124 -- .../org/onosproject/net/intent/IntentService.java | 123 -- .../org/onosproject/net/intent/IntentState.java | 117 -- .../org/onosproject/net/intent/IntentStore.java | 143 --- .../net/intent/IntentStoreDelegate.java | 42 - .../org/onosproject/net/intent/IntentUtils.java | 84 -- .../main/java/org/onosproject/net/intent/Key.java | 176 --- .../net/intent/LinkCollectionIntent.java | 241 ---- .../org/onosproject/net/intent/MplsIntent.java | 276 ----- .../org/onosproject/net/intent/MplsPathIntent.java | 184 --- .../net/intent/MultiPointToSinglePointIntent.java | 223 ---- .../net/intent/OpticalCircuitIntent.java | 219 ---- .../net/intent/OpticalConnectivityIntent.java | 223 ---- .../onosproject/net/intent/OpticalPathIntent.java | 234 ---- .../org/onosproject/net/intent/PartitionEvent.java | 35 - .../net/intent/PartitionEventListener.java | 26 - .../onosproject/net/intent/PartitionService.java | 48 - .../org/onosproject/net/intent/PathIntent.java | 201 ---- .../onosproject/net/intent/PointToPointIntent.java | 215 ---- .../net/intent/SinglePointToMultiPointIntent.java | 219 ---- .../onosproject/net/intent/TwoWayP2PIntent.java | 195 --- .../intent/constraint/AnnotationConstraint.java | 113 -- .../constraint/AsymmetricPathConstraint.java | 64 - .../net/intent/constraint/BandwidthConstraint.java | 109 -- .../net/intent/constraint/BooleanConstraint.java | 64 - .../intent/constraint/EncapsulationConstraint.java | 83 -- .../net/intent/constraint/LambdaConstraint.java | 91 -- .../net/intent/constraint/LatencyConstraint.java | 93 -- .../net/intent/constraint/LinkTypeConstraint.java | 108 -- .../net/intent/constraint/ObstacleConstraint.java | 92 -- .../constraint/PartialFailureConstraint.java | 49 - .../net/intent/constraint/WaypointConstraint.java | 117 -- .../net/intent/constraint/package-info.java | 20 - .../org/onosproject/net/intent/package-info.java | 83 -- .../net/link/DefaultLinkDescription.java | 93 -- .../org/onosproject/net/link/LinkAdminService.java | 50 - .../org/onosproject/net/link/LinkDescription.java | 49 - .../java/org/onosproject/net/link/LinkEvent.java | 68 -- .../org/onosproject/net/link/LinkListener.java | 24 - .../org/onosproject/net/link/LinkProvider.java | 25 - .../onosproject/net/link/LinkProviderRegistry.java | 25 - .../onosproject/net/link/LinkProviderService.java | 57 - .../java/org/onosproject/net/link/LinkService.java | 116 -- .../java/org/onosproject/net/link/LinkStore.java | 117 -- .../onosproject/net/link/LinkStoreDelegate.java | 24 - .../org/onosproject/net/link/package-info.java | 20 - .../java/org/onosproject/net/mcast/McastEvent.java | 118 -- .../org/onosproject/net/mcast/McastListener.java | 26 - .../java/org/onosproject/net/mcast/McastRoute.java | 117 -- .../net/mcast/MulticastRouteService.java | 86 -- .../org/onosproject/net/mcast/package-info.java | 20 - .../main/java/org/onosproject/net/meter/Band.java | 133 --- .../java/org/onosproject/net/meter/BandEntry.java | 37 - .../org/onosproject/net/meter/DefaultBand.java | 136 --- .../org/onosproject/net/meter/DefaultMeter.java | 233 ---- .../onosproject/net/meter/DefaultMeterRequest.java | 174 --- .../main/java/org/onosproject/net/meter/Meter.java | 179 --- .../org/onosproject/net/meter/MeterContext.java | 38 - .../java/org/onosproject/net/meter/MeterEntry.java | 57 - .../java/org/onosproject/net/meter/MeterEvent.java | 62 - .../org/onosproject/net/meter/MeterFailReason.java | 89 -- .../java/org/onosproject/net/meter/MeterId.java | 78 -- .../java/org/onosproject/net/meter/MeterKey.java | 72 -- .../org/onosproject/net/meter/MeterListener.java | 24 - .../org/onosproject/net/meter/MeterOperation.java | 88 -- .../org/onosproject/net/meter/MeterOperations.java | 50 - .../org/onosproject/net/meter/MeterProvider.java | 48 - .../net/meter/MeterProviderRegistry.java | 27 - .../net/meter/MeterProviderService.java | 49 - .../org/onosproject/net/meter/MeterRequest.java | 147 --- .../org/onosproject/net/meter/MeterService.java | 63 - .../java/org/onosproject/net/meter/MeterState.java | 43 - .../java/org/onosproject/net/meter/MeterStore.java | 90 -- .../onosproject/net/meter/MeterStoreDelegate.java | 24 - .../onosproject/net/meter/MeterStoreResult.java | 66 -- .../org/onosproject/net/meter/package-info.java | 20 - .../net/newresource/ResourceAdminService.java | 67 -- .../net/newresource/ResourceAllocation.java | 94 -- .../net/newresource/ResourceConsumer.java | 25 - .../onosproject/net/newresource/ResourceEvent.java | 54 - .../net/newresource/ResourceListener.java | 26 - .../onosproject/net/newresource/ResourcePath.java | 309 ----- .../net/newresource/ResourceService.java | 173 --- .../onosproject/net/newresource/ResourceStore.java | 114 -- .../net/newresource/ResourceStoreDelegate.java | 24 - .../onosproject/net/newresource/package-info.java | 21 - .../java/org/onosproject/net/package-info.java | 20 - .../net/packet/DefaultInboundPacket.java | 91 -- .../net/packet/DefaultOutboundPacket.java | 89 -- .../net/packet/DefaultPacketContext.java | 95 -- .../net/packet/DefaultPacketRequest.java | 84 -- .../org/onosproject/net/packet/InboundPacket.java | 50 - .../org/onosproject/net/packet/OutboundPacket.java | 51 - .../org/onosproject/net/packet/PacketContext.java | 73 -- .../org/onosproject/net/packet/PacketEvent.java | 56 - .../org/onosproject/net/packet/PacketPriority.java | 53 - .../onosproject/net/packet/PacketProcessor.java | 83 -- .../net/packet/PacketProcessorEntry.java | 58 - .../org/onosproject/net/packet/PacketProvider.java | 32 - .../net/packet/PacketProviderRegistry.java | 25 - .../net/packet/PacketProviderService.java | 33 - .../org/onosproject/net/packet/PacketRequest.java | 47 - .../org/onosproject/net/packet/PacketService.java | 97 -- .../org/onosproject/net/packet/PacketStore.java | 57 - .../net/packet/PacketStoreDelegate.java | 40 - .../org/onosproject/net/packet/package-info.java | 21 - .../provider/AbstractListenerProviderRegistry.java | 66 -- .../onosproject/net/provider/AbstractProvider.java | 39 - .../net/provider/AbstractProviderRegistry.java | 111 -- .../net/provider/AbstractProviderService.java | 61 - .../org/onosproject/net/provider/Provider.java | 30 - .../org/onosproject/net/provider/ProviderId.java | 135 --- .../onosproject/net/provider/ProviderRegistry.java | 57 - .../onosproject/net/provider/ProviderService.java | 33 - .../org/onosproject/net/provider/package-info.java | 20 - .../onosproject/net/proxyarp/ProxyArpService.java | 64 - .../onosproject/net/proxyarp/ProxyArpStore.java | 45 - .../net/proxyarp/ProxyArpStoreDelegate.java | 35 - .../org/onosproject/net/proxyarp/package-info.java | 20 - .../net/resource/ResourceAllocation.java | 31 - .../net/resource/ResourceAllocationException.java | 36 - .../net/resource/ResourceException.java | 51 - .../org/onosproject/net/resource/ResourceId.java | 25 - .../onosproject/net/resource/ResourceRequest.java | 32 - .../org/onosproject/net/resource/ResourceType.java | 39 - .../net/resource/device/IntentSetMultimap.java | 49 - .../net/resource/device/package-info.java | 20 - .../net/resource/link/BandwidthResource.java | 86 -- .../resource/link/BandwidthResourceAllocation.java | 80 -- .../resource/link/BandwidthResourceRequest.java | 80 -- .../link/DefaultLinkResourceAllocations.java | 115 -- .../resource/link/DefaultLinkResourceRequest.java | 237 ---- .../net/resource/link/LambdaResource.java | 96 -- .../resource/link/LambdaResourceAllocation.java | 80 -- .../net/resource/link/LambdaResourceRequest.java | 76 -- .../net/resource/link/LinkResource.java | 25 - .../net/resource/link/LinkResourceAllocations.java | 62 - .../net/resource/link/LinkResourceEvent.java | 51 - .../net/resource/link/LinkResourceListener.java | 27 - .../net/resource/link/LinkResourceRequest.java | 138 --- .../net/resource/link/LinkResourceService.java | 114 -- .../net/resource/link/LinkResourceStore.java | 76 -- .../resource/link/LinkResourceStoreDelegate.java | 27 - .../net/resource/link/LinkResources.java | 69 -- .../onosproject/net/resource/link/MplsLabel.java | 78 -- .../resource/link/MplsLabelResourceAllocation.java | 81 -- .../resource/link/MplsLabelResourceRequest.java | 76 -- .../net/resource/link/package-info.java | 27 - .../org/onosproject/net/resource/package-info.java | 24 - .../org/onosproject/net/statistic/DefaultLoad.java | 111 -- .../net/statistic/FlowStatisticService.java | 106 -- .../net/statistic/FlowStatisticStore.java | 65 - .../java/org/onosproject/net/statistic/Load.java | 51 - .../net/statistic/StatisticService.java | 85 -- .../onosproject/net/statistic/StatisticStore.java | 65 - .../net/statistic/SummaryFlowEntryWithLoad.java | 157 --- .../net/statistic/TypedFlowEntryWithLoad.java | 171 --- .../onosproject/net/statistic/package-info.java | 20 - .../org/onosproject/net/topology/ClusterId.java | 76 -- .../net/topology/DefaultGraphDescription.java | 124 -- .../net/topology/DefaultTopologyCluster.java | 97 -- .../net/topology/DefaultTopologyEdge.java | 85 -- .../net/topology/DefaultTopologyVertex.java | 66 -- .../net/topology/GeoDistanceLinkWeight.java | 72 -- .../onosproject/net/topology/GraphDescription.java | 57 - .../net/topology/HopCountLinkWeight.java | 36 - .../org/onosproject/net/topology/LinkWeight.java | 25 - .../onosproject/net/topology/MetricLinkWeight.java | 36 - .../onosproject/net/topology/PathAdminService.java | 44 - .../org/onosproject/net/topology/PathService.java | 109 -- .../org/onosproject/net/topology/Topology.java | 71 -- .../onosproject/net/topology/TopologyCluster.java | 51 - .../org/onosproject/net/topology/TopologyEdge.java | 33 - .../onosproject/net/topology/TopologyEvent.java | 78 -- .../onosproject/net/topology/TopologyGraph.java | 25 - .../onosproject/net/topology/TopologyListener.java | 24 - .../onosproject/net/topology/TopologyProvider.java | 30 - .../net/topology/TopologyProviderRegistry.java | 25 - .../net/topology/TopologyProviderService.java | 37 - .../onosproject/net/topology/TopologyService.java | 188 --- .../onosproject/net/topology/TopologyStore.java | 199 ---- .../net/topology/TopologyStoreDelegate.java | 24 - .../onosproject/net/topology/TopologyVertex.java | 33 - .../org/onosproject/net/topology/package-info.java | 20 - .../persistence/PersistenceService.java | 40 - .../persistence/PersistentMapBuilder.java | 49 - .../persistence/PersistentSetBuilder.java | 48 - .../org/onosproject/persistence/package-info.java | 20 - .../rest/AbstractApiDocRegistrator.java | 53 - .../rest/AbstractInjectionResource.java | 78 -- .../org/onosproject/rest/AbstractWebResource.java | 98 -- .../java/org/onosproject/rest/ApiDocProvider.java | 98 -- .../java/org/onosproject/rest/ApiDocService.java | 58 - .../java/org/onosproject/rest/package-info.java | 20 - .../java/org/onosproject/security/AppGuard.java | 41 - .../org/onosproject/security/AppPermission.java | 113 -- .../java/org/onosproject/security/Permission.java | 80 -- .../onosproject/security/SecurityAdminService.java | 79 -- .../org/onosproject/security/SecurityUtil.java | 84 -- .../org/onosproject/security/package-info.java | 20 - .../java/org/onosproject/store/AbstractStore.java | 72 -- .../src/main/java/org/onosproject/store/Store.java | 51 - .../java/org/onosproject/store/StoreDelegate.java | 33 - .../main/java/org/onosproject/store/Timestamp.java | 53 - .../messaging/ClusterCommunicationService.java | 166 --- .../store/cluster/messaging/ClusterMessage.java | 160 --- .../cluster/messaging/ClusterMessageHandler.java | 28 - .../store/cluster/messaging/Endpoint.java | 75 -- .../store/cluster/messaging/MessageSubject.java | 68 -- .../store/cluster/messaging/MessagingService.java | 75 -- .../store/cluster/messaging/package-info.java | 20 - .../java/org/onosproject/store/package-info.java | 20 - .../store/service/AsyncAtomicCounter.java | 79 -- .../store/service/AsyncConsistentMap.java | 283 ----- .../onosproject/store/service/AtomicCounter.java | 75 -- .../store/service/AtomicCounterBuilder.java | 75 -- .../org/onosproject/store/service/AtomicValue.java | 69 -- .../store/service/AtomicValueBuilder.java | 78 -- .../store/service/AtomicValueEvent.java | 109 -- .../store/service/AtomicValueEventListener.java | 28 - .../onosproject/store/service/ConsistentMap.java | 291 ----- .../store/service/ConsistentMapBuilder.java | 143 --- .../store/service/ConsistentMapException.java | 48 - .../onosproject/store/service/DatabaseUpdate.java | 220 ---- .../store/service/DistributedQueue.java | 62 - .../store/service/DistributedQueueBuilder.java | 79 -- .../onosproject/store/service/DistributedSet.java | 41 - .../store/service/DistributedSetBuilder.java | 132 --- .../store/service/EventuallyConsistentMap.java | 207 ---- .../service/EventuallyConsistentMapBuilder.java | 187 --- .../service/EventuallyConsistentMapEvent.java | 124 -- .../service/EventuallyConsistentMapListener.java | 29 - .../store/service/LogicalClockService.java | 35 - .../org/onosproject/store/service/MapEvent.java | 135 --- .../store/service/MapEventListener.java | 28 - .../org/onosproject/store/service/MapInfo.java | 47 - .../store/service/MultiValuedTimestamp.java | 111 -- .../store/service/MutexExecutionService.java | 34 - .../org/onosproject/store/service/MutexTask.java | 39 - .../onosproject/store/service/PartitionInfo.java | 81 -- .../org/onosproject/store/service/Serializer.java | 81 -- .../org/onosproject/store/service/SetEvent.java | 113 -- .../store/service/SetEventListener.java | 28 - .../store/service/StorageAdminService.java | 75 -- .../store/service/StorageException.java | 48 - .../onosproject/store/service/StorageService.java | 83 -- .../org/onosproject/store/service/Transaction.java | 102 -- .../store/service/TransactionContext.java | 78 -- .../store/service/TransactionContextBuilder.java | 47 - .../store/service/TransactionException.java | 54 - .../store/service/TransactionalMap.java | 93 -- .../org/onosproject/store/service/Versioned.java | 138 --- .../store/service/WallClockTimestamp.java | 85 -- .../onosproject/store/service/package-info.java | 21 - .../main/java/org/onosproject/ui/JsonUtils.java | 143 --- .../java/org/onosproject/ui/RequestHandler.java | 142 --- .../main/java/org/onosproject/ui/UiConnection.java | 42 - .../main/java/org/onosproject/ui/UiExtension.java | 200 ---- .../org/onosproject/ui/UiExtensionService.java | 53 - .../java/org/onosproject/ui/UiMessageHandler.java | 207 ---- .../onosproject/ui/UiMessageHandlerFactory.java | 33 - .../java/org/onosproject/ui/UiTopoOverlay.java | 125 -- .../org/onosproject/ui/UiTopoOverlayFactory.java | 33 - .../src/main/java/org/onosproject/ui/UiView.java | 165 --- .../main/java/org/onosproject/ui/UiViewHidden.java | 41 - .../main/java/org/onosproject/ui/package-info.java | 20 - .../org/onosproject/ui/table/CellComparator.java | 45 - .../org/onosproject/ui/table/CellFormatter.java | 33 - .../java/org/onosproject/ui/table/TableModel.java | 304 ----- .../onosproject/ui/table/TableRequestHandler.java | 111 -- .../java/org/onosproject/ui/table/TableUtils.java | 58 - .../ui/table/cell/AbstractCellComparator.java | 60 - .../ui/table/cell/AbstractCellFormatter.java | 41 - .../onosproject/ui/table/cell/AppIdFormatter.java | 41 - .../ui/table/cell/ConnectPointFormatter.java | 40 - .../ui/table/cell/DefaultCellComparator.java | 51 - .../ui/table/cell/DefaultCellFormatter.java | 38 - .../onosproject/ui/table/cell/EnumFormatter.java | 40 - .../onosproject/ui/table/cell/HexFormatter.java | 38 - .../ui/table/cell/HostLocationFormatter.java | 40 - .../onosproject/ui/table/cell/NumberFormatter.java | 50 - .../onosproject/ui/table/cell/TimeFormatter.java | 71 -- .../onosproject/ui/table/cell/package-info.java | 20 - .../org/onosproject/ui/table/package-info.java | 20 - .../org/onosproject/ui/topo/AbstractHighlight.java | 74 -- .../java/org/onosproject/ui/topo/BaseLink.java | 42 - .../java/org/onosproject/ui/topo/BaseLinkMap.java | 30 - .../main/java/org/onosproject/ui/topo/BiLink.java | 103 -- .../java/org/onosproject/ui/topo/BiLinkMap.java | 89 -- .../java/org/onosproject/ui/topo/ButtonId.java | 69 -- .../org/onosproject/ui/topo/DeviceHighlight.java | 32 - .../java/org/onosproject/ui/topo/Highlights.java | 189 --- .../org/onosproject/ui/topo/HostHighlight.java | 32 - .../org/onosproject/ui/topo/LinkHighlight.java | 146 --- .../src/main/java/org/onosproject/ui/topo/Mod.java | 65 - .../java/org/onosproject/ui/topo/NodeBadge.java | 220 ---- .../org/onosproject/ui/topo/NodeHighlight.java | 53 - .../org/onosproject/ui/topo/NodeSelection.java | 251 ---- .../org/onosproject/ui/topo/PropertyPanel.java | 370 ------ .../org/onosproject/ui/topo/TopoConstants.java | 131 -- .../org/onosproject/ui/topo/TopoElementType.java | 24 - .../java/org/onosproject/ui/topo/TopoJson.java | 182 --- .../java/org/onosproject/ui/topo/TopoUtils.java | 158 --- .../java/org/onosproject/ui/topo/package-info.java | 21 - .../onosproject/net/flow/doc-files/flow-design.png | Bin 29150 -> 0 bytes .../net/intent/doc-files/intent-design.png | Bin 32496 -> 0 bytes .../net/intent/doc-files/intent-states.png | Bin 99143 -> 0 bytes .../java/org/onosproject/TestApplicationId.java | 48 - .../src/test/java/org/onosproject/VersionTest.java | 83 -- .../app/ApplicationAdminServiceAdapter.java | 78 -- .../org/onosproject/app/ApplicationEventTest.java | 55 - .../onosproject/app/ApplicationExceptionTest.java | 36 - .../onosproject/app/ApplicationServiceAdapter.java | 64 - .../onosproject/app/ApplicationStoreAdapter.java | 78 -- .../app/DefaultApplicationDescriptionTest.java | 68 -- .../onosproject/cfg/ComponentConfigAdapter.java | 60 - .../org/onosproject/cfg/ConfigPropertyTest.java | 97 -- .../onosproject/cluster/ClusterServiceAdapter.java | 64 - .../cluster/ControllerNodeToNodeIdTest.java | 59 - .../onosproject/cluster/LeadershipEventTest.java | 76 -- .../cluster/LeadershipServiceAdapter.java | 87 -- .../org/onosproject/cluster/LeadershipTest.java | 75 -- .../java/org/onosproject/cluster/RoleInfoTest.java | 60 - .../java/org/onosproject/codec/JsonCodecTest.java | 99 -- .../core/ApplicationIdStoreAdapter.java | 43 - .../org/onosproject/core/CoreServiceAdapter.java | 59 - .../onosproject/core/DefaultApplicationTest.java | 64 - .../org/onosproject/core/DefaultGroupIdTest.java | 41 - .../core/UnavailableIdExceptionTest.java | 36 - .../org/onosproject/event/AbstractEventTest.java | 79 -- .../java/org/onosproject/event/BrokenListener.java | 28 - .../event/DefaultEventSinkRegistryTest.java | 71 -- .../event/EventDeliveryServiceAdapter.java | 58 - .../onosproject/event/ListenerRegistryTest.java | 74 -- .../test/java/org/onosproject/event/TestEvent.java | 34 - .../java/org/onosproject/event/TestListener.java | 34 - .../onosproject/event/TestListenerRegistry.java | 36 - .../mastership/MastershipServiceAdapter.java | 67 -- .../onosproject/mastership/MastershipTermTest.java | 57 - .../java/org/onosproject/net/ConnectPointTest.java | 110 -- .../onosproject/net/DefaultAnnotationsTest.java | 100 -- .../org/onosproject/net/DefaultDeviceTest.java | 79 -- .../org/onosproject/net/DefaultEdgeLinkTest.java | 90 -- .../java/org/onosproject/net/DefaultHostTest.java | 51 - .../java/org/onosproject/net/DefaultLinkTest.java | 65 - .../java/org/onosproject/net/DefaultPortTest.java | 70 -- .../java/org/onosproject/net/DeviceIdTest.java | 37 - .../test/java/org/onosproject/net/HostIdTest.java | 44 - .../org/onosproject/net/IndexedLambdaTest.java | 35 - .../test/java/org/onosproject/net/LinkKeyTest.java | 129 -- .../java/org/onosproject/net/NetTestTools.java | 138 --- .../java/org/onosproject/net/OchSignalTest.java | 38 - .../java/org/onosproject/net/OduSignalIdTest.java | 39 - .../java/org/onosproject/net/PortNumberTest.java | 80 -- .../java/org/onosproject/net/TestDeviceParams.java | 55 - .../net/behaviour/ControllerInfoTest.java | 112 -- .../org/onosproject/net/config/ConfigTest.java | 141 --- .../net/config/NetworkConfigRegistryAdapter.java | 42 - .../net/config/NetworkConfigServiceAdapter.java | 90 -- .../net/device/DefaultDeviceDescriptionTest.java | 54 - .../net/device/DefaultPortStatisticsTest.java | 126 -- .../net/device/DeviceClockServiceAdapter.java | 36 - .../onosproject/net/device/DeviceEventTest.java | 63 - .../net/device/DeviceServiceAdapter.java | 103 -- .../net/driver/DefaultDriverDataTest.java | 78 -- .../net/driver/DefaultDriverHandlerTest.java | 55 - .../net/driver/DefaultDriverProviderTest.java | 49 - .../onosproject/net/driver/DefaultDriverTest.java | 89 -- .../org/onosproject/net/driver/TestBehaviour.java | 22 - .../onosproject/net/driver/TestBehaviourImpl.java | 22 - .../net/driver/TestBehaviourNoConstructorImpl.java | 26 - .../onosproject/net/driver/TestBehaviourTwo.java | 22 - .../net/driver/TestBehaviourTwoImpl.java | 22 - .../net/driver/XmlDriverLoaderTest.java | 80 -- .../onosproject/net/flow/BatchOperationTest.java | 153 --- .../onosproject/net/flow/DefaultFlowEntryTest.java | 161 --- .../onosproject/net/flow/DefaultFlowRuleTest.java | 161 --- .../net/flow/DefaultTrafficSelectorTest.java | 271 ----- .../net/flow/DefaultTrafficTreatmentTest.java | 124 -- .../java/org/onosproject/net/flow/FlowIdTest.java | 65 - .../net/flow/FlowRuleBatchOperationTest.java | 60 - .../net/flow/FlowRuleBatchRequestTest.java | 63 - .../onosproject/net/flow/FlowRuleEventTest.java | 77 -- .../net/flow/FlowRuleExtPayLoadTest.java | 51 - .../net/flow/FlowRuleServiceAdapter.java | 74 -- .../net/flow/criteria/CriteriaTest.java | 1254 -------------------- .../net/flow/instructions/InstructionsTest.java | 766 ------------ .../net/flowobjective/ObjectiveTest.java | 313 ----- .../net/group/DefaultGroupDescriptionTest.java | 96 -- .../onosproject/net/group/DefaultGroupTest.java | 97 -- .../org/onosproject/net/group/GroupBucketTest.java | 133 --- .../onosproject/net/group/GroupOperationTest.java | 89 -- .../net/host/DefaultHostDecriptionTest.java | 57 - .../org/onosproject/net/host/HostEventTest.java | 72 -- .../onosproject/net/host/HostServiceAdapter.java | 92 -- .../net/host/InterfaceIpAddressTest.java | 246 ---- .../onosproject/net/intent/AbstractIntentTest.java | 35 - .../net/intent/ConnectivityIntentTest.java | 48 - .../onosproject/net/intent/FakeIntentManager.java | 261 ---- .../net/intent/HostToHostIntentTest.java | 178 --- .../org/onosproject/net/intent/IntentDataTest.java | 179 --- .../net/intent/IntentExceptionTest.java | 48 - .../org/onosproject/net/intent/IntentIdTest.java | 95 -- .../net/intent/IntentServiceAdapter.java | 89 -- .../onosproject/net/intent/IntentServiceTest.java | 232 ---- .../org/onosproject/net/intent/IntentTest.java | 52 - .../onosproject/net/intent/IntentTestsMocks.java | 496 -------- .../java/org/onosproject/net/intent/KeyTest.java | 121 -- .../net/intent/LinkCollectionIntentTest.java | 209 ---- .../onosproject/net/intent/MockIdGenerator.java | 32 - .../org/onosproject/net/intent/MplsIntentTest.java | 116 -- .../onosproject/net/intent/MplsPathIntentTest.java | 113 -- .../intent/MultiPointToSinglePointIntentTest.java | 66 -- .../net/intent/OpticalConnectivityIntentTest.java | 35 - .../net/intent/OpticalPathIntentTest.java | 97 -- .../net/intent/PartitionServiceAdapter.java | 43 - .../org/onosproject/net/intent/PathIntentTest.java | 117 -- .../net/intent/PointToPointIntentTest.java | 66 -- .../intent/SinglePointToMultiPointIntentTest.java | 66 -- .../net/intent/TestInstallableIntent.java | 53 - .../org/onosproject/net/intent/TestIntent.java | 47 - .../net/intent/TestSubclassInstallableIntent.java | 37 - .../onosproject/net/intent/TestSubclassIntent.java | 37 - .../java/org/onosproject/net/intent/TestTools.java | 141 --- .../net/intent/TestableIntentService.java | 27 - .../net/intent/TwoWayP2PIntentTest.java | 100 -- .../constraint/AnnotationConstraintTest.java | 97 -- .../intent/constraint/ConstraintObjectsTest.java | 131 -- .../intent/constraint/LatencyConstraintTest.java | 124 -- .../intent/constraint/ObstacleConstraintTest.java | 102 -- .../intent/constraint/WaypointConstraintTest.java | 104 -- .../net/link/DefaultLinkDescriptionTest.java | 45 - .../org/onosproject/net/link/LinkEventTest.java | 56 - .../onosproject/net/link/LinkServiceAdapter.java | 90 -- .../onosproject/net/meter/DefaultMeterTest.java | 99 -- .../onosproject/net/meter/MeterOperationTest.java | 128 -- .../net/newresource/ResourceAllocationTest.java | 44 - .../net/newresource/ResourcePathTest.java | 84 -- .../net/packet/DefaultInboundPacketTest.java | 81 -- .../net/packet/DefaultOutboundPacketTest.java | 82 -- .../net/packet/DefaultPacketContextTest.java | 112 -- .../net/packet/DefaultPacketRequestTest.java | 93 -- .../onosproject/net/packet/PacketEventTest.java | 51 - .../net/packet/PacketProcessorTest.java | 59 - .../net/packet/PacketServiceAdapter.java | 56 - .../net/provider/AbstractProviderRegistryTest.java | 108 -- .../net/provider/AbstractProviderTest.java | 33 - .../onosproject/net/provider/ProviderIdTest.java | 35 - .../org/onosproject/net/provider/TestProvider.java | 32 - .../onosproject/net/resource/MplsObjectsTest.java | 89 -- .../onosproject/net/statistic/DefaultLoadTest.java | 92 -- .../net/statistic/StatisticServiceAdapter.java | 61 - .../onosproject/net/topology/ClusterIdTest.java | 41 - .../net/topology/DefaultGraphDescriptionTest.java | 60 - .../net/topology/DefaultTopologyClusterTest.java | 54 - .../net/topology/DefaultTopologyEdgeTest.java | 70 -- .../net/topology/DefaultTopologyVertexTest.java | 44 - .../net/topology/PathServiceAdapter.java | 62 - .../net/topology/TopologyServiceAdapter.java | 118 -- .../ClusterCommunicationServiceAdapter.java | 88 -- .../cluster/messaging/ClusterMessageTest.java | 82 -- .../store/cluster/messaging/EndpointTest.java | 68 -- .../cluster/messaging/MessageSubjectTest.java | 64 - .../persistence/PersistenceServiceAdapter.java | 36 - .../store/persistence/TestPersistenceService.java | 57 - .../store/service/AtomicValueEventTest.java | 71 -- .../store/service/ConsistentMapAdapter.java | 149 --- .../store/service/DatabaseUpdateTest.java | 126 -- .../service/EventuallyConsistentMapAdapter.java | 111 -- .../service/EventuallyConsistentMapEventTest.java | 82 -- .../onosproject/store/service/MapEventTest.java | 60 - .../store/service/MultiValuedTimestampTest.java | 93 -- .../onosproject/store/service/SetEventTest.java | 75 -- .../store/service/StorageServiceAdapter.java | 56 - .../store/service/TestAtomicCounter.java | 95 -- .../store/service/TestConsistentMap.java | 287 ----- .../store/service/TestEventuallyConsistentMap.java | 239 ---- .../store/service/TestStorageService.java | 55 - .../onosproject/store/service/VersionedTest.java | 83 -- .../store/service/WallClockTimestampTest.java | 66 -- .../onosproject/ui/UiExtensionServiceAdapter.java | 41 - .../java/org/onosproject/ui/UiExtensionTest.java | 140 --- .../org/onosproject/ui/table/TableModelTest.java | 338 ------ .../org/onosproject/ui/table/TableUtilsTest.java | 44 - .../ui/table/cell/AbstractCellComparatorTest.java | 58 - .../ui/table/cell/AbstractCellFormatterTest.java | 51 - .../ui/table/cell/AppIdFormatterTest.java | 49 - .../ui/table/cell/ConnectPointFormatterTest.java | 44 - .../ui/table/cell/DefaultCellComparatorTest.java | 146 --- .../ui/table/cell/DefaultCellFormatterTest.java | 70 -- .../ui/table/cell/EnumFormatterTest.java | 60 - .../ui/table/cell/HexFormatterTest.java | 56 - .../ui/table/cell/HostLocationFormatterTest.java | 45 - .../ui/table/cell/TimeFormatterTest.java | 51 - .../org/onosproject/ui/topo/BiLinkMapTest.java | 75 -- .../java/org/onosproject/ui/topo/BiLinkTest.java | 61 - .../org/onosproject/ui/topo/BiLinkTestBase.java | 97 -- .../java/org/onosproject/ui/topo/ButtonIdTest.java | 55 - .../org/onosproject/ui/topo/HighlightsTest.java | 90 -- .../org/onosproject/ui/topo/LinkHighlightTest.java | 115 -- .../test/java/org/onosproject/ui/topo/ModTest.java | 61 - .../org/onosproject/ui/topo/NodeBadgeTest.java | 112 -- .../org/onosproject/ui/topo/NodeSelectionTest.java | 348 ------ .../org/onosproject/ui/topo/PropertyPanelTest.java | 259 ---- .../java/org/onosproject/ui/topo/TopoJsonTest.java | 117 -- .../src/onos/core/api/src/test/resources/css.html | 2 - .../core/api/src/test/resources/custom/css.html | 1 - .../core/api/src/test/resources/custom/js.html | 1 - .../src/onos/core/api/src/test/resources/js.html | 2 - .../org/onosproject/net/driver/drivers.1.xml | 33 - .../org/onosproject/net/driver/drivers.bad.xml | 22 - .../org/onosproject/net/driver/drivers.noclass.xml | 22 - .../net/driver/drivers.noconstructor.xml | 22 - 895 files changed, 79278 deletions(-) delete mode 100644 framework/src/onos/core/api/pom.xml delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationException.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationState.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/app/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ConfigProperty.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cfg/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterEventListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadata.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataEventListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ControllerNode.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ControllerNodeToNodeId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/DefaultControllerNode.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/Leadership.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipEventListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/NodeId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/Partition.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/RoleInfo.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/cluster/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/codec/CodecContext.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/codec/CodecService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/codec/JsonCodec.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/codec/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/Application.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationIdStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationRole.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/CoreService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultApplication.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultApplicationId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultGroupId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/GroupId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/IdBlock.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/IdBlockStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/IdGenerator.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/MetricsHelper.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/UnavailableIdException.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/Version.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/core/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/AbstractEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/AbstractListenerManager.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/DefaultEventSinkRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/Event.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/EventDeliveryService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/EventDispatcher.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/EventFilter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/EventListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/EventSink.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/EventSinkRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/ListenerRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/ListenerService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/event/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipTerm.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipTermService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/mastership/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractAnnotated.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractElement.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractModel.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Annotated.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/AnnotationKeys.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Annotations.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/AnnotationsUtil.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/ChannelSpacing.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/ConnectPoint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultDevice.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultDisjointPath.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultEdgeLink.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultLink.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultOchSignalComparator.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultPath.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultPort.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Description.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Device.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DeviceId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/DisjointPath.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/EdgeLink.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Element.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/ElementId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/EncapsulationType.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/GridType.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Host.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/HostId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/HostLocation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/IndexedLambda.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/IpElementId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Lambda.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Link.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/LinkKey.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/MastershipRole.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/MutableAnnotations.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/NetTools.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/NetworkResource.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/NshContextHeader.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/NshServiceIndex.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/NshServicePathId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/OchPort.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/OchSignal.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/OchSignalType.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/OduCltPort.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/OduSignalId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/OduSignalType.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/OmsPort.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Path.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Port.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/PortNumber.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/Provided.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/SparseAnnotations.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/TributarySlot.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeName.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ControllerConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ControllerInfo.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultBridgeDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultNextGroup.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultTunnelDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionSelectorResolver.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/IpTunnelEndPoint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/LambdaQuery.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/MplsQuery.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/NextGroup.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/Pipeliner.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PipelinerContext.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PortAdmin.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/QueueConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/QueueInfo.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelConfig.java delete mode 100755 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelEndPoint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelName.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/VlanQuery.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigApplyDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigFactory.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigOperator.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/SubjectFactory.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/AllowedEntityConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicFeatureConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/OpticalPortConfig.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/SubjectFactories.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/config/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceClockService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OchPortDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OduCltPortDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OmsPortDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/PortDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/device/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/AbstractBehaviour.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/AbstractHandlerBehaviour.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/Behaviour.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriver.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverData.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverHandler.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/Driver.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverConnect.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverData.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverHandler.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverResolver.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/HandlerBehaviour.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/XmlDriverLoader.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/AbstractExtension.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperationEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperationResult.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/CompletedBatchOperation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultFlowEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultFlowRule.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTableStatisticsEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTypedFlowEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/Extension.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRule.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchOperation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleExtPayLoad.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperationsContext.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/StoredFlowEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TableStatisticsEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TypedStoredFlowEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpHaCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpOpCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpPaCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/EthCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/EthTypeCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionSelector.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionSelectorType.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPDscpCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPEcnCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPProtocolCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6ExthdrFlagsCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6FlowLabelCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDLinkLayerAddressCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDTargetAddressCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpCodeCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpTypeCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6CodeCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6TypeCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IndexedLambdaCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/LambdaCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MetadataCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsBosCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsTcCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalTypeCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalIdCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalTypeCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/PbbIsidCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/PortCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/SctpPortCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpFlagsCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpPortCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TunnelIdCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/UdpPortCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanIdCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanPcpCriterion.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionPropertyException.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/Instruction.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L4ModificationInstruction.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultNextObjective.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveContext.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveError.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroup.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupBucket.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupKey.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/Group.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupBucket.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupBuckets.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupKey.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupOperation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupOperations.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/StoredGroupBucketEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/StoredGroupEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/group/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/host/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/ConnectivityIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Constraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/FlowRuleIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/HostToHostIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Intent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentBatchDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentClockService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentCompiler.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentData.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentException.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentExtensionService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentOperation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentState.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentUtils.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Key.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/LinkCollectionIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MplsIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MplsPathIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MultiPointToSinglePointIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalCircuitIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalConnectivityIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalPathIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionEventListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PathIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PointToPointIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/SinglePointToMultiPointIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/TwoWayP2PIntent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/AnnotationConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/AsymmetricPathConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/BooleanConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/EncapsulationConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LatencyConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LinkTypeConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/PartialFailureConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/WaypointConstraint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/link/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastRoute.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/MulticastRouteService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/Band.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/BandEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultMeter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultMeterRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/Meter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterContext.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterFailReason.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterKey.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterOperation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterOperations.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterState.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStoreResult.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceAllocation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceConsumer.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultInboundPacket.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultOutboundPacket.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultPacketContext.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultPacketRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/InboundPacket.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/OutboundPacket.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketContext.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketPriority.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProcessor.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProcessorEntry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractListenerProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/Provider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceAllocation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceAllocationException.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceException.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceType.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/device/IntentSetMultimap.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/device/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceAllocation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceAllocations.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResource.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceAllocation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResource.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceAllocations.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResources.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabel.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceAllocation.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceRequest.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/DefaultLoad.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/FlowStatisticService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/FlowStatisticStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/Load.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/StatisticService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/StatisticStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/SummaryFlowEntryWithLoad.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/TypedFlowEntryWithLoad.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/ClusterId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultGraphDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyCluster.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyEdge.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyVertex.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/GeoDistanceLinkWeight.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/GraphDescription.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/HopCountLinkWeight.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/LinkWeight.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/MetricLinkWeight.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/PathAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/PathService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/Topology.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyCluster.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyEdge.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyGraph.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProviderRegistry.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProviderService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyStoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyVertex.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistenceService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistentMapBuilder.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistentSetBuilder.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/persistence/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractApiDocRegistrator.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractInjectionResource.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractWebResource.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/rest/ApiDocProvider.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/rest/ApiDocService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/rest/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/security/AppGuard.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/security/AppPermission.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/security/Permission.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/security/SecurityAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/security/SecurityUtil.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/security/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/AbstractStore.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/Store.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/StoreDelegate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/Timestamp.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterCommunicationService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessage.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessageHandler.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/Endpoint.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessageSubject.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessagingService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMap.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicCounter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicCounterBuilder.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValue.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueBuilder.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueEventListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMapException.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DatabaseUpdate.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedQueue.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedQueueBuilder.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedSet.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedSetBuilder.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMap.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapBuilder.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/LogicalClockService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapEventListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapInfo.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MultiValuedTimestamp.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MutexExecutionService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MutexTask.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/PartitionInfo.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Serializer.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/SetEvent.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/SetEventListener.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageAdminService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageException.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Transaction.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionException.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionalMap.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Versioned.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/WallClockTimestamp.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/store/service/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/JsonUtils.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/RequestHandler.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiConnection.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiExtension.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiExtensionService.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiMessageHandler.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiMessageHandlerFactory.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiTopoOverlay.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiTopoOverlayFactory.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiView.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiViewHidden.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/CellComparator.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/CellFormatter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableModel.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableUtils.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AbstractCellComparator.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AbstractCellFormatter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AppIdFormatter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/ConnectPointFormatter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellComparator.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellFormatter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/EnumFormatter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/HexFormatter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/HostLocationFormatter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/NumberFormatter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/AbstractHighlight.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BaseLink.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BaseLinkMap.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BiLink.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BiLinkMap.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/ButtonId.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/DeviceHighlight.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/Highlights.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/HostHighlight.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/LinkHighlight.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/Mod.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeBadge.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeHighlight.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeSelection.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/PropertyPanel.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoConstants.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoElementType.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoJson.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoUtils.java delete mode 100644 framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/package-info.java delete mode 100644 framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/flow/doc-files/flow-design.png delete mode 100644 framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/intent/doc-files/intent-design.png delete mode 100644 framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/intent/doc-files/intent-states.png delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/TestApplicationId.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/VersionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationAdminServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationExceptionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationStoreAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/cfg/ComponentConfigAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/cfg/ConfigPropertyTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/cluster/ClusterServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/cluster/ControllerNodeToNodeIdTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/cluster/RoleInfoTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/codec/JsonCodecTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/core/ApplicationIdStoreAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/core/CoreServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/core/DefaultGroupIdTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/core/UnavailableIdExceptionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/event/AbstractEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/event/BrokenListener.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/event/DefaultEventSinkRegistryTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/event/EventDeliveryServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/event/ListenerRegistryTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/event/TestEvent.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/event/TestListener.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/event/TestListenerRegistry.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/mastership/MastershipServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/mastership/MastershipTermTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/ConnectPointTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultAnnotationsTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultDeviceTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultEdgeLinkTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultHostTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultLinkTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultPortTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/DeviceIdTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/HostIdTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/IndexedLambdaTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/LinkKeyTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/NetTestTools.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/OchSignalTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/OduSignalIdTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/PortNumberTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/TestDeviceParams.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/behaviour/ControllerInfoTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/config/ConfigTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/config/NetworkConfigRegistryAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/config/NetworkConfigServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceClockServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverDataTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverHandlerTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverProviderTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviour.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourImpl.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourNoConstructorImpl.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourTwo.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourTwoImpl.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/XmlDriverLoaderTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/BatchOperationTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultFlowEntryTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultFlowRuleTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficSelectorTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficTreatmentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowIdTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleBatchOperationTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleBatchRequestTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleExtPayLoadTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/criteria/CriteriaTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/instructions/InstructionsTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/flowobjective/ObjectiveTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupDescriptionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupBucketTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupOperationTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/host/DefaultHostDecriptionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/host/HostEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/host/HostServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/AbstractIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/ConnectivityIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/FakeIntentManager.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentDataTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentExceptionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentIdTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/KeyTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MockIdGenerator.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MplsIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MplsPathIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MultiPointToSinglePointIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/OpticalConnectivityIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/OpticalPathIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PartitionServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PathIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PointToPointIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/SinglePointToMultiPointIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestInstallableIntent.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestIntent.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestSubclassInstallableIntent.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestSubclassIntent.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestTools.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestableIntentService.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TwoWayP2PIntentTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/AnnotationConstraintTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/LatencyConstraintTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/ObstacleConstraintTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/WaypointConstraintTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/link/DefaultLinkDescriptionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/link/LinkEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/link/LinkServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/meter/MeterOperationTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultInboundPacketTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultOutboundPacketTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultPacketContextTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultPacketRequestTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketProcessorTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/AbstractProviderRegistryTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/AbstractProviderTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/ProviderIdTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/TestProvider.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/resource/MplsObjectsTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/statistic/DefaultLoadTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/statistic/StatisticServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/ClusterIdTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultGraphDescriptionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyClusterTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyEdgeTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyVertexTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/PathServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/TopologyServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterCommunicationServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterMessageTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/EndpointTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/MessageSubjectTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/persistence/PersistenceServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/persistence/TestPersistenceService.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/AtomicValueEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/ConsistentMapAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/DatabaseUpdateTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/EventuallyConsistentMapAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/EventuallyConsistentMapEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/MapEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/MultiValuedTimestampTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/SetEventTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/StorageServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestAtomicCounter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestStorageService.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/VersionedTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/store/service/WallClockTimestampTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/UiExtensionServiceAdapter.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/UiExtensionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/TableModelTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/TableUtilsTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AbstractCellComparatorTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AbstractCellFormatterTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AppIdFormatterTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/ConnectPointFormatterTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellFormatterTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/EnumFormatterTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/HexFormatterTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/HostLocationFormatterTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/TimeFormatterTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkMapTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkTestBase.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/ButtonIdTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/HighlightsTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/LinkHighlightTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/ModTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/NodeBadgeTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/NodeSelectionTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/PropertyPanelTest.java delete mode 100644 framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/TopoJsonTest.java delete mode 100644 framework/src/onos/core/api/src/test/resources/css.html delete mode 100644 framework/src/onos/core/api/src/test/resources/custom/css.html delete mode 100644 framework/src/onos/core/api/src/test/resources/custom/js.html delete mode 100644 framework/src/onos/core/api/src/test/resources/js.html delete mode 100644 framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.1.xml delete mode 100644 framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.bad.xml delete mode 100644 framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.noclass.xml delete mode 100644 framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.noconstructor.xml (limited to 'framework/src/onos/core/api') diff --git a/framework/src/onos/core/api/pom.xml b/framework/src/onos/core/api/pom.xml deleted file mode 100644 index 5469c28c..00000000 --- a/framework/src/onos/core/api/pom.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - 4.0.0 - - - org.onosproject - onos-core - 1.4.0-rc1 - ../pom.xml - - - onos-api - bundle - - ONOS network control API - - - - joda-time - joda-time - - - commons-configuration - commons-configuration - - - commons-collections - commons-collections - - - com.google.guava - guava-testlib - test - - - org.easymock - easymock - test - - - org.onosproject - onlab-osgi - - - org.onosproject - onlab-rest - ${project.version} - - - - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationAdminService.java deleted file mode 100644 index 3713e218..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationAdminService.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.core.Application; -import org.onosproject.core.ApplicationId; -import org.onosproject.security.Permission; - -import java.io.InputStream; -import java.util.Set; - -/** - * Service for managing network control applications. - */ -public interface ApplicationAdminService extends ApplicationService { - - /** - * Installs the application contained in the specified application archive - * input stream. This can be either a ZIP stream containing a compressed - * application archive or a plain XML stream containing just the - * {@code app.xml} application descriptor file. - * - * @param appDescStream application descriptor input stream - * @return installed application descriptor - * @throws org.onosproject.app.ApplicationException if unable to read the app archive stream - */ - Application install(InputStream appDescStream); - - /** - * Uninstalls the specified application. - * - * @param appId application identifier - */ - void uninstall(ApplicationId appId); - - /** - * Activates the specified application. - * - * @param appId application identifier - */ - void activate(ApplicationId appId); - - /** - * Deactivates the specified application. - * - * @param appId application identifier - */ - void deactivate(ApplicationId appId); - - /** - * Updates the permissions granted to the applications. - * - * @param appId application identifier - * @param permissions set of granted permissions - */ - void setPermissions(ApplicationId appId, Set permissions); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationDescription.java deleted file mode 100644 index e8ff9ec4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationDescription.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.core.ApplicationRole; -import org.onosproject.core.Version; -import org.onosproject.security.Permission; - -import java.net.URI; -import java.util.List; -import java.util.Optional; -import java.util.Set; - -/** - * Description of a network control/management application. - */ -public interface ApplicationDescription { - - /** - * Returns the application name id. - * - * @return application identifier - */ - String name(); - - /** - * Returns the application version. - * - * @return application version - */ - Version version(); - - /** - * Returns description of the application. - * - * @return application description text - */ - String description(); - - /** - * Returns the name of the application origin, group or company. - * - * @return application origin - */ - String origin(); - - /** - * Returns the role of the application. - * - * @return application role - */ - ApplicationRole role(); - - /** - * Returns the permissions requested by the application. - * - * @return requested permissions - */ - Set permissions(); - - /** - * Returns the feature repository URI. Null value signifies that the - * application did not provide its own features repository. - * - * @return optional feature repo URL - */ - Optional featuresRepo(); - - /** - * Returns the list of features comprising the application. At least one - * feature must be given. - * - * @return application features - */ - List features(); - - /** - * Returns list of required application names. - * - * @return list of application names - */ - List requiredApps(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationEvent.java deleted file mode 100644 index 5bf1323d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationEvent.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.core.Application; -import org.onosproject.event.AbstractEvent; - -/** - * Describes application lifecycle event. - */ -public class ApplicationEvent extends AbstractEvent { - - public enum Type { - /** - * Signifies that an application has been installed. - */ - APP_INSTALLED, - - /** - * Signifies that an application has been activated. - */ - APP_ACTIVATED, - - /** - * Signifies that an application has been deactivated. - */ - APP_DEACTIVATED, - - /** - * Signifies that an application has been uninstalled. - */ - APP_UNINSTALLED, - - /** - * Signifies that application granted permissions have changed. - */ - APP_PERMISSIONS_CHANGED - } - - /** - * Creates an event of a given type and for the specified app and the - * current time. - * - * @param type app event type - * @param app event app subject - */ - public ApplicationEvent(Type type, Application app) { - super(type, app); - } - - /** - * Creates an event of a given type and for the specified app and time. - * - * @param type app event type - * @param app event app subject - * @param time occurrence time - */ - public ApplicationEvent(Type type, Application app, long time) { - super(type, app, time); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationException.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationException.java deleted file mode 100644 index 2888c70b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationException.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -/** - * Represents class of errors related to application management. - */ -public class ApplicationException extends RuntimeException { - - private static final long serialVersionUID = -2287403908433720122L; - - /** - * Constructs an exception with no message and no underlying cause. - */ - public ApplicationException() { - } - - /** - * Constructs an exception with the specified message. - * - * @param message the message describing the specific nature of the error - */ - public ApplicationException(String message) { - super(message); - } - - /** - * Constructs an exception with the specified message and the underlying cause. - * - * @param message the message describing the specific nature of the error - * @param cause the underlying cause of this error - */ - public ApplicationException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationListener.java deleted file mode 100644 index 7a680572..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving application related events. - */ -public interface ApplicationListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationService.java deleted file mode 100644 index 1e543b85..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationService.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.core.Application; -import org.onosproject.core.ApplicationId; -import org.onosproject.event.ListenerService; -import org.onosproject.security.Permission; - -import java.util.Set; - -/** - * Service for inspecting inventory of network control applications. - */ -public interface ApplicationService - extends ListenerService { - - /** - * Returns the set of all installed applications. - * - * @return set of installed apps - */ - Set getApplications(); - - /** - * Returns the registered id of the application with the given name. - * - * @param name application name - * @return registered application id - */ - ApplicationId getId(String name); - - /** - * Returns the application with the supplied application identifier. - * - * @param appId application identifier - * @return application descriptor - */ - Application getApplication(ApplicationId appId); - - /** - * Return the application state. - * - * @param appId application identifier - * @return application state - */ - ApplicationState getState(ApplicationId appId); - - /** - * Returns the permissions currently granted to the applications. - * - * @param appId application identifier - * @return set of granted permissions - */ - Set getPermissions(ApplicationId appId); - - /** - * Registers application pre-deactivation processing hook. - * - * @param appId application identifier - * @param hook pre-deactivation hook - */ - void registerDeactivateHook(ApplicationId appId, Runnable hook); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationState.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationState.java deleted file mode 100644 index c480a0c7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationState.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -/** - * Representation of an application state. - */ -public enum ApplicationState { - - /** - * Indicates that application has been installed, but is not running. - */ - INSTALLED, - - /** - * Indicates that application is active. - */ - ACTIVE - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationStore.java deleted file mode 100644 index 0a1f0727..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationStore.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.core.Application; -import org.onosproject.core.ApplicationId; -import org.onosproject.security.Permission; -import org.onosproject.store.Store; - -import java.io.InputStream; -import java.util.Set; - -/** - * Service for managing network control applications. - */ -public interface ApplicationStore extends Store { - - /** - * Returns the set of all installed applications. - * - * @return set of installed apps - */ - Set getApplications(); - - /** - * Returns the registered id of the application with the given name. - * - * @param name application name - * @return registered application id - */ - ApplicationId getId(String name); - - /** - * Returns the application with the supplied application identifier. - * - * @param appId application identifier - * @return application descriptor - */ - Application getApplication(ApplicationId appId); - - /** - * Returns the current application state. - * - * @param appId application identifier - * @return application state - */ - ApplicationState getState(ApplicationId appId); - - /** - * Creates the application from the specified application descriptor - * input stream. - * - * @param appDescStream application archive input stream - * @return application descriptor - */ - Application create(InputStream appDescStream); - - /** - * Removes the specified application. - * - * @param appId application identifier - */ - void remove(ApplicationId appId); - - /** - * Mark the application as active. - * - * @param appId application identifier - */ - void activate(ApplicationId appId); - - /** - * Mark the application as deactivated. - * - * @param appId application identifier - */ - void deactivate(ApplicationId appId); - - /** - * Returns the permissions granted to the applications. - * - * @param appId application identifier - * @return set of granted permissions - */ - Set getPermissions(ApplicationId appId); - - /** - * Updates the permissions granted to the applications. - * - * @param appId application identifier - * @param permissions set of granted permissions - */ - void setPermissions(ApplicationId appId, Set permissions); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationStoreDelegate.java deleted file mode 100644 index f339e685..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/ApplicationStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.store.StoreDelegate; - -/** - * Application store delegate abstraction. - */ -public interface ApplicationStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java deleted file mode 100644 index 569183a7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.core.ApplicationRole; -import org.onosproject.core.Version; -import org.onosproject.security.Permission; - -import java.net.URI; -import java.util.List; -import java.util.Optional; -import java.util.Set; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default implementation of network control/management application descriptor. - */ -public class DefaultApplicationDescription implements ApplicationDescription { - - private final String name; - private final Version version; - private final String description; - private final String origin; - private final ApplicationRole role; - private final Set permissions; - private final Optional featuresRepo; - private final List features; - private final List requiredApps; - - /** - * Creates a new application descriptor using the supplied data. - * - * @param name application name - * @param version application version - * @param description application description - * @param origin origin company - * @param role application role - * @param permissions requested permissions - * @param featuresRepo optional features repo URI - * @param features application features - * @param requiredApps list of required application names - */ - public DefaultApplicationDescription(String name, Version version, - String description, String origin, - ApplicationRole role, Set permissions, - URI featuresRepo, List features, - List requiredApps) { - this.name = checkNotNull(name, "Name cannot be null"); - this.version = checkNotNull(version, "Version cannot be null"); - this.description = checkNotNull(description, "Description cannot be null"); - this.origin = checkNotNull(origin, "Origin cannot be null"); - this.role = checkNotNull(role, "Role cannot be null"); - this.permissions = checkNotNull(permissions, "Permissions cannot be null"); - this.featuresRepo = Optional.ofNullable(featuresRepo); - this.features = checkNotNull(features, "Features cannot be null"); - this.requiredApps = checkNotNull(requiredApps, "Required apps cannot be null"); - checkArgument(!features.isEmpty(), "There must be at least one feature"); - } - - @Override - public String name() { - return name; - } - - @Override - public Version version() { - return version; - } - - @Override - public String description() { - return description; - } - - @Override - public String origin() { - return origin; - } - - @Override - public ApplicationRole role() { - return role; - } - - @Override - public Set permissions() { - return permissions; - } - - @Override - public Optional featuresRepo() { - return featuresRepo; - } - - @Override - public List features() { - return features; - } - - @Override - public List requiredApps() { - return requiredApps; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("name", name) - .add("version", version) - .add("description", description) - .add("origin", origin) - .add("role", role) - .add("permissions", permissions) - .add("featuresRepo", featuresRepo) - .add("features", features) - .add("requiredApps", requiredApps) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/package-info.java deleted file mode 100644 index f8e5465d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/app/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Set of abstractions for managing network control applications. - */ -package org.onosproject.app; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigEvent.java deleted file mode 100644 index 0f5a2ee5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigEvent.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cfg; - -import org.onosproject.event.AbstractEvent; - -/** - * Describes a component configuration event. - */ -public class ComponentConfigEvent extends AbstractEvent { - - private final String name; - private final String value; - - public enum Type { - /** - * Signifies that a configuration property has set. - */ - PROPERTY_SET, - - /** - * Signifies that a configuration property has been unset. - */ - PROPERTY_UNSET - } - - /** - * Creates an event of a given type and for the specified app and the - * current time. - * - * @param type config property event type - * @param componentName component name event subject - * @param name config property name - * @param value config property value - */ - public ComponentConfigEvent(Type type, String componentName, - String name, String value) { - super(type, componentName); - this.name = name; - this.value = value; - } - - /** - * Returns the property name. - * - * @return property name - */ - public String name() { - return name; - } - - /** - * Returns the property value as a string. - * - * @return string value - */ - public String value() { - return value; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigService.java deleted file mode 100644 index 408a8933..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigService.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cfg; - -import java.util.Set; - -/** - * Service for tracking system-wide configurations for various software components. - */ -public interface ComponentConfigService { - - /** - * Returns names of all components that have registered their - * configuration properties. - * - * @return set of component names - */ - Set getComponentNames(); - - /** - * Registers configuration properties for the specified component. - * - * @param componentClass class of configurable component - */ - void registerProperties(Class componentClass); - - /** - * Unregisters configuration properties for the specified component. - * - * @param componentClass class of configurable component - * @param clear true indicates any settings should be cleared - */ - void unregisterProperties(Class componentClass, boolean clear); - - /** - * Returns configuration properties of the named components. - * - * @param componentName component name - * @return set of configuration properties - */ - Set getProperties(String componentName); - - /** - * Sets the value of the specified configuration property. - * - * @param componentName component name - * @param name property name - * @param value new property value - */ - void setProperty(String componentName, String name, String value); - - /** - * Presets the value of the specified configuration property, regardless - * of the component's state. - * - * @param componentName component name - * @param name property name - * @param value new property value - */ - void preSetProperty(String componentName, String name, String value); - - /** - * Clears the value of the specified configuration property thus making - * the property take on its default value. - * - * @param componentName component name - * @param name property name - */ - void unsetProperty(String componentName, String name); - -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigStore.java deleted file mode 100644 index 05f58a4c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigStore.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cfg; - -import org.onosproject.store.Store; - -/** - * Service for storing and distributing system-wide configurations for various - * software components. - */ -public interface ComponentConfigStore - extends Store { - - /** - * Sets the value of the specified configuration property. - * - * @param componentName component name - * @param name property name - * @param value new property value - */ - void setProperty(String componentName, String name, String value); - - /** - * Clears the value of the specified configuration property thus making - * the property take on its default value. - * - * @param componentName component name - * @param name property name - */ - void unsetProperty(String componentName, String name); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigStoreDelegate.java deleted file mode 100644 index da262789..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ComponentConfigStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cfg; - -import org.onosproject.store.StoreDelegate; - -/** - * Configuration property store delegate abstraction. - */ -public interface ComponentConfigStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ConfigProperty.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ConfigProperty.java deleted file mode 100644 index f1b602e8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/ConfigProperty.java +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cfg; - -import com.google.common.base.MoreObjects; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; - -/** - * Component configuration property. - */ -public final class ConfigProperty { - - private final String name; - private final Type type; - private final String value; - private final String defaultValue; - private final String description; - private final boolean isSet; - - /** - * Representation of the type of property value. - */ - public enum Type { - /** - * Indicates the value is a string. - */ - STRING, - - /** - * Indicates the value is an integer. - */ - INTEGER, - - /** - * Indicates the value is a long. - */ - LONG, - - /** - * Indicates the value is a float. - */ - FLOAT, - - /** - * Indicates the value is a double. - */ - DOUBLE, - - /** - * Indicates the value is a boolean. - */ - BOOLEAN - } - - /** - * Creates a new configuration property with its default value. - * - * @param name property name - * @param type value type - * @param defaultValue default value as a string - * @param description property description - * @return newly defined property - */ - public static ConfigProperty defineProperty(String name, Type type, - String defaultValue, - String description) { - return new ConfigProperty(name, type, description, defaultValue, defaultValue, false); - } - - /** - * Creates a new configuration property as a copy of an existing one, but - * with a new value. - * - * @param property property to be changed - * @param newValue new value as a string - * @return newly updated property - */ - public static ConfigProperty setProperty(ConfigProperty property, String newValue) { - return new ConfigProperty(property.name, property.type, property.description, - property.defaultValue, newValue, true); - } - - /** - * Creates a new configuration property as a copy of an existing one, but - * without a specific value, thus making it take its default value. - * - * @param property property to be reset - * @return newly reset property - */ - public static ConfigProperty resetProperty(ConfigProperty property) { - return new ConfigProperty(property.name, property.type, property.description, - property.defaultValue, property.defaultValue, false); - } - - /** - * Creates a new configuration property with its default value. - * - * @param name property name - * @param type value type - * @param defaultValue default value as a string - * @param description property description - * @param value property value - * @param isSet indicates whether the property is set or not - */ - private ConfigProperty(String name, Type type, String description, - String defaultValue, String value, boolean isSet) { - this.name = checkNotNull(name, "Property name cannot be null"); - this.type = checkNotNull(type, "Property type cannot be null"); - this.description = checkNotNull(description, "Property description cannot be null"); - this.defaultValue = defaultValue; - this.value = value; - this.isSet = isSet; - } - - /** - * Returns the property name. - * - * @return property name - */ - public String name() { - return name; - } - - /** - * Returns the property type. - * - * @return property type - */ - public Type type() { - return type; - } - - /** - * Returns the property description. - * - * @return string value - */ - public String description() { - return description; - } - - /** - * Returns the property default value as a string. - * - * @return string default value - */ - public String defaultValue() { - return defaultValue; - } - - /** - * Returns the property value as a string. - * - * @return string value - */ - public String value() { - return value; - } - - /** - * Indicates whether the property is set or whether it assumes its - * default value. - * - * @return true if the property is set - */ - public boolean isSet() { - return isSet; - } - - /** - * Returns the property value as a string. - * - * @return string value - */ - public String asString() { - return value; - } - - /** - * Returns the property value as an integer. - * - * @return integer value - */ - public int asInteger() { - checkState(type == Type.INTEGER, "Value is not an integer"); - return Integer.parseInt(value); - } - - /** - * Returns the property value as a long. - * - * @return long value - */ - public long asLong() { - checkState(type == Type.INTEGER || type == Type.LONG, "Value is not a long or integer"); - return Long.parseLong(value); - } - - /** - * Returns the property value as a float. - * - * @return float value - */ - public float asFloat() { - checkState(type == Type.FLOAT, "Value is not a float"); - return Float.parseFloat(value); - } - - /** - * Returns the property value as a double. - * - * @return double value - */ - public double asDouble() { - checkState(type == Type.FLOAT || type == Type.DOUBLE, "Value is not a float or double"); - return Double.parseDouble(value); - } - - /** - * Returns the property value as a boolean. - * - * @return string value - */ - public boolean asBoolean() { - checkState(type == Type.BOOLEAN, "Value is not a boolean"); - return Boolean.parseBoolean(value); - } - - @Override - public int hashCode() { - return name.hashCode(); - } - - /** - * {@inheritDoc} - * - * Equality is considered only on the basis of property name. - */ - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ConfigProperty) { - final ConfigProperty other = (ConfigProperty) obj; - return Objects.equals(this.name, other.name); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("name", name) - .add("type", type) - .add("value", value) - .add("defaultValue", defaultValue) - .add("description", description) - .add("isSet", isSet) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/package-info.java deleted file mode 100644 index 99fd5be4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cfg/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Set of abstractions for centrally managing component configurations. - * Configuration properties are registered for a component resource which is - * auto-generated during the build process based on information specified in - * the @Property annotations. This provides an overall inventory of all - * supported component configurations. - */ -package org.onosproject.cfg; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterAdminService.java deleted file mode 100644 index 47944874..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterAdminService.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.cluster; - -import org.onlab.packet.IpAddress; - -import java.util.Set; - -/** - * Service for administering the cluster node membership. - */ -public interface ClusterAdminService { - - /** - * Forms cluster configuration based on the specified set of node - * information.  This method resets and restarts the controller - * instance. - * - * @param nodes set of nodes that form the cluster - */ - void formCluster(Set nodes); - - /** - * Adds a new controller node to the cluster. - * - * @param nodeId controller node identifier - * @param ip node IP listen address - * @param tcpPort tcp listen port - * @return newly added node - */ - ControllerNode addNode(NodeId nodeId, IpAddress ip, int tcpPort); - - /** - * Removes the specified node from the cluster node list. - * - * @param nodeId controller node identifier - */ - void removeNode(NodeId nodeId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterEvent.java deleted file mode 100644 index 7bdc1d7d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterEvent.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.cluster; - -import org.onosproject.event.AbstractEvent; - -/** - * Describes cluster-related event. - */ -public class ClusterEvent extends AbstractEvent { - - /** - * Type of cluster-related events. - */ - public enum Type { - /** - * Signifies that a new cluster instance has been administratively added. - */ - INSTANCE_ADDED, - - /** - * Signifies that a cluster instance has been administratively removed. - */ - INSTANCE_REMOVED, - - /** - * Signifies that a cluster instance became active. - */ - INSTANCE_ACTIVATED, - - /** - * Signifies that a cluster instance became inactive. - */ - INSTANCE_DEACTIVATED - } - - /** - * Creates an event of a given type and for the specified instance and the - * current time. - * - * @param type cluster event type - * @param instance cluster device subject - */ - public ClusterEvent(Type type, ControllerNode instance) { - super(type, instance); - } - - /** - * Creates an event of a given type and for the specified device and time. - * - * @param type device event type - * @param instance event device subject - * @param time occurrence time - */ - public ClusterEvent(Type type, ControllerNode instance, long time) { - super(type, instance, time); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterEventListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterEventListener.java deleted file mode 100644 index 79ff06ec..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterEventListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.cluster; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving device cluster-related events. - */ -public interface ClusterEventListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadata.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadata.java deleted file mode 100644 index e1eacfee..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadata.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cluster; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Set; -import java.util.stream.Collectors; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Verify.verifyNotNull; -import static com.google.common.base.Verify.verify; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.Collections2; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; - -/** - * Cluster metadata. - *

- * Metadata specifies the attributes that define a ONOS cluster and comprises the collection - * of {@link org.onosproject.cluster.ControllerNode nodes} and the collection of data - * {@link org.onosproject.cluster.Partition partitions}. - */ -public final class ClusterMetadata { - - private String name; - private Set nodes; - private Set partitions; - - /** - * Returns a new cluster metadata builder. - * @return The cluster metadata builder. - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Returns the name of the cluster. - * - * @return cluster name - */ - public String getName() { - return this.name; - } - - /** - * Returns the collection of {@link org.onosproject.cluster.ControllerNode nodes} that make up the cluster. - * @return cluster nodes - */ - public Collection getNodes() { - return this.nodes; - } - - /** - * Returns the collection of data {@link org.onosproject.cluster.Partition partitions} that make up the cluster. - * @return collection of partitions. - */ - public Collection getPartitions() { - return this.partitions; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(ClusterMetadata.class) - .add("name", name) - .add("nodes", nodes) - .add("partitions", partitions) - .toString(); - } - - @Override - public int hashCode() { - return Arrays.deepHashCode(new Object[] {name, nodes, partitions}); - } - - /* - * Provide a deep quality check of the meta data (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object object) { - - if (!ClusterMetadata.class.isInstance(object)) { - return false; - } - ClusterMetadata that = (ClusterMetadata) object; - - if (!this.name.equals(that.name) || this.nodes.size() != that.nodes.size() - || this.partitions.size() != that.partitions.size()) { - return false; - } - - return Sets.symmetricDifference(this.nodes, that.nodes).isEmpty() - && Sets.symmetricDifference(this.partitions, that.partitions).isEmpty(); - } - - /** - * Builder for a {@link ClusterMetadata} instance. - */ - public static class Builder { - - private final ClusterMetadata metadata; - - public Builder() { - metadata = new ClusterMetadata(); - } - - /** - * Sets the cluster name, returning the cluster metadata builder for method chaining. - * @param name cluster name - * @return this cluster metadata builder - */ - public Builder withName(String name) { - metadata.name = checkNotNull(name); - return this; - } - - /** - * Sets the collection of cluster nodes, returning the cluster metadata builder for method chaining. - * @param controllerNodes collection of cluster nodes - * @return this cluster metadata builder - */ - public Builder withControllerNodes(Collection controllerNodes) { - metadata.nodes = ImmutableSet.copyOf(checkNotNull(controllerNodes)); - return this; - } - - /** - * Sets the collection of data partitions, returning the cluster metadata builder for method chaining. - * @param partitions collection of partitions - * @return this cluster metadata builder - */ - public Builder withPartitions(Collection partitions) { - metadata.partitions = ImmutableSet.copyOf(checkNotNull(partitions)); - return this; - } - - /** - * Builds the cluster metadata. - * @return cluster metadata - * @throws com.google.common.base.VerifyException VerifyException if the metadata is misconfigured - */ - public ClusterMetadata build() { - verifyMetadata(); - return metadata; - } - - /** - * Validates the constructed metadata for semantic correctness. - * @throws VerifyException if the metadata is misconfigured. - */ - private void verifyMetadata() { - verifyNotNull(metadata.getName(), "Cluster name must be specified"); - verifyNotNull(metadata.getNodes(), "Cluster nodes must be specified"); - verifyNotNull(metadata.getPartitions(), "Cluster partitions must be specified"); - verify(!metadata.getNodes().isEmpty(), "Cluster nodes must not be empty"); - verify(!metadata.getPartitions().isEmpty(), "Cluster nodes must not be empty"); - - // verify that partitions are constituted from valid cluster nodes. - boolean validPartitions = Collections2.transform(metadata.getNodes(), ControllerNode::id) - .containsAll(metadata.getPartitions() - .stream() - .flatMap(r -> r.getMembers().stream()) - .collect(Collectors.toSet())); - verify(validPartitions, "Partition locations must be valid cluster nodes"); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataEvent.java deleted file mode 100644 index a0f461c4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataEvent.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cluster; - -import org.onosproject.event.AbstractEvent; - -/** - * Describes a cluster metadata event. - */ -public class ClusterMetadataEvent extends AbstractEvent { - - /** - * Type of cluster metadata events. - */ - public enum Type { - /** - * Signifies that the cluster metadata has changed. - */ - METADATA_CHANGED, - } - - /** - * Creates an event of a given type and for the specified metadata and the - * current time. - * - * @param type cluster metadata event type - * @param metadata cluster metadata subject - */ - public ClusterMetadataEvent(Type type, ClusterMetadata metadata) { - super(type, metadata); - } - - /** - * Creates an event of a given type and for the specified metadata and time. - * - * @param type cluster metadata event type - * @param metadata cluster metadata subject - * @param time occurrence time - */ - public ClusterMetadataEvent(Type type, ClusterMetadata metadata, long time) { - super(type, metadata, time); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataEventListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataEventListener.java deleted file mode 100644 index fdfaeed0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataEventListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cluster; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving cluster metadata related events. - */ -public interface ClusterMetadataEventListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataService.java deleted file mode 100644 index 25a6df63..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataService.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cluster; - -/** - * Service for obtaining metadata information about the cluster. - */ -public interface ClusterMetadataService { - - /** - * Returns the current cluster metadata. - * @return cluster metadata - */ - ClusterMetadata getClusterMetadata(); - - /** - * Updates the cluster metadata. - * @param metadata new metadata - */ - void setClusterMetadata(ClusterMetadata metadata); - - /** - * Returns the local controller node representing this instance. - * @return local controller node - */ - ControllerNode getLocalNode(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataStore.java deleted file mode 100644 index 7e83b5b5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataStore.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cluster; - -import java.util.Collection; - -import org.onosproject.store.Store; -import org.onosproject.store.service.Versioned; - -/** - * Manages persistence of cluster metadata; not intended for direct use. - */ -public interface ClusterMetadataStore extends Store { - - /** - * Returns the cluster metadata. - *

- * The returned metadata is versioned to aid determining if a metadata instance is more recent than another. - * @return cluster metadata - */ - Versioned getClusterMetadata(); - - /** - * Updates the cluster metadata. - * @param metadata new metadata value - */ - void setClusterMetadata(ClusterMetadata metadata); - - // TODO: The below methods should move to a separate store interface that is responsible for - // tracking cluster partition operational state. - - /** - * Sets a controller node as an active member of a partition. - *

- * Active members are those replicas that are up to speed with the rest of the system and are - * usually capable of participating in the replica state management activities in accordance with - * the data consistency and replication protocol in use. - * @param partitionId partition identifier - * @param nodeId id of controller node - */ - void setActiveReplica(String partitionId, NodeId nodeId); - - /** - * Removes a controller node as an active member for a partition. - *

- * Active members are those replicas that are up to speed with the rest of the system and are - * usually capable of participating in the replica state management activities in accordance with - * the data consistency and replication protocol in use. - * @param partitionId partition identifier - * @param nodeId id of controller node - */ - void unsetActiveReplica(String partitionId, NodeId nodeId); - - /** - * Returns the collection of controller nodes that are the active replicas for a partition. - *

- * Active members are those replicas that are up to speed with the rest of the system and are - * usually capable of participating in the replica state management activities in accordance with - * the data consistency and replication protocol in use. - * @param partitionId partition identifier - * @return identifiers of controller nodes that are the active replicas - */ - Collection getActiveReplicas(String partitionId); -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataStoreDelegate.java deleted file mode 100644 index b56b7a24..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterMetadataStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cluster; - -import org.onosproject.store.StoreDelegate; - -/** - * Cluster metadata store delegate abstraction. - */ -public interface ClusterMetadataStoreDelegate extends StoreDelegate { -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterService.java deleted file mode 100644 index 015a6482..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterService.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.cluster; - -import java.util.Set; - -import org.joda.time.DateTime; -import org.onosproject.event.ListenerService; - -/** - * Service for obtaining information about the individual nodes within - * the controller cluster. - */ -public interface ClusterService - extends ListenerService { - - /** - * Returns the local controller node. - * - * @return local controller node - */ - ControllerNode getLocalNode(); - - /** - * Returns the set of current cluster members. - * - * @return set of cluster members - */ - Set getNodes(); - - /** - * Returns the specified controller node. - * - * @param nodeId controller node identifier - * @return controller node - */ - ControllerNode getNode(NodeId nodeId); - - /** - * Returns the availability state of the specified controller node. - * - * @param nodeId controller node identifier - * @return availability state - */ - ControllerNode.State getState(NodeId nodeId); - - /** - * Returns the system time when the availability state was last updated. - * - * @param nodeId controller node identifier - * @return system time when the availability state was last updated. - */ - DateTime getLastUpdated(NodeId nodeId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterStore.java deleted file mode 100644 index 0481d510..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterStore.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.cluster; - -import org.joda.time.DateTime; -import org.onlab.packet.IpAddress; -import org.onosproject.store.Store; - -import java.util.Set; - -/** - * Manages inventory of controller cluster nodes; not intended for direct use. - */ -public interface ClusterStore extends Store { - - /** - * Returns the local controller node. - * - * @return local controller instance - */ - ControllerNode getLocalNode(); - - /** - * Returns the set of current cluster members. - * - * @return set of cluster members - */ - Set getNodes(); - - /** - * Returns the specified controller node. - * - * @param nodeId controller instance identifier - * @return controller instance - */ - ControllerNode getNode(NodeId nodeId); - - /** - * Returns the availability state of the specified controller node. - * - * @param nodeId controller instance identifier - * @return availability state - */ - ControllerNode.State getState(NodeId nodeId); - - /** - * Returns the system when the availability state was last updated. - * - * @param nodeId controller node identifier - * @return system time when the availability state was last updated. - */ - DateTime getLastUpdated(NodeId nodeId); - - /** - * Adds a new controller node to the cluster. - * - * @param nodeId controller node identifier - * @param ip node IP listen address - * @param tcpPort tcp listen port - * @return newly added node - */ - ControllerNode addNode(NodeId nodeId, IpAddress ip, int tcpPort); - - /** - * Removes the specified node from the inventory of cluster nodes. - * - * @param nodeId controller instance identifier - */ - void removeNode(NodeId nodeId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterStoreDelegate.java deleted file mode 100644 index 50d44305..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ClusterStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.cluster; - -import org.onosproject.store.StoreDelegate; - -/** - * Cluster store delegate abstraction. - */ -public interface ClusterStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ControllerNode.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ControllerNode.java deleted file mode 100644 index 2f74ae69..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ControllerNode.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.cluster; - -import org.onlab.packet.IpAddress; - -/** - * Represents a controller instance as a member in a cluster. - */ -public interface ControllerNode { - - /** Represents the operational state of the instance. */ - enum State { - /** - * Signifies that the instance is active and operating normally. - */ - ACTIVE, - - /** - * Signifies that the instance is inactive, which means either down or - * up, but not operational. - */ - INACTIVE - } - - /** - * Returns the instance identifier. - * - * @return instance identifier - */ - NodeId id(); - - /** - * Returns the IP address of the controller instance. - * - * @return IP address - */ - IpAddress ip(); - - - /** - * Returns the TCP port on which the node listens for connections. - * - * @return TCP port - */ - int tcpPort(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ControllerNodeToNodeId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ControllerNodeToNodeId.java deleted file mode 100644 index 4cde8b29..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/ControllerNodeToNodeId.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.cluster; - -import com.google.common.base.Function; - -/** - * Function to convert ControllerNode to NodeId. - */ -public final class ControllerNodeToNodeId - implements Function { - - private static final ControllerNodeToNodeId INSTANCE = new ControllerNodeToNodeId(); - - @Override - public NodeId apply(ControllerNode input) { - if (input == null) { - return null; - } else { - return input.id(); - } - } - - /** - * Returns a Function to convert ControllerNode to NodeId. - * - * @return ControllerNodeToNodeId instance. - */ - public static ControllerNodeToNodeId toNodeId() { - return INSTANCE; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/DefaultControllerNode.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/DefaultControllerNode.java deleted file mode 100644 index 3787daa5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/DefaultControllerNode.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.cluster; - -import org.onlab.packet.IpAddress; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default implementation of a controller instance descriptor. - */ -public class DefaultControllerNode implements ControllerNode { - - public static final int DEFAULT_PORT = 9876; - - private final NodeId id; - private final IpAddress ip; - private final int tcpPort; - - // For serialization - private DefaultControllerNode() { - this.id = null; - this.ip = null; - this.tcpPort = 0; - } - - /** - * Creates a new instance with the specified id and IP address. - * - * @param id instance identifier - * @param ip instance IP address - */ - public DefaultControllerNode(NodeId id, IpAddress ip) { - this(id, ip, DEFAULT_PORT); - } - - /** - * Creates a new instance with the specified id and IP address and TCP port. - * - * @param id instance identifier - * @param ip instance IP address - * @param tcpPort TCP port - */ - public DefaultControllerNode(NodeId id, IpAddress ip, int tcpPort) { - this.id = checkNotNull(id); - this.ip = ip; - this.tcpPort = tcpPort; - } - - @Override - public NodeId id() { - return id; - } - - @Override - public IpAddress ip() { - return ip; - } - - @Override - public int tcpPort() { - return tcpPort; - } - - @Override - public int hashCode() { - return id.hashCode(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o instanceof DefaultControllerNode) { - DefaultControllerNode that = (DefaultControllerNode) o; - return Objects.equals(this.id, that.id); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id) - .add("ip", ip).add("tcpPort", tcpPort).toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/Leadership.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/Leadership.java deleted file mode 100644 index 113e19cb..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/Leadership.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.cluster; - -import java.util.Objects; -import java.util.List; -import java.util.Optional; - -import org.joda.time.DateTime; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; - -/** - * Abstract leadership concept. The information carried by this construct - * include the topic of contention, the {@link NodeId}s of Nodes that could - * become leader for the topic, the epoch when the term for a given leader - * began, and the system time when the term began. Note: - *

    - *
  • The list of NodeIds may include the current leader at index 0, and the - * rest in decreasing preference order.
  • - *
  • The epoch is the logical age of a Leadership construct, and should be - * used for comparing two Leaderships, but only of the same topic.
  • - *
  • The leader may be null if its accuracy can't be guaranteed. This applies - * to CANDIDATES_CHANGED events and candidate board contents.
  • - *
- */ -public class Leadership { - - private final String topic; - private final Optional leader; - private final List candidates; - private final long epoch; - private final long electedTime; - - public Leadership(String topic, NodeId leader, long epoch, long electedTime) { - this.topic = topic; - this.leader = Optional.of(leader); - this.candidates = ImmutableList.of(leader); - this.epoch = epoch; - this.electedTime = electedTime; - } - - public Leadership(String topic, NodeId leader, List candidates, - long epoch, long electedTime) { - this.topic = topic; - this.leader = Optional.of(leader); - this.candidates = ImmutableList.copyOf(candidates); - this.epoch = epoch; - this.electedTime = electedTime; - } - - public Leadership(String topic, List candidates, - long epoch, long electedTime) { - this.topic = topic; - this.leader = Optional.empty(); - this.candidates = ImmutableList.copyOf(candidates); - this.epoch = epoch; - this.electedTime = electedTime; - } - - /** - * The topic for which this leadership applies. - * - * @return leadership topic. - */ - public String topic() { - return topic; - } - - /** - * The nodeId of leader for this topic. - * - * @return leader node. - */ - // This will return Optional in the future. - public NodeId leader() { - return leader.orElse(null); - } - - /** - * Returns an preference-ordered list of nodes that are in the leadership - * race for this topic. - * - * @return a list of NodeIds in priority-order, or an empty list. - */ - public List candidates() { - return candidates; - } - - /** - * The epoch when the leadership was assumed. - *

- * Comparing epochs is only appropriate for leadership events for the same - * topic. The system guarantees that for any given topic the epoch for a new - * term is higher (not necessarily by 1) than the epoch for any previous - * term. - * - * @return leadership epoch - */ - public long epoch() { - return epoch; - } - - /** - * The system time when the term started. - *

- * The elected time is initially set on the node coordinating - * the leader election using its local system time. Due to possible - * clock skew, relying on this value for determining event ordering - * is discouraged. Epoch is more appropriate for determining - * event ordering. - * - * @return elected time. - */ - public long electedTime() { - return electedTime; - } - - @Override - public int hashCode() { - return Objects.hash(topic, leader, candidates, epoch, electedTime); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Leadership) { - final Leadership other = (Leadership) obj; - return Objects.equals(this.topic, other.topic) && - Objects.equals(this.leader, other.leader) && - Objects.equals(this.candidates, other.candidates) && - Objects.equals(this.epoch, other.epoch) && - Objects.equals(this.electedTime, other.electedTime); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this.getClass()) - .add("topic", topic) - .add("leader", leader) - .add("candidates", candidates) - .add("epoch", epoch) - .add("electedTime", new DateTime(electedTime)) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipEvent.java deleted file mode 100644 index faf6dd45..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipEvent.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.cluster; - -import java.util.Objects; - -import org.onosproject.event.AbstractEvent; - -import com.google.common.base.MoreObjects; - -/** - * Describes leadership-related event. - */ -public class LeadershipEvent extends AbstractEvent { - - /** - * Type of leadership-related events. - */ - public enum Type { - /** - * Signifies that the leader has been elected. The event subject is the - * new leader. - */ - LEADER_ELECTED, - - /** - * Signifies that the leader has been re-elected. The event subject is the - * leader. - */ - LEADER_REELECTED, - - /** - * Signifies that the leader has been booted and lost leadership. The - * event subject is the former leader. - */ - LEADER_BOOTED, - - /** - * Signifies that the list of candidates for leadership for a topic has - * changed. This event does not guarantee accurate leader information. - */ - CANDIDATES_CHANGED - } - - /** - * Creates an event of a given type and for the specified instance and the - * current time. - * - * @param type leadership event type - * @param leadership event subject - */ - public LeadershipEvent(Type type, Leadership leadership) { - super(type, leadership); - } - - /** - * Creates an event of a given type and for the specified subject and time. - * - * @param type leadership event type - * @param leadership event subject - * @param time occurrence time - */ - public LeadershipEvent(Type type, Leadership leadership, long time) { - super(type, leadership, time); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subject(), time()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LeadershipEvent) { - final LeadershipEvent other = (LeadershipEvent) obj; - return Objects.equals(this.type(), other.type()) && - Objects.equals(this.subject(), other.subject()) && - Objects.equals(this.time(), other.time()); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this.getClass()) - .add("type", type()) - .add("subject", subject()) - .add("time", time()) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipEventListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipEventListener.java deleted file mode 100644 index 53d84b1b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipEventListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.cluster; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving device leadership-related events. - */ -public interface LeadershipEventListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipService.java deleted file mode 100644 index 7d1f6079..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/LeadershipService.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.cluster; - -import org.onosproject.event.ListenerService; - -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.CompletableFuture; - -/** - * Service for leader election. - * Leadership contests are organized around topics. A instance can join the - * leadership race for a topic or withdraw from a race it has previously joined. - * Listeners can be added to receive notifications asynchronously for various - * leadership contests. - */ -public interface LeadershipService - extends ListenerService { - - /** - * Returns the current leader for the topic. - * - * @param path topic - * @return nodeId of the leader, null if so such topic exists. - */ - NodeId getLeader(String path); - - /** - * Returns the current leadership info for the topic. - * - * @param path topic - * @return leadership info or null if so such topic exists. - */ - Leadership getLeadership(String path); - - /** - * Returns the set of topics owned by the specified node. - * - * @param nodeId node Id. - * @return set of topics for which this node is the current leader. - */ - Set ownedTopics(NodeId nodeId); - - /** - * Joins the leadership contest. - * - * @param path topic for which this controller node wishes to be a leader - * @return {@code Leadership} future - */ - CompletableFuture runForLeadership(String path); - - /** - * Withdraws from a leadership contest. - * - * @param path topic for which this controller node no longer wishes to be a leader - * @return future that is successfully completed when withdraw is done - */ - CompletableFuture withdraw(String path); - - /** - * If the local nodeId is the leader for specified topic, this method causes it to - * step down temporarily from leadership. - *

- * The node will continue to be in contention for leadership and can - * potentially become the leader again if and when it becomes the highest - * priority candidate - *

- * If the local nodeId is not the leader, this method will make no changes and - * simply return false. - * - * @param path topic for which this controller node should give up leadership - * @return true if this node stepped down from leadership, false otherwise - */ - boolean stepdown(String path); - - /** - * Moves the specified nodeId to the top of the candidates list for the topic. - *

- * If the node is not a candidate for this topic, this method will be a noop. - * - * @param path leadership topic - * @param nodeId nodeId to make the top candidate - * @return true if nodeId is now the top candidate, false otherwise - */ - boolean makeTopCandidate(String path, NodeId nodeId); - - /** - * Returns the current leader board. - * - * @return mapping from topic to leadership info. - */ - Map getLeaderBoard(); - - /** - * Returns the candidates for all known topics. - * - * @return A mapping from topics to corresponding list of candidates. - */ - Map> getCandidates(); - - /** - * Returns the candidates for a given topic. - * - * @param path topic - * @return A lists of NodeIds, which may be empty. - */ - List getCandidates(String path); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/NodeId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/NodeId.java deleted file mode 100644 index e5ab9dc8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/NodeId.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.cluster; - -import java.util.Objects; - -/** - * Controller cluster identity. - */ -public class NodeId implements Comparable { - - private final String id; - - /** - * Creates a new cluster node identifier from the specified string. - * - * @param id string identifier - */ - public NodeId(String id) { - this.id = id; - } - - @Override - public int hashCode() { - return id.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NodeId) { - final NodeId other = (NodeId) obj; - return Objects.equals(this.id, other.id); - } - return false; - } - - @Override - public String toString() { - return id; - } - - @Override - public int compareTo(NodeId that) { - return this.id.compareTo(that.id); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/Partition.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/Partition.java deleted file mode 100644 index 1eca4aeb..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/Partition.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cluster; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Set; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * A data partition. - *

- * Partition represents a slice of the data space and is made up of a collection - * of {@link org.onosproject.cluster.ControllerNode nodes} - * that all maintain copies of this data. - */ -public class Partition { - - private final String name; - private final Set members; - - private Partition() { - name = null; - members = null; - } - - public Partition(String name, Collection members) { - this.name = checkNotNull(name); - this.members = ImmutableSet.copyOf(checkNotNull(members)); - } - - /** - * Returns the partition name. - *

- * Each partition is identified by a unique name. - * @return partition name - */ - public String getName() { - return this.name; - } - - /** - * Returns the collection of controller node identifiers that make up this partition. - * @return collection of controller node identifiers - */ - public Collection getMembers() { - return this.members; - } - - @Override - public int hashCode() { - return Arrays.deepHashCode(new Object[] {name, members}); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (other == null || !Partition.class.isInstance(other)) { - return false; - } - - Partition that = (Partition) other; - - if (!this.name.equals(that.name) || (this.members == null && that.members != null) - || (this.members != null && that.members == null) || this.members.size() != that.members.size()) { - return false; - } - - return Sets.symmetricDifference(this.members, that.members).isEmpty(); - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/RoleInfo.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/RoleInfo.java deleted file mode 100644 index 081a6ba2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/RoleInfo.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.cluster; - -import java.util.List; -import java.util.Objects; -import java.util.Optional; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; - -/** - * An immutable container for role information for a device, - * within the current cluster. Role attributes include current - * master and a preference-ordered list of backup nodes. - */ -public class RoleInfo { - private final Optional master; - private final List backups; - - public RoleInfo(NodeId master, List backups) { - this.master = Optional.ofNullable(master); - this.backups = ImmutableList.copyOf(backups); - } - - public RoleInfo() { - this.master = Optional.empty(); - this.backups = ImmutableList.of(); - } - - // This will return a Optional in the future. - public NodeId master() { - return master.orElseGet(() -> null); - } - - public List backups() { - return backups; - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof RoleInfo)) { - return false; - } - RoleInfo that = (RoleInfo) other; - - return Objects.equals(this.master, that.master) - && Objects.equals(this.backups, that.backups); - } - - @Override - public int hashCode() { - return Objects.hash(master, backups); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this.getClass()) - .add("master", master.orElseGet(() -> null)) - .add("backups", backups) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/package-info.java deleted file mode 100644 index d5ae40c2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/cluster/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Set of abstractions for dealing with controller cluster related topics. - */ -package org.onosproject.cluster; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/codec/CodecContext.java b/framework/src/onos/core/api/src/main/java/org/onosproject/codec/CodecContext.java deleted file mode 100644 index 272c3e90..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/codec/CodecContext.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.codec; - -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * Context for codecs to use while encoding/decoding. - */ -public interface CodecContext { - - /** - * Returns the JSON object mapper. - * - * @return object mapper - */ - ObjectMapper mapper(); - - /** - * Returns the JSON codec for the specified entity class. - * - * @param entityClass entity class - * @param entity type - * @return JSON codec; null if no codec available for the class - */ - JsonCodec codec(Class entityClass); - - /** - * Returns reference to the specified service implementation. - * - * @param serviceClass service class - * @param service type - * @return JSON codec; null if no codec available for the class - */ - T getService(Class serviceClass); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/codec/CodecService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/codec/CodecService.java deleted file mode 100644 index 2705569d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/codec/CodecService.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.codec; - -import java.util.Set; - -/** - * Service for registering and retrieving JSON codecs for various entities. - */ -public interface CodecService { - - /** - * Returns the set of classes with currently registered codecs. - * - * @return set of entity classes - */ - Set> getCodecs(); - - /** - * Returns the JSON codec for the specified entity class. - * - * @param entityClass entity class - * @param entity type - * @return JSON codec; null if no codec available for the class - */ - JsonCodec getCodec(Class entityClass); - - /** - * Registers the specified JSON codec for the given entity class. - * - * @param entityClass entity class - * @param codec JSON codec - * @param entity type - */ - void registerCodec(Class entityClass, JsonCodec codec); - - /** - * Unregisters the JSON codec for the specified entity class. - * - * @param entityClass entity class - */ - void unregisterCodec(Class entityClass); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/codec/JsonCodec.java b/framework/src/onos/core/api/src/main/java/org/onosproject/codec/JsonCodec.java deleted file mode 100644 index 6df8f117..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/codec/JsonCodec.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.codec; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.util.ArrayList; -import java.util.List; - -/** - * Abstraction of a codec capable for encoding/decoding arbitrary objects to/from JSON. - */ -public abstract class JsonCodec { - - /** - * Encodes the specified entity into JSON. - * - * @param entity entity to encode - * @param context encoding context - * @return JSON node - * @throws java.lang.UnsupportedOperationException if the codec does not - * support encode operations - */ - public ObjectNode encode(T entity, CodecContext context) { - throw new UnsupportedOperationException("encode() not supported"); - } - - /** - * Decodes the specified entity from JSON. - * - * @param json JSON to decode - * @param context decoding context - * @return decoded entity - * @throws java.lang.UnsupportedOperationException if the codec does not - * support decode operations - */ - public T decode(ObjectNode json, CodecContext context) { - throw new UnsupportedOperationException("decode() not supported"); - } - - /** - * Encodes the collection of the specified entities. - * - * @param entities collection of entities to encode - * @param context encoding context - * @return JSON array - * @throws java.lang.UnsupportedOperationException if the codec does not - * support encode operations - */ - public ArrayNode encode(Iterable entities, CodecContext context) { - ArrayNode result = context.mapper().createArrayNode(); - for (T entity : entities) { - result.add(encode(entity, context)); - } - return result; - } - - /** - * Decodes the specified JSON array into a collection of entities. - * - * @param json JSON array to decode - * @param context decoding context - * @return collection of decoded entities - * @throws java.lang.UnsupportedOperationException if the codec does not - * support decode operations - */ - public List decode(ArrayNode json, CodecContext context) { - List result = new ArrayList<>(); - for (JsonNode node : json) { - result.add(decode((ObjectNode) node, context)); - } - return result; - } - - /** - * Gets a child Object Node from a parent by name. If the child is not found - * or does nor represent an object, null is returned. - * - * @param parent parent object - * @param childName name of child to query - * @return child object if found, null if not found or if not an object - */ - protected static ObjectNode get(ObjectNode parent, String childName) { - JsonNode node = parent.path(childName); - return node.isObject() && !node.isNull() ? (ObjectNode) node : null; - } - - /** - * Gets a child Object Node from a parent by index. If the child is not found - * or does nor represent an object, null is returned. - * - * @param parent parent object - * @param childIndex index of child to query - * @return child object if found, null if not found or if not an object - */ - protected static ObjectNode get(JsonNode parent, int childIndex) { - JsonNode node = parent.path(childIndex); - return node.isObject() && !node.isNull() ? (ObjectNode) node : null; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/codec/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/codec/package-info.java deleted file mode 100644 index 0aa063f5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/codec/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Base JSON codec abstraction and a service for tracking various JSON codecs. - */ -package org.onosproject.codec; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/Application.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/Application.java deleted file mode 100644 index ea2eab9b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/Application.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.core; - -import org.onosproject.security.Permission; - -import java.net.URI; -import java.util.List; -import java.util.Optional; -import java.util.Set; - -/** - * Abstraction of a network control/management application. - */ -public interface Application { - - /** - * Returns the application name id. - * - * @return application identifier - */ - ApplicationId id(); - - /** - * Returns the application version. - * - * @return application version - */ - Version version(); - - /** - * Returns description of the application. - * - * @return application description text - */ - String description(); - - /** - * Returns the name of the application origin, group or company. - * - * @return application origin - */ - String origin(); - - /** - * Returns the role of the application. - * - * @return application role - */ - ApplicationRole role(); - - /** - * Returns the permissions requested by the application. - * - * @return requested permissions - */ - Set permissions(); - - /** - * Returns the feature repository URI. Null value signifies that the - * application did not provide its own features repository. - * - * @return optional feature repo URL - */ - Optional featuresRepo(); - - /** - * Returns the list of features comprising the application. At least one - * feature must be given. - * - * @return application features - */ - List features(); - - /** - * Returns list of required application names. - * - * @return list of application names - */ - List requiredApps(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationId.java deleted file mode 100644 index 25bc8ce7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationId.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.core; - - -/** - * Application identifier. - */ -public interface ApplicationId { - - /** - * Returns the application id. - * @return a short value - */ - short id(); - - /** - * Returns the applications supplied identifier. - * @return a string identifier - */ - String name(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationIdStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationIdStore.java deleted file mode 100644 index f857fbdc..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationIdStore.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.core; -// FIXME: Move to org.onosproject.app package - -import java.util.Set; - -/** - * Manages application IDs. - */ -public interface ApplicationIdStore { - - /** - * Returns the set of currently registered application identifiers. - * - * @return set of application ids - */ - Set getAppIds(); - - /** - * Returns an existing application id from a given id. - * - * @param id the short value of the id - * @return an application id; null if no such app registered - */ - ApplicationId getAppId(Short id); - - /** - * Returns registered application id from the given name. - * - * @param name application name - * @return an application id; null if no such app registered - */ - ApplicationId getAppId(String name); - - /** - * Registers a new application by its name, which is expected - * to follow the reverse DNS convention, e.g. - * {@code org.flying.circus.app} - * - * @param identifier string identifier - * @return the application id - */ - ApplicationId registerApplication(String identifier); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationRole.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationRole.java deleted file mode 100644 index 5fcb80ba..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/ApplicationRole.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.core; - -public enum ApplicationRole { - /** - * Indicates that an application has an ADMIN role. - */ - ADMIN, - - /** - * Indicates that an application has a USER role. - */ - USER, - - /** - * Indicates that an application role has not been specified. - */ - UNSPECIFIED, - - /** - * More useful roles may be defined. - */ -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/CoreService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/CoreService.java deleted file mode 100644 index 0825a6d1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/CoreService.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.core; - -import org.onosproject.net.provider.ProviderId; - -import java.util.Set; - -/** - * Service for interacting with the core system of the controller. - */ -public interface CoreService { - - /** - * Name of the core "application". - */ - String CORE_APP_NAME = "org.onosproject.core"; - - /** - * Identifier of the core "provider". - */ - ProviderId CORE_PROVIDER_ID = new ProviderId("core", CORE_APP_NAME); - - /** - * Returns the product version. - * - * @return product version - */ - Version version(); - - /** - * Returns the set of currently registered application identifiers. - * - * @return set of application ids - */ - Set getAppIds(); - - /** - * Returns an existing application id from a given id. - * - * @param id the short value of the id - * @return an application id - */ - ApplicationId getAppId(Short id); - - /** - * Returns an existing application id from a given id. - * - * @param name the name portion of the ID to look up - * @return an application id - */ - ApplicationId getAppId(String name); - - /** - * Registers a new application by its name, which is expected - * to follow the reverse DNS convention, e.g. - * {@code org.flying.circus.app} - * - * @param name string identifier - * @return the application id - */ - ApplicationId registerApplication(String name); - - /** - * Registers a new application by its name, which is expected - * to follow the reverse DNS convention, e.g. - * {@code org.flying.circus.app}, along with its pre-deactivation hook. - * - * @param name string identifier - * @param preDeactivate pre-deactivation hook - * @return the application id - */ - ApplicationId registerApplication(String name, Runnable preDeactivate); - - /** - * Returns an id generator for a given topic. - * - * @param topic topic identified - * @return the id generator - */ - IdGenerator getIdGenerator(String topic); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultApplication.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultApplication.java deleted file mode 100644 index c3515638..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultApplication.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.core; - -import org.onosproject.security.Permission; - -import java.net.URI; -import java.util.Set; -import java.util.Optional; -import java.util.List; -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default implementation of network control/management application descriptor. - */ -public class DefaultApplication implements Application { - - private final ApplicationId appId; - private final Version version; - private final String description; - private final String origin; - private final ApplicationRole role; - private final Set permissions; - private final Optional featuresRepo; - private final List features; - private final List requiredApps; - - /** - * Creates a new application descriptor using the supplied data. - * - * @param appId application identifier - * @param version application version - * @param description application description - * @param origin origin company - * @param role application role - * @param permissions requested permissions - * @param featuresRepo optional features repo URI - * @param features application features - * @param requiredApps list of required application names - */ - public DefaultApplication(ApplicationId appId, Version version, - String description, String origin, - ApplicationRole role, Set permissions, - Optional featuresRepo, List features, - List requiredApps) { - this.appId = checkNotNull(appId, "ID cannot be null"); - this.version = checkNotNull(version, "Version cannot be null"); - this.description = checkNotNull(description, "Description cannot be null"); - this.origin = checkNotNull(origin, "Origin cannot be null"); - this.role = checkNotNull(role, "Role cannot be null"); - this.permissions = checkNotNull(permissions, "Permissions cannot be null"); - this.featuresRepo = checkNotNull(featuresRepo, "Features repo cannot be null"); - this.features = checkNotNull(features, "Features cannot be null"); - this.requiredApps = checkNotNull(requiredApps, "Required apps cannot be null"); - checkArgument(!features.isEmpty(), "There must be at least one feature"); - } - - @Override - public ApplicationId id() { - return appId; - } - - @Override - public Version version() { - return version; - } - - @Override - public String description() { - return description; - } - - @Override - public String origin() { - return origin; - } - - @Override - public ApplicationRole role() { - return role; - } - - @Override - public Set permissions() { - return permissions; - } - - @Override - public Optional featuresRepo() { - return featuresRepo; - } - - @Override - public List features() { - return features; - } - - @Override - public List requiredApps() { - return requiredApps; - } - - @Override - public int hashCode() { - return Objects.hash(appId, version, description, origin, role, permissions, - featuresRepo, features, requiredApps); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final DefaultApplication other = (DefaultApplication) obj; - return Objects.equals(this.appId, other.appId) && - Objects.equals(this.version, other.version) && - Objects.equals(this.description, other.description) && - Objects.equals(this.origin, other.origin) && - Objects.equals(this.role, other.role) && - Objects.equals(this.permissions, other.permissions) && - Objects.equals(this.featuresRepo, other.featuresRepo) && - Objects.equals(this.features, other.features) && - Objects.equals(this.requiredApps, other.requiredApps); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("appId", appId) - .add("version", version) - .add("description", description) - .add("origin", origin) - .add("role", role) - .add("permissions", permissions) - .add("featuresRepo", featuresRepo) - .add("features", features) - .add("requiredApps", requiredApps) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultApplicationId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultApplicationId.java deleted file mode 100644 index aedfb0d3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultApplicationId.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.core; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Application identifier. - */ -public class DefaultApplicationId implements ApplicationId { - - private final short id; - private final String name; - - /** - * Creates a new application ID. - * - * @param id application identifier - * @param name application name - */ - public DefaultApplicationId(int id, String name) { - checkArgument(0 <= id && id <= Short.MAX_VALUE, "id is outside range"); - this.id = (short) id; - this.name = name; - } - - // Constructor for serializers. - private DefaultApplicationId() { - this.id = 0; - this.name = null; - } - - @Override - public short id() { - return id; - } - - @Override - public String name() { - return name; - } - - @Override - public int hashCode() { - return Short.hashCode(id); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultApplicationId) { - DefaultApplicationId other = (DefaultApplicationId) obj; - return Objects.equals(this.id, other.id); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id).add("name", name).toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultGroupId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultGroupId.java deleted file mode 100644 index 243e5216..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/DefaultGroupId.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.core; - -import com.google.common.base.MoreObjects; - -import java.util.Objects; - -/** - * Default implementation of {@link GroupId}. - */ -public class DefaultGroupId implements GroupId { - - private final int id; - - public DefaultGroupId(int id) { - this.id = id; - } - - // Constructor for serialization - private DefaultGroupId() { - this.id = 0; - } - - @Override - public int id() { - return this.id; - } - - @Override - public int hashCode() { - return id; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof DefaultGroupId)) { - return false; - } - final DefaultGroupId other = (DefaultGroupId) obj; - return Objects.equals(this.id, other.id); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("id", id) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/GroupId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/GroupId.java deleted file mode 100644 index 739fc7ff..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/GroupId.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.core; - -/** - * Group identifier. - */ -public interface GroupId { - - /** - * Returns a group ID as an integer value. - * The method is not intended for use by application developers. - * Return data type may change in the future release. - * - * @return a group ID as integer value - */ - int id(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/IdBlock.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/IdBlock.java deleted file mode 100644 index f4088603..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/IdBlock.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.core; - -import com.google.common.base.MoreObjects; - -import java.util.concurrent.atomic.AtomicLong; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * A class representing an ID space. - */ -public final class IdBlock { - private final long start; - private final long size; - - private final AtomicLong currentId; - - /** - * Constructs a new ID block with the specified size and initial value. - * - * @param start initial value of the block - * @param size size of the block - * @throws IllegalArgumentException if the size is less than or equal to 0 - */ - public IdBlock(long start, long size) { - checkArgument(size > 0, "size should be more than 0, but %s", size); - - this.start = start; - this.size = size; - - this.currentId = new AtomicLong(start); - } - - /** - * Returns the initial value. - * - * @return initial value - */ - private long getStart() { - return start; - } - - /** - * Returns the last value. - * - * @return last value - */ - private long getEnd() { - return start + size - 1; - } - - /** - * Returns the block size. - * - * @return block size - */ - public long getSize() { - return size; - } - - /** - * Returns the next ID in the block. - * - * @return next ID - * @throws UnavailableIdException if there is no available ID in the block. - */ - public long getNextId() { - final long id = currentId.getAndIncrement(); - if (id > getEnd()) { - throw new UnavailableIdException(String.format( - "used all IDs in allocated space (size: %d, end: %d, current: %d)", - size, getEnd(), id - )); - } - - return id; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("start", start) - .add("size", size) - .add("currentId", currentId) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/IdBlockStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/IdBlockStore.java deleted file mode 100644 index 8ed58ae7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/IdBlockStore.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.core; - -/** - * Manages id blocks. - */ -public interface IdBlockStore { - - /** - * Returns a topic-unique block of ids. - * - * @param topic topic name - * @return id block - */ - IdBlock getIdBlock(String topic); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/IdGenerator.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/IdGenerator.java deleted file mode 100644 index 149c834b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/IdGenerator.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.core; - -/** - * A generalized interface for ID generation - * - * {@link #getNewId()} generates a globally unique ID instance on - * each invocation. - */ -public interface IdGenerator { - /** - * Returns a globally unique ID instance. - * - * @return globally unique ID instance - */ - long getNewId(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/MetricsHelper.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/MetricsHelper.java deleted file mode 100644 index 8de05439..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/MetricsHelper.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.core; - -import org.onlab.metrics.MetricsComponent; -import org.onlab.metrics.MetricsFeature; -import org.onlab.metrics.MetricsService; - -import com.codahale.metrics.Timer; - -/** - * Collection of utility methods used for providing Metrics. - */ -public interface MetricsHelper { - - /** - * Returns MetricService instance. - * - * @return MetricService instance - */ - MetricsService metricsService(); - - - /** - * Creates a Timer instance with given name. - * - * @param component component name - * @param feature feature name - * @param name timer name - * @return Timer instance - */ - default Timer createTimer(String component, String feature, String name) { - final MetricsService metricsService = metricsService(); - if (metricsService != null) { - MetricsComponent c = metricsService.registerComponent(component); - MetricsFeature f = c.registerFeature(feature); - return metricsService.createTimer(c, f, name); - } - return null; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/UnavailableIdException.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/UnavailableIdException.java deleted file mode 100644 index 2e4af264..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/UnavailableIdException.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.core; - -/** - * Represents that there is no available IDs. - */ -public class UnavailableIdException extends RuntimeException { - - private static final long serialVersionUID = -2287403908433720122L; - - /** - * Constructs an exception with no message and no underlying cause. - */ - public UnavailableIdException() { - } - - /** - * Constructs an exception with the specified message. - * - * @param message the message describing the specific nature of the error - */ - public UnavailableIdException(String message) { - super(message); - } - - /** - * Constructs an exception with the specified message and the underlying cause. - * - * @param message the message describing the specific nature of the error - * @param cause the underlying cause of this error - */ - public UnavailableIdException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/Version.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/Version.java deleted file mode 100644 index 06e9e206..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/Version.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.core; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Strings.isNullOrEmpty; -import static java.lang.Integer.parseInt; - -/** - * Representation of the product version. - */ -public final class Version { - - public static final String FORMAT_MINIMAL = "%d.%d"; - public static final String FORMAT_SHORT = "%d.%d.%s"; - public static final String FORMAT_LONG = "%d.%d.%s.%s"; - - private static final String NEGATIVE = "Version segment cannot be negative"; - public static final String TOO_SHORT = "Version must have at least major and minor numbers"; - - private final int major; - private final int minor; - private final String patch; - private final String build; - - private final String format; - - // Creates a new version descriptor - private Version(int major, int minor, String patch, String build) { - this.major = major; - this.minor = minor; - this.patch = patch; - this.build = build; - this.format = - isNullOrEmpty(patch) ? - String.format(FORMAT_MINIMAL, major, minor) : - (isNullOrEmpty(build) ? - String.format(FORMAT_SHORT, major, minor, patch) : - String.format(FORMAT_LONG, major, minor, patch, build)); - } - - - /** - * Creates a new version from the specified constituent numbers. - * - * @param major major version number - * @param minor minor version number - * @param patch version patch segment - * @param build optional build string - * @return version descriptor - */ - public static Version version(int major, int minor, String patch, String build) { - checkArgument(major >= 0, NEGATIVE); - checkArgument(minor >= 0, NEGATIVE); - return new Version(major, minor, patch, build); - } - - /** - * Creates a new version by parsing the specified string. - * - * @param string version string - * @return version descriptor - */ - public static Version version(String string) { - String[] fields = string.split("[.-]"); - checkArgument(fields.length >= 2, TOO_SHORT); - return new Version(parseInt(fields[0]), parseInt(fields[1]), - fields.length >= 3 ? fields[2] : null, - fields.length >= 4 ? fields[3] : null); - } - - /** - * Returns the major version number. - * - * @return major version number - */ - public int major() { - return major; - } - - /** - * Returns the minor version number. - * - * @return minor version number - */ - public int minor() { - return minor; - } - - /** - * Returns the version patch segment. - * - * @return patch number - */ - public String patch() { - return patch; - } - - /** - * Returns the version build string. - * - * @return build string - */ - public String build() { - return build; - } - - @Override - public String toString() { - return format; - } - - @Override - public int hashCode() { - return format.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Version) { - final Version other = (Version) obj; - return Objects.equals(this.format, other.format); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/core/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/core/package-info.java deleted file mode 100644 index 3766d49f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/core/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * ONOS Core API definitions. - */ -package org.onosproject.core; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/AbstractEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/AbstractEvent.java deleted file mode 100644 index 67b10292..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/AbstractEvent.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.event; - -import org.joda.time.LocalDateTime; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Base event implementation. - */ -public class AbstractEvent implements Event { - - private final long time; - private final T type; - private final S subject; - - /** - * Creates an event of a given type and for the specified subject and the - * current time. - * - * @param type event type - * @param subject event subject - */ - protected AbstractEvent(T type, S subject) { - this(type, subject, System.currentTimeMillis()); - } - - /** - * Creates an event of a given type and for the specified subject and time. - * - * @param type event type - * @param subject event subject - * @param time occurrence time - */ - protected AbstractEvent(T type, S subject, long time) { - this.type = type; - this.subject = subject; - this.time = time; - } - - @Override - public long time() { - return time; - } - - @Override - public T type() { - return type; - } - - @Override - public S subject() { - return subject; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("time", new LocalDateTime(time)) - .add("type", type()) - .add("subject", subject()) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/AbstractListenerManager.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/AbstractListenerManager.java deleted file mode 100644 index cbe7421f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/AbstractListenerManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.event; - -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; - -/** - * Basis for components which need to export listener mechanism. - */ -@Component(componentAbstract = true) -public abstract class AbstractListenerManager> - implements ListenerService { - - protected final ListenerRegistry listenerRegistry = new ListenerRegistry<>(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected EventDeliveryService eventDispatcher; - - @Override - public void addListener(L listener) { - listenerRegistry.addListener(listener); - } - - @Override - public void removeListener(L listener) { - listenerRegistry.removeListener(listener); - } - - - /** - * Safely posts the specified event to the local event dispatcher. - * If there is no event dispatcher or if the event is null, this method - * is a noop. - * - * @param event event to be posted; may be null - */ - protected void post(E event) { - if (event != null && eventDispatcher != null) { - eventDispatcher.post(event); - } - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/DefaultEventSinkRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/DefaultEventSinkRegistry.java deleted file mode 100644 index be6ddb61..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/DefaultEventSinkRegistry.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -import com.google.common.collect.ImmutableSet; - -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Base implementation of event sink registry. - */ -public class DefaultEventSinkRegistry implements EventSinkRegistry { - - private final Map, EventSink> - sinks = new ConcurrentHashMap<>(); - - @Override - public void addSink(Class eventClass, EventSink sink) { - checkNotNull(eventClass, "Event class cannot be null"); - checkNotNull(sink, "Event sink cannot be null"); - checkArgument(!sinks.containsKey(eventClass), - "Event sink already registered for %s", eventClass.getName()); - sinks.put(eventClass, sink); - } - - @Override - public void removeSink(Class eventClass) { - checkNotNull(eventClass, "Event class cannot be null"); - checkArgument(sinks.remove(eventClass) != null, - "Event sink not registered for %s", eventClass.getName()); - } - - @Override - @SuppressWarnings("unchecked") - public EventSink getSink(Class eventClass) { - checkNotNull(eventClass, "Event class cannot be null"); - return (EventSink) sinks.get(eventClass); - } - - @Override - public Set> getSinks() { - return ImmutableSet.copyOf(sinks.keySet()); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/Event.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/Event.java deleted file mode 100644 index e7cbb60f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/Event.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.event; - -/** - * Abstraction of an of a time-stamped event pertaining to an arbitrary subject. - */ -public interface Event { - - /** - * Returns the timestamp of when the event occurred, given in milliseconds - * since the start of epoch. - * - * @return timestamp in milliseconds - */ - long time(); - - /** - * Returns the type of the event. - * - * @return event type - */ - T type(); - - /** - * Returns the subject of the event. - * - * @return subject to which this event pertains - */ - S subject(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventDeliveryService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventDeliveryService.java deleted file mode 100644 index ff268935..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventDeliveryService.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -/** - * Abstraction of an entity capable of accepting events to be posted and - * then dispatching them to the appropriate event sink. - */ -public interface EventDeliveryService extends EventDispatcher, EventSinkRegistry { - - /** - * Sets the number of millis that an event sink has to process an event. - * - * @param millis number of millis allowed per sink per event - */ - void setDispatchTimeLimit(long millis); - - /** - * Returns the number of millis that an event sink has to process an event. - * - * @return number of millis allowed per sink per event - */ - long getDispatchTimeLimit(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventDispatcher.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventDispatcher.java deleted file mode 100644 index daebd8b0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventDispatcher.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -/** - * Abstraction of a mechanism capable of accepting and dispatching events to - * appropriate event sinks. Where the event sinks are obtained is unspecified. - * Similarly, whether the events are accepted and dispatched synchronously - * or asynchronously is unspecified as well. - */ -public interface EventDispatcher { - - /** - * Posts the specified event for dispatching. - * - * @param event event to be posted - */ - void post(Event event); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventFilter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventFilter.java deleted file mode 100644 index 3b2498f6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventFilter.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.event; - -/** - * Entity capable of filtering events. - */ -public interface EventFilter { - - /** - * Indicates whether the specified event is of interest or not. - * Default implementation always returns true. - * - * @param event event to be inspected - * @return true if event is relevant; false otherwise - */ - default boolean isRelevant(E event) { - return true; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventListener.java deleted file mode 100644 index e77369fc..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventListener.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -/** - * Entity capable of receiving events. - */ -public interface EventListener extends EventFilter { - - /** - * Reacts to the specified event. - * - * @param event event to be processed - */ - void event(E event); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventSink.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventSink.java deleted file mode 100644 index 221b3224..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventSink.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -/** - * Abstraction of an event sink capable of processing the specified event types. - */ -public interface EventSink { - - /** - * Processes the specified event. - * - * @param event event to be processed - */ - void process(E event); - - /** - * Handles notification that event processing time limit has been exceeded. - */ - default void onProcessLimit() { - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventSinkRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventSinkRegistry.java deleted file mode 100644 index bb054a30..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/EventSinkRegistry.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -import java.util.Set; - -/** - * Abstraction of an event sink registry capable of tracking sinks based on - * their event class. - */ -public interface EventSinkRegistry { - - /** - * Adds the specified sink for the given event class. - * - * @param eventClass event class - * @param sink event sink - * @param type of event - */ - void addSink(Class eventClass, EventSink sink); - - /** - * Removes the sink associated with the given event class. - * - * @param eventClass event class - * @param type of event - */ - void removeSink(Class eventClass); - - /** - * Returns the event sink associated with the specified event class. - * - * @param eventClass event class - * @param type of event - * @return event sink or null if none found - */ - EventSink getSink(Class eventClass); - - /** - * Returns the set of all event classes for which sinks are presently - * registered. - * - * @return set of event classes - */ - Set> getSinks(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/ListenerRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/ListenerRegistry.java deleted file mode 100644 index ef02af06..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/ListenerRegistry.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -import org.slf4j.Logger; - -import java.util.Set; -import java.util.concurrent.CopyOnWriteArraySet; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Base implementation of an event sink and a registry capable of tracking - * listeners and dispatching events to them as part of event sink processing. - */ -public class ListenerRegistry> - implements ListenerService, EventSink { - - private static final long LIMIT = 1_800; // ms - - private final Logger log = getLogger(getClass()); - - private long lastStart; - private L lastListener; - - /** - * Set of listeners that have registered. - */ - protected final Set listeners = new CopyOnWriteArraySet<>(); - - @Override - public void addListener(L listener) { - checkNotNull(listener, "Listener cannot be null"); - listeners.add(listener); - } - - @Override - public void removeListener(L listener) { - checkNotNull(listener, "Listener cannot be null"); - if (!listeners.remove(listener)) { - log.warn("Listener {} not registered", listener); - } - } - - @Override - public void process(E event) { - for (L listener : listeners) { - try { - lastListener = listener; - lastStart = System.currentTimeMillis(); - if (listener.isRelevant(event)) { - listener.event(event); - } - lastStart = 0; - } catch (Exception error) { - reportProblem(event, error); - } - } - } - - @Override - public void onProcessLimit() { - if (lastStart > 0) { - long duration = System.currentTimeMillis() - lastStart; - if (duration > LIMIT) { - log.error("Listener {} exceeded execution time limit: {} ms; ejected", - lastListener.getClass().getName(), - duration); - removeListener(lastListener); - } - lastStart = 0; - } - } - - /** - * Reports a problem encountered while processing an event. - * - * @param event event being processed - * @param error error encountered while processing - */ - protected void reportProblem(E event, Throwable error) { - log.warn("Exception encountered while processing event " + event, error); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/ListenerService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/ListenerService.java deleted file mode 100644 index a4a36319..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/ListenerService.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.event; - -/** - * Abstraction of a service capable of asynchronously notifying listeners. - */ -public interface ListenerService> { - - /** - * Adds the specified listener. - * - * @param listener listener to be added - */ - void addListener(L listener); - - /** - * Removes the specified listener. - * - * @param listener listener to be removed - */ - void removeListener(L listener); - - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/event/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/event/package-info.java deleted file mode 100644 index 6b10bcf5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/event/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Local event delivery subsystem interfaces & supporting abstractions. - */ -package org.onosproject.event; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipAdminService.java deleted file mode 100644 index a8835fc7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipAdminService.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.mastership; - -import java.util.concurrent.CompletableFuture; - -import org.onosproject.cluster.NodeId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; - -/** - * Service for administering the inventory of device masterships. - */ -public interface MastershipAdminService { - - /** - * Applies the current mastership role for the specified device. - * - * @param instance controller instance identifier - * @param deviceId device identifier - * @param role requested role - * @return future that is completed when the role is set - */ - CompletableFuture setRole(NodeId instance, DeviceId deviceId, MastershipRole role); - - /** - * Balances the mastership to be shared as evenly as possibly by all - * online instances. - */ - void balanceRoles(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipEvent.java deleted file mode 100644 index 35c32e79..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipEvent.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.mastership; - -import org.joda.time.LocalDateTime; -import org.onosproject.cluster.RoleInfo; -import org.onosproject.event.AbstractEvent; -import org.onosproject.net.DeviceId; - -import com.google.common.base.MoreObjects; - -/** - * Describes a device mastership event. - */ -public class MastershipEvent extends AbstractEvent { - - //Contains master and standby information. - RoleInfo roleInfo; - - /** - * Type of mastership events. - */ - public enum Type { - /** - * Signifies that the master for a device has changed. - */ - MASTER_CHANGED, - - /** - * Signifies that the list of backup nodes has changed. If - * the change in the backups list is accompanied by a change in - * master, the event is subsumed by MASTER_CHANGED. - */ - BACKUPS_CHANGED - } - - /** - * Creates an event of a given type and for the specified device, - * role information, and the current time. - * - * @param type mastership event type - * @param device event device subject - * @param info mastership role information - */ - public MastershipEvent(Type type, DeviceId device, RoleInfo info) { - super(type, device); - this.roleInfo = info; - } - - /** - * Creates an event of a given type and for the specified device, master, - * and time. - * - * @param type mastership event type - * @param device event device subject - * @param info role information - * @param time occurrence time - */ - public MastershipEvent(Type type, DeviceId device, RoleInfo info, long time) { - super(type, device, time); - this.roleInfo = info; - } - - /** - * Returns the current role state for the subject. - * - * @return RoleInfo associated with Device ID subject - */ - public RoleInfo roleInfo() { - return roleInfo; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("time", new LocalDateTime(time())) - .add("type", type()) - .add("subject", subject()) - .add("roleInfo", roleInfo) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipListener.java deleted file mode 100644 index 9c5690e2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.mastership; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving device mastership-related events. - */ -public interface MastershipListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipService.java deleted file mode 100644 index a709f5cf..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipService.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.mastership; - -import static org.onosproject.net.MastershipRole.MASTER; - -import java.util.Set; -import java.util.concurrent.CompletableFuture; - -import org.onosproject.cluster.NodeId; -import org.onosproject.cluster.RoleInfo; -import org.onosproject.event.ListenerService; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; - -/** - * Service responsible for determining the controller instance mastership of - * a device in a clustered environment. This is the central authority for - * determining mastership, but is not responsible for actually applying it - * to the devices; this falls on the device service. - */ -public interface MastershipService - extends ListenerService { - - /** - * Returns the role of the local node for the specified device, without - * triggering master selection. - * - * @param deviceId the the identifier of the device - * @return role of the current node - */ - MastershipRole getLocalRole(DeviceId deviceId); - - /** - * Returns true if the local controller is the Master for the specified deviceId. - * - * @param deviceId the the identifier of the device - * @return true if local node is master; false otherwise - */ - default boolean isLocalMaster(DeviceId deviceId) { - return getLocalRole(deviceId) == MASTER; - } - - /** - * Returns the mastership status of the local controller for a given - * device forcing master selection if necessary. - * - * @param deviceId the the identifier of the device - * @return the role of this controller instance - */ - CompletableFuture requestRoleFor(DeviceId deviceId); - - /** - * Abandons mastership of the specified device on the local node thus - * forcing selection of a new master. If the local node is not a master - * for this device, no master selection will occur. - * - * @param deviceId the identifier of the device - * @return future that is completed when relinquish is complete - */ - CompletableFuture relinquishMastership(DeviceId deviceId); - - /** - * Returns the current master for a given device. - * - * @param deviceId the identifier of the device - * @return the ID of the master controller for the device - */ - NodeId getMasterFor(DeviceId deviceId); - - /** - * Returns controllers connected to a given device, in order of - * preference. The first entry in the list is the current master. - * - * @param deviceId the identifier of the device - * @return a list of controller IDs - */ - RoleInfo getNodesFor(DeviceId deviceId); - - /** - * Returns the devices for which a controller is master. - * - * @param nodeId the ID of the controller - * @return a set of device IDs - */ - Set getDevicesOf(NodeId nodeId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipStore.java deleted file mode 100644 index 81c2d8b6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipStore.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.mastership; - -import java.util.Set; -import java.util.concurrent.CompletableFuture; - -import org.onosproject.cluster.NodeId; -import org.onosproject.cluster.RoleInfo; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.store.Store; - -/** - * Manages inventory of mastership roles for devices, across controller - * instances; not intended for direct use. - */ -public interface MastershipStore extends Store { - - // three things to map: NodeId, DeviceId, MastershipRole - - /** - * Requests role of the local node for the specified device. - * - * @param deviceId device identifier - * @return established or newly negotiated mastership role - */ - CompletableFuture requestRole(DeviceId deviceId); - - /** - * Returns the role of a device for a specific controller instance. - * - * @param nodeId the instance identifier - * @param deviceId the device identifiers - * @return the role - */ - MastershipRole getRole(NodeId nodeId, DeviceId deviceId); - - /** - * Returns the master for a device. - * - * @param deviceId the device identifier - * @return the instance identifier of the master - */ - NodeId getMaster(DeviceId deviceId); - - /** - * Returns the master and backup nodes for a device. - * - * @param deviceId the device identifier - * @return a RoleInfo containing controller IDs - */ - RoleInfo getNodes(DeviceId deviceId); - - /** - * Returns the devices that a controller instance is master of. - * - * @param nodeId the instance identifier - * @return a set of device identifiers - */ - Set getDevices(NodeId nodeId); - - - /** - * Sets a device's role for a specified controller instance. - * - * @param nodeId controller instance identifier - * @param deviceId device identifier - * @return a mastership event - */ - CompletableFuture setMaster(NodeId nodeId, DeviceId deviceId); - - /** - * Returns the current master and number of past mastership hand-offs - * (terms) for a device. - * - * @param deviceId the device identifier - * @return the current master's ID and the term value for device, or null - */ - MastershipTerm getTermFor(DeviceId deviceId); - - /** - * Sets a controller instance's mastership role to STANDBY for a device. - * If the role is MASTER, another controller instance will be selected - * as a candidate master. - * - * @param nodeId the controller instance identifier - * @param deviceId device to revoke mastership role for - * @return a mastership event - */ - CompletableFuture setStandby(NodeId nodeId, DeviceId deviceId); - - /** - * Allows a controller instance to give up its current role for a device. - * If the role is MASTER, another controller instance will be selected - * as a candidate master. - * - * @param nodeId the controller instance identifier - * @param deviceId device to revoke mastership role for - * @return a mastership event - */ - CompletableFuture relinquishRole(NodeId nodeId, DeviceId deviceId); - - /** - * Removes all the roles for the specified controller instance. - * If the role was MASTER, another controller instance will be selected - * as a candidate master. - * - * @param nodeId the controller instance identifier - */ - void relinquishAllRole(NodeId nodeId); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipStoreDelegate.java deleted file mode 100644 index c71f4ed0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.mastership; - -import org.onosproject.store.StoreDelegate; - -/** - * Mastership store delegate abstraction. - */ -public interface MastershipStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipTerm.java b/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipTerm.java deleted file mode 100644 index 049d1d2b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipTerm.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.mastership; - -import java.util.Objects; - -import org.onosproject.cluster.NodeId; - -import com.google.common.base.MoreObjects; - -public final class MastershipTerm { - - private final NodeId master; - private final long termNumber; - - private MastershipTerm(NodeId master, long term) { - this.master = master; - this.termNumber = term; - } - - public static MastershipTerm of(NodeId master, long term) { - return new MastershipTerm(master, term); - } - - public NodeId master() { - return master; - } - - public long termNumber() { - return termNumber; - } - - @Override - public int hashCode() { - return Objects.hash(master, termNumber); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - if (other instanceof MastershipTerm) { - MastershipTerm that = (MastershipTerm) other; - return Objects.equals(this.master, that.master) && - Objects.equals(this.termNumber, that.termNumber); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("master", this.master) - .add("termNumber", this.termNumber) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipTermService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipTermService.java deleted file mode 100644 index 1725ee03..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/MastershipTermService.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.mastership; - -import org.onosproject.net.DeviceId; - -// TODO give me a better name -/** - * Service to obtain mastership term information. - */ -public interface MastershipTermService { - - // TBD: manage/increment per device mastership change - // or increment on any change - /** - * Returns the term number of mastership change occurred for given device. - * - * @param deviceId the identifier of the device - * @return current master's term. - */ - MastershipTerm getMastershipTerm(DeviceId deviceId); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/package-info.java deleted file mode 100644 index 0040680a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/mastership/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Set of abstractions for dealing with controller mastership related topics. - */ -package org.onosproject.mastership; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractAnnotated.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractAnnotated.java deleted file mode 100644 index e0407e27..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractAnnotated.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net; - -import static com.google.common.base.Preconditions.checkArgument; -import static org.onosproject.net.DefaultAnnotations.EMPTY; - -/** - * Base abstraction of an annotated entity. - */ -public abstract class AbstractAnnotated implements Annotated { - - private final Annotations annotations; - - // For serialization - protected AbstractAnnotated() { - this.annotations = null; - } - - /** - * Creates a new entity, annotated with the specified annotations. - * - * @param annotations optional key/value annotations map - */ - protected AbstractAnnotated(Annotations... annotations) { - checkArgument(annotations.length <= 1, "Only one set of annotations is expected"); - this.annotations = annotations.length == 1 ? annotations[0] : EMPTY; - } - - @Override - public Annotations annotations() { - return annotations; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java deleted file mode 100644 index 34042dad..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractDescription.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import static com.google.common.base.Preconditions.checkArgument; -import com.google.common.base.Objects; - -/** - * Base implementation of an annotated model description. - */ -public abstract class AbstractDescription implements Annotated { - - private static final SparseAnnotations EMPTY = DefaultAnnotations.builder().build(); - - private final SparseAnnotations annotations; - - // For serialization - protected AbstractDescription() { - this.annotations = null; - } - - /** - * Creates a new entity, annotated with the specified annotations. - * - * @param annotations optional key/value annotations map - */ - protected AbstractDescription(SparseAnnotations... annotations) { - checkArgument(annotations.length <= 1, "Only one set of annotations is expected"); - this.annotations = annotations.length == 1 ? annotations[0] : EMPTY; - } - - @Override - public SparseAnnotations annotations() { - return annotations; - } - - @Override - public int hashCode() { - return Objects.hashCode(annotations); - } - - @Override - public boolean equals(Object object) { - if (object instanceof AbstractDescription) { - AbstractDescription that = (AbstractDescription) object; - return Objects.equal(this.annotations, that.annotations); - } - return false; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractElement.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractElement.java deleted file mode 100644 index 595e7b9c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractElement.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import org.onosproject.net.provider.ProviderId; - -/** - * Base implementation of network elements, i.e. devices or hosts. - */ -public abstract class AbstractElement extends AbstractModel implements Element { - - protected final ElementId id; - - // For serialization - public AbstractElement() { - id = null; - } - - /** - * Creates a network element attributed to the specified provider. - * - * @param providerId identity of the provider - * @param id element identifier - * @param annotations optional key/value annotations - */ - protected AbstractElement(ProviderId providerId, ElementId id, - Annotations... annotations) { - super(providerId, annotations); - this.id = id; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractModel.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractModel.java deleted file mode 100644 index f3cd5efe..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AbstractModel.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import org.onosproject.net.provider.ProviderId; - -/** - * Base implementation of a network model entity. - */ -public abstract class AbstractModel extends AbstractAnnotated implements Provided { - - private final ProviderId providerId; - - // For serialization - public AbstractModel() { - providerId = null; - } - - /** - * Creates a model entity attributed to the specified provider and - * optionally annotated. - * - * @param providerId identity of the provider - * @param annotations optional key/value annotations - */ - protected AbstractModel(ProviderId providerId, Annotations... annotations) { - super(annotations); - this.providerId = providerId; - } - - @Override - public ProviderId providerId() { - return providerId; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Annotated.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Annotated.java deleted file mode 100644 index ac4545ac..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Annotated.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -/** - * Represents an entity that carries arbitrary annotations. - */ -public interface Annotated { - - /** - * Returns the key/value annotations. - * - * @return key/value annotations - */ - Annotations annotations(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AnnotationKeys.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/AnnotationKeys.java deleted file mode 100644 index 38b599de..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AnnotationKeys.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net; - -/** - * Collection of keys for annotation. - *

- * Number of the annotation keys have been deprecated as the use of annotations - * is being phased out and instead network configuration subsystem is being - * phased-in for majority of model meta-data. - *

- */ -public final class AnnotationKeys { - - // Prohibit instantiation - private AnnotationKeys() { - } - - /** - * Annotation key for instance name. - * - * @deprecated since Cardinal - */ - @Deprecated - public static final String NAME = "name"; - - /** - * Annotation key for instance type (e.g. host type). - * - * @deprecated since Cardinal - */ - @Deprecated - public static final String TYPE = "type"; - - /** - * Annotation key for latitude (e.g. latitude of device). - * - * @deprecated since Cardinal - */ - @Deprecated - public static final String LATITUDE = "latitude"; - - /** - * Annotation key for longitute (e.g. longitude of device). - * - * @deprecated since Cardinal - */ - @Deprecated - public static final String LONGITUDE = "longitude"; - - /** - * Annotation key for southbound protocol. - */ - public static final String PROTOCOL = "protocol"; - - /** - * Annotation key for the device driver name. - * - * @deprecated since Cardinal - */ - @Deprecated - public static final String DRIVER = "driver"; - - /** - * Annotation key for durable links. - */ - public static final String DURABLE = "durable"; - - /** - * Annotation key for link metric; used by - * {@link org.onosproject.net.topology.MetricLinkWeight} function. - */ - public static final String METRIC = "metric"; - - /** - * Annotation key for latency. - * - * @deprecated since Cardinal - */ - @Deprecated - public static final String LATENCY = "latency"; - - /** - * Annotation key for bandwidth. - * The value for this key is interpreted as Mbps. - * - * @deprecated since Cardinal - */ - @Deprecated - public static final String BANDWIDTH = "bandwidth"; - - /** - * Annotation key for the number of optical waves. - */ - public static final String OPTICAL_WAVES = "optical.waves"; - - /** - * Annotation key for the port name. - */ - public static final String PORT_NAME = "portName"; - - /** - * Annotation key for the port mac. - */ - public static final String PORT_MAC = "portMac"; - - /** - * Annotation key for the router ID. - */ - public static final String ROUTER_ID = "routerId"; - - /** - * Annotation key for the static lambda. - */ - public static final String STATIC_LAMBDA = "staticLambda"; - - /** - * Annotation key for the static port. - */ - public static final String STATIC_PORT = "staticPort"; - - /** - * Annotation key for device location. - */ - public static final String RACK_ADDRESS = "rackAddress"; - - /** - * Annotation key for device owner. - */ - public static final String OWNER = "owner"; - - /** - * Annotation key for the channel id. - */ - public static final String CHANNEL_ID = "channelId"; - - /** - * Annotation key for the management address. - */ - public static final String MANAGEMENT_ADDRESS = "managementAddress"; - - /** - * Returns the value annotated object for the specified annotation key. - * The annotated value is expected to be String that can be parsed as double. - * If parsing fails, the returned value will be 1.0. - * - * @param annotated annotated object whose annotated value is obtained - * @param key key of annotation - * @return double value of annotated object for the specified key - */ - public static double getAnnotatedValue(Annotated annotated, String key) { - double value; - try { - value = Double.parseDouble(annotated.annotations().value(key)); - } catch (NumberFormatException e) { - value = 1.0; - } - return value; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Annotations.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Annotations.java deleted file mode 100644 index 4ed70601..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Annotations.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import java.util.Set; - -/** - * Represents an set of simple key/value string annotations. - */ -public interface Annotations { - - /** - * Returns the set of keys for available annotations. - * - * @return annotation keys - */ - Set keys(); - - /** - * Returns the value of the specified annotation. - * - * @param key annotation key - * @return annotation value - */ - String value(String key); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AnnotationsUtil.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/AnnotationsUtil.java deleted file mode 100644 index d43a304d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/AnnotationsUtil.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -/** - * Utility for processing annotations. - */ -public final class AnnotationsUtil { - - public static boolean isEqual(Annotations lhs, Annotations rhs) { - if (lhs == rhs) { - return true; - } - if (lhs == null || rhs == null) { - return false; - } - - if (!lhs.keys().equals(rhs.keys())) { - return false; - } - - for (String key : lhs.keys()) { - if (!lhs.value(key).equals(rhs.value(key))) { - return false; - } - } - return true; - } - - // not to be instantiated - private AnnotationsUtil() {} -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/ChannelSpacing.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/ChannelSpacing.java deleted file mode 100644 index 4da9d6b3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/ChannelSpacing.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import org.onlab.util.Frequency; - -/** - * Represents interval frequency between two neighboring wavelengths. - */ -public enum ChannelSpacing { - CHL_100GHZ(100), // 100 GHz - CHL_50GHZ(50), // 50 GHz - CHL_25GHZ(25), // 25 GHz - CHL_12P5GHZ(12.5), // 12.5 GHz - CHL_6P25GHZ(6.5); // 6.25 GHz - - private final Frequency frequency; - - /** - * Creates an instance with the specified interval in GHz. - * - * @param value interval of neighboring wavelengths in GHz. - */ - ChannelSpacing(double value) { - this.frequency = Frequency.ofGHz(value); - } - - public Frequency frequency() { - return frequency; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/ConnectPoint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/ConnectPoint.java deleted file mode 100644 index 0d13f4aa..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/ConnectPoint.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import com.google.common.base.MoreObjects; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Abstraction of a network connection point expressed as a pair of the - * network element identifier and port number. - */ -public class ConnectPoint { - - private final ElementId elementId; - private final PortNumber portNumber; - - /** - * Creates a new connection point. - * - * @param elementId network element identifier - * @param portNumber port number - */ - public ConnectPoint(ElementId elementId, PortNumber portNumber) { - this.elementId = elementId; - this.portNumber = portNumber; - } - - /** - * Returns the network element identifier. - * - * @return element identifier - */ - public ElementId elementId() { - return elementId; - } - - /** - * Returns the identifier of the infrastructure device if the connection - * point belongs to a network element which is indeed an infrastructure - * device. - * - * @return network element identifier as a device identifier - * @throws java.lang.IllegalStateException if connection point is not - * associated with a device - */ - public DeviceId deviceId() { - if (elementId instanceof DeviceId) { - return (DeviceId) elementId; - } - throw new IllegalStateException("Connection point not associated " + - "with an infrastructure device"); - } - - /** - * Returns the identifier of the infrastructure device if the connection - * point belongs to a network element which is indeed an end-station host. - * - * @return network element identifier as a host identifier - * @throws java.lang.IllegalStateException if connection point is not - * associated with a host - */ - public HostId hostId() { - if (elementId instanceof HostId) { - return (HostId) elementId; - } - throw new IllegalStateException("Connection point not associated " + - "with an end-station host"); - } - - /** - * Returns the identifier of the infrastructure device if the connection - * point belongs to a network element which is indeed an ip of pcc - * client identifier. - * - * @return network element identifier as a pcc client identifier - * @throws java.lang.IllegalStateException if connection point is not - * associated with a pcc client - */ - public IpElementId ipElementId() { - if (elementId instanceof IpElementId) { - return (IpElementId) elementId; - } - throw new IllegalStateException("Connection point not associated " + - "with an pcc client"); - } - - /** - * Returns the connection port number. - * - * @return port number - */ - public PortNumber port() { - return portNumber; - } - - /** - * Parse a device connect point from a string. - * The connect point should be in the format "deviceUri/portNumber". - * - * @param string string to parse - * @return a ConnectPoint based on the information in the string. - */ - public static ConnectPoint deviceConnectPoint(String string) { - checkNotNull(string); - String[] splitted = string.split("/"); - checkArgument(splitted.length == 2, - "Connect point must be in \"deviceUri/portNumber\" format"); - - return new ConnectPoint(DeviceId.deviceId(splitted[0]), - PortNumber.portNumber(splitted[1])); - } - - /** - * Parse a host connect point from a string. - * The connect point should be in the format "hostId/vlanId/portNumber". - * - * @param string string to parse - * @return a ConnectPoint based on the information in the string. - */ - public static ConnectPoint hostConnectPoint(String string) { - checkNotNull(string); - String[] splitted = string.split("/"); - checkArgument(splitted.length == 3, - "Connect point must be in \"hostId/vlanId/portNumber\" format"); - - int lastSlash = string.lastIndexOf("/"); - - return new ConnectPoint(HostId.hostId(string.substring(0, lastSlash)), - PortNumber.portNumber(string.substring(lastSlash + 1, string.length()))); - } - - @Override - public int hashCode() { - return Objects.hash(elementId, portNumber); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ConnectPoint) { - final ConnectPoint other = (ConnectPoint) obj; - return Objects.equals(this.elementId, other.elementId) && - Objects.equals(this.portNumber, other.portNumber); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("elementId", elementId) - .add("portNumber", portNumber) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java deleted file mode 100644 index 7c97ecdd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultAnnotations.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -import com.google.common.collect.Maps; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Represents a set of simple annotations that can be used to add arbitrary - * attributes to various parts of the data model. - */ -public final class DefaultAnnotations implements SparseAnnotations { - - public static final SparseAnnotations EMPTY = DefaultAnnotations.builder().build(); - - private final Map map; - - // For serialization - private DefaultAnnotations() { - this.map = null; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - DefaultAnnotations that = (DefaultAnnotations) o; - - return Objects.equals(this.map, that.map); - - } - - @Override - public int hashCode() { - return Objects.hashCode(this.map); - } - - /** - * Returns the annotations as a map. - * - * @return a copy of the contents of the annotations as a map. - */ - public HashMap asMap() { - return Maps.newHashMap(this.map); - } - - /** - * Creates a new set of annotations using clone of the specified hash map. - * - * @param map hash map of key/value pairs - */ - private DefaultAnnotations(Map map) { - this.map = map; - } - - /** - * Creates a new annotations builder. - * - * @return new annotations builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Merges the specified base set of annotations and additional sparse - * annotations into new combined annotations. If the supplied sparse - * annotations are empty, the original base annotations are returned. - * Any keys tagged for removal in the sparse annotations will be omitted - * in the resulting merged annotations. - * - * @param annotations base annotations - * @param sparseAnnotations additional sparse annotations - * @return combined annotations or the original base annotations if there - * are not additional annotations - */ - public static DefaultAnnotations merge(DefaultAnnotations annotations, - SparseAnnotations sparseAnnotations) { - checkNotNull(annotations, "Annotations cannot be null"); - if (sparseAnnotations == null || sparseAnnotations.keys().isEmpty()) { - return annotations; - } - - // Merge the two maps. Yes, this is not very efficient, but the - // use-case implies small maps and infrequent merges, so we opt for - // simplicity. - Map merged = copy(annotations.map); - for (String key : sparseAnnotations.keys()) { - if (sparseAnnotations.isRemoved(key)) { - merged.remove(key); - } else { - merged.put(key, sparseAnnotations.value(key)); - } - } - return new DefaultAnnotations(merged); - } - - /** - * Creates the union of two given SparseAnnotations. - * Unlike the {@link #merge(DefaultAnnotations, SparseAnnotations)} method, - * result will be {@link SparseAnnotations} instead of {@link Annotations}. - * - * A key tagged for removal will remain in the output SparseAnnotations, - * if the counterpart of the input does not contain the same key. - * - * @param annotations base annotations - * @param sparseAnnotations additional sparse annotations - * @return combined annotations or the original base annotations if there - * are not additional annotations - */ - public static SparseAnnotations union(SparseAnnotations annotations, - SparseAnnotations sparseAnnotations) { - - if (sparseAnnotations == null || sparseAnnotations.keys().isEmpty()) { - return annotations; - } - - final HashMap newMap; - if (annotations instanceof DefaultAnnotations) { - newMap = copy(((DefaultAnnotations) annotations).map); - } else { - newMap = new HashMap<>(annotations.keys().size() + - sparseAnnotations.keys().size()); - putAllSparseAnnotations(newMap, annotations); - } - - putAllSparseAnnotations(newMap, sparseAnnotations); - return new DefaultAnnotations(newMap); - } - - // adds the key-values contained in sparseAnnotations to - // newMap, if sparseAnnotations had a key tagged for removal, - // and corresponding key exist in newMap, entry will be removed. - // if corresponding key does not exist, removal tag will be added to - // the newMap. - private static void putAllSparseAnnotations( - final HashMap newMap, - SparseAnnotations sparseAnnotations) { - - for (String key : sparseAnnotations.keys()) { - if (sparseAnnotations.isRemoved(key)) { - if (newMap.containsKey(key)) { - newMap.remove(key); - } else { - newMap.put(key, Builder.REMOVED); - } - } else { - String value = sparseAnnotations.value(key); - newMap.put(key, value); - } - } - } - - @Override - public Set keys() { - return Collections.unmodifiableSet(map.keySet()); - } - - @Override - public String value(String key) { - String value = map.get(key); - return Objects.equals(Builder.REMOVED, value) ? null : value; - } - - @Override - public boolean isRemoved(String key) { - return Objects.equals(Builder.REMOVED, map.get(key)); - } - - @SuppressWarnings("unchecked") - private static HashMap copy(Map original) { - if (original instanceof HashMap) { - return (HashMap) ((HashMap) original).clone(); - } - throw new IllegalArgumentException("Expecting HashMap instance"); - } - - @Override - public String toString() { - return (map == null) ? "null" : map.toString(); - } - - /** - * Facility for gradually building model annotations. - */ - public static final class Builder { - - private static final String REMOVED = "~rEmOvEd~"; - private final Map builder = new HashMap<>(); - - // Private construction is forbidden. - private Builder() { - } - - /** - * Adds the specified annotation. Any previous value associated with - * the given annotation key will be overwritten. - * - * @param key annotation key - * @param value annotation value - * @return self - */ - public Builder set(String key, String value) { - builder.put(key, value); - return this; - } - - /** - * Adds the specified annotation. Any previous value associated with - * the given annotation key will be tagged for removal. - * - * @param key annotation key - * @return self - */ - public Builder remove(String key) { - builder.put(key, REMOVED); - return this; - } - - /** - * Returns immutable annotations built from the accrued key/values pairs. - * - * @return annotations - */ - public DefaultAnnotations build() { - return new DefaultAnnotations(copy(builder)); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultDevice.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultDevice.java deleted file mode 100644 index f3f0fe74..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultDevice.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net; - -import org.onosproject.net.provider.ProviderId; -import org.onlab.packet.ChassisId; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Default infrastructure device model implementation. - */ -public class DefaultDevice extends AbstractElement implements Device { - - private final Type type; - private final String manufacturer; - private final String serialNumber; - private final String hwVersion; - private final String swVersion; - private final ChassisId chassisId; - - // For serialization - private DefaultDevice() { - this.type = null; - this.manufacturer = null; - this.hwVersion = null; - this.swVersion = null; - this.serialNumber = null; - this.chassisId = null; - } - - /** - * Creates a network element attributed to the specified provider. - * - * @param providerId identity of the provider - * @param id device identifier - * @param type device type - * @param manufacturer device manufacturer - * @param hwVersion device HW version - * @param swVersion device SW version - * @param serialNumber device serial number - * @param chassisId chassis id - * @param annotations optional key/value annotations - */ - public DefaultDevice(ProviderId providerId, DeviceId id, Type type, - String manufacturer, String hwVersion, String swVersion, - String serialNumber, ChassisId chassisId, - Annotations... annotations) { - super(providerId, id, annotations); - this.type = type; - this.manufacturer = manufacturer; - this.hwVersion = hwVersion; - this.swVersion = swVersion; - this.serialNumber = serialNumber; - this.chassisId = chassisId; - } - - @Override - public DeviceId id() { - return (DeviceId) id; - } - - @Override - public Type type() { - return type; - } - - @Override - public String manufacturer() { - return manufacturer; - } - - @Override - public String hwVersion() { - return hwVersion; - } - - @Override - public String swVersion() { - return swVersion; - } - - @Override - public String serialNumber() { - return serialNumber; - } - - @Override - public ChassisId chassisId() { - return chassisId; - } - - @Override - public int hashCode() { - return Objects.hash(id, type, manufacturer, hwVersion, swVersion, serialNumber); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultDevice) { - final DefaultDevice other = (DefaultDevice) obj; - return Objects.equals(this.id, other.id) && - Objects.equals(this.type, other.type) && - Objects.equals(this.manufacturer, other.manufacturer) && - Objects.equals(this.hwVersion, other.hwVersion) && - Objects.equals(this.swVersion, other.swVersion) && - Objects.equals(this.serialNumber, other.serialNumber); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("id", id) - .add("type", type) - .add("manufacturer", manufacturer) - .add("hwVersion", hwVersion) - .add("swVersion", swVersion) - .add("serialNumber", serialNumber) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultDisjointPath.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultDisjointPath.java deleted file mode 100644 index 4895964f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultDisjointPath.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import org.onosproject.net.provider.ProviderId; - -import java.util.List; -import java.util.Objects; -import static com.google.common.collect.ImmutableSet.of; - -/** - * Default implementation of a network disjoint path pair. - */ -public class DefaultDisjointPath extends DefaultPath implements DisjointPath { - - private final DefaultPath path1; - private final DefaultPath path2; - - boolean usingPath1 = true; - - /** - * Creates a disjoint path pair from two default paths. - * - * @param providerId provider identity - * @param path1 primary path - * @param path2 backup path - */ - public DefaultDisjointPath(ProviderId providerId, DefaultPath path1, DefaultPath path2) { - super(providerId, path1.links(), path1.cost() + path2.cost()); - this.path1 = path1; - this.path2 = path2; - } - - @Override - public List links() { - if (usingPath1) { - return path1.links(); - } else { - return path2.links(); - } - } - - @Override - public double cost() { - if (usingPath1) { - return path1.cost(); - } - return path2.cost(); - } - - @Override - public Path primary() { - return path1; - } - - @Override - public Path backup() { - return path2; - } - - @Override - public int hashCode() { - return Objects.hash(of(path1, path2), src(), dst()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultDisjointPath) { - final DefaultDisjointPath other = (DefaultDisjointPath) obj; - return Objects.equals(this.path1, other.path1) && Objects.equals(this.path2, other.path2); - } - return false; - } - - @Override - public boolean useBackup() { - if (path2 == null || path2.links() == null) { - return false; - } - usingPath1 = !usingPath1; - return true; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultEdgeLink.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultEdgeLink.java deleted file mode 100644 index 67ceef7a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultEdgeLink.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import org.onosproject.net.provider.ProviderId; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default edge link model implementation. - */ -public class DefaultEdgeLink extends DefaultLink implements EdgeLink { - - private final HostId hostId; - private final HostLocation hostLocation; - - /** - * Creates an edge link using the supplied information. - * - * @param providerId provider identity - * @param hostPoint host-side connection point - * @param hostLocation location where host attaches to the network - * @param isIngress true to indicate host-to-network direction; false - * for network-to-host direction - * @param annotations optional key/value annotations - */ - public DefaultEdgeLink(ProviderId providerId, ConnectPoint hostPoint, - HostLocation hostLocation, boolean isIngress, - Annotations... annotations) { - super(providerId, isIngress ? hostPoint : hostLocation, - isIngress ? hostLocation : hostPoint, Type.EDGE, annotations); - checkArgument(hostPoint.elementId() instanceof HostId, - "Host point does not refer to a host ID"); - this.hostId = (HostId) hostPoint.elementId(); - this.hostLocation = hostLocation; - } - - @Override - public HostId hostId() { - return hostId; - } - - @Override - public HostLocation hostLocation() { - return hostLocation; - } - - /** - * Creates a phantom edge link, to an unspecified end-station. This link - * does not represent any actually discovered link stored in the system. - * - * @param edgePort network edge port - * @param isIngress true to indicate host-to-network direction; false - * for network-to-host direction - * @return new phantom edge link - */ - public static DefaultEdgeLink createEdgeLink(ConnectPoint edgePort, - boolean isIngress) { - checkNotNull(edgePort, "Edge port cannot be null"); - HostLocation location = (edgePort instanceof HostLocation) ? - (HostLocation) edgePort : new HostLocation(edgePort, 0); - return new DefaultEdgeLink(ProviderId.NONE, - new ConnectPoint(HostId.NONE, PortNumber.P0), - location, isIngress); - } - - /** - * Creates a an edge link, to the specified end-station. - * - * @param host host - * @param isIngress true to indicate host-to-network direction; false - * for network-to-host direction - * @return new phantom edge link - */ - public static DefaultEdgeLink createEdgeLink(Host host, boolean isIngress) { - checkNotNull(host, "Host cannot be null"); - return new DefaultEdgeLink(ProviderId.NONE, - new ConnectPoint(host.id(), PortNumber.P0), - host.location(), isIngress); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java deleted file mode 100644 index 557fa5c1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultHost.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import org.onosproject.net.provider.ProviderId; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Objects; -import java.util.Set; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * A basic implementation of a Host. - */ -public class DefaultHost extends AbstractElement implements Host { - - private final MacAddress mac; - private final VlanId vlan; - private final HostLocation location; - private final Set ips; - - /** - * Creates an end-station host using the supplied information. - * - * @param providerId provider identity - * @param id host identifier - * @param mac host MAC address - * @param vlan host VLAN identifier - * @param location host location - * @param ips host IP addresses - * @param annotations optional key/value annotations - */ - public DefaultHost(ProviderId providerId, HostId id, MacAddress mac, - VlanId vlan, HostLocation location, Set ips, - Annotations... annotations) { - super(providerId, id, annotations); - this.mac = mac; - this.vlan = vlan; - this.location = location; - this.ips = new HashSet<>(ips); - } - - @Override - public HostId id() { - return (HostId) id; - } - - @Override - public MacAddress mac() { - return mac; - } - - @Override - public Set ipAddresses() { - return Collections.unmodifiableSet(ips); - } - - @Override - public HostLocation location() { - return location; - } - - @Override - public VlanId vlan() { - return vlan; - } - - @Override - public int hashCode() { - return Objects.hash(id, mac, vlan, location); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultHost) { - final DefaultHost other = (DefaultHost) obj; - return Objects.equals(this.id, other.id) && - Objects.equals(this.mac, other.mac) && - Objects.equals(this.vlan, other.vlan) && - Objects.equals(this.location, other.location) && - Objects.equals(this.ipAddresses(), other.ipAddresses()); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("id", id) - .add("mac", mac) - .add("vlan", vlan) - .add("location", location) - .add("ipAddresses", ips) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultLink.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultLink.java deleted file mode 100644 index 4d1ca6de..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultLink.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import org.onosproject.net.provider.ProviderId; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static org.onosproject.net.Link.State.ACTIVE; - -/** - * Default infrastructure link model implementation. - */ -public class DefaultLink extends AbstractModel implements Link { - - private final ConnectPoint src; - private final ConnectPoint dst; - private final Type type; - private final State state; - private final boolean isDurable; - - /** - * Creates an active infrastructure link using the supplied information. - * - * @param providerId provider identity - * @param src link source - * @param dst link destination - * @param type link type - * @param annotations optional key/value annotations - */ - public DefaultLink(ProviderId providerId, ConnectPoint src, ConnectPoint dst, - Type type, Annotations... annotations) { - this(providerId, src, dst, type, ACTIVE, false, annotations); - } - - /** - * Creates an infrastructure link using the supplied information. - * Links marked as durable will remain in the inventory when a vanish - * message is received and instead will be marked as inactive. - * - * @param providerId provider identity - * @param src link source - * @param dst link destination - * @param type link type - * @param state link state - * @param isDurable indicates if the link is to be considered durable - * @param annotations optional key/value annotations - */ - public DefaultLink(ProviderId providerId, ConnectPoint src, ConnectPoint dst, - Type type, State state, - boolean isDurable, Annotations... annotations) { - super(providerId, annotations); - this.src = src; - this.dst = dst; - this.type = type; - this.state = state; - this.isDurable = isDurable; - } - - @Override - public ConnectPoint src() { - return src; - } - - @Override - public ConnectPoint dst() { - return dst; - } - - @Override - public Type type() { - return type; - } - - @Override - public State state() { - return state; - } - - @Override - public boolean isDurable() { - return isDurable; - } - - // Note: Durability & state are purposefully omitted form equality & hashCode. - - @Override - public int hashCode() { - return Objects.hash(src, dst, type); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultLink) { - final DefaultLink other = (DefaultLink) obj; - return Objects.equals(this.src, other.src) && - Objects.equals(this.dst, other.dst) && - Objects.equals(this.type, other.type); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("src", src) - .add("dst", dst) - .add("type", type) - .add("state", state) - .add("durable", isDurable) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultOchSignalComparator.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultOchSignalComparator.java deleted file mode 100644 index e605dcfd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultOchSignalComparator.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import java.util.Comparator; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Comparator implementation for OchSignal. Assumes identical grid type and channel spacing. - */ -public class DefaultOchSignalComparator implements Comparator { - @Override - public int compare(OchSignal o1, OchSignal o2) { - checkNotNull(o1.gridType()); - checkNotNull(o1.channelSpacing()); - - checkArgument(o1.gridType().equals(o2.gridType())); - checkArgument(o1.channelSpacing().equals(o2.channelSpacing())); - - return o1.spacingMultiplier() * o1.slotGranularity() - o2.spacingMultiplier() * o2.slotGranularity(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultPath.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultPath.java deleted file mode 100644 index 2da2463a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultPath.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; -import org.onosproject.net.provider.ProviderId; - -import java.util.List; -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default implementation of a network path. - */ -public class DefaultPath extends DefaultLink implements Path { - - private final List links; - private final double cost; - - /** - * Creates a path from the specified source and destination using the - * supplied list of links. - * - * @param providerId provider identity - * @param links contiguous links that comprise the path - * @param cost unit-less path cost - * @param annotations optional key/value annotations - */ - public DefaultPath(ProviderId providerId, List links, double cost, - Annotations... annotations) { - super(providerId, source(links), destination(links), Type.INDIRECT, annotations); - this.links = ImmutableList.copyOf(links); - this.cost = cost; - } - - @Override - public List links() { - return links; - } - - @Override - public double cost() { - return cost; - } - - // Returns the source of the first link. - private static ConnectPoint source(List links) { - checkNotNull(links, "List of path links cannot be null"); - checkArgument(!links.isEmpty(), "List of path links cannot be empty"); - return links.get(0).src(); - } - - // Returns the destination of the last link. - private static ConnectPoint destination(List links) { - checkNotNull(links, "List of path links cannot be null"); - checkArgument(!links.isEmpty(), "List of path links cannot be empty"); - return links.get(links.size() - 1).dst(); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("src", src()) - .add("dst", dst()) - .add("type", type()) - .add("state", state()) - .add("durable", isDurable()) - .add("links", links) - .add("cost", cost) - .toString(); - } - - @Override - public int hashCode() { - return links.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultPath) { - final DefaultPath other = (DefaultPath) obj; - return Objects.equals(this.links, other.links); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultPort.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultPort.java deleted file mode 100644 index a6b8441a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DefaultPort.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Default port implementation. - */ -public class DefaultPort extends AbstractAnnotated implements Port { - - /** Default port speed in Mbps. */ - public static final long DEFAULT_SPEED = 1_000; - - private final Element element; - private final PortNumber number; - private final boolean isEnabled; - private final Type type; - private final long portSpeed; - - /** - * Creates a network element attributed to the specified provider. - * - * @param element parent network element - * @param number port number - * @param isEnabled indicator whether the port is up and active - * @param annotations optional key/value annotations - */ - public DefaultPort(Element element, PortNumber number, boolean isEnabled, - Annotations... annotations) { - this(element, number, isEnabled, Type.COPPER, DEFAULT_SPEED, annotations); - } - - /** - * Creates a network element attributed to the specified provider. - * - * @param element parent network element - * @param number port number - * @param isEnabled indicator whether the port is up and active - * @param type port type - * @param portSpeed port speed in Mbs - * @param annotations optional key/value annotations - */ - public DefaultPort(Element element, PortNumber number, boolean isEnabled, - Type type, long portSpeed, Annotations... annotations) { - super(annotations); - this.element = element; - this.number = number; - this.isEnabled = isEnabled; - this.type = type; - this.portSpeed = portSpeed; - } - - @Override - public Element element() { - return element; - } - - @Override - public PortNumber number() { - return number; - } - - @Override - public boolean isEnabled() { - return isEnabled; - } - - @Override - public Type type() { - return type; - } - - @Override - public long portSpeed() { - return portSpeed; - } - - @Override - public int hashCode() { - return Objects.hash(number, isEnabled, type, portSpeed, annotations()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultPort) { - final DefaultPort other = (DefaultPort) obj; - return Objects.equals(this.element.id(), other.element.id()) && - Objects.equals(this.number, other.number) && - Objects.equals(this.isEnabled, other.isEnabled) && - Objects.equals(this.type, other.type) && - Objects.equals(this.portSpeed, other.portSpeed) && - Objects.equals(this.annotations(), other.annotations()); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("element", element.id()) - .add("number", number) - .add("isEnabled", isEnabled) - .add("type", type) - .add("portSpeed", portSpeed) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Description.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Description.java deleted file mode 100644 index c01af549..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Description.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -/** - * Base abstraction of a piece of information about network elements. - */ -public interface Description extends Annotated { - - @Override - SparseAnnotations annotations(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Device.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Device.java deleted file mode 100644 index ffbf7f96..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Device.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net; - -import org.onlab.packet.ChassisId; - -/** - * Representation of a network infrastructure device. - */ -public interface Device extends Element { - - /** - * Coarse classification of the type of the infrastructure device. - */ - enum Type { - SWITCH, ROUTER, ROADM, OTN, ROADM_OTN, FIREWALL, BALANCER, IPS, IDS, CONTROLLER, - VIRTUAL, FIBER_SWITCH, MICROWAVE, OTHER - } - - /** - * Returns the device identifier. - * - * @return device id - */ - @Override - DeviceId id(); - - /** - * Returns the type of the infrastructure device. - * - * @return type of the device - */ - Type type(); - - /** - * Returns the device manufacturer name. - * - * @return manufacturer name - */ - String manufacturer(); - - /** - * Returns the device hardware version. - * - * @return hardware version - */ - String hwVersion(); - - /** - * Returns the device software version. - * - * @return software version - */ - String swVersion(); - - /** - * Returns the device serial number. - * - * @return serial number - */ - String serialNumber(); - - /** - * Returns the device chassis id. - * - * @return chassis id - */ - ChassisId chassisId(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DeviceId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DeviceId.java deleted file mode 100644 index e2c1214f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DeviceId.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import java.net.URI; -import java.util.Objects; - -/** - * Immutable representation of a device identity. - */ -public final class DeviceId extends ElementId { - - /** - * Represents either no device, or an unspecified device. - */ - public static final DeviceId NONE = deviceId("none:none"); - - private final URI uri; - private final String str; - - // Public construction is prohibited - private DeviceId(URI uri) { - this.uri = uri; - this.str = uri.toString().toLowerCase(); - } - - - // Default constructor for serialization - protected DeviceId() { - this.uri = null; - this.str = null; - } - - /** - * Creates a device id using the supplied URI. - * - * @param uri device URI - * @return DeviceId - */ - public static DeviceId deviceId(URI uri) { - return new DeviceId(uri); - } - - /** - * Creates a device id using the supplied URI string. - * - * @param string device URI string - * @return DeviceId - */ - public static DeviceId deviceId(String string) { - return deviceId(URI.create(string)); - } - - /** - * Returns the backing URI. - * - * @return backing URI - */ - public URI uri() { - return uri; - } - - @Override - public int hashCode() { - return str.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DeviceId) { - final DeviceId that = (DeviceId) obj; - return this.getClass() == that.getClass() && - Objects.equals(this.str, that.str); - } - return false; - } - - @Override - public String toString() { - return str; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DisjointPath.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/DisjointPath.java deleted file mode 100644 index 3d54cbfc..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/DisjointPath.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - - -/** - * Representation of a contiguous directed path in a network. Path comprises - * of a sequence of links, where adjacent links must share the same device, - * meaning that destination of the source of one link must coincide with the - * destination of the previous link. - */ -public interface DisjointPath extends Path { - - /** - * Uses backup path. - * - * @return boolean corresponding to whether request to use - * backup was successful. - */ - boolean useBackup(); - - /** - * Gets primary path. - * - * @return primary path - */ - Path primary(); - - /** - * Gets secondary path. - * - * @return secondary path - */ - Path backup(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/EdgeLink.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/EdgeLink.java deleted file mode 100644 index 73b916b2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/EdgeLink.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -/** - * Abstraction of a link between an end-station host and the network - * infrastructure. - */ -public interface EdgeLink extends Link { - - /** - * Returns the host identification. - * - * @return host identifier - */ - HostId hostId(); - - /** - * Returns the connection point where the host attaches to the - * network infrastructure. - * - * @return host location point - */ - HostLocation hostLocation(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Element.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Element.java deleted file mode 100644 index 6cdab9e4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Element.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -/** - * Base abstraction of a network element, i.e. an infrastructure device or an end-station host. - */ -public interface Element extends Annotated, Provided { - - /** - * Returns the network element identifier. - * - * @return element identifier - */ - ElementId id(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/ElementId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/ElementId.java deleted file mode 100644 index 87defb26..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/ElementId.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net; - -/** - * Immutable representation of a network element identity. - */ -public abstract class ElementId implements NetworkResource { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/EncapsulationType.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/EncapsulationType.java deleted file mode 100644 index 63ff46d3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/EncapsulationType.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net; - -public enum EncapsulationType { - /** - * Indicates an MPLS encapsulation. - */ - MPLS, - /** - * Indicates a VLAN encapsulation. - */ - VLAN, -}; - - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/GridType.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/GridType.java deleted file mode 100644 index 8e9bc5b9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/GridType.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -/** - * Represents type of wavelength grid. - * - *

- * See Open Networking Foundation "Optical Transport Protocol Extensions Version 1.0". - *

- */ -public enum GridType { - DWDM, // Dense Wavelength Division Multiplexing - CWDM, // Coarse WDM - FLEX // Flex Grid -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Host.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Host.java deleted file mode 100644 index 646f2283..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Host.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; - -import java.util.Set; - -/** - * Abstraction of an end-station host on the network, essentially a NIC. - */ -public interface Host extends Element { - - /** - * Host identification. - * - * @return host id - */ - @Override - HostId id(); - - /** - * Returns the host MAC address. - * - * @return mac address - */ - MacAddress mac(); - - /** - * Returns the VLAN ID tied to this host. - * - * @return VLAN ID value - */ - VlanId vlan(); - - /** - * Returns set of IP addresses currently bound to the host MAC address. - * - * @return set of IP addresses; empty if no IP address is bound - */ - Set ipAddresses(); - - /** - * Returns the most recent host location where the host attaches to the - * network edge. - * - * @return host location - */ - HostLocation location(); - - // TODO: explore capturing list of recent locations to aid in mobility - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/HostId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/HostId.java deleted file mode 100644 index 3e0d2b24..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/HostId.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Immutable representation of a host identity. - */ -public final class HostId extends ElementId { - - /** - * Represents either no host, or an unspecified host; used for creating - * open ingress/egress edge links. - */ - public static final HostId NONE = new HostId(MacAddress.ZERO, VlanId.NONE); - - private static final int MAC_LENGTH = 17; - private static final int MIN_ID_LENGTH = 19; - - private final MacAddress mac; - private final VlanId vlanId; - - // Public construction is prohibited - private HostId(MacAddress mac, VlanId vlanId) { - this.mac = mac; - this.vlanId = vlanId; - } - - // Default constructor for serialization - private HostId() { - this.mac = null; - this.vlanId = null; - } - - /** - * Returns the host MAC address. - * - * @return MAC address - */ - public MacAddress mac() { - return mac; - } - - /** - * Returns the host vlan Id. - * - * @return vlan Id - */ - public VlanId vlanId() { - return vlanId; - } - - /** - * Creates a device id using the supplied ID string. - * - * @param string device URI string - * @return host identifier - */ - public static HostId hostId(String string) { - checkArgument(string.length() >= MIN_ID_LENGTH, - "Host ID must be at least %s characters", MIN_ID_LENGTH); - MacAddress mac = MacAddress.valueOf(string.substring(0, MAC_LENGTH)); - VlanId vlanId = VlanId.vlanId(Short.parseShort(string.substring(MAC_LENGTH + 1))); - return new HostId(mac, vlanId); - } - - /** - * Creates a device id using the supplied MAC & VLAN ID. - * - * @param mac mac address - * @param vlanId vlan identifier - * @return host identifier - */ - public static HostId hostId(MacAddress mac, VlanId vlanId) { - return new HostId(mac, vlanId); - } - - /** - * Creates a device id using the supplied MAC and default VLAN. - * - * @param mac mac address - * @return host identifier - */ - public static HostId hostId(MacAddress mac) { - return hostId(mac, VlanId.vlanId(VlanId.UNTAGGED)); - } - - public String toString() { - return mac + "/" + vlanId; - } - - @Override - public int hashCode() { - return Objects.hash(mac, vlanId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof HostId) { - final HostId other = (HostId) obj; - return Objects.equals(this.mac, other.mac) && - Objects.equals(this.vlanId, other.vlanId); - } - return false; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/HostLocation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/HostLocation.java deleted file mode 100644 index b0553a2b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/HostLocation.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import static org.onosproject.net.PortNumber.P0; - -/** - * Representation of a network edge location where an end-station host is - * connected. - */ -public class HostLocation extends ConnectPoint { - - /** - * Represents a no location or an unknown location. - */ - public static final HostLocation NONE = new HostLocation(DeviceId.NONE, P0, 0L); - - // Note that time is explicitly excluded from the notion of equality. - private final long time; - - /** - * Creates a new host location using the supplied device & port. - * - * @param deviceId device identity - * @param portNumber device port number - * @param time time when detected, in millis since start of epoch - */ - public HostLocation(DeviceId deviceId, PortNumber portNumber, long time) { - super(deviceId, portNumber); - this.time = time; - } - - /** - * Creates a new host location derived from the supplied connection point. - * - * @param connectPoint connection point - * @param time time when detected, in millis since start of epoch - */ - public HostLocation(ConnectPoint connectPoint, long time) { - super(connectPoint.deviceId(), connectPoint.port()); - this.time = time; - } - - /** - * Returns the time when the location was established, given in - * milliseconds since start of epoch. - * - * @return time in milliseconds since start of epoch - */ - public long time() { - return time; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/IndexedLambda.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/IndexedLambda.java deleted file mode 100644 index 6b5fa652..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/IndexedLambda.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import com.google.common.base.MoreObjects; - -/** - * Implementation of Lambda simply designated by an index number of wavelength. - */ -public class IndexedLambda implements Lambda { - - private final long index; - - /** - * Creates an instance representing the wavelength specified by the given index number. - * It is recommended to use {@link Lambda#indexedLambda(long)} unless you want to use the - * concrete type, IndexedLambda, directly. - * - * @param index index number of wavelength - */ - public IndexedLambda(long index) { - this.index = index; - } - - /** - * Returns the index number of lambda. - * - * @return the index number of lambda - */ - public long index() { - return index; - } - - @Override - public int hashCode() { - return Long.hashCode(index); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof IndexedLambda)) { - return false; - } - - final IndexedLambda that = (IndexedLambda) obj; - return this.index == that.index; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("lambda", index) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/IpElementId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/IpElementId.java deleted file mode 100644 index aba8ae47..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/IpElementId.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import java.util.Objects; -import org.onlab.packet.IpAddress; -import com.google.common.base.MoreObjects; - -/** - * Represent for a Element ID using ip address. - */ -public final class IpElementId extends ElementId { - - private final IpAddress ipAddress; - - /** - * Public construction is prohibited. - * @param ipAddress ip address - */ - private IpElementId(IpAddress ipAddress) { - this.ipAddress = ipAddress; - } - - /** - * Create a IP Element ID. - * @param ipAddress IP address - * @return IpElementId - */ - public static IpElementId ipElement(IpAddress ipAddress) { - return new IpElementId(ipAddress); - } - - /** - * Returns the ip address. - * - * @return ipAddress - */ - public IpAddress ipAddress() { - return ipAddress; - } - - @Override - public int hashCode() { - return Objects.hash(ipAddress); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IpElementId) { - final IpElementId other = (IpElementId) obj; - return Objects.equals(this.ipAddress, other.ipAddress); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).add("ipAddress", ipAddress).toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Lambda.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Lambda.java deleted file mode 100644 index 47d0d5f0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Lambda.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -/** - * Abstraction of wavelength. Currently, this is just a marker interface - */ -public interface Lambda { - /** - * Create an Lambda instance with the specified wavelength index number. - * - * @param lambda index number - * @return an instance - */ - static Lambda indexedLambda(long lambda) { - return new IndexedLambda(lambda); - } - - /** - * Creates a Lambda instance with the specified arguments. - * - * @param gridType grid type - * @param channelSpacing channel spacing - * @param spacingMultiplier channel spacing multiplier - * @param slotGranularity slot width granularity - * @return new lambda with specified arguments - */ - static Lambda ochSignal(GridType gridType, ChannelSpacing channelSpacing, - int spacingMultiplier, int slotGranularity) { - return new OchSignal(gridType, channelSpacing, spacingMultiplier, slotGranularity); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Link.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Link.java deleted file mode 100644 index 7541f751..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Link.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -/** - * Abstraction of a network infrastructure link. - */ -public interface Link extends Annotated, Provided, NetworkResource { - - /** - * Coarse representation of the link type. - */ - enum Type { - /** - * Signifies that this is a direct single-segment link. - */ - DIRECT, - - /** - * Signifies that this link is potentially comprised from multiple - * underlying segments or hops, and as such should be used to tag - * links traversing optical paths, tunnels or intervening 'dark' - * switches. - */ - INDIRECT, - - /** - * Signifies that this link is an edge, i.e. host link. - */ - EDGE, - - /** - * Signifies that this link represents a logical link backed by - * some form of a tunnel, e.g., GRE, MPLS, ODUk, OCH. - */ - TUNNEL, - - /** - * Signifies that this link is realized by fiber (either single channel or WDM). - */ - OPTICAL, - - /** - * Signifies that this link is a virtual link or a pseudo-wire. - */ - VIRTUAL - } - - /** - * Representation of the link state, which applies primarily only to - * configured durable links, i.e. those that need to remain present, - * but instead be marked as inactive. - */ - enum State { - /** - * Signifies that a link is currently active. - */ - ACTIVE, - - /** - * Signifies that a link is currently active. - */ - INACTIVE - } - - /** - * Returns the link source connection point. - * - * @return link source connection point - */ - ConnectPoint src(); - - /** - * Returns the link destination connection point. - * - * @return link destination connection point - */ - ConnectPoint dst(); - - /** - * Returns the link type. - * - * @return link type - */ - Type type(); - - /** - * Returns the link state. - * - * @return link state - */ - State state(); - - /** - * Indicates if the link is to be considered durable. - * - * @return true if the link is durable - */ - boolean isDurable(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/LinkKey.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/LinkKey.java deleted file mode 100644 index 9cb66492..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/LinkKey.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -// TODO Consider renaming. -// it's an identifier for a Link, but it's not ElementId, so not using LinkId. - -/** - * Immutable representation of a link identity. - */ -public final class LinkKey { - - private final ConnectPoint src; - private final ConnectPoint dst; - - /** - * Returns source connection point. - * - * @return source connection point - */ - public ConnectPoint src() { - return src; - } - - /** - * Returns destination connection point. - * - * @return destination connection point - */ - public ConnectPoint dst() { - return dst; - } - - /** - * Creates a link identifier with source and destination connection point. - * - * @param src source connection point - * @param dst destination connection point - */ - private LinkKey(ConnectPoint src, ConnectPoint dst) { - this.src = checkNotNull(src); - this.dst = checkNotNull(dst); - } - - /** - * Creates a link identifier with source and destination connection point. - * - * @param src source connection point - * @param dst destination connection point - * @return a link identifier - */ - public static LinkKey linkKey(ConnectPoint src, ConnectPoint dst) { - return new LinkKey(src, dst); - } - - /** - * Creates a link identifier for the specified link. - * - * @param link link descriptor - * @return a link identifier - */ - public static LinkKey linkKey(Link link) { - return new LinkKey(link.src(), link.dst()); - } - - @Override - public int hashCode() { - return Objects.hash(src, dst); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LinkKey) { - final LinkKey other = (LinkKey) obj; - return Objects.equals(this.src, other.src) && - Objects.equals(this.dst, other.dst); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("src", src) - .add("dst", dst) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/MastershipRole.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/MastershipRole.java deleted file mode 100644 index 78f65864..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/MastershipRole.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -/** - * Representation of a relationship role of a controller instance to a device - * or a region of network environment. - */ -public enum MastershipRole { - - /** - * Represents a relationship where the controller instance is the master - * to a device or a region of network environment. - */ - MASTER, - - /** - * Represents a relationship where the controller instance is the standby, - * i.e. potential master to a device or a region of network environment. - */ - STANDBY, - - /** - * Represents that the controller instance is not eligible to be the master - * to a device or a region of network environment. - */ - NONE - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/MutableAnnotations.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/MutableAnnotations.java deleted file mode 100644 index 9b7f328e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/MutableAnnotations.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -/** - * Represents an mutable set of simple key/value string annotations. - */ -public interface MutableAnnotations extends Annotations { - - /** - * Returns the value of the specified annotation. - * - * @param key annotation key - * @param value annotation value - * @return self - */ - MutableAnnotations set(String key, String value); - - /** - * Clears the specified keys or the all keys if none were specified. - * - * @param keys keys to be cleared - * @return self - */ - MutableAnnotations clear(String... keys); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/NetTools.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/NetTools.java deleted file mode 100644 index fc561884..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/NetTools.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -/** - * Networking domain tools. - */ -public final class NetTools { - - private NetTools() { - } - - /** - * Converts DPIDs of the form xx:xx:xx:xx:xx:xx:xx to OpenFlow provider - * device URIs. The is helpful for converting DPIDs coming from configuration - * or REST to URIs that the core understands. - * - * @param dpid the DPID string to convert - * @return the URI string for this device - */ - public static String dpidToUri(String dpid) { - return "of:" + dpid.replace(":", ""); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/NetworkResource.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/NetworkResource.java deleted file mode 100644 index 502208a0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/NetworkResource.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -/** - * Representation of a network resource, e.g. a link, lambda, MPLS tag. - */ -public interface NetworkResource { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/NshContextHeader.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/NshContextHeader.java deleted file mode 100644 index 745b616f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/NshContextHeader.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -/* - * Representation of NSH context header value - */ -public final class NshContextHeader { - - private final int nshContextHeader; - - /** - * Default constructor. - * - * @param nshContextHeader nsh context header value. - */ - private NshContextHeader(int nshContextHeader) { - this.nshContextHeader = nshContextHeader; - } - - /** - * Returns the NshContextHeader by setting its value. - * - * @param nshContextHeader nsh context header value. - * @return NshContextHeader - */ - public static NshContextHeader of(int nshContextHeader) { - return new NshContextHeader(nshContextHeader); - } - - - /** - * Returns nsh context header value. - * - * @return the nsh context header - */ - public int nshContextHeader() { - return nshContextHeader; - } - - - @Override - public int hashCode() { - return Objects.hash(nshContextHeader); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof NshContextHeader)) { - return false; - } - final NshContextHeader other = (NshContextHeader) obj; - return Objects.equals(this.nshContextHeader, other.nshContextHeader); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("nshContextHeader", nshContextHeader) - .toString(); - } -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/NshServiceIndex.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/NshServiceIndex.java deleted file mode 100644 index 7e0c914c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/NshServiceIndex.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -/* - * Representation of NSH Service index - */ -public final class NshServiceIndex { - private static final short MASK = 0xFF; - private final short serviceIndex; - - /** - * Default constructor. - * - * @param serviceIndex nsh service index - */ - private NshServiceIndex(short serviceIndex) { - this.serviceIndex = (short) (serviceIndex & MASK); - } - - /** - * Returns the NshServiceIndex by setting its value. - * - * @param serviceIndex nsh service index - * @return NshServiceIndex - */ - public static NshServiceIndex of(short serviceIndex) { - return new NshServiceIndex(serviceIndex); - } - - - /** - * Returns nsh service index value. - * - * @return the nsh service index - */ - public short serviceIndex() { - return serviceIndex; - } - - - @Override - public int hashCode() { - return Objects.hash(serviceIndex); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof NshServiceIndex)) { - return false; - } - final NshServiceIndex other = (NshServiceIndex) obj; - return Objects.equals(this.serviceIndex, other.serviceIndex); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("serviceIndex", serviceIndex) - .toString(); - } -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/NshServicePathId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/NshServicePathId.java deleted file mode 100644 index 16fbc4e7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/NshServicePathId.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -/* - * Representation of NSH Service path Identifier - */ -public final class NshServicePathId { - - private final int servicePathId; - - /** - * Default constructor. - * - * @param servicePathId nsh service path identifier - */ - private NshServicePathId(int servicePathId) { - this.servicePathId = servicePathId; - } - - /** - * Returns the NshServicePathId by setting its value. - * - * @param servicePathId nsh service path identifier - * @return NshServicePathId - */ - public static NshServicePathId of(int servicePathId) { - return new NshServicePathId(servicePathId); - } - - - /** - * Returns nsh context service path identifier. - * - * @return the nsh context service path id - */ - public int servicePathId() { - return servicePathId; - } - - - @Override - public int hashCode() { - return Objects.hash(servicePathId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof NshServicePathId)) { - return false; - } - final NshServicePathId other = (NshServicePathId) obj; - return Objects.equals(this.servicePathId, other.servicePathId); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("servicePathId", servicePathId) - .toString(); - } -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OchPort.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/OchPort.java deleted file mode 100644 index 94d4d321..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OchPort.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Implementation of OCh port (Optical Channel). - * Also referred to as a line side port (L-port) or narrow band port. - * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)" - */ -public class OchPort extends DefaultPort { - - private final OduSignalType signalType; - private final boolean isTunable; - private final OchSignal lambda; - - /** - * Creates an OCh port in the specified network element. - * - * @param element parent network element - * @param number port number - * @param isEnabled port enabled state - * @param signalType ODU signal type - * @param isTunable tunable wavelength capability - * @param lambda OCh signal - * @param annotations optional key/value annotations - */ - public OchPort(Element element, PortNumber number, boolean isEnabled, OduSignalType signalType, - boolean isTunable, OchSignal lambda, Annotations... annotations) { - super(element, number, isEnabled, Type.OCH, 0, annotations); - this.signalType = signalType; - this.isTunable = isTunable; - this.lambda = checkNotNull(lambda); - } - - /** - * Returns ODU signal type. - * - * @return ODU signal type - */ - public OduSignalType signalType() { - return signalType; - } - - /** - * Returns true if port is wavelength tunable. - * - * @return tunable wavelength capability - */ - public boolean isTunable() { - return isTunable; - } - - /** - * Returns OCh signal. - * - * @return OCh signal - */ - public OchSignal lambda() { - return lambda; - } - - @Override - public int hashCode() { - return Objects.hash(number(), isEnabled(), type(), signalType, isTunable, lambda, annotations()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - // Subclass is considered as a change of identity, hence equals() will return false if class type don't match - if (obj != null && getClass() == obj.getClass()) { - final OchPort other = (OchPort) obj; - return Objects.equals(this.element().id(), other.element().id()) && - Objects.equals(this.number(), other.number()) && - Objects.equals(this.isEnabled(), other.isEnabled()) && - Objects.equals(this.signalType, other.signalType) && - Objects.equals(this.isTunable, other.isTunable) && - Objects.equals(this.lambda, other.lambda) && - Objects.equals(this.annotations(), other.annotations()); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("element", element().id()) - .add("number", number()) - .add("isEnabled", isEnabled()) - .add("type", type()) - .add("signalType", signalType) - .add("isTunable", isTunable) - .add("lambda", lambda) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OchSignal.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/OchSignal.java deleted file mode 100644 index 3adc9086..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OchSignal.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import com.google.common.base.MoreObjects; -import org.onlab.util.Frequency; -import org.onlab.util.Spectrum; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Implementation of Lambda representing OCh (Optical Channel) Signal. - * - *

- * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)". - *

- */ -public class OchSignal implements Lambda { - - public static final Frequency FLEX_GRID_SLOT = Frequency.ofGHz(12.5); - private static final GridType DEFAULT_OCH_GRIDTYPE = GridType.DWDM; - private static final ChannelSpacing DEFAULT_CHANNEL_SPACING = ChannelSpacing.CHL_50GHZ; - - - private final GridType gridType; - private final ChannelSpacing channelSpacing; - // Frequency = 193.1 THz + spacingMultiplier * channelSpacing - private final int spacingMultiplier; - // Slot width = slotGranularity * 12.5 GHz - private final int slotGranularity; - - /** - * Creates an instance with the specified arguments. - * It it recommended to use {@link Lambda#ochSignal(GridType, ChannelSpacing, int, int)} - * unless you want to use the concrete type, OchSignal, directly. - * - * @param gridType grid type - * @param channelSpacing channel spacing - * @param spacingMultiplier channel spacing multiplier - * @param slotGranularity slot width granularity - */ - public OchSignal(GridType gridType, ChannelSpacing channelSpacing, - int spacingMultiplier, int slotGranularity) { - this.gridType = checkNotNull(gridType); - this.channelSpacing = checkNotNull(channelSpacing); - // Negative values are permitted for spacingMultiplier - this.spacingMultiplier = spacingMultiplier; - checkArgument(slotGranularity > 0, "slotGranularity must be larger than 0, received %s", slotGranularity); - this.slotGranularity = slotGranularity; - } - - /** - * Create OCh signal from channel number. - * - * @param channel channel number - * @param maxFrequency maximum frequency - * @param grid grid spacing frequency - */ - public OchSignal(int channel, Frequency maxFrequency, Frequency grid) { - // Calculate center frequency - Frequency centerFrequency = maxFrequency.subtract(grid.multiply(channel - 1)); - - this.gridType = DEFAULT_OCH_GRIDTYPE; - this.channelSpacing = DEFAULT_CHANNEL_SPACING; - this.spacingMultiplier = (int) (centerFrequency.subtract(Spectrum.CENTER_FREQUENCY).asHz() / grid.asHz()); - this.slotGranularity = (int) Math.round((double) grid.asHz() / ChannelSpacing.CHL_12P5GHZ.frequency().asHz()); - } - - public OchSignal(Frequency centerFrequency, ChannelSpacing channelSpacing, int slotGranularity) { - this.gridType = DEFAULT_OCH_GRIDTYPE; - this.channelSpacing = channelSpacing; - this.spacingMultiplier = (int) Math.round((double) centerFrequency. - subtract(Spectrum.CENTER_FREQUENCY).asHz() / channelSpacing().frequency().asHz()); - this.slotGranularity = slotGranularity; - } - - /** - * Returns grid type. - * - * @return grid type - */ - public GridType gridType() { - return gridType; - } - - /** - * Returns channel spacing. - * - * @return channel spacing - */ - public ChannelSpacing channelSpacing() { - return channelSpacing; - } - - /** - * Returns spacing multiplier. - * - * @return spacing multiplier - */ - public int spacingMultiplier() { - return spacingMultiplier; - } - - /** - * Returns slow width granularity. - * - * @return slow width granularity - */ - public int slotGranularity() { - return slotGranularity; - } - - /** - * Returns central frequency in MHz. - * - * @return frequency in MHz - */ - public Frequency centralFrequency() { - return Spectrum.CENTER_FREQUENCY.add(channelSpacing().frequency().multiply(spacingMultiplier)); - } - - /** - * Returns slot width. - * - * @return slot width - */ - public Frequency slotWidth() { - return FLEX_GRID_SLOT.multiply(slotGranularity); - } - - @Override - public int hashCode() { - return Objects.hash(gridType, channelSpacing, spacingMultiplier, slotGranularity); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof OchSignal)) { - return false; - } - final OchSignal other = (OchSignal) obj; - return Objects.equals(this.gridType, other.gridType) - && Objects.equals(this.channelSpacing, other.channelSpacing) - && Objects.equals(this.spacingMultiplier, other.spacingMultiplier) - && Objects.equals(this.slotGranularity, other.slotGranularity); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("gridType", gridType) - .add("channelSpacing", channelSpacing) - .add("spacingMultiplier", spacingMultiplier) - .add("slotGranularity", slotGranularity) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OchSignalType.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/OchSignalType.java deleted file mode 100644 index 9caf3f34..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OchSignalType.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -/** - * Represents OCh (Optical Channel) signal type defined in - * Open Networking Foundation "Optical Transport Protocol Extensions Version 1.0". - */ -public enum OchSignalType { - /** - * Represents fixed grid. - */ - FIXED_GRID, - - /** - * Represents flex grid. - */ - FLEX_GRID -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OduCltPort.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/OduCltPort.java deleted file mode 100644 index f51393a4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OduCltPort.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of ODU client port (Optical channel Data Unit). - * Also referred to as a T-port or wide band port. - * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)" - */ - -public class OduCltPort extends DefaultPort { - - public enum SignalType { - CLT_1GBE, - CLT_10GBE, - CLT_40GBE, - CLT_100GBE - } - - private final SignalType signalType; - - - /** - * Creates an ODU client port in the specified network element. - * - * @param element parent network element - * @param number port number - * @param isEnabled port enabled state - * @param signalType ODU client signal type - * @param annotations optional key/value annotations - */ - public OduCltPort(Element element, PortNumber number, boolean isEnabled, - SignalType signalType, Annotations... annotations) { - super(element, number, isEnabled, Type.ODUCLT, 0, annotations); - this.signalType = signalType; - } - - /** - * Returns ODU client signal type. - * - * @return ODU client signal type - */ - public SignalType signalType() { - return signalType; - } - - @Override - public int hashCode() { - return Objects.hash(number(), isEnabled(), type(), signalType, annotations()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj != null && getClass() == obj.getClass()) { - final OduCltPort other = (OduCltPort) obj; - return Objects.equals(this.element().id(), other.element().id()) && - Objects.equals(this.number(), other.number()) && - Objects.equals(this.isEnabled(), other.isEnabled()) && - Objects.equals(this.signalType, other.signalType) && - Objects.equals(this.annotations(), other.annotations()); - } - return false; - } - - - @Override - public String toString() { - return toStringHelper(this) - .add("element", element().id()) - .add("number", number()) - .add("isEnabled", isEnabled()) - .add("type", type()) - .add("signalType", signalType) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OduSignalId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/OduSignalId.java deleted file mode 100644 index e19a673d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OduSignalId.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import static com.google.common.base.Preconditions.checkArgument; - -import java.util.Arrays; -import java.util.Objects; - -import org.onlab.util.HexString; - -import com.google.common.base.MoreObjects; -/** - * Implementation of ODU Signal ID. - * - *

- * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)". - *

- */ -public class OduSignalId { - - private final int tributaryPortNumber; // Tributary Port number - private final int tributarySlotLength; // Number of Tributary Slots included in tsmap - private final byte[] tributarySlotBitmap; // Tributary slot bitmap - - public static final int TRIBUTARY_SLOT_BITMAP_SIZE = 10; - - /** - * Creates an instance with the specified arguments. - * - * @param tributaryPortNumber tributary port number - * @param tributarySlotLen tributary slot len - * @param tributarySlotBitmap tributary slot bitmap - */ - public OduSignalId(int tributaryPortNumber, int tributarySlotLen, - byte[] tributarySlotBitmap) { - - checkArgument(tributaryPortNumber <= 80 , - "tributaryPortNumber %s must be <= 80 ", - tributaryPortNumber); - - checkArgument(tributarySlotBitmap.length == TRIBUTARY_SLOT_BITMAP_SIZE, - "number of elements in list " + HexString.toHexString(tributarySlotBitmap) - + " must be equal to " + TRIBUTARY_SLOT_BITMAP_SIZE); - - checkArgument(tributarySlotLen <= 80 , - "tributarySlotLen %s must be <= 80 ", - tributarySlotLen); - - this.tributaryPortNumber = tributaryPortNumber; - this.tributarySlotLength = tributarySlotLen; - this.tributarySlotBitmap = Arrays.copyOf(tributarySlotBitmap, tributarySlotBitmap.length); - } - - /** - * Returns the OduSignalId representing the specified parameters. - * - * @param tributaryPortNumber tributary port number - * @param tributarySlotLen tributary slot len - * @param tributarySlotBitmap tributary slot bitmap - * @return OduSignalId - */ - public static OduSignalId oduSignalId(int tributaryPortNumber, int tributarySlotLen, - byte[] tributarySlotBitmap) { - return new OduSignalId(tributaryPortNumber, tributarySlotLen, tributarySlotBitmap); - } - - - /** - * Returns tributary port number. - * - * @return the tributaryPortNumber - */ - public int tributaryPortNumber() { - return tributaryPortNumber; - } - - /** - * Returns tributary slot length. - * - * @return the tributarySlotLen - */ - public int tributarySlotLength() { - return tributarySlotLength; - } - - /** - * Returns tributary slot bitmap. - * - * @return the tributarySlotBitmap - */ - public byte[] tributarySlotBitmap() { - return Arrays.copyOf(tributarySlotBitmap, tributarySlotBitmap.length); - } - - @Override - public int hashCode() { - return Objects.hash(tributaryPortNumber, tributarySlotLength, Arrays.hashCode(tributarySlotBitmap)); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof OduSignalId)) { - return false; - } - final OduSignalId other = (OduSignalId) obj; - return Objects.equals(this.tributaryPortNumber, other.tributaryPortNumber) - && Objects.equals(this.tributarySlotLength, other.tributarySlotLength) - && Arrays.equals(tributarySlotBitmap, other.tributarySlotBitmap); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .omitNullValues() - .add("tributaryPortNumber", tributaryPortNumber) - .add("tributarySlotLength", tributarySlotLength) - .add("tributarySlotBitmap", HexString.toHexString(tributarySlotBitmap)) - .toString(); - } - -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OduSignalType.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/OduSignalType.java deleted file mode 100644 index 014c893b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OduSignalType.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -/** - * Represents ODU (Optical channel Data Unit) signal type. - * - *

- * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)" and - * Open Networking Foundation "Optical Transport Protocol Extensions Version 1.0". - *

- */ -public enum OduSignalType { - ODU0, - ODU1, - ODU2, - ODU2e, - ODU3, - ODU4 -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OmsPort.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/OmsPort.java deleted file mode 100644 index d37fe75d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/OmsPort.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import org.onlab.util.Frequency; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of OMS port (Optical Multiplexing Section). - * Also referred to as a WDM port or W-port. - * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)" - * - * Assumes we only support fixed grid for now. - */ -public class OmsPort extends DefaultPort { - - private final Frequency minFrequency; // Minimum frequency - private final Frequency maxFrequency; // Maximum frequency - private final Frequency grid; // Grid spacing frequency - - - /** - * Creates an OMS port in the specified network element. - * - * @param element parent network element - * @param number port number - * @param isEnabled port enabled state - * @param minFrequency minimum frequency - * @param maxFrequency maximum frequency - * @param grid grid spacing frequency - * @param annotations optional key/value annotations - */ - public OmsPort(Element element, PortNumber number, boolean isEnabled, - Frequency minFrequency, Frequency maxFrequency, Frequency grid, Annotations... annotations) { - super(element, number, isEnabled, Type.OMS, 0, annotations); - this.minFrequency = minFrequency; - this.maxFrequency = maxFrequency; - this.grid = grid; - } - - /** - * Returns the total number of channels on the port. - * - * @return total number of channels - */ - public short totalChannels() { - Frequency diff = maxFrequency.subtract(minFrequency); - return (short) (diff.asHz() / (grid.asHz() + 1)); - } - - /** - * Returns the minimum frequency. - * - * @return minimum frequency - */ - public Frequency minFrequency() { - return minFrequency; - } - - /** - * Returns the maximum frequency. - * - * @return maximum frequency - */ - public Frequency maxFrequency() { - return maxFrequency; - } - - /** - * Returns the grid spacing frequency. - * - * @return grid spacing frequency - */ - public Frequency grid() { - return grid; - } - - @Override - public int hashCode() { - return Objects.hash(number(), isEnabled(), type(), - minFrequency, maxFrequency, grid, annotations()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj != null && getClass() == obj.getClass()) { - final OmsPort other = (OmsPort) obj; - return Objects.equals(this.element().id(), other.element().id()) && - Objects.equals(this.number(), other.number()) && - Objects.equals(this.isEnabled(), other.isEnabled()) && - Objects.equals(this.minFrequency, other.minFrequency) && - Objects.equals(this.maxFrequency, other.maxFrequency) && - Objects.equals(this.grid, other.grid) && - Objects.equals(this.annotations(), other.annotations()); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("element", element().id()) - .add("number", number()) - .add("isEnabled", isEnabled()) - .add("type", type()) - .add("minFrequency", minFrequency) - .add("maxFrequency", maxFrequency) - .add("grid", grid) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Path.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Path.java deleted file mode 100644 index c9c20c4c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Path.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import java.util.List; - -/** - * Representation of a contiguous directed path in a network. Path comprises - * of a sequence of links, where adjacent links must share the same device, - * meaning that destination of the source of one link must coincide with the - * destination of the previous link. - */ -public interface Path extends Link { - - /** - * Returns sequence of links comprising the path. - * - * @return list of links - */ - List links(); - - /** - * Returns the path cost as a unit-less value. - * - * @return unit-less path cost - */ - double cost(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Port.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Port.java deleted file mode 100644 index d70b1e17..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Port.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - - -/** - * Abstraction of a network port. - */ -public interface Port extends Annotated { - - /** Represents coarse port type classification. */ - enum Type { - /** - * Signifies copper-based connectivity. - */ - COPPER, - - /** - * Signifies optical fiber-based connectivity. - */ - FIBER, - - /** - * Signifies optical fiber-based packet port. - */ - PACKET, - - /** - * Signifies optical fiber-based optical tributary port (called T-port). - * The signal from the client side will be formed into a ITU G.709 (OTN) frame. - */ - ODUCLT, - - /** - * Signifies optical fiber-based Line-side port (called L-port). - */ - OCH, - - /** - * Signifies optical fiber-based WDM port (called W-port). - * Optical Multiplexing Section (See ITU G.709). - */ - OMS, - - /** - * Signifies virtual port. - */ - VIRTUAL - } - - /** - * Returns the parent network element to which this port belongs. - * - * @return parent network element - */ - Element element(); - - /** - * Returns the port number. - * - * @return port number - */ - PortNumber number(); - - /** - * Indicates whether or not the port is currently up and active. - * - * @return true if the port is operational - */ - boolean isEnabled(); - - /** - * Returns the port type. - * - * @return port type - */ - Type type(); - - /** - * Returns the current port speed in Mbps. - * - * @return current port speed - */ - long portSpeed(); - - // TODO: more attributes? -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/PortNumber.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/PortNumber.java deleted file mode 100644 index 8c9b1349..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/PortNumber.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMap.Builder; -import com.google.common.primitives.UnsignedLongs; - -/** - * Representation of a port number. - */ -public final class PortNumber { - - public static final PortNumber P0 = portNumber(0); - - // TODO: revisit the max and the logical port value assignments - - static final long MAX_NUMBER = (2L * Integer.MAX_VALUE) + 1; - - static final long IN_PORT_NUMBER = -8L; - static final long TABLE_NUMBER = -7L; - static final long NORMAL_NUMBER = -6L; - static final long FLOOD_NUMBER = -5L; - static final long ALL_NUMBER = -4L; - static final long LOCAL_NUMBER = -2L; - static final long CONTROLLER_NUMBER = -3L; - - /** - * Logical PortNumbers. - */ - public static enum Logical { - IN_PORT(IN_PORT_NUMBER), - TABLE(TABLE_NUMBER), - NORMAL(NORMAL_NUMBER), - FLOOD(FLOOD_NUMBER), - ALL(ALL_NUMBER), - LOCAL(LOCAL_NUMBER), - CONTROLLER(CONTROLLER_NUMBER); - - private final long number; - private final PortNumber instance; - - public long number() { - return number; - } - - /** - * PortNumber instance for the logical port. - * @return {@link PortNumber} - */ - public PortNumber instance() { - return instance; - } - - Logical(long number) { - this.number = number; - this.instance = new PortNumber(number); - } - } - - public static final PortNumber IN_PORT = new PortNumber(IN_PORT_NUMBER); - public static final PortNumber TABLE = new PortNumber(TABLE_NUMBER); - public static final PortNumber NORMAL = new PortNumber(NORMAL_NUMBER); - public static final PortNumber FLOOD = new PortNumber(FLOOD_NUMBER); - public static final PortNumber ALL = new PortNumber(ALL_NUMBER); - public static final PortNumber LOCAL = new PortNumber(LOCAL_NUMBER); - public static final PortNumber CONTROLLER = new PortNumber(CONTROLLER_NUMBER); - - // lazily populated Logical port number to PortNumber - static final Supplier> LOGICAL = Suppliers.memoize(() -> { - Builder builder = ImmutableMap.builder(); - for (Logical lp : Logical.values()) { - builder.put(lp.number(), lp); - } - return builder.build(); - }); - - private final long number; - private final String name; - private final boolean hasName; - - // Public creation is prohibited - private PortNumber(long number) { - this.number = number; - this.name = UnsignedLongs.toString(number); - this.hasName = false; - } - - private PortNumber(long number, String name) { - this.number = number; - this.name = name; - this.hasName = true; - } - - /** - * Returns the port number representing the specified long value. - * - * @param number port number as long value - * @return port number - */ - public static PortNumber portNumber(long number) { - return new PortNumber(number); - } - - /** - * Returns the port number representing the specified string value. - * - * @param string port number as string value - * @return port number - */ - public static PortNumber portNumber(String string) { - return new PortNumber(UnsignedLongs.decode(string)); - } - - /** - * Returns the port number representing the specified long value and name. - * - * @param number port number as long value - * @param name port name as string value - * @return port number - */ - public static PortNumber portNumber(long number, String name) { - return new PortNumber(number, name); - } - - /** - * Indicates whether or not this port number is a reserved logical one or - * whether it corresponds to a normal physical port of a device or NIC. - * - * @return true if logical port number - */ - public boolean isLogical() { - if (hasName) { - return false; - } else { - return (number < 0 || number > MAX_NUMBER); - } - } - - /** - * Returns the backing long value. - * - * @return port number as long - */ - public long toLong() { - return number; - } - - /** - * Returns the backing string value. - * - * @return port name as string value - */ - public String name() { - return name; - } - - /** - * Indicates whether this port number was created with a port name, - * or only with a number. - * - * @return true if port was created with name - */ - public boolean hasName() { - return hasName; - } - - private String decodeLogicalPort() { - Logical logical = LOGICAL.get().get(number); - if (logical != null) { - // enum name - return logical.toString(); - } - return String.format("UNKNOWN(%s)", UnsignedLongs.toString(number)); - } - - - /** - * Regular expression to match String representation of named PortNumber. - * - * Format: "[name](num:unsigned decimal string)" - */ - private static final Pattern NAMED = Pattern.compile("^\\[(?.*)\\]\\((?\\d+)\\)$"); - - private static boolean isAsciiDecimal(char c) { - return '0' <= c && c <= '9'; - } - - /** - * Returns PortNumber instance from String representation. - * - * @param s String representation equivalent to {@link PortNumber#toString()} - * @return {@link PortNumber} instance - * @throws IllegalArgumentException if given String was malformed - */ - public static PortNumber fromString(String s) { - checkNotNull(s); - checkArgument(!s.isEmpty(), "cannot be empty"); - - if (isAsciiDecimal(s.charAt(0))) { - // unsigned decimal string - return portNumber(s); - } else if (s.startsWith("[")) { - // named PortNumber - Matcher matcher = NAMED.matcher(s); - checkArgument(matcher.matches(), "Invalid named PortNumber %s", s); - - String name = matcher.group("name"); - String num = matcher.group("num"); - return portNumber(UnsignedLongs.parseUnsignedLong(num), name); - } - - // Logical - if (s.startsWith("UNKNOWN(") && s.endsWith(")")) { - return portNumber(s.substring("UNKNOWN(".length(), s.length() - 1)); - } else { - return Logical.valueOf(s).instance; - } - } - - @Override - public String toString() { - if (isLogical()) { - return decodeLogicalPort(); - } else if (hasName()) { - // named port - return String.format("[%s](%d)", name, number); - } else { - // unsigned decimal string - return name; - } - } - - @Override - public int hashCode() { - return Long.hashCode(number); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PortNumber) { - final PortNumber other = (PortNumber) obj; - return this.number == other.number; - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Provided.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/Provided.java deleted file mode 100644 index daf85e75..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/Provided.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import org.onosproject.net.provider.ProviderId; - -/** - * Abstraction of an entity supplied by a provider. - */ -public interface Provided { - - /** - * Returns the identifier of the provider which supplied the entity. - * - * @return provider identification - */ - ProviderId providerId(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/SparseAnnotations.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/SparseAnnotations.java deleted file mode 100644 index 97961b3a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/SparseAnnotations.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import java.util.Set; - -/** - * Represents an set of sparse key/value string annotations capable of carrying - * annotation keys tagged for removal. - */ -public interface SparseAnnotations extends Annotations { - - /** - * {@inheritDoc} - *

- * Note that this set includes keys for any attributes tagged for removal. - *

- */ - @Override - Set keys(); - - /** - * Indicates whether the specified key has been tagged as removed. This is - * used for merging sparse annotation sets. - * - * @param key annotation key - * @return true if the previous annotation has been tagged for removal - */ - boolean isRemoved(String key); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/TributarySlot.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/TributarySlot.java deleted file mode 100644 index d8a10c81..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/TributarySlot.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import com.google.common.base.MoreObjects; - -/** - * Implementation of ODU Tributary Slot simply designated by an index number of slot. - */ -public class TributarySlot { - - private final long index; - - /** - * Creates an instance representing the TributarySlot specified by the given index number. - * - * @param index index number of wavelength - */ - public TributarySlot(long index) { - this.index = index; - } - - public static TributarySlot of(long index) { - return new TributarySlot(index); - } - - /** - * Returns the index number of TributarySlot. - * - * @return the index number of TributarySlot - */ - public long index() { - return index; - } - - @Override - public int hashCode() { - return Long.hashCode(index); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof TributarySlot)) { - return false; - } - - final TributarySlot that = (TributarySlot) obj; - return this.index == that.index; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("index", index) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java deleted file mode 100644 index cf7bed6d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import java.util.Collection; -import java.util.List; -import java.util.Set; - -import org.onosproject.net.PortNumber; -import org.onosproject.net.device.PortDescription; -import org.onosproject.net.driver.HandlerBehaviour; - -/** - * Behaviour for handling various drivers for bridge configurations. - */ -public interface BridgeConfig extends HandlerBehaviour { - - /** - * Add a bridge. - * - * @param bridgeName bridge name - */ - void addBridge(BridgeName bridgeName); - - /** - * Adds a bridge with given bridge name, dpid and exPortName. - * - * @param bridgeName bridge name - * @param dpid dpid - * @param exPortName external port name - */ - void addBridge(BridgeName bridgeName, String dpid, String exPortName); - - /** - * Adds a bridge with given bridge name and dpid, and sets the controller - * of the bridge with given controllers. - * - * @param bridgeName bridge name - * @param dpid dpid - * @param controllers list of controller - * @return true if succeeds, fail otherwise - */ - boolean addBridge(BridgeName bridgeName, String dpid, List controllers); - - /** - * Remove a bridge. - * - * @param bridgeName bridge name - */ - void deleteBridge(BridgeName bridgeName); - - /** - * Remove a bridge. - * - * @return bridge collection - */ - Collection getBridges(); - - /** - * Add a logical/virtual port. - * - * @param port port number - */ - void addPort(PortDescription port); - - /** - * Delete a logical/virtual port. - * - * @param port port number - */ - void deletePort(PortDescription port); - - /** - * Delete a logical/virtual port. - * - * @return collection of port - */ - Collection getPorts(); - - /** - * Get a collection of port. - * - * @return portNumbers set of PortNumber - */ - Set getPortNumbers(); - - /** - * Get logical/virtual ports by ifaceIds. - * - * @param ifaceIds the ifaceid that needed - * @return list of PortNumber - */ - List getLocalPorts(Iterable ifaceIds); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeDescription.java deleted file mode 100644 index 3c1d5542..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeDescription.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import org.onosproject.net.Description; -import org.onosproject.net.DeviceId; - -/** - * The abstraction of bridge in OVSDB protocol. - */ -public interface BridgeDescription extends Description { - - /** - * Returns bridge name. - * - * @return bridge name - */ - BridgeName bridgeName(); - - /** - * Returns controller identifier that this bridge belongs to. - * - * @return controller identifier - */ - DeviceId cotrollerDeviceId(); - - /** - * Returns bridge identifier . - * - * @return bridge identifier - */ - DeviceId deviceId(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeName.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeName.java deleted file mode 100644 index a15217c6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/BridgeName.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -/** - * Represents for a bridge name. - */ -public final class BridgeName { - - private final String name; - - // Public construction is prohibited - private BridgeName(String name) { - this.name = name; - } - - /** - * Creates a bridge name using the supplied string. - * - * @param name bridge name - * @return BridgeName - */ - public static BridgeName bridgeName(String name) { - return new BridgeName(name); - } - - /** - * Returns the bridge name string. - * - * @return name string - */ - public String name() { - return name; - } - - @Override - public int hashCode() { - return name.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof BridgeName) { - final BridgeName that = (BridgeName) obj; - return this.getClass() == that.getClass() && - Objects.equals(this.name, that.name); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("name", name) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ControllerConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ControllerConfig.java deleted file mode 100644 index cd7cb977..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ControllerConfig.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import org.onosproject.net.driver.HandlerBehaviour; - -import java.util.List; - -/** - * Device behaviour to obtain and set controllers at the device. - */ -public interface ControllerConfig extends HandlerBehaviour { - - //TODO: add other controller parameters as needed. - - /** - * Obtain the list of controller which are currently configured. - * - * @return a list for controller descriptions - */ - List getControllers(); - - /** - * Set a list of controllers on a device. - * - * @param controllers a list of controller descriptions - */ - void setControllers(List controllers); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ControllerInfo.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ControllerInfo.java deleted file mode 100644 index 0e509562..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ControllerInfo.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.base.Preconditions; -import org.onlab.packet.IpAddress; - -import java.util.Objects; - -/** - * Represents information for a device to connect to a controller. - */ -public class ControllerInfo { - - private IpAddress ip = IpAddress.valueOf("0.0.0.0"); - private int port = 6653; - private String type = "error"; - - /** - * Information for contacting the controller. - * - * @param ip the ip address - * @param port the tcp port - * @param type the connection type - */ - public ControllerInfo(IpAddress ip, int port, String type) { - this.ip = ip; - this.port = port; - this.type = type; - } - - /** - * Information for contacting the controller, if some information - * is not contained in the target string because it's optional - * it's leaved as in the field declaration (default values). - * - * @param target column returned from ovsdb query - */ - public ControllerInfo(String target) { - String[] data = target.split(":"); - this.type = data[0]; - Preconditions.checkArgument(!data[0].contains("unix"), - "Unable to create controller info " + - "from {} because it's based " + - "on unix sockets", target); - if (data[0].startsWith("p")) { - if (data.length >= 2) { - this.port = Integer.parseInt(data[1]); - } - if (data.length == 3) { - this.ip = IpAddress.valueOf(data[2]); - } - } else { - this.ip = IpAddress.valueOf(data[1]); - if (data.length == 3) { - this.port = Integer.parseInt(data[2]); - } - } - } - - /** - * Exposes the ip address of the controller. - * - * @return IpAddress ip address - */ - public IpAddress ip() { - return ip; - } - - /** - * Exposes the tcp port of the controller. - * - * @return int tcp port - */ - public int port() { - return port; - } - - /** - * Exposes the type of the controller connection. - * - * @return String type - */ - public String type() { - return type; - } - - public String target() { - if (type.startsWith("p")) { - return type + ":" + port + ":" + ip; - } else { - return type + ":" + ip + ":" + port; - } - } - - - @Override - public int hashCode() { - return Objects.hash(ip, port, type); - } - - @Override - public boolean equals(Object toBeCompared) { - if (toBeCompared instanceof ControllerInfo) { - ControllerInfo controllerInfo = (ControllerInfo) toBeCompared; - if (controllerInfo.type().equals(this.type) - && controllerInfo.ip().equals(this.ip()) - && controllerInfo.port() == this.port) { - return true; - } - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultBridgeDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultBridgeDescription.java deleted file mode 100644 index 6a6f670f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultBridgeDescription.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import java.util.Objects; - -import org.onosproject.net.AbstractDescription; -import org.onosproject.net.DeviceId; -import org.onosproject.net.SparseAnnotations; - -import com.google.common.base.MoreObjects; - -/** - * The default implementation of bridge. - */ -public final class DefaultBridgeDescription extends AbstractDescription - implements BridgeDescription { - - private final BridgeName name; - private final DeviceId deviceId; - private final DeviceId controllerId; - - public DefaultBridgeDescription(BridgeName name, DeviceId controllerId, - DeviceId deviceId, - SparseAnnotations... annotations) { - super(annotations); - this.name = name; - this.deviceId = deviceId; - this.controllerId = controllerId; - } - - @Override - public BridgeName bridgeName() { - return name; - } - - @Override - public DeviceId deviceId() { - return deviceId; - } - - @Override - public DeviceId cotrollerDeviceId() { - return controllerId; - } - - @Override - public int hashCode() { - return Objects.hash(name, deviceId, controllerId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultBridgeDescription) { - final DefaultBridgeDescription that = (DefaultBridgeDescription) obj; - return this.getClass() == that.getClass() - && Objects.equals(this.name, that.name) - && Objects.equals(this.deviceId, that.deviceId) - && Objects.equals(this.controllerId, that.controllerId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).add("name", name) - .add("deviceId", deviceId).add("controllerId", controllerId) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultNextGroup.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultNextGroup.java deleted file mode 100644 index ef1f9de7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultNextGroup.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -/** - * Default implementation of a next group. - */ -public class DefaultNextGroup implements NextGroup { - - private final byte[] data; - - public DefaultNextGroup(byte[] data) { - this.data = data; - } - - @Override - public byte[] data() { - return data; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultTunnelDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultTunnelDescription.java deleted file mode 100644 index 7554a3cb..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/DefaultTunnelDescription.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import org.onosproject.net.AbstractDescription; -import org.onosproject.net.SparseAnnotations; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; - -/** - * Default implementation of immutable tunnel description entity. - */ -@Beta -public class DefaultTunnelDescription extends AbstractDescription - implements TunnelDescription { - - private final TunnelEndPoint src; - private final TunnelEndPoint dst; - private final Type type; - // which a tunnel match up - // tunnel producer - private final TunnelName tunnelName; // name of a tunnel - - /** - * Creates a tunnel description using the supplied information. - * - * @param src TunnelPoint source - * @param dst TunnelPoint destination - * @param type tunnel type - * @param tunnelName tunnel name - * @param annotations optional key/value annotations - */ - public DefaultTunnelDescription(TunnelEndPoint src, - TunnelEndPoint dst, Type type, - TunnelName tunnelName, - SparseAnnotations... annotations) { - super(annotations); - this.src = src; - this.dst = dst; - this.type = type; - this.tunnelName = tunnelName; - } - - @Override - public TunnelEndPoint src() { - return src; - } - - @Override - public TunnelEndPoint dst() { - return dst; - } - - @Override - public Type type() { - return type; - } - - @Override - public TunnelName tunnelName() { - return tunnelName; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("src", src()) - .add("dst", dst()) - .add("type", type()) - .add("tunnelName", tunnelName()) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionSelectorResolver.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionSelectorResolver.java deleted file mode 100644 index d45dd53c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionSelectorResolver.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.annotations.Beta; -import org.onosproject.net.driver.HandlerBehaviour; -import org.onosproject.net.flow.criteria.ExtensionSelector; -import org.onosproject.net.flow.criteria.ExtensionSelectorType; - -/** - * Provides access to the extension selectors implemented by this driver. - */ -@Beta -public interface ExtensionSelectorResolver extends HandlerBehaviour { - - /** - * Gets an extension selector instance of the specified type, if supported - * by the driver. - * - * @param type type of extension to get - * @return extension selector - * @throws UnsupportedOperationException if the extension type is not - * supported by this driver - */ - ExtensionSelector getExtensionSelector(ExtensionSelectorType type); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java deleted file mode 100644 index 8ca05af3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.annotations.Beta; -import org.onosproject.net.driver.HandlerBehaviour; -import org.onosproject.net.flow.instructions.ExtensionTreatment; -import org.onosproject.net.flow.instructions.ExtensionTreatmentType; - -/** - * Provides access to the extension treatments implemented by this driver. - */ -@Beta -public interface ExtensionTreatmentResolver extends HandlerBehaviour { - - /** - * Gets an extension treatment instance of the specified type, if supported - * by the driver. - * - * @param type type of extension to get - * @return extension instruction - * @throws UnsupportedOperationException if the extension type is not - * supported by this driver - */ - ExtensionTreatment getExtensionInstruction(ExtensionTreatmentType type); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/IpTunnelEndPoint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/IpTunnelEndPoint.java deleted file mode 100644 index 83ad4756..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/IpTunnelEndPoint.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import java.util.Objects; - -import com.google.common.annotations.Beta; -import org.onlab.packet.IpAddress; - -import com.google.common.base.MoreObjects; - -/** - * Represent for a tunnel point using ip address. - */ -@Beta -public final class IpTunnelEndPoint implements TunnelEndPoint { - - private final IpAddress ip; - - /** - * Public construction is prohibited. - * @param ip ip address - */ - private IpTunnelEndPoint(IpAddress ip) { - this.ip = ip; - } - - /** - * Create a IP tunnel end point. - * @param ip IP address - * @return IpTunnelEndPoint - */ - public static IpTunnelEndPoint ipTunnelPoint(IpAddress ip) { - return new IpTunnelEndPoint(ip); - } - - /** - * Returns IP address. - * @return IP address - */ - public IpAddress ip() { - return ip; - } - - @Override - public int hashCode() { - return Objects.hash(ip); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IpTunnelEndPoint) { - final IpTunnelEndPoint other = (IpTunnelEndPoint) obj; - return Objects.equals(this.ip, other.ip); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).add("ip", ip).toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/LambdaQuery.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/LambdaQuery.java deleted file mode 100644 index e3b1d963..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/LambdaQuery.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.annotations.Beta; -import org.onosproject.net.OchSignal; -import org.onosproject.net.PortNumber; -import org.onosproject.net.driver.HandlerBehaviour; - -import java.util.SortedSet; - -/** - * A HandlerBehaviour to retrieve available wavelength resources. - */ -@Beta -public interface LambdaQuery extends HandlerBehaviour { - - // Currently returns set of FLEX GridType ochSignal instances - /** - * Returns set of Lambda instances which can be used at the port. - * - * @param port to be checked for the available resources. - * @return Set of OchSignals which can be used at the port. - */ - SortedSet queryLambdas(PortNumber port); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/MplsQuery.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/MplsQuery.java deleted file mode 100644 index 0e9f466d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/MplsQuery.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.annotations.Beta; -import org.onosproject.net.PortNumber; -import org.onosproject.net.driver.HandlerBehaviour; - -/** - * A HandlerBehaviour to check the capability of MPLS. - */ -@Beta -public interface MplsQuery extends HandlerBehaviour { - - /** - * Indicates if MPLS can be used at the port. - - * @param port port to be checked for the capability - * @return true if MPLS can be used at the port, false otherwise. - */ - boolean isEnabled(PortNumber port); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/NextGroup.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/NextGroup.java deleted file mode 100644 index b5a3891c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/NextGroup.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -/** - * Opaque data type for carrying group-like information. - * Only relevant to a pipeliner driver. - */ -public interface NextGroup { - - /** - * Serialized form of the next group. - * @return a byte array. - */ - byte[] data(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/Pipeliner.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/Pipeliner.java deleted file mode 100644 index dcfc5883..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/Pipeliner.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.driver.HandlerBehaviour; -import org.onosproject.net.flowobjective.FilteringObjective; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.NextObjective; - -/** - * Behaviour for handling various pipelines. - */ -public interface Pipeliner extends HandlerBehaviour { - - /** - * Initializes the driver with context required for its operation. - * - * @param deviceId the deviceId - * @param context processing context - */ - void init(DeviceId deviceId, PipelinerContext context); - - /** - * Installs the filtering rules onto the device. - * - * @param filterObjective a filtering objective - */ - void filter(FilteringObjective filterObjective); - - /** - * Installs the forwarding rules onto the device. - * - * @param forwardObjective a forwarding objective - */ - void forward(ForwardingObjective forwardObjective); - - /** - * Installs the next hop elements into the device. - * - * @param nextObjective a next objectives - */ - void next(NextObjective nextObjective); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PipelinerContext.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PipelinerContext.java deleted file mode 100644 index d0ca42b1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PipelinerContext.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import org.onlab.osgi.ServiceDirectory; -import org.onosproject.net.flowobjective.FlowObjectiveStore; - -/** - * Processing context and supporting services for the pipeline behaviour. - */ -public interface PipelinerContext { - - /** - * Returns the service directory which can be used to obtain references - * to various supporting services. - * - * @return service directory - */ - ServiceDirectory directory(); - - /** - * Returns the Objective Store where data can be stored and retrieved. - * @return the flow objective store - */ - FlowObjectiveStore store(); - - // TODO: add means to store and access shared state -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PortAdmin.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PortAdmin.java deleted file mode 100644 index 141e27dc..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PortAdmin.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import org.onosproject.net.device.PortDescription; -import org.onosproject.net.driver.HandlerBehaviour; - -/** - * Means to administratively enable/disable a logical port at the device. - */ -public interface PortAdmin extends HandlerBehaviour { - - /** - * Enable/disable administratively a port. - * - * @param port a port description containing the desired port state - */ - void enable(PortDescription port); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java deleted file mode 100644 index 83dd99d8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.primitives.UnsignedInteger; -import org.onosproject.net.device.PortDescription; -import org.onosproject.net.driver.HandlerBehaviour; - -/** - * Means to configure a logical port at the device. - */ -public interface PortConfig extends HandlerBehaviour { - - /** - * Apply QoS configuration on a device. - * @param port a port description - * @param queueId an unsigned integer - */ - void applyQoS(PortDescription port, UnsignedInteger queueId); - - /** - * Remove a QoS configuration. - * @param port a port description - */ - void removeQoS(PortDescription port); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/QueueConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/QueueConfig.java deleted file mode 100644 index 22f3ecb7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/QueueConfig.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.primitives.UnsignedInteger; - -import java.util.Set; - -/** - * Means to alter a device's dataplane queues. - */ -public interface QueueConfig { - - /** - * Obtain all queues configured on a device. - * - * @return a list of queue descriptions - */ - Set getQueues(); - - /** - * Obtain a specific queue given a queue id. - * - * @param queueId an unsigned integer representing a queue id - * @return a queue description - */ - QueueInfo getQueue(UnsignedInteger queueId); - - /** - * Add a queue to a device. - * - * @param queue a queue description - */ - void addQueue(QueueInfo queue); - - /** - * Remove a queue from a device. - * - * @param queueId an unsigned integer - */ - void removeQueue(UnsignedInteger queueId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/QueueInfo.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/QueueInfo.java deleted file mode 100644 index 25852b36..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/QueueInfo.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.primitives.UnsignedInteger; - -/** - * Represents a dataplane queue. - */ -public class QueueInfo { - - public enum Type { - /** - * Supports burst and priority as well as min and max rates. - */ - FULL, - - /** - * Only support min and max rates. - */ - MINMAX - } - - private final UnsignedInteger queueId; - private final Type type; - private final long minRate; - private final long maxRate; - private final long burst; - private final long priority; - - public QueueInfo(UnsignedInteger queueId, Type type, long minRate, - long maxRate, long burst, long priority) { - this.queueId = queueId; - this.type = type; - this.minRate = minRate; - this.maxRate = maxRate; - this.burst = burst; - this.priority = priority; - } - - //TODO builder - // public static QueueInfoBuilder builder() {} -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelConfig.java deleted file mode 100644 index a1b97ffd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelConfig.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import java.util.Collection; - -import org.onosproject.net.driver.HandlerBehaviour; - -/** - * Behaviour for handling various drivers for tunnel configuration. - */ -public interface TunnelConfig extends HandlerBehaviour { - - /** - * Creates a tunnel on this device. - * - * @param tunnel tunnel descriptor - */ - @Deprecated - void createTunnel(TunnelDescription tunnel); - - /** - * Creates a tunnel interface on a given bridge of this device. - * - * @param bridgeName bridge name - * @param tunnel tunnel description - * @return true if succeeds, false otherwise - */ - boolean createTunnelInterface(BridgeName bridgeName, TunnelDescription tunnel); - - /** - * Removes a tunnel on this device. - * - * @param tunnel tunnel descriptor - */ - void removeTunnel(TunnelDescription tunnel); - - /** - * Updates a tunnel on this device. - * - * @param tunnel tunnel descriptor - */ - void updateTunnel(TunnelDescription tunnel); - - /** - * Returns tunnels created on this device. - * - * @return collection of tunnels - */ - Collection getTunnels(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java deleted file mode 100755 index b2fb6996..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import org.onosproject.net.Annotated; -import org.onosproject.net.Description; - -import com.google.common.annotations.Beta; - -/** - * Describes a tunnel. - */ -@Beta -public interface TunnelDescription extends Description, Annotated { - - /** - * Tunnel technology type. - */ - enum Type { - /** - * Signifies that this is a MPLS tunnel. - */ - MPLS, - /** - * Signifies that this is a L2 tunnel. - */ - VLAN, - /** - * Signifies that this is a DC L2 extension tunnel. - */ - VXLAN, - /** - * Signifies that this is a L3 tunnel. - */ - GRE, - /** - * Signifies that this is a L1 OTN tunnel. - */ - ODUK, - /** - * Signifies that this is a L0 OCH tunnel. - */ - OCH - } - - /** - * Returns the connection point source. - * - * @return tunnel source ConnectionPoint - */ - TunnelEndPoint src(); - - /** - * Returns the connection point destination. - * - * @return tunnel destination - */ - TunnelEndPoint dst(); - - /** - * Returns the tunnel type. - * - * @return tunnel type - */ - Type type(); - - /** - * Return the name of a tunnel. - * - * @return Tunnel Name - */ - TunnelName tunnelName(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelEndPoint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelEndPoint.java deleted file mode 100644 index c354c38d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelEndPoint.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.annotations.Beta; - -/** - * Represents for source end point or destination end point of a tunnel. Maybe a tunnel - * based on ConnectPoint, IpAddress, MacAddress and so on is built. - */ -@Beta -public interface TunnelEndPoint { - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelName.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelName.java deleted file mode 100644 index 9be26549..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/TunnelName.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.annotations.Beta; - -import java.util.Objects; - -/** - * Represents for a unique tunnel name. TunnelId is generated by ONOS while - * TunnelName is given by producer. The consumer can borrow tunnels with - * TunnelId or TunnelName. - */ -@Beta -public final class TunnelName { - private final String str; - - // Default constructor for serialization - private TunnelName(String tunnelName) { - this.str = tunnelName; - } - - - /** - * Creates a tunnel name using the supplied URI string. - * - * @param tunnelName tunnel name string - * @return tunnel name object - */ - public static TunnelName tunnelName(String tunnelName) { - return new TunnelName(tunnelName); - } - - /** - * The string of tunnel name. - * - * @return the string of tunnel name - */ - public String value() { - return str; - } - - @Override - public int hashCode() { - return Objects.hash(str); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TunnelName) { - final TunnelName that = (TunnelName) obj; - return this.getClass() == that.getClass() - && Objects.equals(this.str, that.str); - } - return false; - } - - @Override - public String toString() { - return str; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/VlanQuery.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/VlanQuery.java deleted file mode 100644 index a1057c90..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/VlanQuery.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - -import com.google.common.annotations.Beta; -import org.onosproject.net.PortNumber; -import org.onosproject.net.driver.HandlerBehaviour; - -/** - * A HandlerBehaviour to check the capability of VLAN. - */ -@Beta -public interface VlanQuery extends HandlerBehaviour { - - /** - * Indicates if VLAN can be used at the port. - * - * @param port port to be checked for the capability - * @return true if VLAN can be used at the port, false otherwise. - */ - boolean isEnabled(PortNumber port); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/package-info.java deleted file mode 100644 index f0a9a5e5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/behaviour/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Abstractions of various device configuration or device adaptation behaviours; - * counterpart to the device driver subsystem. - */ -package org.onosproject.net.behaviour; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java deleted file mode 100644 index 5f2c9f3a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/Config.java +++ /dev/null @@ -1,475 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterators; -import com.google.common.collect.Lists; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; - -import java.util.Collection; -import java.util.List; -import java.util.Set; -import java.util.function.Function; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Base abstraction of a configuration facade for a specific subject. Derived - * classes should keep all state in the specified JSON tree as that is the - * only state that will be distributed or persisted; this class is merely - * a facade for interacting with a particular facet of configuration on a - * given subject. - * - * @param type of subject - */ -@Beta -public abstract class Config { - - protected S subject; - protected String key; - - protected JsonNode node; - protected ObjectNode object; - protected ArrayNode array; - protected ObjectMapper mapper; - - protected ConfigApplyDelegate delegate; - - /** - * Indicator of whether a configuration JSON field is required. - */ - public enum FieldPresence { - /** - * Signifies that config field is an optional one. - */ - OPTIONAL, - - /** - * Signifies that config field is mandatory. - */ - MANDATORY - } - - /** - * Initializes the configuration behaviour with necessary context. - * - * @param subject configuration subject - * @param key configuration key - * @param node JSON node where configuration data is stored - * @param mapper JSON object mapper - * @param delegate delegate context - */ - public void init(S subject, String key, JsonNode node, ObjectMapper mapper, - ConfigApplyDelegate delegate) { - this.subject = checkNotNull(subject); - this.key = key; - this.node = checkNotNull(node); - this.object = node instanceof ObjectNode ? (ObjectNode) node : null; - this.array = node instanceof ArrayNode ? (ArrayNode) node : null; - this.mapper = checkNotNull(mapper); - this.delegate = checkNotNull(delegate); - } - - /** - * Indicates whether or not the backing JSON node contains valid data. - *

- * Default implementation returns true. - * Subclasses are expected to override this with their own validation. - *

- * - * @return true if the data is valid; false otherwise - */ - public boolean isValid() { - // TODO: figure out what assertions could be made in the base class - // NOTE: The thought is to have none, but instead to provide a set - // of predicates to allow configs to test validity of present fields, - // e.g.: - // isString(path) - // isBoolean(path) - // isNumber(path, [min, max]) - // isDecimal(path, [min, max]) - // isMacAddress(path) - // isIpAddress(path) - return true; - } - - /** - * Returns the specific subject to which this configuration pertains. - * - * @return configuration subject - */ - public S subject() { - return subject; - } - - /** - * Returns the configuration key. This is primarily aimed for use in - * composite JSON trees in external representations and has no bearing on - * the internal behaviours. - * - * @return configuration key - */ - public String key() { - return key; - } - - /** - * Returns the JSON node that contains the configuration data. - * - * @return JSON node backing the configuration - */ - public JsonNode node() { - return node; - } - - /** - * Applies any configuration changes made via this configuration. - */ - public void apply() { - delegate.onApply(this); - } - - - // Miscellaneous helpers for interacting with JSON - - /** - * Gets the specified property as a string. - * - * @param name property name - * @param defaultValue default value if property not set - * @return property value or default value - */ - protected String get(String name, String defaultValue) { - return object.path(name).asText(defaultValue); - } - - /** - * Sets the specified property as a string or clears it if null value given. - * - * @param name property name - * @param value new value or null to clear the property - * @return self - */ - protected Config setOrClear(String name, String value) { - if (value != null) { - object.put(name, value); - } else { - object.remove(name); - } - return this; - } - - /** - * Gets the specified property as a boolean. - * - * @param name property name - * @param defaultValue default value if property not set - * @return property value or default value - */ - protected boolean get(String name, boolean defaultValue) { - return object.path(name).asBoolean(defaultValue); - } - - /** - * Sets the specified property as a boolean or clears it if null value given. - * - * @param name property name - * @param value new value or null to clear the property - * @return self - */ - protected Config setOrClear(String name, Boolean value) { - if (value != null) { - object.put(name, value.booleanValue()); - } else { - object.remove(name); - } - return this; - } - - /** - * Gets the specified property as an integer. - * - * @param name property name - * @param defaultValue default value if property not set - * @return property value or default value - */ - protected int get(String name, int defaultValue) { - return object.path(name).asInt(defaultValue); - } - - /** - * Sets the specified property as an integer or clears it if null value given. - * - * @param name property name - * @param value new value or null to clear the property - * @return self - */ - protected Config setOrClear(String name, Integer value) { - if (value != null) { - object.put(name, value.intValue()); - } else { - object.remove(name); - } - return this; - } - - /** - * Gets the specified property as a long. - * - * @param name property name - * @param defaultValue default value if property not set - * @return property value or default value - */ - protected long get(String name, long defaultValue) { - return object.path(name).asLong(defaultValue); - } - - /** - * Sets the specified property as a long or clears it if null value given. - * - * @param name property name - * @param value new value or null to clear the property - * @return self - */ - protected Config setOrClear(String name, Long value) { - if (value != null) { - object.put(name, value.longValue()); - } else { - object.remove(name); - } - return this; - } - - /** - * Gets the specified property as a double. - * - * @param name property name - * @param defaultValue default value if property not set - * @return property value or default value - */ - protected double get(String name, double defaultValue) { - return object.path(name).asDouble(defaultValue); - } - - /** - * Sets the specified property as a double or clears it if null value given. - * - * @param name property name - * @param value new value or null to clear the property - * @return self - */ - protected Config setOrClear(String name, Double value) { - if (value != null) { - object.put(name, value.doubleValue()); - } else { - object.remove(name); - } - return this; - } - - /** - * Gets the specified property as an enum. - * - * @param name property name - * @param defaultValue default value if property not set - * @param enumClass the enum class - * @param type of enum - * @return property value or default value - */ - protected > E get(String name, E defaultValue, Class enumClass) { - return Enum.valueOf(enumClass, object.path(name).asText(defaultValue.toString())); - } - - /** - * Sets the specified property as a double or clears it if null value given. - * - * @param name property name - * @param value new value or null to clear the property - * @param type of enum - * @return self - */ - protected Config setOrClear(String name, E value) { - if (value != null) { - object.put(name, value.toString()); - } else { - object.remove(name); - } - return this; - } - - /** - * Gets the specified array property as a list of items. - * - * @param name property name - * @param function mapper from string to item - * @param type of item - * @return list of items - */ - protected List getList(String name, Function function) { - List list = Lists.newArrayList(); - ArrayNode arrayNode = (ArrayNode) object.path(name); - arrayNode.forEach(i -> list.add(function.apply(i.asText()))); - return list; - } - - /** - * Gets the specified array property as a list of items. - * - * @param name property name - * @param function mapper from string to item - * @param defaultValue default value if property not set - * @param type of item - * @return list of items - */ - protected List getList(String name, Function function, List defaultValue) { - List list = Lists.newArrayList(); - JsonNode jsonNode = object.path(name); - if (jsonNode.isMissingNode()) { - return defaultValue; - } - ArrayNode arrayNode = (ArrayNode) jsonNode; - arrayNode.forEach(i -> list.add(function.apply(i.asText()))); - return list; - } - - /** - * Sets the specified property as an array of items in a given collection or - * clears it if null is given. - * - * @param name propertyName - * @param collection collection of items - * @param type of items - * @return self - */ - protected Config setOrClear(String name, Collection collection) { - if (collection == null) { - object.remove(name); - } else { - ArrayNode arrayNode = mapper.createArrayNode(); - collection.forEach(i -> arrayNode.add(i.toString())); - object.set(name, arrayNode); - } - return this; - } - - /** - * Indicates whether only the specified fields are present in the backing JSON. - * - * @param allowedFields allowed field names - * @return true if all allowedFields are present; false otherwise - */ - protected boolean hasOnlyFields(String... allowedFields) { - Set fields = ImmutableSet.copyOf(allowedFields); - return !Iterators.any(object.fieldNames(), f -> !fields.contains(f)); - } - - /** - * Indicates whether the specified field holds a valid MAC address. - * - * @param field JSON field name - * @param presence specifies if field is optional or mandatory - * @return true if valid; false otherwise - * @throws IllegalArgumentException if field is present, but not valid MAC - */ - protected boolean isMacAddress(String field, FieldPresence presence) { - JsonNode node = object.path(field); - return isValid(node, presence, node.isTextual() && - MacAddress.valueOf(node.asText()) != null); - } - - /** - * Indicates whether the specified field holds a valid IP address. - * - * @param field JSON field name - * @param presence specifies if field is optional or mandatory - * @return true if valid; false otherwise - * @throws IllegalArgumentException if field is present, but not valid IP - */ - protected boolean isIpAddress(String field, FieldPresence presence) { - JsonNode node = object.path(field); - return isValid(node, presence, node.isTextual() && - IpAddress.valueOf(node.asText()) != null); - } - - /** - * Indicates whether the specified field holds a valid string value. - * - * @param field JSON field name - * @param presence specifies if field is optional or mandatory - * @param pattern optional regex pattern - * @return true if valid; false otherwise - * @throws IllegalArgumentException if field is present, but not valid MAC - */ - protected boolean isString(String field, FieldPresence presence, String... pattern) { - JsonNode node = object.path(field); - return isValid(node, presence, node.isTextual() && - (pattern.length > 0 && node.asText().matches(pattern[0]) || pattern.length < 1)); - } - - /** - * Indicates whether the specified field holds a valid number. - * - * @param field JSON field name - * @param presence specifies if field is optional or mandatory - * @param minMax optional min/max values - * @return true if valid; false otherwise - * @throws IllegalArgumentException if field is present, but not valid - */ - protected boolean isNumber(String field, FieldPresence presence, long... minMax) { - JsonNode node = object.path(field); - return isValid(node, presence, (node.isLong() || node.isInt()) && - (minMax.length > 0 && minMax[0] <= node.asLong() || minMax.length < 1) && - (minMax.length > 1 && minMax[1] > node.asLong() || minMax.length < 2)); - } - - /** - * Indicates whether the specified field holds a valid decimal number. - * - * @param field JSON field name - * @param presence specifies if field is optional or mandatory - * @param minMax optional min/max values - * @return true if valid; false otherwise - * @throws IllegalArgumentException if field is present, but not valid - */ - protected boolean isDecimal(String field, FieldPresence presence, double... minMax) { - JsonNode node = object.path(field); - return isValid(node, presence, (node.isDouble() || node.isFloat()) && - (minMax.length > 0 && minMax[0] <= node.asDouble() || minMax.length < 1) && - (minMax.length > 1 && minMax[1] > node.asDouble() || minMax.length < 2)); - } - - /** - * Indicates whether the node is present and of correct value or not - * mandatory and absent. - * - * @param node JSON node - * @param presence specifies if field is optional or mandatory - * @param correctValue true if the value is correct - * @return true if the field is as expected - */ - private boolean isValid(JsonNode node, FieldPresence presence, boolean correctValue) { - boolean isMandatory = presence == FieldPresence.MANDATORY; - return isMandatory && correctValue || !isMandatory && !node.isNull() || correctValue; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigApplyDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigApplyDelegate.java deleted file mode 100644 index 1160a097..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigApplyDelegate.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - -import com.google.common.annotations.Beta; - -/** - * Delegate for notification when configuration changes have been applied. - */ -@Beta -public interface ConfigApplyDelegate { - - /** - * Processes changes applied to the specified configuration. - * - * @param config changed configuration - */ - void onApply(Config config); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigFactory.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigFactory.java deleted file mode 100644 index 25a34025..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigFactory.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - - -import com.google.common.annotations.Beta; - -/** - * Base abstract factory for creating configurations for the specified subject type. - * - * @param type of subject - * @param type of configuration - */ -@Beta -public abstract class ConfigFactory> { - - private final SubjectFactory subjectFactory; - private final Class configClass; - private final String configKey; - private final boolean isList; - - /** - * Creates a new configuration factory for the specified class of subjects - * capable of generating the configurations of the specified class. The - * subject and configuration class keys are used merely as keys for use in - * composite JSON trees. - * - * @param subjectFactory subject factory - * @param configClass configuration class - * @param configKey configuration class key - */ - protected ConfigFactory(SubjectFactory subjectFactory, - Class configClass, String configKey) { - this(subjectFactory, configClass, configKey, false); - } - - /** - * Creates a new configuration factory for the specified class of subjects - * capable of generating the configurations of the specified class. The - * subject and configuration class keys are used merely as keys for use in - * composite JSON trees. - *

- * Note that configurations backed by JSON array are not easily extensible - * at the top-level as they are inherently limited to holding an ordered - * list of items. - *

- * - * @param subjectFactory subject factory - * @param configClass configuration class - * @param configKey configuration class key - * @param isList true to indicate backing by JSON array - */ - protected ConfigFactory(SubjectFactory subjectFactory, - Class configClass, String configKey, - boolean isList) { - this.subjectFactory = subjectFactory; - this.configClass = configClass; - this.configKey = configKey; - this.isList = isList; - } - - /** - * Returns the class of the subject to which this factory applies. - * - * @return subject type - */ - public SubjectFactory subjectFactory() { - return subjectFactory; - } - - /** - * Returns the class of the configuration which this factory generates. - * - * @return configuration type - */ - public Class configClass() { - return configClass; - } - - /** - * Returns the unique key (within subject class) of this configuration. - * This is primarily aimed for use in composite JSON trees in external - * representations and has no bearing on the internal behaviours. - * - * @return configuration key - */ - public String configKey() { - return configKey; - } - - /** - * Creates a new but uninitialized configuration. Framework will initialize - * the configuration via {@link Config#init} method. - * - * @return new uninitialized configuration - */ - public abstract C createConfig(); - - /** - * Indicates whether the configuration is a list and should be backed by - * a JSON array rather than JSON object. - * - * @return true if backed by JSON array - */ - public boolean isList() { - return isList; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigOperator.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigOperator.java deleted file mode 100644 index 505e8b3b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/ConfigOperator.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.config; - -/** - * An interface signifying a class that implements network configuration - * information from multiple sources. There is a natural ordering to the - * precedence of information, depending on its source: - *
    - *
  1. Intents (from applications), which override
  2. - *
  3. Configs (from the network configuration subsystem), which override
  4. - *
  5. Descriptions (from southbound)
  6. - *
- * i.e., for a field representing the same attribute, the value from a Config - * entity will be used over that from the Description. - */ -public interface ConfigOperator { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigEvent.java deleted file mode 100644 index ee9ceadf..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigEvent.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - -import org.onosproject.event.AbstractEvent; - -/** - * Describes network configuration event. - */ -public class NetworkConfigEvent extends AbstractEvent { - - private final Class configClass; - - /** - * Type of network configuration events. - */ - public enum Type { - /** - * Signifies that a network configuration was registered. - */ - CONFIG_REGISTERED, - - /** - * Signifies that a network configuration was unregistered. - */ - CONFIG_UNREGISTERED, - - /** - * Signifies that network configuration was added. - */ - CONFIG_ADDED, - - /** - * Signifies that network configuration was updated. - */ - CONFIG_UPDATED, - - /** - * Signifies that network configuration was removed. - */ - CONFIG_REMOVED - } - - /** - * Creates an event of a given type and for the specified subject and the - * current time. - * - * @param type event type - * @param subject event subject - * @param configClass configuration class - */ - public NetworkConfigEvent(Type type, Object subject, Class configClass) { - super(type, subject); - this.configClass = configClass; - } - - /** - * Creates an event of a given type and for the specified subject and time. - * - * @param type device event type - * @param subject event subject - * @param configClass configuration class - * @param time occurrence time - */ - public NetworkConfigEvent(Type type, Object subject, Class configClass, long time) { - super(type, subject, time); - this.configClass = configClass; - } - - /** - * Returns the class of configuration that has been changed. - * - * @return configuration class - */ - public Class configClass() { - return configClass; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigListener.java deleted file mode 100644 index 73177755..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving network configuration related events. - */ -public interface NetworkConfigListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigRegistry.java deleted file mode 100644 index b4937d74..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigRegistry.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - -import com.google.common.annotations.Beta; - -import java.util.Set; - -/** - * Service for tracking network configuration factories. It is the basis for - * extensibility to allow various core subsystems or apps to register their - * own configuration factories that permit use to inject additional meta - * information about how various parts of the network should be viewed and - * treated. - */ -@Beta -public interface NetworkConfigRegistry extends NetworkConfigService { - - /** - * Registers the specified configuration factory. - * - * @param configFactory configuration factory - */ - void registerConfigFactory(ConfigFactory configFactory); - - /** - * Unregisters the specified configuration factory. - * - * @param configFactory configuration factory - */ - void unregisterConfigFactory(ConfigFactory configFactory); - - /** - * Returns set of all registered configuration factories. - * - * @return set of config factories - */ - Set getConfigFactories(); - - /** - * Returns set of all configuration factories registered for the specified - * class of subject. - * - * @param subjectClass subject class - * @param type of subject - * @param type of configuration - * @return set of config factories - */ - > Set> getConfigFactories(Class subjectClass); - - /** - * Returns the configuration factory that produces the specified class of - * configurations. - * - * @param configClass configuration class - * @param type of subject - * @param type of configuration - * @return config factory - */ - > ConfigFactory getConfigFactory(Class configClass); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java deleted file mode 100644 index f1b22c41..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.annotations.Beta; -import org.onosproject.event.ListenerService; - -import java.util.Set; - -/** - * Service for tracking network configurations which specify how the discovered - * network information should be interpreted and how the core or applications - * should act on or configure the network. - */ -@Beta -public interface NetworkConfigService - extends ListenerService { - - /** - * Returns the set of subject classes for which configuration may be - * available. - * - * @return set of subject classes - */ - Set getSubjectClasses(); - - /** - * Returns the subject factory with the specified key. - * - * @param subjectClassKey subject class key - * @return subject class - */ - SubjectFactory getSubjectFactory(String subjectClassKey); - - /** - * Returns the subject factory for the specified class. - * - * @param subjectClass subject class - * @return subject class factory - */ - SubjectFactory getSubjectFactory(Class subjectClass); - - /** - * Returns the configuration class with the specified key. - * - * @param subjectClassKey subject class key - * @param configKey subject class name - * @return subject class - */ - Class getConfigClass(String subjectClassKey, String configKey); - - /** - * Returns the set of subjects for which some configuration is available. - * - * @param subjectClass subject class - * @param type of subject - * @return set of configured subjects - */ - Set getSubjects(Class subjectClass); - - /** - * Returns the set of subjects for which the specified configuration is - * available. - * - * @param subjectClass subject class - * @param configClass configuration class - * @param type of subject - * @param type of configuration - * @return set of configured subjects - */ - > Set getSubjects(Class subjectClass, Class configClass); - - /** - * Returns all configurations for the specified subject. - * - * @param subject configuration subject - * @param type of subject - * @return set of configurations - */ - Set> getConfigs(S subject); - - /** - * Returns the configuration for the specified subject and configuration - * class if one is available; null otherwise. - * - * @param subject configuration subject - * @param configClass configuration class - * @param type of subject - * @param type of configuration - * @return configuration or null if one is not available - */ - > C getConfig(S subject, Class configClass); - - /** - * Creates a new configuration for the specified subject and configuration - * class. If one already exists, it is simply returned. - * - * @param subject configuration subject - * @param configClass configuration class - * @param type of subject - * @param type of configuration - * @return configuration or null if one is not available - */ - > C addConfig(S subject, Class configClass); - - /** - * Applies configuration for the specified subject and configuration - * class using the raw JSON node. If configuration already exists, it - * will be updated. - * - * @param subject configuration subject - * @param configClass configuration class - * @param json raw JSON node containing the configuration data - * @param type of subject - * @param type of configuration - * @return configuration or null if one is not available - * @throws IllegalArgumentException if the supplied JSON node contains - * invalid data - */ - > C applyConfig(S subject, Class configClass, - JsonNode json); - - /** - * Clears any configuration for the specified subject and configuration - * class. If one does not exist, this call has no effect. - * - * @param subject configuration subject - * @param configClass configuration class - * @param type of subject - * @param type of configuration - */ - > void removeConfig(S subject, Class configClass); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java deleted file mode 100644 index 9be4b120..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - -import com.fasterxml.jackson.databind.JsonNode; -import org.onosproject.store.Store; - -import java.util.Set; - -/** - * Mechanism for distributing and storing network configuration information. - */ -public interface NetworkConfigStore extends Store { - - /** - * Adds a new configuration factory. - * - * @param configFactory configuration factory to add - */ - void addConfigFactory(ConfigFactory configFactory); - - /** - * Removes a configuration factory. - * - * @param configFactory configuration factory to remove - */ - void removeConfigFactory(ConfigFactory configFactory); - - /** - * Returns the configuration factory for the specified configuration class. - * - * @param configClass configuration class - * @param type of subject - * @param type of configuration - * @return configuration factory or null - */ - > ConfigFactory getConfigFactory(Class configClass); - - /** - * Returns set of subjects of the specified class, which have some - * network configuration associated with them. - * - * @param subjectClass subject class - * @param type of subject - * @return set of subject - */ - Set getSubjects(Class subjectClass); - - /** - * Returns set of subjects of the specified class, which have the - * specified class of network configuration associated with them. - * - * @param subjectClass subject class - * @param configClass configuration class - * @param type of subject - * @param type of configuration - * @return set of subject - */ - > Set getSubjects(Class subjectClass, Class configClass); - - /** - * Returns set of configuration classes available for the specified subject. - * - * @param subject configuration subject - * @param type of subject - * @return set of configuration classes - */ - Set>> getConfigClasses(S subject); - - /** - * Get the configuration of the given class and for the specified subject. - * - * @param subject configuration subject - * @param configClass configuration class - * @param type of subject - * @param type of configuration - * @return configuration object - */ - > C getConfig(S subject, Class configClass); - - /** - * Creates a new configuration of the given class for the specified subject. - * - * @param subject configuration subject - * @param configClass configuration class - * @param type of subject - * @param type of configuration - * @return configuration object - */ - > C createConfig(S subject, Class configClass); - - /** - * Applies configuration for the specified subject and configuration - * class using the raw JSON object. If configuration already exists, it - * will be updated. - * - * @param subject configuration subject - * @param configClass configuration class - * @param json raw JSON node containing the configuration data - * @param type of subject - * @param type of configuration - * @return configuration object - * @throws IllegalArgumentException if the supplied JSON node contains - * invalid data - */ - > C applyConfig(S subject, Class configClass, - JsonNode json); - - /** - * Clears the configuration of the given class for the specified subject. - * - * @param subject configuration subject - * @param configClass configuration class - * @param type of subject - * @param type of configuration - */ - > void clearConfig(S subject, Class configClass); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStoreDelegate.java deleted file mode 100644 index 15d3d3e8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - -import org.onosproject.store.StoreDelegate; - -/** - * Network configuration store delegate abstraction. - */ -public interface NetworkConfigStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/SubjectFactory.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/SubjectFactory.java deleted file mode 100644 index f992d727..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/SubjectFactory.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - - -import com.google.common.annotations.Beta; - -/** - * Base abstract factory for creating configuration subjects from their - * string key image. - * - * @param subject class - */ -@Beta -public abstract class SubjectFactory { - - private final Class subjectClass; - private final String subjectClassKey; - - /** - * Creates a new configuration factory for the specified class of subjects - * capable of generating the configurations of the specified class. The - * subject and configuration class keys are used merely as keys for use in - * composite JSON trees. - * - * @param subjectClass subject class - * @param subjectClassKey subject class key - */ - protected SubjectFactory(Class subjectClass, String subjectClassKey) { - this.subjectClass = subjectClass; - this.subjectClassKey = subjectClassKey; - } - - /** - * Returns the class of the subject to which this factory applies. - * - * @return subject type - */ - public Class subjectClass() { - return subjectClass; - } - - /** - * Returns the unique key of this configuration subject class. - * This is primarily aimed for use in composite JSON trees in external - * representations and has no bearing on the internal behaviours. - * - * @return configuration key - */ - public String subjectClassKey() { - return subjectClassKey; - } - - /** - * Returns the unique key of the specified configuration subject. - * This is primarily aimed for use in composite JSON trees in external - * representations and has no bearing on the internal behaviours. - * - * @param subject specific subject - * @return subject key - */ - public String subjectKey(S subject) { - return subject.toString(); - } - - /** - * Creates a configuration subject from its key image. - * - * @param subjectKey subject class key - * @return configuration subject - */ - public abstract S createSubject(String subjectKey); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/AllowedEntityConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/AllowedEntityConfig.java deleted file mode 100644 index 6e6663c4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/AllowedEntityConfig.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config.basics; - -import org.onosproject.net.config.Config; - -/** - * Base abstraction for network entities for which admission into control - * domain can be selectively configured, e.g. devices, end-stations, links - */ -public abstract class AllowedEntityConfig extends Config { - - private static final String ALLOWED = "allowed"; - - /** - * Indicates whether the element is allowed for admission into the control - * domain. - * - * @return true if element is allowed - */ - public boolean isAllowed() { - return get(ALLOWED, true); - } - - /** - * Specifies whether the element is to be allowed for admission into the - * control domain. - * - * @param isAllowed true to allow; false to forbid; null to clear - * @return self - */ - public AllowedEntityConfig isAllowed(Boolean isAllowed) { - return (AllowedEntityConfig) setOrClear(ALLOWED, isAllowed); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java deleted file mode 100644 index afde9a9e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config.basics; - -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; - -/** - * Basic configuration for network infrastructure devices. - */ -public class BasicDeviceConfig extends BasicElementConfig { - - public static final String TYPE = "type"; - public static final String DRIVER = "driver"; - public static final String MANAGEMENT_ADDRESS = "managementAddress"; - - /** - * Returns the device type. - * - * @return device type override - */ - public Device.Type type() { - return get(TYPE, Device.Type.SWITCH, Device.Type.class); - } - - /** - * Sets the device type. - * - * @param type device type override - * @return self - */ - public BasicDeviceConfig type(Device.Type type) { - return (BasicDeviceConfig) setOrClear(TYPE, type); - } - - /** - * Returns the device driver name. - * - * @return driver name of null if not set - */ - public String driver() { - return get(DRIVER, subject.toString()); - } - - /** - * Sets the driver name. - * - * @param driverName new driver name; null to clear - * @return self - */ - public BasicElementConfig driver(String driverName) { - return (BasicElementConfig) setOrClear(DRIVER, driverName); - } - - /** - * Returns the device management ip (ip:port). - * - * @return device management address (ip:port) or null if not set - */ - public String managementAddress() { - return get(MANAGEMENT_ADDRESS, null); - } - - /** - * Sets the driver name. - * - * @param managementAddress new device management address (ip:port); null to clear - * @return self - */ - public BasicElementConfig managementAddress(String managementAddress) { - return (BasicElementConfig) setOrClear(MANAGEMENT_ADDRESS, managementAddress); - } - - // TODO: device port meta-data to be configured via BasicPortsConfig - // TODO: device credentials/keys - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java deleted file mode 100644 index 7b3248c9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config.basics; - -/** - * Basic configuration for network elements, e.g. devices, hosts. Such elements - * can have a friendly name, geo-coordinates, logical rack coordinates and - * an owner entity. - */ -public abstract class BasicElementConfig extends AllowedEntityConfig { - - public static final String NAME = "name"; - - public static final String LATITUDE = "latitude"; - public static final String LONGITUDE = "longitude"; - - public static final String RACK_ADDRESS = "rackAddress"; - public static final String OWNER = "owner"; - - protected static final double DEFAULT_COORD = -1.0; - - /** - * Returns friendly label for the element. - * - * @return friendly label or element id itself if not set - */ - public String name() { - return get(NAME, subject.toString()); - } - - /** - * Sets friendly label for the element. - * - * @param name new friendly label; null to clear - * @return self - */ - public BasicElementConfig name(String name) { - return (BasicElementConfig) setOrClear(NAME, name); - } - - /** - * Returns element latitude. - * - * @return element latitude; -1 if not set - */ - public double latitude() { - return get(LATITUDE, DEFAULT_COORD); - } - - /** - * Sets the element latitude. - * - * @param latitude new latitude; null to clear - * @return self - */ - public BasicElementConfig latitude(Double latitude) { - return (BasicElementConfig) setOrClear(LATITUDE, latitude); - } - - /** - * Returns element latitude. - * - * @return element latitude; -1 if not set - */ - public double longitude() { - return get(LONGITUDE, DEFAULT_COORD); - } - - /** - * Sets the element longitude. - * - * @param longitude new longitude; null to clear - * @return self - */ - public BasicElementConfig longitude(Double longitude) { - return (BasicElementConfig) setOrClear(LONGITUDE, longitude); - } - - /** - * Returns the element rack address. - * - * @return rack address; null if not set - */ - public String rackAddress() { - return get(RACK_ADDRESS, null); - } - - /** - * Sets element rack address. - * - * @param address new rack address; null to clear - * @return self - */ - public BasicElementConfig rackAddress(String address) { - return (BasicElementConfig) setOrClear(RACK_ADDRESS, address); - } - - /** - * Returns owner of the element. - * - * @return owner or null if not set - */ - public String owner() { - return get(OWNER, null); - } - - /** - * Sets the owner of the element. - * - * @param owner new owner; null to clear - * @return self - */ - public BasicElementConfig owner(String owner) { - return (BasicElementConfig) setOrClear(OWNER, owner); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicFeatureConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicFeatureConfig.java deleted file mode 100644 index fcf24bc6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicFeatureConfig.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config.basics; - -import org.onosproject.net.config.Config; - -/** - * Base abstraction for configuring feature on subject. - * - * @param Subject type - */ -public abstract class BasicFeatureConfig extends Config { - - private static final String ENABLED = "enabled"; - - private final boolean defaultValue; - - protected BasicFeatureConfig(boolean defaultValue) { - this.defaultValue = defaultValue; - } - - /** - * Indicates whether the feature for the subject is enabled. - * - * @return true if feature is enabled - */ - public boolean enabled() { - return get(ENABLED, defaultValue); - } - - /** - * Specifies whether the feature for the subject is to be enabled. - * - * @param enabled true to enable; false to disable; null to clear - * @return self - */ - public BasicFeatureConfig enabled(Boolean enabled) { - return (BasicFeatureConfig) setOrClear(ENABLED, enabled); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java deleted file mode 100644 index 92946312..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config.basics; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import org.onlab.packet.IpAddress; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.HostId; -import java.util.HashSet; -import java.util.Set; - -/** - * Basic configuration for network end-station hosts. - */ -public class BasicHostConfig extends BasicElementConfig { - private static final String IPS = "ips"; - private static final String LOCATION = "location"; - - @Override - public boolean isValid() { - return hasOnlyFields(IPS, LOCATION) && - this.location() != null && - this.ipAddresses() != null; - } - - /** - * Gets location of the host. - * - * @return location of the host. Or null if not specified with correct format. - */ - public ConnectPoint location() { - String location = get(LOCATION, null); - - if (location != null) { - try { - return ConnectPoint.deviceConnectPoint(location); - } catch (Exception e) { - return null; - } - } - return null; - } - - /** - * Sets the location of the host. - * - * @param location location of the host. - * @return the config of the host. - */ - public BasicHostConfig setLocation(String location) { - return (BasicHostConfig) setOrClear(LOCATION, location); - } - - /** - * Gets IP addresses of the host. - * - * @return IP addresses of the host. Or null if not specified with correct format. - */ - public Set ipAddresses() { - HashSet ipAddresses = new HashSet<>(); - if (object.has(IPS)) { - ArrayNode ipNodes = (ArrayNode) object.path(IPS); - try { - ipNodes.forEach(ipNode -> { - ipAddresses.add(IpAddress.valueOf(ipNode.asText())); - }); - return ipAddresses; - } catch (Exception e) { - return null; - } - } - return null; - } - - /** - * Sets the IP addresses of the host. - * - * @param ipAddresses IP addresses of the host. - * @return the config of the host. - */ - public BasicHostConfig setIps(Set ipAddresses) { - return (BasicHostConfig) setOrClear(IPS, ipAddresses); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java deleted file mode 100644 index ed807b8f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config.basics; - -import com.fasterxml.jackson.databind.JsonNode; -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; - -import java.time.Duration; - -import static org.onosproject.net.config.Config.FieldPresence.OPTIONAL; - -/** - * Basic configuration for network infrastructure link. - */ -public class BasicLinkConfig extends AllowedEntityConfig { - - public static final String TYPE = "type"; - public static final String METRIC = "metric"; - public static final String LATENCY = "latency"; - public static final String BANDWIDTH = "bandwidth"; - public static final String IS_DURABLE = "durable"; - - @Override - public boolean isValid() { - return hasOnlyFields(TYPE, METRIC, LATENCY, BANDWIDTH, IS_DURABLE) && - isNumber(METRIC, OPTIONAL) && isNumber(LATENCY, OPTIONAL) && - isNumber(BANDWIDTH, OPTIONAL); - } - - /** - * Returns the link type. - * - * @return link type override - */ - public Link.Type type() { - return get(TYPE, Link.Type.DIRECT, Link.Type.class); - } - - /** - * Sets the link type. - * - * @param type link type override - * @return self - */ - public BasicLinkConfig type(Link.Type type) { - return (BasicLinkConfig) setOrClear(TYPE, type); - } - - /** - * Returns link metric value for use by - * {@link org.onosproject.net.topology.MetricLinkWeight} function. - * - * @return link metric; -1 if not set - */ - public double metric() { - return get(METRIC, -1); - } - - /** - * Sets the link metric for use by - * {@link org.onosproject.net.topology.MetricLinkWeight} function. - * - * @param metric new metric; null to clear - * @return self - */ - public BasicLinkConfig metric(Double metric) { - return (BasicLinkConfig) setOrClear(METRIC, metric); - } - - /** - * Returns link latency in terms of nanos. - * - * @return link latency; -1 if not set - */ - public Duration latency() { - return Duration.ofNanos(get(LATENCY, -1)); - } - - /** - * Sets the link latency. - * - * @param latency new latency; null to clear - * @return self - */ - public BasicLinkConfig latency(Duration latency) { - Long nanos = latency == null ? null : latency.toNanos(); - return (BasicLinkConfig) setOrClear(LATENCY, nanos); - } - - /** - * Returns link bandwidth in terms of Mbps. - * - * @return link bandwidth; -1 if not set - */ - public long bandwidth() { - return get(BANDWIDTH, -1); - } - - /** - * Sets the link bandwidth. - * - * @param bandwidth new bandwidth; null to clear - * @return self - */ - public BasicLinkConfig bandwidth(Long bandwidth) { - return (BasicLinkConfig) setOrClear(BANDWIDTH, bandwidth); - } - - /** - * Returns if link is durable in the network model or not. - * - * @return true for durable, false otherwise - */ - public Boolean isDurable() { - JsonNode res = object.path(IS_DURABLE); - if (res.isMissingNode()) { - return null; - } - return res.asBoolean(); - } - - /** - * Sets durability for this link. - * - * @param isDurable true for durable, false otherwise - * @return this BasicLinkConfig - */ - public BasicLinkConfig isDurable(Boolean isDurable) { - return (BasicLinkConfig) setOrClear(IS_DURABLE, isDurable); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/OpticalPortConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/OpticalPortConfig.java deleted file mode 100644 index dfb494d6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/OpticalPortConfig.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config.basics; - -import java.util.Optional; - -import org.onosproject.net.config.Config; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Port; - -import com.fasterxml.jackson.databind.JsonNode; - - -/** - * Configurations for an optical port on a device. - */ -public class OpticalPortConfig extends Config { - // optical type {OMS, OCH, ODUClt, fiber} - public static final String TYPE = "type"; - - // port name. "name" is the alphanumeric name of the port, but "port" refers - // to the port number used as a name string (i.e., for ports without - // alphanumeric names). - public static final String NAME = "name"; - public static final String PORT = "port"; - public static final String STATIC_PORT = "staticPort"; - public static final String STATIC_LAMBDA = "staticLambda"; - - // **Linc-OE : remove if it's not needed after all.** - public static final String SPEED = "speed"; - - /** - * Returns the Enum value representing the type of port. - * - * @return the port type, or null if invalid or unset - */ - public Port.Type type() { - JsonNode type = object.path(TYPE); - if (type.isMissingNode()) { - return null; - } - return Port.Type.valueOf(type.asText()); - } - - /** - * Returns the port name associated with this port configuration. The Name - * is an alphanumeric string. - * - * @return the name of this port, else, an empty string - */ - public String name() { - return getStringValue(NAME); - } - - /** - * Returns a stringified representation of the port number, configured in - * some port types without an alphanumeric name as the port name. - * - * @return A string representation of the port number - */ - public String numberName() { - return getStringValue(PORT); - } - - /** - * Returns the string-representation of name of the output port. This is - * usually an OMS port for an OCH input ports, or an OCH port for ODU input - * ports. - * - * @return the name of this port, else, an empty string - */ - public String staticPort() { - return getStringValue(STATIC_PORT); - } - - private String getStringValue(String field) { - JsonNode name = object.path(field); - return name.isMissingNode() ? "" : name.asText(); - } - - /** - * Returns the output lambda configured for this port. The lambda value is - * expressed as a frequency value. If the port type doesn't have a notion of - * lambdas, this returns an empty Optional. - * - * @return an Optional that may contain a frequency value. - */ - public Optional staticLambda() { - JsonNode sl = object.path(STATIC_LAMBDA); - if (sl.isMissingNode()) { - return Optional.empty(); - } - return Optional.of(sl.asLong()); - } - - /** - * Returns the port speed configured for this port. If the port doesn't have - * a notion of speed, this returns an empty Optional. - * - * @return a port speed value whose default is 0. - */ - public Optional speed() { - JsonNode s = object.path(SPEED); - if (s.isMissingNode()) { - return Optional.empty(); - } - return Optional.of(s.asInt()); - } - - /** - * Sets the port type, or updates it if it's already set. A null argument removes - * this field. - * - * @param type the port type - * @return this OpticalPortConfig instance - */ - public OpticalPortConfig portType(Port.Type type) { - // if unspecified, ideally fall back on FIBER or PACKET. - String pt = (type == null) ? null : type.toString(); - return (OpticalPortConfig) setOrClear(TYPE, pt); - } - - /** - * Sets the port name, or updates it if already set. A null argument removes - * this field. - * - * @param name the port's name - * @return this OpticalPortConfig instance - */ - public OpticalPortConfig portName(String name) { - return (OpticalPortConfig) setOrClear(NAME, name); - } - - /** - * Sets the port name from port number, or updates it if already set. A null - * argument removes this field. - * - * @param name the port number, to be used as name - * @return this OpticalPortConfig instance - */ - public OpticalPortConfig portNumberName(Long name) { - return (OpticalPortConfig) setOrClear(PORT, name); - } - - /** - * Sets the output port name, or updates it if already set. A null argument - * removes this field. - * - * @param name the output port's name - * @return this OpticalPortConfig instance - */ - public OpticalPortConfig staticPort(String name) { - return (OpticalPortConfig) setOrClear(STATIC_PORT, name); - } - - /** - * Sets the output lambda index, or updates it if already set. A null argument - * removes this field. - * - * @param index the output lambda - * @return this OpticalPortConfig instance - */ - public OpticalPortConfig staticLambda(Long index) { - return (OpticalPortConfig) setOrClear(STATIC_LAMBDA, index); - } - - /** - * Sets the port speed, or updates it if already set. A null argument - * removes this field. - * - * @param bw the port bandwidth - * @return this OpticalPortConfig instance - */ - public OpticalPortConfig speed(Integer bw) { - return (OpticalPortConfig) setOrClear(SPEED, bw); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/SubjectFactories.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/SubjectFactories.java deleted file mode 100644 index 311566b3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/SubjectFactories.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config.basics; - -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.HostId; -import org.onosproject.net.LinkKey; -import org.onosproject.net.config.SubjectFactory; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Set of subject factories for potential configuration subjects. - */ -public final class SubjectFactories { - - // Construction forbidden - private SubjectFactories() { - } - - // Required for resolving application identifiers - private static CoreService coreService; - - public static final SubjectFactory APP_SUBJECT_FACTORY = - new SubjectFactory(ApplicationId.class, "apps") { - @Override - public ApplicationId createSubject(String key) { - return coreService.registerApplication(key); - } - @Override - public String subjectKey(ApplicationId subject) { - return subject.name(); - } - }; - - public static final SubjectFactory DEVICE_SUBJECT_FACTORY = - new SubjectFactory(DeviceId.class, "devices") { - @Override - public DeviceId createSubject(String key) { - return DeviceId.deviceId(key); - } - }; - - public static final SubjectFactory CONNECT_POINT_SUBJECT_FACTORY = - new SubjectFactory(ConnectPoint.class, "ports") { - @Override - public ConnectPoint createSubject(String key) { - return ConnectPoint.deviceConnectPoint(key); - } - @Override - public String subjectKey(ConnectPoint subject) { - return key(subject); - } - }; - - public static final SubjectFactory HOST_SUBJECT_FACTORY = - new SubjectFactory(HostId.class, "hosts") { - @Override - public HostId createSubject(String key) { - return HostId.hostId(key); - } - }; - - public static final SubjectFactory LINK_SUBJECT_FACTORY = - new SubjectFactory(LinkKey.class, "links") { - @Override - public LinkKey createSubject(String key) { - String[] cps = key.split("-"); - checkArgument(cps.length == 2, "Incorrect link key format: %s", key); - return LinkKey.linkKey(ConnectPoint.deviceConnectPoint(cps[0]), - ConnectPoint.deviceConnectPoint(cps[1])); - } - @Override - public String subjectKey(LinkKey subject) { - return key(subject.src()) + "-" + key(subject.dst()); - } - }; - - /** - * Provides reference to the core service, which is required for - * application subject factory. - * - * @param service core service reference - */ - public static void setCoreService(CoreService service) { - coreService = service; - } - - private static String key(ConnectPoint subject) { - return subject.deviceId() + "/" + subject.port(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/package-info.java deleted file mode 100644 index 4d0f27e9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Various basic builtin network configurations. - */ -package org.onosproject.net.config.basics; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/package-info.java deleted file mode 100644 index f300717a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Subsystem for tracking network environment configuration. - */ -package org.onosproject.net.config; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java deleted file mode 100644 index 9074792c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultDeviceDescription.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.AbstractDescription; -import org.onosproject.net.SparseAnnotations; -import org.onlab.packet.ChassisId; - -import java.net.URI; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.net.Device.Type; -import com.google.common.base.Objects; - -/** - * Default implementation of immutable device description entity. - */ -public class DefaultDeviceDescription extends AbstractDescription - implements DeviceDescription { - private final URI uri; - private final Type type; - private final String manufacturer; - private final String hwVersion; - private final String swVersion; - private final String serialNumber; - private final ChassisId chassisId; - - /** - * Creates a device description using the supplied information. - * - * @param uri device URI - * @param type device type - * @param manufacturer device manufacturer - * @param hwVersion device HW version - * @param swVersion device SW version - * @param serialNumber device serial number - * @param chassis chassis id - * @param annotations optional key/value annotations map - */ - public DefaultDeviceDescription(URI uri, Type type, String manufacturer, - String hwVersion, String swVersion, - String serialNumber, ChassisId chassis, - SparseAnnotations... annotations) { - super(annotations); - this.uri = checkNotNull(uri, "Device URI cannot be null"); - this.type = checkNotNull(type, "Device type cannot be null"); - this.manufacturer = manufacturer; - this.hwVersion = hwVersion; - this.swVersion = swVersion; - this.serialNumber = serialNumber; - this.chassisId = chassis; - } - - /** - * Creates a device description using the supplied information. - * @param base DeviceDescription to basic information - * @param annotations Annotations to use. - */ - public DefaultDeviceDescription(DeviceDescription base, - SparseAnnotations... annotations) { - this(base.deviceUri(), base.type(), base.manufacturer(), - base.hwVersion(), base.swVersion(), base.serialNumber(), - base.chassisId(), annotations); - } - - /** - * Creates a device description using the supplied information. - * @param base DeviceDescription to basic information (except for type) - * @param type device type - * @param annotations Annotations to use. - */ - public DefaultDeviceDescription(DeviceDescription base, Type type, SparseAnnotations... annotations) { - this(base.deviceUri(), type, base.manufacturer(), - base.hwVersion(), base.swVersion(), base.serialNumber(), - base.chassisId(), annotations); - } - - @Override - public URI deviceUri() { - return uri; - } - - @Override - public Type type() { - return type; - } - - @Override - public String manufacturer() { - return manufacturer; - } - - @Override - public String hwVersion() { - return hwVersion; - } - - @Override - public String swVersion() { - return swVersion; - } - - @Override - public String serialNumber() { - return serialNumber; - } - - @Override - public ChassisId chassisId() { - return chassisId; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("uri", uri).add("type", type).add("mfr", manufacturer) - .add("hw", hwVersion).add("sw", swVersion) - .add("serial", serialNumber) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), uri, type, manufacturer, - hwVersion, swVersion, serialNumber, chassisId); - } - - @Override - public boolean equals(Object object) { - if (object instanceof DefaultDeviceDescription) { - if (!super.equals(object)) { - return false; - } - DefaultDeviceDescription that = (DefaultDeviceDescription) object; - return Objects.equal(this.uri, that.uri) - && Objects.equal(this.type, that.type) - && Objects.equal(this.manufacturer, that.manufacturer) - && Objects.equal(this.hwVersion, that.hwVersion) - && Objects.equal(this.swVersion, that.swVersion) - && Objects.equal(this.serialNumber, that.serialNumber) - && Objects.equal(this.chassisId, that.chassisId); - } - return false; - } - - // default constructor for serialization - private DefaultDeviceDescription() { - this.uri = null; - this.type = null; - this.manufacturer = null; - this.hwVersion = null; - this.swVersion = null; - this.serialNumber = null; - this.chassisId = null; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java deleted file mode 100644 index d62e932c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortDescription.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.device; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.AbstractDescription; -import org.onosproject.net.PortNumber; -import org.onosproject.net.SparseAnnotations; - -import static org.onosproject.net.Port.Type; -import com.google.common.base.Objects; - -/** - * Default implementation of immutable port description. - */ -public class DefaultPortDescription extends AbstractDescription - implements PortDescription { - - private static final long DEFAULT_SPEED = 1_000; - - private final PortNumber number; - private final boolean isEnabled; - private final Type type; - private final long portSpeed; - - /** - * Creates a port description using the supplied information. - * - * @param number port number - * @param isEnabled port enabled state - * @param annotations optional key/value annotations map - */ - public DefaultPortDescription(PortNumber number, boolean isEnabled, - SparseAnnotations... annotations) { - this(number, isEnabled, Type.COPPER, DEFAULT_SPEED, annotations); - } - - /** - * Creates a port description using the supplied information. - * - * @param number port number - * @param isEnabled port enabled state - * @param type port type - * @param portSpeed port speed in Mbps - * @param annotations optional key/value annotations map - */ - public DefaultPortDescription(PortNumber number, boolean isEnabled, - Type type, long portSpeed, - SparseAnnotations...annotations) { - super(annotations); - this.number = number; - this.isEnabled = isEnabled; - this.type = type; - this.portSpeed = portSpeed; - } - - // Default constructor for serialization - private DefaultPortDescription() { - this.number = null; - this.isEnabled = false; - this.portSpeed = DEFAULT_SPEED; - this.type = Type.COPPER; - } - - /** - * Creates a port description using the supplied information. - * - * @param base PortDescription to get basic information from - * @param annotations optional key/value annotations map - */ - public DefaultPortDescription(PortDescription base, - SparseAnnotations annotations) { - this(base.portNumber(), base.isEnabled(), base.type(), base.portSpeed(), - annotations); - } - - @Override - public PortNumber portNumber() { - return number; - } - - @Override - public boolean isEnabled() { - return isEnabled; - } - - @Override - public Type type() { - return type; - } - - @Override - public long portSpeed() { - return portSpeed; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("number", number) - .add("isEnabled", isEnabled) - .add("type", type) - .add("portSpeed", portSpeed) - .add("annotations", annotations()) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), number, isEnabled, type, - portSpeed); - } - - @Override - public boolean equals(Object object) { - if (object != null && getClass() == object.getClass()) { - if (!super.equals(object)) { - return false; - } - DefaultPortDescription that = (DefaultPortDescription) object; - return Objects.equal(this.number, that.number) - && Objects.equal(this.isEnabled, that.isEnabled) - && Objects.equal(this.type, that.type) - && Objects.equal(this.portSpeed, that.portSpeed); - } - return false; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java deleted file mode 100644 index 540a945f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.DeviceId; - -/** - * Default implementation of immutable port statistics. - */ -public final class DefaultPortStatistics implements PortStatistics { - - private final DeviceId deviceId; - private final int port; - private final long packetsReceived; - private final long packetsSent; - private final long bytesReceived; - private final long bytesSent; - private final long packetsRxDropped; - private final long packetsTxDropped; - private final long packetsRxErrors; - private final long packetsTxErrors; - private final long durationSec; - private final long durationNano; - - private DefaultPortStatistics(DeviceId deviceId, - int port, - long packetsReceived, - long packetsSent, - long bytesReceived, - long bytesSent, - long packetsRxDropped, - long packetsTxDropped, - long packetsRxErrors, - long packetsTxErrors, - long durationSec, - long durationNano) { - this.deviceId = deviceId; - this.port = port; - this.packetsReceived = packetsReceived; - this.packetsSent = packetsSent; - this.bytesReceived = bytesReceived; - this.bytesSent = bytesSent; - this.packetsRxDropped = packetsRxDropped; - this.packetsTxDropped = packetsTxDropped; - this.packetsRxErrors = packetsRxErrors; - this.packetsTxErrors = packetsTxErrors; - this.durationSec = durationSec; - this.durationNano = durationNano; - } - - // Constructor for serializer - private DefaultPortStatistics() { - this.deviceId = null; - this.port = 0; - this.packetsReceived = 0; - this.packetsSent = 0; - this.bytesReceived = 0; - this.bytesSent = 0; - this.packetsRxDropped = 0; - this.packetsTxDropped = 0; - this.packetsRxErrors = 0; - this.packetsTxErrors = 0; - this.durationSec = 0; - this.durationNano = 0; - } - - /** - * Creates a builder for DefaultPortStatistics object. - * - * @return builder object for DefaultPortStatistics object - */ - public static DefaultPortStatistics.Builder builder() { - return new Builder(); - } - - @Override - public int port() { - return this.port; - } - - @Override - public long packetsReceived() { - return this.packetsReceived; - } - - @Override - public long packetsSent() { - return this.packetsSent; - } - - @Override - public long bytesReceived() { - return this.bytesReceived; - } - - @Override - public long bytesSent() { - return this.bytesSent; - } - - @Override - public long packetsRxDropped() { - return this.packetsRxDropped; - } - - @Override - public long packetsTxDropped() { - return this.packetsTxDropped; - } - - @Override - public long packetsRxErrors() { - return this.packetsRxErrors; - } - - @Override - public long packetsTxErrors() { - return this.packetsTxErrors; - } - - @Override - public long durationSec() { - return this.durationSec; - } - - @Override - public long durationNano() { - return this.durationNano; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("device: " + deviceId + ", "); - - sb.append("port: " + this.port + ", "); - sb.append("pktRx: " + this.packetsReceived + ", "); - sb.append("pktTx: " + this.packetsSent + ", "); - sb.append("byteRx: " + this.bytesReceived + ", "); - sb.append("byteTx: " + this.bytesSent + ", "); - sb.append("pktRxErr: " + this.packetsRxErrors + ", "); - sb.append("pktTxErr: " + this.packetsTxErrors + ", "); - sb.append("pktRxDrp: " + this.packetsRxDropped + ", "); - sb.append("pktTxDrp: " + this.packetsTxDropped); - - return sb.toString(); - } - - public static final class Builder { - - DeviceId deviceId; - int port; - long packetsReceived; - long packetsSent; - long bytesReceived; - long bytesSent; - long packetsRxDropped; - long packetsTxDropped; - long packetsRxErrors; - long packetsTxErrors; - long durationSec; - long durationNano; - - private Builder() { - - } - - /** - * Sets port number. - * - * @param port port number - * @return builder object - */ - public Builder setPort(int port) { - this.port = port; - - return this; - } - - /** - * Sets the device identifier. - * - * @param deviceId device identifier - * @return builder object - */ - public Builder setDeviceId(DeviceId deviceId) { - this.deviceId = deviceId; - - return this; - } - - /** - * Sets the number of packet received. - * - * @param packets number of packets received - * @return builder object - */ - public Builder setPacketsReceived(long packets) { - packetsReceived = packets; - - return this; - } - - /** - * Sets the number of packets sent. - * - * @param packets number of packets sent - * @return builder object - */ - public Builder setPacketsSent(long packets) { - packetsSent = packets; - - return this; - } - - /** - * Sets the number of received bytes. - * - * @param bytes number of received bytes. - * @return builder object - */ - public Builder setBytesReceived(long bytes) { - bytesReceived = bytes; - - return this; - } - - /** - * Sets the number of sent bytes. - * - * @param bytes number of sent bytes - * @return builder object - */ - public Builder setBytesSent(long bytes) { - bytesSent = bytes; - - return this; - } - - /** - * Sets the number of packets dropped by RX. - * - * @param packets number of packets dropped by RX - * @return builder object - */ - public Builder setPacketsRxDropped(long packets) { - packetsRxDropped = packets; - - return this; - } - - /** - * Sets the number of packets dropped by TX. - * - * @param packets number of packets - * @return builder object - */ - public Builder setPacketsTxDropped(long packets) { - packetsTxDropped = packets; - - return this; - } - - /** - * Sets the number of receive errors. - * - * @param packets number of receive errors - * @return builder object - */ - public Builder setPacketsRxErrors(long packets) { - packetsRxErrors = packets; - - return this; - } - - /** - * Sets the number of transmit errors. - * - * @param packets number of transmit errors - * @return builder object - */ - public Builder setPacketsTxErrors(long packets) { - packetsTxErrors = packets; - - return this; - } - - /** - * Sets the time port has been alive in seconds. - * - * @param sec time port has been alive in seconds - * @return builder object - */ - public Builder setDurationSec(long sec) { - durationSec = sec; - - return this; - } - - /** - * Sets the time port has been alive in nano seconds. - * - * @param nano time port has been alive in nano seconds - * @return builder object - */ - public Builder setDurationNano(long nano) { - durationNano = nano; - - return this; - } - - /** - * Creates a PortStatistics object. - * - * @return DefaultPortStatistics object - */ - public DefaultPortStatistics build() { - return new DefaultPortStatistics( - deviceId, - port, - packetsReceived, - packetsSent, - bytesReceived, - bytesSent, - packetsRxDropped, - packetsTxDropped, - packetsRxErrors, - packetsTxErrors, - durationSec, - durationNano); - } - - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceAdminService.java deleted file mode 100644 index 500b6359..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceAdminService.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.DeviceId; - -/** - * Service for administering the inventory of infrastructure devices. - */ -public interface DeviceAdminService extends DeviceService { - - /** - * Removes the device with the specified identifier. - * - * @param deviceId device identifier - */ - void removeDevice(DeviceId deviceId); - - // TODO: add ability to administratively suspend/resume device - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceClockService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceClockService.java deleted file mode 100644 index 5391999a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceClockService.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.DeviceId; -import org.onosproject.store.Timestamp; - -/** - * Interface for a logical clock service that vends per device timestamps. - */ -public interface DeviceClockService { - - /** - * Checks if this service can issue Timestamp for specified device. - * - * @param deviceId device identifier. - * @return true if timestamp can be issued for specified device - */ - boolean isTimestampAvailable(DeviceId deviceId); - - /** - * Returns a new timestamp for the specified deviceId. - * - * @param deviceId device identifier. - * @return timestamp. - */ - Timestamp getTimestamp(DeviceId deviceId); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceDescription.java deleted file mode 100644 index f206b080..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceDescription.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.Description; -import org.onosproject.net.Device; -import org.onlab.packet.ChassisId; - -import java.net.URI; - -/** - * Carrier of immutable information about a device. - */ -public interface DeviceDescription extends Description { - - /** - * Protocol/provider specific URI that can be used to encode the identity - * information required to communicate with the device externally, e.g. - * datapath ID. - * - * @return provider specific URI for the device - */ - URI deviceUri(); - - /** - * Returns the type of the infrastructure device. - * - * @return type of the device - */ - Device.Type type(); - - /** - * Returns the device manufacturer name. - * - * @return manufacturer name - */ - String manufacturer(); - - /** - * Returns the device hardware version. - * - * @return hardware version - */ - String hwVersion(); - - /** - * Returns the device software version. - * - * @return software version - */ - String swVersion(); - - /** - * Returns the device serial number. - * - * @return serial number - */ - String serialNumber(); - - /** - * Returns a device chassis id. - * - * @return chassis id - */ - ChassisId chassisId(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceEvent.java deleted file mode 100644 index 18ab046f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceEvent.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.device; - -import org.joda.time.LocalDateTime; -import org.onosproject.event.AbstractEvent; -import org.onosproject.net.Device; -import org.onosproject.net.Port; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Describes infrastructure device event. - */ -public class DeviceEvent extends AbstractEvent { - - private final Port port; - - /** - * Type of device events. - */ - public enum Type { - /** - * Signifies that a new device has been detected. - */ - DEVICE_ADDED, - - /** - * Signifies that some device attributes have changed; excludes - * availability changes. - */ - DEVICE_UPDATED, - - /** - * Signifies that a device has been removed. - */ - DEVICE_REMOVED, - - /** - * Signifies that a device has been administratively suspended. - */ - DEVICE_SUSPENDED, - - /** - * Signifies that a device has come online or has gone offline. - */ - DEVICE_AVAILABILITY_CHANGED, - - /** - * Signifies that a port has been added. - */ - PORT_ADDED, - - /** - * Signifies that a port has been updated. - */ - PORT_UPDATED, - - /** - * Signifies that a port has been removed. - */ - PORT_REMOVED, - - /** - * Signifies that port statistics has been updated. - */ - PORT_STATS_UPDATED - } - - /** - * Creates an event of a given type and for the specified device and the - * current time. - * - * @param type device event type - * @param device event device subject - */ - public DeviceEvent(Type type, Device device) { - this(type, device, null); - } - - /** - * Creates an event of a given type and for the specified device, port - * and the current time. - * - * @param type device event type - * @param device event device subject - * @param port optional port subject - */ - public DeviceEvent(Type type, Device device, Port port) { - super(type, device); - this.port = port; - } - - /** - * Creates an event of a given type and for the specified device and time. - * - * @param type device event type - * @param device event device subject - * @param port optional port subject - * @param time occurrence time - */ - public DeviceEvent(Type type, Device device, Port port, long time) { - super(type, device, time); - this.port = port; - } - - /** - * Returns the port subject. - * - * @return port subject or null if the event is not port specific. - */ - public Port port() { - return port; - } - - @Override - public String toString() { - if (port == null) { - return super.toString(); - } - return toStringHelper(this) - .add("time", new LocalDateTime(time())) - .add("type", type()) - .add("subject", subject()) - .add("port", port) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceListener.java deleted file mode 100644 index c9809b81..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving infrastructure device related events. - */ -public interface DeviceListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProvider.java deleted file mode 100644 index d8adbb0e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProvider.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.provider.Provider; - -/** - * Abstraction of a device information provider. - */ -public interface DeviceProvider extends Provider { - - // TODO: consider how dirty the triggerProbe gets; if it costs too much, let's drop it - - /** - * Triggers an asynchronous probe of the specified device, intended to - * determine whether the device is present or not. An indirect result of this - * should be invocation of - * {@link org.onosproject.net.device.DeviceProviderService#deviceConnected} )} or - * {@link org.onosproject.net.device.DeviceProviderService#deviceDisconnected} - * at some later point in time. - * - * @param deviceId ID of device to be probed - */ - void triggerProbe(DeviceId deviceId); - - /** - * Notifies the provider of a mastership role change for the specified - * device as decided by the core. - * - * @param deviceId device identifier - * @param newRole newly determined mastership role - */ - void roleChanged(DeviceId deviceId, MastershipRole newRole); - - /** - * Checks the reachability (connectivity) of a device from this provider. - * - * @param deviceId device identifier - * @return true if reachable, false otherwise - */ - boolean isReachable(DeviceId deviceId); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProviderRegistry.java deleted file mode 100644 index a7ab7e36..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProviderRegistry.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.provider.ProviderRegistry; - -/** - * Abstraction of a device provider registry. - */ -public interface DeviceProviderRegistry - extends ProviderRegistry { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProviderService.java deleted file mode 100644 index e266df09..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceProviderService.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.provider.ProviderService; - -import java.util.Collection; -import java.util.List; - -/** - * Service through which device providers can inject device information into - * the core. - */ -public interface DeviceProviderService extends ProviderService { - - // TODO: define suspend and remove actions on the mezzanine administrative API - - /** - * Signals the core that a device has connected or has been detected somehow. - * - * @param deviceId device identifier - * @param deviceDescription information about network device - */ - void deviceConnected(DeviceId deviceId, DeviceDescription deviceDescription); - - /** - * Signals the core that a device has disconnected or is no longer reachable. - * - * @param deviceId identity of the device to be removed - */ - void deviceDisconnected(DeviceId deviceId); - - /** - * Sends information about all ports of a device. It is up to the core to - * determine what has changed. - * - * @param deviceId identity of the device - * @param portDescriptions list of device ports - */ - void updatePorts(DeviceId deviceId, List portDescriptions); - - /** - * Used to notify the core about port status change of a single port. - * - * @param deviceId identity of the device - * @param portDescription description of the port that changed - */ - void portStatusChanged(DeviceId deviceId, PortDescription portDescription); - - /** - * Notifies the core about the result of a RoleRequest sent to a device. - * - * @param deviceId identity of the device - * @param requested mastership role that was requested by the node - * @param response mastership role the switch accepted - */ - void receivedRoleReply(DeviceId deviceId, MastershipRole requested, MastershipRole response); - - /** - * Sends statistics about all ports of a device. - * - * @param deviceId identity of the device - * @param portStatistics list of device port statistics - */ - void updatePortStatistics(DeviceId deviceId, Collection portStatistics); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceService.java deleted file mode 100644 index f4671fb4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceService.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.event.ListenerService; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; - -import java.util.List; - -/** - * Service for interacting with the inventory of infrastructure devices. - */ -public interface DeviceService - extends ListenerService { - - /** - * Returns the number of infrastructure devices known to the system. - * - * @return number of infrastructure devices - */ - int getDeviceCount(); - - /** - * Returns a collection of the currently known infrastructure - * devices. - * - * @return collection of devices - */ - Iterable getDevices(); - - /** - * Returns a collection of the currently known infrastructure - * devices by device type. - * - * @param type device type - * @return collection of devices - */ - Iterable getDevices(Device.Type type); - - /** - * Returns an iterable collection of all devices - * currently available to the system. - * - * @return device collection - */ - Iterable getAvailableDevices(); - - /** - * Returns an iterable collection of all devices currently available to the system by device type. - * - * @param type device type - * @return device collection - */ - Iterable getAvailableDevices(Device.Type type); - - /** - * Returns the device with the specified identifier. - * - * @param deviceId device identifier - * @return device or null if one with the given identifier is not known - */ - Device getDevice(DeviceId deviceId); - - /** - * Returns the current mastership role for the specified device. - * - * @param deviceId device identifier - * @return designated mastership role - */ - //XXX do we want this method here when MastershipService already does? - MastershipRole getRole(DeviceId deviceId); - - - /** - * Returns the list of ports associated with the device. - * - * @param deviceId device identifier - * @return list of ports - */ - List getPorts(DeviceId deviceId); - - /** - * Returns the list of port statistics associated with the device. - * - * @param deviceId device identifier - * @return list of port statistics - */ - List getPortStatistics(DeviceId deviceId); - - /** - * Returns the list of port delta statistics associated with the device. - * - * @param deviceId device identifier - * @return list of port statistics - */ - List getPortDeltaStatistics(DeviceId deviceId); - - /** - * Returns the port with the specified number and hosted by the given device. - * - * @param deviceId device identifier - * @param portNumber port number - * @return device port - */ - Port getPort(DeviceId deviceId, PortNumber portNumber); - - /** - * Indicates whether or not the device is presently online and available. - * - * @param deviceId device identifier - * @return true if the device is available - */ - boolean isAvailable(DeviceId deviceId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java deleted file mode 100644 index 851b9709..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.store.Store; - -import java.util.Collection; -import java.util.List; - -/** - * Manages inventory of infrastructure devices; not intended for direct use. - */ -public interface DeviceStore extends Store { - - /** - * Returns the number of devices known to the system. - * - * @return number of devices - */ - int getDeviceCount(); - - /** - * Returns an iterable collection of all devices known to the system. - * - * @return device collection - */ - Iterable getDevices(); - - /** - * Returns an iterable collection of all devices currently available to the system. - * - * @return device collection - */ - Iterable getAvailableDevices(); - - - - /** - * Returns the device with the specified identifier. - * - * @param deviceId device identifier - * @return device - */ - Device getDevice(DeviceId deviceId); - - /** - * Creates a new infrastructure device, or updates an existing one using - * the supplied device description. - * - * @param providerId provider identifier - * @param deviceId device identifier - * @param deviceDescription device description - * @return ready to send event describing what occurred; null if no change - */ - DeviceEvent createOrUpdateDevice(ProviderId providerId, DeviceId deviceId, - DeviceDescription deviceDescription); - - // TODO: We may need to enforce that ancillary cannot interfere this state - /** - * Removes the specified infrastructure device. - * - * @param deviceId device identifier - * @return ready to send event describing what occurred; null if no change - */ - DeviceEvent markOffline(DeviceId deviceId); - - /** - * Updates the ports of the specified infrastructure device using the given - * list of port descriptions. The list is assumed to be comprehensive. - * - * @param providerId provider identifier - * @param deviceId device identifier - * @param portDescriptions list of port descriptions - * @return ready to send events describing what occurred; empty list if no change - */ - List updatePorts(ProviderId providerId, DeviceId deviceId, - List portDescriptions); - - /** - * Updates the port status of the specified infrastructure device using the - * given port description. - * - * @param providerId provider identifier - * @param deviceId device identifier - * @param portDescription port description - * @return ready to send event describing what occurred; null if no change - */ - DeviceEvent updatePortStatus(ProviderId providerId, DeviceId deviceId, - PortDescription portDescription); - - /** - * Returns the list of ports that belong to the specified device. - * - * @param deviceId device identifier - * @return list of device ports - */ - List getPorts(DeviceId deviceId); - - /** - * Updates the port statistics of the specified device using the give port - * statistics. - * - * @param providerId provider identifier - * @param deviceId device identifier - * @param portStats list of port statistics - * @return ready to send event describing what occurred; - */ - DeviceEvent updatePortStatistics(ProviderId providerId, DeviceId deviceId, - Collection portStats); - - /** - * Returns the list of port statistics of the specified device. - * - * @param deviceId device identifier - * @return list of port statistics of all ports of the device - */ - List getPortStatistics(DeviceId deviceId); - - /** - * Returns the list of delta port statistics of the specified device. - * - * @param deviceId device identifier - * @return list of delta port statistics of all ports of the device - */ - List getPortDeltaStatistics(DeviceId deviceId); - - /** - * Returns the specified device port. - * - * @param deviceId device identifier - * @param portNumber port number - * @return device port - */ - Port getPort(DeviceId deviceId, PortNumber portNumber); - - /** - * Indicates whether the specified device is available/online. - * - * @param deviceId device identifier - * @return true if device is available - */ - boolean isAvailable(DeviceId deviceId); - - /** - * Administratively removes the specified device from the store. - * - * @param deviceId device to be removed - * @return null if no such device, or was forwarded to remove master - */ - DeviceEvent removeDevice(DeviceId deviceId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceStoreDelegate.java deleted file mode 100644 index 1a4fc67d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/DeviceStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.store.StoreDelegate; - -/** - * Infrastructure device store delegate abstraction. - */ -public interface DeviceStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OchPortDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OchPortDescription.java deleted file mode 100644 index c3a7f415..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OchPortDescription.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.device; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.OchSignal; -import org.onosproject.net.OduSignalType; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.SparseAnnotations; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default implementation of immutable OCh port description. - */ -public class OchPortDescription extends DefaultPortDescription { - - private final OduSignalType signalType; - private final boolean isTunable; - private final OchSignal lambda; - - /** - * Creates OCH port description based on the supplied information. - * - * @param number port number - * @param isEnabled port enabled state - * @param signalType ODU signal type - * @param isTunable tunable wavelength capability - * @param lambda OCh signal - * @param annotations optional key/value annotations map - */ - public OchPortDescription(PortNumber number, boolean isEnabled, OduSignalType signalType, - boolean isTunable, OchSignal lambda, SparseAnnotations... annotations) { - super(number, isEnabled, Port.Type.OCH, 0, annotations); - this.signalType = signalType; - this.isTunable = isTunable; - this.lambda = checkNotNull(lambda); - } - - /** - * Creates OCH port description based on the supplied information. - * - * @param base PortDescription to get basic information from - * @param signalType ODU signal type - * @param isTunable tunable wavelength capability - * @param lambda OCh signal - * @param annotations optional key/value annotations map - */ - public OchPortDescription(PortDescription base, OduSignalType signalType, boolean isTunable, - OchSignal lambda, SparseAnnotations annotations) { - super(base, annotations); - this.signalType = signalType; - this.isTunable = isTunable; - this.lambda = checkNotNull(lambda); - } - - /** - * Returns ODU signal type. - * - * @return ODU signal type - */ - public OduSignalType signalType() { - return signalType; - } - - /** - * Returns true if port is wavelength tunable. - * - * @return tunable wavelength capability - */ - public boolean isTunable() { - return isTunable; - } - - /** - * Returns OCh signal. - * - * @return OCh signal - */ - public OchSignal lambda() { - return lambda; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("number", portNumber()) - .add("isEnabled", isEnabled()) - .add("type", type()) - .add("signalType", signalType) - .add("isTunable", isTunable) - .add("lambda", lambda) - .add("annotations", annotations()) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OduCltPortDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OduCltPortDescription.java deleted file mode 100644 index eee7de2d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OduCltPortDescription.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.device; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.OduCltPort; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.SparseAnnotations; - -/** - * Default implementation of immutable ODU client port description. - */ -public class OduCltPortDescription extends DefaultPortDescription { - - private final OduCltPort.SignalType signalType; - - /** - * Creates ODU client port description based on the supplied information. - * - * @param number port number - * @param isEnabled port enabled state - * @param signalType ODU client signal type - * @param annotations optional key/value annotations map - */ - public OduCltPortDescription(PortNumber number, boolean isEnabled, OduCltPort.SignalType signalType, - SparseAnnotations... annotations) { - super(number, isEnabled, Port.Type.ODUCLT, 0, annotations); - this.signalType = signalType; - } - - /** - * Creates ODU client port description based on the supplied information. - * - * @param base PortDescription to get basic information from - * @param signalType ODU client signal type - * @param annotations optional key/value annotations map - */ - public OduCltPortDescription(PortDescription base, OduCltPort.SignalType signalType, - SparseAnnotations annotations) { - super(base, annotations); - this.signalType = signalType; - } - - /** - * Returns ODU client signal type. - * - * @return ODU client signal type - */ - public OduCltPort.SignalType signalType() { - return signalType; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("number", portNumber()) - .add("isEnabled", isEnabled()) - .add("type", type()) - .add("signalType", signalType) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OmsPortDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OmsPortDescription.java deleted file mode 100644 index 131314a3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/OmsPortDescription.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.device; - -import com.google.common.base.MoreObjects; -import org.onlab.util.Frequency; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.SparseAnnotations; - -/** - * Default implementation of immutable OMS port description. - */ -public class OmsPortDescription extends DefaultPortDescription { - - private final Frequency minFrequency; - private final Frequency maxFrequency; - private final Frequency grid; - - /** - * Creates OMS port description based on the supplied information. - * - * @param number port number - * @param isEnabled port enabled state - * @param minFrequency minimum frequency - * @param maxFrequency maximum frequency - * @param grid grid spacing frequency - * @param annotations optional key/value annotations map - */ - public OmsPortDescription(PortNumber number, boolean isEnabled, Frequency minFrequency, Frequency maxFrequency, - Frequency grid, SparseAnnotations... annotations) { - super(number, isEnabled, Port.Type.OMS, 0, annotations); - this.minFrequency = minFrequency; - this.maxFrequency = maxFrequency; - this.grid = grid; - } - - /** - * Creates OMS port description based on the supplied information. - * - * @param base PortDescription to get basic information from - * @param minFrequency minimum frequency - * @param maxFrequency maximum frequency - * @param grid grid spacing frequency - * @param annotations optional key/value annotations map - */ - public OmsPortDescription(PortDescription base, Frequency minFrequency, Frequency maxFrequency, - Frequency grid, SparseAnnotations annotations) { - super(base, annotations); - this.minFrequency = minFrequency; - this.maxFrequency = maxFrequency; - this.grid = grid; - } - - /** - * Returns minimum frequency. - * - * @return minimum frequency - */ - public Frequency minFrequency() { - return minFrequency; - } - - /** - * Returns maximum frequency. - * - * @return maximum frequency - */ - public Frequency maxFrequency() { - return maxFrequency; - } - - /** - * Returns grid spacing frequency. - * - * @return grid spacing frequency - */ - public Frequency grid() { - return grid; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("number", portNumber()) - .add("isEnabled", isEnabled()) - .add("type", type()) - .add("minFrequency", minFrequency) - .add("maxFrequency", maxFrequency) - .add("grid", grid) - .add("annotations", annotations()) - .toString(); - } - -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/PortDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/PortDescription.java deleted file mode 100644 index 3ed3efce..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/PortDescription.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.Description; -import org.onosproject.net.PortNumber; - -import static org.onosproject.net.Port.Type; - -/** - * Information about a port. - */ -public interface PortDescription extends Description { - - /** - * Returns the port number. - * - * @return port number - */ - PortNumber portNumber(); - - /** - * Indicates whether or not the port is up and active. - * - * @return true if the port is active and has carrier signal - */ - boolean isEnabled(); - - /** - * Returns the port type. - * - * @return port type - */ - Type type(); - - /** - * Returns the current port speed in Mbps. - * - * @return current port speed - */ - long portSpeed(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java deleted file mode 100644 index 201bd7b6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.device; - -/** - * Statistics of a port. - */ -public interface PortStatistics { - - /** - * Returns the port number. - * - * @return port number - */ - int port(); - - /** - * Returns the number of packets received. - * - * @return the number of packets received - */ - long packetsReceived(); - - /** - * Returns the number of packets sent. - * - * @return the number of packets sent - */ - long packetsSent(); - - /** - * Returns the bytes received. - * - * @return the bytes received - */ - long bytesReceived(); - - /** - * Returns the bytes sent. - * - * @return the bytes sent - */ - long bytesSent(); - - /** - * Returns the number of packets dropped by RX. - * - * @return the number of packets dropped by RX - */ - long packetsRxDropped(); - - /** - * Returns the number of packets dropped by TX. - * - * @return the number of packets dropped by TX - */ - long packetsTxDropped(); - - /** - * Returns the number of transmit errors. - * - * @return the number of transmit errors - */ - long packetsRxErrors(); - - /** - * Returns the number of receive errors. - * - * @return the number of receive error - */ - long packetsTxErrors(); - - /** - * Returns the time port has been alive in seconds. - * - * @return the time port has been alive in seconds - */ - long durationSec(); - - /** - * Returns the time port has been alive in nano seconds. - * - * @return the time port has been alive in nano seconds - */ - long durationNano(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/package-info.java deleted file mode 100644 index 4ee64dcf..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/device/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Infrastructure device model & related services API definitions. - */ -package org.onosproject.net.device; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/AbstractBehaviour.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/AbstractBehaviour.java deleted file mode 100644 index 784e6c55..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/AbstractBehaviour.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import static com.google.common.base.Preconditions.checkState; - -/** - * Base implementation of device driver behaviour. - */ -public class AbstractBehaviour implements Behaviour { - - private DriverData data; - - @Override - public DriverData data() { - return data; - } - - @Override - public void setData(DriverData data) { - checkState(this.data == null, "Driver data already set"); - this.data = data; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/AbstractHandlerBehaviour.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/AbstractHandlerBehaviour.java deleted file mode 100644 index 66b21ffe..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/AbstractHandlerBehaviour.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import static com.google.common.base.Preconditions.checkState; - -/** - * Base implementation of device driver handler behaviour. - */ -public class AbstractHandlerBehaviour - extends AbstractBehaviour implements HandlerBehaviour { - - private DriverHandler handler; - - @Override - public DriverHandler handler() { - return handler; - } - - @Override - public void setHandler(DriverHandler handler) { - checkState(this.handler == null, "Driver handler already set"); - this.handler = handler; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/Behaviour.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/Behaviour.java deleted file mode 100644 index 6e28aa86..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/Behaviour.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Representation of a facet of device behaviour that can be used to talk about - * a device (in context of {@link DriverData}) or to a device (in context of - * {@link DriverHandler}). - */ -public interface Behaviour { - - /** - * Returns the driver data context. - * - * @return driver data - */ - DriverData data(); - - /** - * Sets the driver data context on this this behaviour should operate. - * - * @param data driver data - */ - void setData(DriverData data); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriver.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriver.java deleted file mode 100644 index b7a9f2b7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriver.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; - -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.collect.ImmutableMap.copyOf; - -/** - * Default implementation of extensible driver. - */ -public class DefaultDriver implements Driver { - - private final String name; - private final Driver parent; - - private final String manufacturer; - private final String hwVersion; - private final String swVersion; - - private final Map, Class> behaviours; - private final Map properties; - - /** - * Creates a driver with the specified name. - * - * @param name driver name - * @param parent optional parent driver - * @param manufacturer device manufacturer - * @param hwVersion device hardware version - * @param swVersion device software version - * @param behaviours device behaviour classes - * @param properties properties for configuration of device behaviour classes - */ - public DefaultDriver(String name, Driver parent, String manufacturer, - String hwVersion, String swVersion, - Map, Class> behaviours, - Map properties) { - this.name = checkNotNull(name, "Name cannot be null"); - this.parent = parent; - this.manufacturer = checkNotNull(manufacturer, "Manufacturer cannot be null"); - this.hwVersion = checkNotNull(hwVersion, "HW version cannot be null"); - this.swVersion = checkNotNull(swVersion, "SW version cannot be null"); - this.behaviours = copyOf(checkNotNull(behaviours, "Behaviours cannot be null")); - this.properties = copyOf(checkNotNull(properties, "Properties cannot be null")); - } - - @Override - public Driver merge(Driver other) { - checkArgument(parent == null || Objects.equals(parent, other.parent()), - "Parent drivers are not the same"); - - // Merge the behaviours. - Map, Class> - behaviours = Maps.newHashMap(); - behaviours.putAll(this.behaviours); - other.behaviours().forEach(b -> behaviours.put(b, other.implementation(b))); - - // Merge the properties. - ImmutableMap.Builder properties = ImmutableMap.builder(); - properties.putAll(this.properties).putAll(other.properties()); - - return new DefaultDriver(name, other.parent(), manufacturer, hwVersion, swVersion, - ImmutableMap.copyOf(behaviours), properties.build()); - } - - @Override - public String name() { - return name; - } - - @Override - public String manufacturer() { - return manufacturer; - } - - @Override - public String hwVersion() { - return hwVersion; - } - - @Override - public String swVersion() { - return swVersion; - } - - @Override - public Driver parent() { - return parent; - } - - @Override - public Set> behaviours() { - return behaviours.keySet(); - } - - @Override - public Class implementation(Class behaviour) { - return behaviours.get(behaviour); - } - - @Override - public boolean hasBehaviour(Class behaviourClass) { - return behaviours.containsKey(behaviourClass) || - (parent != null && parent.hasBehaviour(behaviourClass)); - } - - @Override - public T createBehaviour(DriverData data, - Class behaviourClass) { - T behaviour = createBehaviour(data, null, behaviourClass); - if (behaviour != null) { - return behaviour; - } else if (parent != null) { - return parent.createBehaviour(data, behaviourClass); - } - throw new IllegalArgumentException(behaviourClass.getName() + " not supported"); - } - - @Override - public T createBehaviour(DriverHandler handler, - Class behaviourClass) { - T behaviour = createBehaviour(handler.data(), handler, behaviourClass); - if (behaviour != null) { - return behaviour; - } else if (parent != null) { - return parent.createBehaviour(handler, behaviourClass); - } - throw new IllegalArgumentException(behaviourClass.getName() + " not supported"); - } - - // Creates an instance of behaviour primed with the specified driver data. - private T createBehaviour(DriverData data, DriverHandler handler, - Class behaviourClass) { - //checkArgument(handler != null || !HandlerBehaviour.class.isAssignableFrom(behaviourClass), - // "{} is applicable only to handler context", behaviourClass.getName()); - - // Locate the implementation of the requested behaviour. - Class implementation = behaviours.get(behaviourClass); - if (implementation != null) { - // Create an instance of the behaviour and apply data as its context. - T behaviour = createBehaviour(behaviourClass, implementation); - behaviour.setData(data); - - // If this is a handler behaviour, also apply handler as its context. - if (handler != null) { - ((HandlerBehaviour) behaviour).setHandler(handler); - } - return behaviour; - } - return null; - } - - @SuppressWarnings("unchecked") - private T createBehaviour(Class behaviourClass, - Class implementation) { - try { - return (T) implementation.newInstance(); - } catch (InstantiationException | IllegalAccessException e) { - // TODO: add a specific unchecked exception - throw new IllegalArgumentException("Unable to create behaviour", e); - } - } - - @Override - public Set keys() { - return properties.keySet(); - } - - @Override - public String value(String key) { - return properties.get(key); - } - - @Override - public Map properties() { - return properties; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("name", name) - .add("parent", parent) - .add("manufacturer", manufacturer) - .add("hwVersion", hwVersion) - .add("swVersion", swVersion) - .add("behaviours", behaviours) - .add("properties", properties) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverData.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverData.java deleted file mode 100644 index 76d7932d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverData.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import com.google.common.collect.ImmutableSet; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MutableAnnotations; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Default implementation of driver data descriptor. - */ -public class DefaultDriverData implements DriverData { - - private final Driver driver; - private final DeviceId deviceId; - private final Map properties; - - /** - * Creates new driver data. - * - * @param driver parent driver type - * @param deviceId device identifier - */ - public DefaultDriverData(Driver driver, DeviceId deviceId) { - this.driver = driver; - this.deviceId = deviceId; - this.properties = new HashMap<>(); - } - - @Override - public Driver driver() { - return driver; - } - - @Override - public DeviceId deviceId() { - return deviceId; - } - - @Override - public T behaviour(Class behaviourClass) { - return driver.createBehaviour(this, behaviourClass); - } - - @Override - public MutableAnnotations set(String key, String value) { - properties.put(key, value); - return this; - } - - @Override - public MutableAnnotations clear(String... keys) { - if (keys.length == 0) { - properties.clear(); - } else { - for (String key : keys) { - properties.remove(key); - } - } - return this; - } - - @Override - public Set keys() { - return ImmutableSet.copyOf(properties.keySet()); - } - - @Override - public String value(String key) { - return properties.get(key); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("type", driver) - .add("properties", properties) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverHandler.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverHandler.java deleted file mode 100644 index 28fdb2f3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Default implementation of driver handler. - */ -public class DefaultDriverHandler implements DriverHandler { - - private final DefaultDriverData data; - - // Reference to service directory to provide run-time context. - protected static ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - - /** - * Creates new driver handler with the attached driver data. - * - * @param data driver data to attach - */ - public DefaultDriverHandler(DefaultDriverData data) { - this.data = data; - } - - @Override - public Driver driver() { - return data.driver(); - } - - @Override - public DriverData data() { - return data; - } - - @Override - public T behaviour(Class behaviourClass) { - return data.driver().createBehaviour(this, behaviourClass); - } - - @Override - public T get(Class serviceClass) { - return serviceDirectory.get(serviceClass); - } - - @Override - public String toString() { - return toStringHelper(this).add("data", data).toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverProvider.java deleted file mode 100644 index b2b5281c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverProvider.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Maps; - -import java.util.Map; -import java.util.Set; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Default driver provider implementation. - */ -public class DefaultDriverProvider implements DriverProvider { - - protected final Map drivers = Maps.newConcurrentMap(); - - @Override - public Set getDrivers() { - return ImmutableSet.copyOf(drivers.values()); - } - - /** - * Adds the specified drivers to the provider. - * - * @param drivers drivers to be added - */ - public void addDrivers(Set drivers) { - drivers.forEach(this::addDriver); - } - - /** - * Adds the specified driver to the provider. - * - * @param driver driver to be provided - */ - public void addDriver(Driver driver) { - Driver ddc = drivers.get(driver.name()); - if (ddc == null) { - // If we don't have the driver yet, just use the new one. - drivers.put(driver.name(), driver); - } else { - // Otherwise merge the existing driver with the new one and rebind. - drivers.put(driver.name(), ddc.merge(driver)); - } - } - - /** - * Removes the specified drivers from the provider. - * - * @param drivers drivers to be removed - */ - public void removeDrivers(Set drivers) { - drivers.forEach(this::removeDriver); - } - - /** - * Removes the specified driver from the provider. - * - * @param driver driver to be removed - */ - public void removeDriver(Driver driver) { - // TODO: make selective if possible - drivers.remove(driver.name()); - } - - @Override - public String toString() { - return toStringHelper(this).add("drivers", drivers).toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverProviderService.java deleted file mode 100644 index 153c7c56..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverProviderService.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Service representing availability of default drivers. - */ -public interface DefaultDriverProviderService { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/Driver.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/Driver.java deleted file mode 100644 index 50611b14..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/Driver.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import org.onosproject.net.Annotations; - -import java.util.Map; -import java.util.Set; - -/** - * Representation of a specific family of device drivers. Behaviour configuration - * data is stored using {@link org.onosproject.net.Annotations}. - */ -public interface Driver extends Annotations { - - /** - * Returns the driver name. This is expected to be a reverse-DNS, - * Java package-like name. - * - * @return driver name - */ - String name(); - - /** - * Returns the parent driver from which this driver inherits behaviours - * and properties. - * - * @return parent driver; null if driver has no parent - */ - Driver parent(); - - /** - * Returns the device manufacturer name. - * - * @return manufacturer name - */ - String manufacturer(); - - /** - * Returns the device hardware version. - * - * @return hardware version - */ - String hwVersion(); - - /** - * Returns the device software version. - * - * @return software version - */ - String swVersion(); - - /** - * Returns the set of behaviours supported by this driver. - * It reflects behaviours of only this driver and not its parent. - * - * @return set of device driver behaviours - */ - Set> behaviours(); - - /** - * Returns the implementation class for the specified behaviour. - * It reflects behaviours of only this driver and not its parent. - * - * @param behaviour behaviour interface - * @return implementation class - */ - Class implementation(Class behaviour); - - /** - * Indicates whether or not the driver, or any of its parents, support - * the specified class of behaviour. It - * - * @param behaviourClass behaviour class - * @return true if behaviour is supported - */ - boolean hasBehaviour(Class behaviourClass); - - /** - * Creates an instance of behaviour primed with the specified driver data. - * If the current driver does not support the specified behaviour and the - * driver has parent, the request is delegated to the parent driver. - * - * @param data driver data context - * @param behaviourClass driver behaviour class - * @param type of behaviour - * @return behaviour instance - */ - T createBehaviour(DriverData data, Class behaviourClass); - - /** - * Creates an instance of behaviour primed with the specified driver data. - * If the current driver does not support the specified behaviour and the - * driver has parent, the request is delegated to the parent driver. - * - * @param handler driver handler context - * @param behaviourClass driver behaviour class - * @param type of behaviour - * @return behaviour instance - */ - T createBehaviour(DriverHandler handler, Class behaviourClass); - - /** - * Returns the set of annotations as map of key/value properties. - * - * @return map of properties - */ - Map properties(); - - /** - * Merges the specified driver behaviours and properties into this one, - * giving preference to the other driver when dealing with conflicts. - * - * @param other other driver - * @return merged driver - */ - Driver merge(Driver other); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverAdminService.java deleted file mode 100644 index e7fa1385..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverAdminService.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import java.util.Set; - -/** - * Service for managing drivers and driver behaviour implementations. - */ -public interface DriverAdminService extends DriverService { - - /** - * Returns the set of driver providers currently registered. - * - * @return registered driver providers - */ - Set getProviders(); - - /** - * Registers the specified driver provider. - * - * @param provider driver provider to register - */ - void registerProvider(DriverProvider provider); - - /** - * Unregisters the specified driver provider. - * - * @param provider driver provider to unregister - */ - void unregisterProvider(DriverProvider provider); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverConnect.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverConnect.java deleted file mode 100644 index 1d510913..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverConnect.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Abstraction of handler behaviour used to set-up and tear-down driver - * connection with a device. - */ -public interface DriverConnect extends HandlerBehaviour { - - /** - * Connects to the device. - * - * @param credentials optional login credentials in string form - */ - void connect(String... credentials); - - /** - * Disconnects from the device. - */ - void disconnect(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverData.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverData.java deleted file mode 100644 index 1d66ea9a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverData.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.MutableAnnotations; - -/** - * Container for data about a device. Data is stored using - * {@link org.onosproject.net.MutableAnnotations}. - */ -public interface DriverData extends MutableAnnotations { - - /** - * Returns the parent device driver. - * - * @return device driver - */ - Driver driver(); - - /** - * Returns the device identifier. - * - * @return device identifier - */ - DeviceId deviceId(); - - /** - * Returns the specified facet of behaviour to access the device data. - * - * @param behaviourClass behaviour class - * @param type of behaviour - * @return requested behaviour or null if not supported - */ - T behaviour(Class behaviourClass); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverHandler.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverHandler.java deleted file mode 100644 index 202708ba..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverHandler.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Representation of context for interacting with a device. - */ -public interface DriverHandler { - - /** - * Returns the parent device driver. - * - * @return device driver - */ - Driver driver(); - - /** - * Returns the device driver data. - * - * @return device driver data - */ - DriverData data(); - - /** - * Returns the specified facet of behaviour to interact with the device. - * - * @param behaviourClass behaviour class - * @param type of behaviour - * @return behaviour - */ - T behaviour(Class behaviourClass); - - /** - * Returns the reference to the implementation of the specified service. - * Provides access to run-time context. - * - * @param serviceClass service class - * @param type of service - * @return service implementation - * @throws org.onlab.osgi.ServiceNotFoundException if service is unavailable - */ - T get(Class serviceClass); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverProvider.java deleted file mode 100644 index 354d93e9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverProvider.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import java.util.Set; - -/** - * Represents entity capable of providing device drivers and their - * behaviours. - */ -public interface DriverProvider { - - /** - * Returns the set of driver types and behaviour implementations to be - * made available by this provider. - * - * @return set of driver types and their behaviours - */ - Set getDrivers(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverResolver.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverResolver.java deleted file mode 100644 index 094c710f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverResolver.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Entity capable of resolving a driver using its name. - */ -public interface DriverResolver { - - /** - * Returns the specified driver. - * - * @param driverName driver name - * @return driver - * @throws org.onlab.util.ItemNotFoundException if driver with the given - * name is not found - */ - Driver getDriver(String driverName); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverService.java deleted file mode 100644 index 1a74255b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/DriverService.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import org.onosproject.net.DeviceId; - -import java.util.Set; - -/** - * Service for obtaining drivers and driver behaviour implementations. - */ -public interface DriverService extends DriverResolver { - - /** - * Returns the overall set of drivers being provided. - * - * @return provided drivers - */ - Set getDrivers(); - - /** - * Returns the set of drivers which support the specified behaviour. - * - * @param withBehaviour behaviour class to query by - * @return provided drivers - */ - Set getDrivers(Class withBehaviour); - - /** - * Returns the driver that matches the specified primordial device - * discovery information. - * - * @param mfr device manufacturer - * @param hw device hardware name/version - * @param sw device software version - * @return driver or null of no matching one is found - */ - Driver getDriver(String mfr, String hw, String sw); - - /** - * Returns the driver for the specified device. If the device carries - * {@code driver} annotation, its value is used to look-up the driver. - * Otherwise, the device manufacturer, hardware and software version - * attributes are used to look-up the driver. First using their literal - * values and if no driver is found, using ERE matching against the - * driver manufacturer, hardware and software version fields. - * - * @param deviceId device identifier - * @return driver or null of no matching one is found - * @throws org.onlab.util.ItemNotFoundException if device or driver for it - * are not found - */ - Driver getDriver(DeviceId deviceId); - - /** - * Creates a new driver handler for interacting with the specified device. - * The driver is looked-up using the same semantics as - * {@link #getDriver(DeviceId)} method. - * - * @param deviceId device identifier - * @param credentials optional login credentials in string form - * @return driver handler - * @throws org.onlab.util.ItemNotFoundException if device or driver for it - * are not found - */ - DriverHandler createHandler(DeviceId deviceId, String... credentials); - - // TODO: Devise a mechanism for retaining DriverData for devices - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/HandlerBehaviour.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/HandlerBehaviour.java deleted file mode 100644 index b5771ac1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/HandlerBehaviour.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Representation of a facet of device behaviour that can be used to interact - * with a device (in context of {@link org.onosproject.net.driver.DriverHandler}). - */ -public interface HandlerBehaviour extends Behaviour { - - /** - * Returns the driver handler context on which this behaviour operates. - * - * @return driver handler context - */ - DriverHandler handler(); - - /** - * Sets the driver handler context for this behaviour. - * - * @param handler driver handler - */ - void setHandler(DriverHandler handler); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/XmlDriverLoader.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/XmlDriverLoader.java deleted file mode 100644 index fc5e04a1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/XmlDriverLoader.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.HierarchicalConfiguration; -import org.apache.commons.configuration.XMLConfiguration; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -/** - * Utility capable of reading driver configuration XML resources and producing - * a device driver provider as a result. - *

- * The drivers stream structure is as follows: - *

- *
- *     <drivers>
- *         <driver name=“...” [manufacturer="..." hwVersion="..." swVersion="..."]>
- *             <behaviour api="..." impl="..."/>
- *             ...
- *             [<property name=“key”>value</key>]
- *             ...
- *         </driver>
- *         ...
- *     </drivers>
- * 
- */ -public class XmlDriverLoader { - - private static final String DRIVERS = "drivers"; - private static final String DRIVER = "driver"; - - private static final String BEHAVIOUR = "behaviour"; - private static final String PROPERTY = "property"; - - private static final String NAME = "[@name]"; - private static final String EXTENDS = "[@extends]"; - private static final String MFG = "[@manufacturer]"; - private static final String HW = "[@hwVersion]"; - private static final String SW = "[@swVersion]"; - private static final String API = "[@api]"; - private static final String IMPL = "[@impl]"; - - private final ClassLoader classLoader; - - private Map drivers = Maps.newHashMap(); - - /** - * Creates a new driver loader capable of loading drivers from the supplied - * class loader. - * - * @param classLoader class loader to use - */ - public XmlDriverLoader(ClassLoader classLoader) { - this.classLoader = classLoader; - } - - /** - * Loads the specified drivers resource as an XML stream and parses it to - * produce a ready-to-register driver provider. - * - * @param driversStream stream containing the drivers definitions - * @param resolver driver resolver - * @return driver provider - * @throws java.io.IOException if issues are encountered reading the stream - * or parsing the driver definitions within - */ - public DefaultDriverProvider loadDrivers(InputStream driversStream, - DriverResolver resolver) throws IOException { - try { - XMLConfiguration cfg = new XMLConfiguration(); - cfg.setRootElementName(DRIVERS); - cfg.setAttributeSplittingDisabled(true); - - cfg.load(driversStream); - return loadDrivers(cfg, resolver); - } catch (ConfigurationException e) { - throw new IOException("Unable to load drivers", e); - } - } - - /** - * Loads a driver provider from the supplied hierarchical configuration. - * - * @param driversCfg hierarchical configuration containing the drivers definitions - * @param resolver driver resolver - * @return driver provider - */ - public DefaultDriverProvider loadDrivers(HierarchicalConfiguration driversCfg, - DriverResolver resolver) { - DefaultDriverProvider provider = new DefaultDriverProvider(); - for (HierarchicalConfiguration cfg : driversCfg.configurationsAt(DRIVER)) { - DefaultDriver driver = loadDriver(cfg, resolver); - drivers.put(driver.name(), driver); - provider.addDriver(driver); - } - drivers.clear(); - return provider; - } - - /** - * Loads a driver from the supplied hierarchical configuration. - * - * @param driverCfg hierarchical configuration containing the driver definition - * @param resolver driver resolver - * @return driver - */ - public DefaultDriver loadDriver(HierarchicalConfiguration driverCfg, - DriverResolver resolver) { - String name = driverCfg.getString(NAME); - String parentName = driverCfg.getString(EXTENDS); - String manufacturer = driverCfg.getString(MFG, ""); - String hwVersion = driverCfg.getString(HW, ""); - String swVersion = driverCfg.getString(SW, ""); - - Driver parent = parentName != null ? resolve(parentName, resolver) : null; - return new DefaultDriver(name, parent, manufacturer, hwVersion, swVersion, - parseBehaviours(driverCfg), - parseProperties(driverCfg)); - } - - // Resolves the driver by name locally at first and then using the specified resolver. - private Driver resolve(String parentName, DriverResolver resolver) { - Driver driver = drivers.get(parentName); - return driver != null ? driver : - (resolver != null ? resolver.getDriver(parentName) : null); - } - - // Parses the behaviours section. - private Map, Class> - parseBehaviours(HierarchicalConfiguration driverCfg) { - ImmutableMap.Builder, - Class> behaviours = ImmutableMap.builder(); - for (HierarchicalConfiguration b : driverCfg.configurationsAt(BEHAVIOUR)) { - behaviours.put(getClass(b.getString(API)), getClass(b.getString(IMPL))); - } - return behaviours.build(); - } - - // Parses the properties section. - private Map parseProperties(HierarchicalConfiguration driverCfg) { - ImmutableMap.Builder properties = ImmutableMap.builder(); - for (HierarchicalConfiguration b : driverCfg.configurationsAt(PROPERTY)) { - properties.put(b.getString(NAME), (String) b.getRootNode().getValue()); - } - return properties.build(); - } - - @SuppressWarnings("unchecked") - private Class getClass(String className) { - try { - return (Class) classLoader.loadClass(className); - } catch (ClassNotFoundException e) { - throw new IllegalArgumentException("Unable to load class " + className, e); - } - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/package-info.java deleted file mode 100644 index fbc39a89..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/driver/package-info.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Set of facilities to allow the platform to be extended with - * device specific behaviours and to allow modeling device behaviours while - * hiding details of specific device driver implementations. - *

- * {@link org.onosproject.net.driver.Driver} is a representation of a - * specific family of devices supports set of - * {@link org.onosproject.net.driver.Behaviour behaviour classes}. Default - * implementation is provided by the platform and allows DriverProviders to - * add different behaviour implementations via DriverService. - *

- *

- * {@link org.onosproject.net.driver.DriverData} is a container for data - * learned about a device. It is associated with a specific - * {@link org.onosproject.net.driver.Driver} - * and provides set of {@link org.onosproject.net.driver.Behaviour behaviours} - * for talking about a device. A default - * implementation provided by platform and has mutable key/value store for use by - * implementations of {@link org.onosproject.net.driver.Behaviour behaviours}. - *

- *

- * {@link org.onosproject.net.driver.DriverHandler} is an entity used as a - * context to interact with a device. It has a peer - * {@link org.onosproject.net.driver.DriverData} instance, which is used to - * store information learned about a device. It also - * provides set of {@link org.onosproject.net.driver.Behaviour behaviours} - * for talking to a device. - *

- *

- * {@link org.onosproject.net.driver.DriverService} can be used to query the - * inventory of device drivers and their behaviours, while the - * {@link org.onosproject.net.driver.DriverAdminService} allows adding/removing - * drivers and managing behaviour implementations. - * {@link org.onosproject.net.driver.DriverProvider} is an entity capable - * of add/removing drivers and supplying and managing behaviour - * implementations. A default implementation is provided by the framework along - * with a {@link org.onosproject.net.driver.XmlDriverLoader loader utility} to - * create a driver provider from an XML file structured as follows: - *

- *     <drivers>
- *         <driver name=“...” [manufacturer="..." hwVersion="..." swVersion="..."]>
- *             <behaviour api="..." impl="..."/>
- *             ...
- *             [<property name=“key”>value</key>]
- *             ...
- *         </driver>
- *         ...
- *     </drivers>
- * 
- * - */ -package org.onosproject.net.driver; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortEvent.java deleted file mode 100644 index 85e6a1b5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortEvent.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.edge; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.net.ConnectPoint; - -/** - * Describes an event pertaining to edge-port inventory. - */ -public class EdgePortEvent extends AbstractEvent { - - public enum Type { - /** - * Signifies that a new edge port was detected. - */ - EDGE_PORT_ADDED, - - /** - * Signifies that a new edge port vanished. - */ - EDGE_PORT_REMOVED - } - - /** - * Creates a new edge port event. - * - * @param type event type - * @param subject connection point subject - */ - public EdgePortEvent(Type type, ConnectPoint subject) { - super(type, subject); - } - - /** - * Creates a new edge port event. - * - * @param type event type - * @param subject connection point subject - * @param time occurrence time - */ - public EdgePortEvent(Type type, ConnectPoint subject, long time) { - super(type, subject, time); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortListener.java deleted file mode 100644 index dae03beb..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.edge; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving edge port events. - */ -public interface EdgePortListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortService.java deleted file mode 100644 index 89a2c171..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/EdgePortService.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.edge; - -import org.onosproject.event.ListenerService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.flow.TrafficTreatment; - -import java.nio.ByteBuffer; -import java.util.Optional; - -/** - * Service for interacting with an inventory of network edge ports. A port - * is considered an edge port if it is an active port and does not have an - * infrastructure link associated with it. - */ -public interface EdgePortService - extends ListenerService { - - /** - * Indicates whether or not the specified connection point is an edge point. - * - * @param point connection point - * @return true if edge point - */ - boolean isEdgePoint(ConnectPoint point); - - /** - * Returns a collection of all edge point within the current topology. - * - * @return iterable collection of all edge points - */ - Iterable getEdgePoints(); - - /** - * Returns a collection of all edge point for the specified device. - * - * @param deviceId device identifier - * @return iterable collection of all edge points for the device - */ - Iterable getEdgePoints(DeviceId deviceId); - - /** - * Emits the specified packet, with optional treatment to all edge ports. - * - * @param data packet data - * @param treatment optional traffic treatment to apply to the packet - */ - void emitPacket(ByteBuffer data, Optional treatment); - - /** - * Emits the specified packet, with optional treatment to all edge ports. - * - * @param deviceId device where to send the packet out - * @param data packet data - * @param treatment optional traffic treatment to apply to the packet - */ - void emitPacket(DeviceId deviceId, ByteBuffer data, - Optional treatment); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/package-info.java deleted file mode 100644 index d637f195..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/edge/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Service for interacting with network edge. - */ -package org.onosproject.net.edge; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/AbstractExtension.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/AbstractExtension.java deleted file mode 100644 index b48d69ce..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/AbstractExtension.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.net.flow.instructions.ExtensionPropertyException; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -/** - * Abstract implementation of the set/get property methods of Extension. - */ -public abstract class AbstractExtension implements Extension { - - private static final String INVALID_KEY = "Invalid property key: "; - private static final String INVALID_TYPE = "Given type does not match field type: "; - - @Override - public void setPropertyValue(String key, T value) throws - ExtensionPropertyException { - Class clazz = this.getClass(); - try { - Field field = clazz.getDeclaredField(key); - field.setAccessible(true); - field.set(this, value); - } catch (NoSuchFieldException | IllegalAccessException e) { - throw new ExtensionPropertyException(INVALID_KEY + key); - } - } - - @Override - public T getPropertyValue(String key) throws ExtensionPropertyException { - Class clazz = this.getClass(); - try { - Field field = clazz.getDeclaredField(key); - field.setAccessible(true); - @SuppressWarnings("unchecked") - T result = (T) field.get(this); - return result; - } catch (NoSuchFieldException | IllegalAccessException e) { - throw new ExtensionPropertyException(INVALID_KEY + key); - } catch (ClassCastException e) { - throw new ExtensionPropertyException(INVALID_TYPE + key); - } - } - - @Override - public List getProperties() { - Class clazz = this.getClass(); - - List fields = new ArrayList<>(); - - for (Field field : clazz.getDeclaredFields()) { - fields.add(field.getName()); - } - - return fields; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperation.java deleted file mode 100644 index 09e34d88..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperation.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * A list of BatchOperationEntry. - * - * @param the enum of operators
- * This enum must be defined in each sub-classes. - */ -public abstract class BatchOperation> { - - private final List ops; - - /** - * Creates new {@link BatchOperation} object. - */ - public BatchOperation() { - ops = new LinkedList<>(); - } - - /** - * Creates {@link BatchOperation} object from a list of batch operation - * entries. - * - * @param batchOperations the list of batch operation entries. - */ - public BatchOperation(Collection batchOperations) { - ops = new LinkedList<>(checkNotNull(batchOperations)); - } - - /** - * Removes all operations maintained in this object. - */ - public void clear() { - ops.clear(); - } - - /** - * Returns the number of operations in this object. - * - * @return the number of operations in this object - */ - public int size() { - return ops.size(); - } - - /** - * Returns the operations in this object. - * - * @return the operations in this object - */ - public List getOperations() { - return Collections.unmodifiableList(ops); - } - - /** - * Adds an operation. - * FIXME: Brian promises that the Intent Framework - * will not modify the batch operation after it has submitted it. - * Ali would prefer immutablity, but trusts brian for better or - * for worse. - * - * @param entry the operation to be added - * @return this object if succeeded, null otherwise - */ - public BatchOperation addOperation(T entry) { - return ops.add(entry) ? this : null; - } - - /** - * Add all operations from another batch to this batch. - * - * @param another another batch - * @return true if success - */ - public boolean addAll(BatchOperation another) { - return ops.addAll(another.getOperations()); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - - if (o == null) { - return false; - } - - if (getClass() != o.getClass()) { - return false; - } - BatchOperation other = (BatchOperation) o; - - return this.ops.equals(other.ops); - } - - @Override - public int hashCode() { - return ops.hashCode(); - } - - @Override - public String toString() { - return ops.toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperationEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperationEntry.java deleted file mode 100644 index cc054286..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperationEntry.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * A super class for batch operation entry classes. - *

- * This is the interface to classes which are maintained by BatchOperation as - * its entries. - */ -public class BatchOperationEntry, U> { - - private final T operator; - private final U target; - - /** - * Constructs new instance for the entry of the BatchOperation. - * - * @param operator the operator of this operation - * @param target the target object of this operation - */ - public BatchOperationEntry(T operator, U target) { - this.operator = checkNotNull(operator); - this.target = checkNotNull(target); - } - - /** - * Gets the target object of this operation. - * - * @return the target object of this operation - */ - public U target() { - return target; - } - - /** - * Gets the operator of this operation. - * - * @return the operator of this operation - */ - public T operator() { - return operator; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - BatchOperationEntry other = (BatchOperationEntry) o; - return (this.operator == other.operator) && - Objects.equals(this.target, other.target); - } - - @Override - public int hashCode() { - return Objects.hash(operator, target); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("operator", operator) - .add("target", target) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperationResult.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperationResult.java deleted file mode 100644 index 684a8698..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/BatchOperationResult.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.Set; - -/** - * Interface capturing the result of a batch operation. - * - */ -public interface BatchOperationResult { - - /** - * Returns whether the operation was successful. - * @return true if successful, false otherwise - */ - boolean isSuccess(); - - /** - * Obtains a set of items which failed. - * @return a set of failures - */ - Set failedItems(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/CompletedBatchOperation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/CompletedBatchOperation.java deleted file mode 100644 index 3afae5ef..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/CompletedBatchOperation.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableSet; -import org.onosproject.net.DeviceId; - -import java.util.Collections; -import java.util.Set; - -/** - * Representation of a completed flow rule batch operation. - */ -public class CompletedBatchOperation implements BatchOperationResult { - - private final boolean success; - private final Set failures; - private final Set failedIds; - private final DeviceId deviceId; - - /** - * Creates a new batch completion result. - * - * @param success indicates whether the completion is successful - * @param failures set of any failures encountered - * @param failedIds (optional) set of failed operation ids - * @param deviceId the device this operation completed for - */ - public CompletedBatchOperation(boolean success, Set failures, - Set failedIds, DeviceId deviceId) { - this.success = success; - this.failures = ImmutableSet.copyOf(failures); - this.failedIds = ImmutableSet.copyOf(failedIds); - this.deviceId = deviceId; - } - - /** - * Creates a new batch completion result. - * - * @param success indicates whether the completion is successful. - * @param failures set of any failures encountered - * @param deviceId the device this operation completed for - */ - public CompletedBatchOperation(boolean success, Set failures, - DeviceId deviceId) { - this.success = success; - this.failures = ImmutableSet.copyOf(failures); - this.failedIds = Collections.emptySet(); - this.deviceId = deviceId; - } - - - - @Override - public boolean isSuccess() { - return success; - } - - @Override - public Set failedItems() { - return failures; - } - - public Set failedIds() { - return failedIds; - } - - public DeviceId deviceId() { - return this.deviceId; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("success?", success) - .add("failedItems", failures) - .add("failedIds", failedIds) - .add("deviceId", deviceId) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultFlowEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultFlowEntry.java deleted file mode 100644 index f7e7708e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultFlowEntry.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static org.slf4j.LoggerFactory.getLogger; - -import org.slf4j.Logger; - -public class DefaultFlowEntry extends DefaultFlowRule - implements StoredFlowEntry { - - private static final Logger log = getLogger(DefaultFlowEntry.class); - - private long life; - private long packets; - private long bytes; - private FlowEntryState state; - - private long lastSeen = -1; - - private final int errType; - - private final int errCode; - - public DefaultFlowEntry(FlowRule rule, FlowEntryState state, - long life, long packets, long bytes) { - super(rule); - this.state = state; - this.life = life; - this.packets = packets; - this.bytes = bytes; - this.errCode = -1; - this.errType = -1; - this.lastSeen = System.currentTimeMillis(); - } - - public DefaultFlowEntry(FlowRule rule) { - super(rule); - this.state = FlowEntryState.PENDING_ADD; - this.life = 0; - this.packets = 0; - this.bytes = 0; - this.errCode = -1; - this.errType = -1; - this.lastSeen = System.currentTimeMillis(); - } - - public DefaultFlowEntry(FlowRule rule, int errType, int errCode) { - super(rule); - this.state = FlowEntryState.FAILED; - this.errType = errType; - this.errCode = errCode; - this.lastSeen = System.currentTimeMillis(); - } - - @Override - public long life() { - return life; - } - - @Override - public long packets() { - return packets; - } - - @Override - public long bytes() { - return bytes; - } - - @Override - public FlowEntryState state() { - return this.state; - } - - @Override - public long lastSeen() { - return lastSeen; - } - - @Override - public void setLastSeen() { - this.lastSeen = System.currentTimeMillis(); - } - - @Override - public void setState(FlowEntryState newState) { - this.state = newState; - } - - @Override - public void setLife(long life) { - this.life = life; - } - - @Override - public void setPackets(long packets) { - this.packets = packets; - } - - @Override - public void setBytes(long bytes) { - this.bytes = bytes; - } - - @Override - public int errType() { - return this.errType; - } - - @Override - public int errCode() { - return this.errCode; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("rule", super.toString()) - .add("state", state) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultFlowRule.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultFlowRule.java deleted file mode 100644 index 5492fa98..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultFlowRule.java +++ /dev/null @@ -1,397 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.core.ApplicationId; -import org.onosproject.core.DefaultGroupId; -import org.onosproject.core.GroupId; -import org.onosproject.net.DeviceId; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -public class DefaultFlowRule implements FlowRule { - - private final DeviceId deviceId; - private final int priority; - private final TrafficSelector selector; - private final TrafficTreatment treatment; - private final long created; - - private final FlowId id; - - private final Short appId; - - private final int timeout; - private final boolean permanent; - private final GroupId groupId; - - private final Integer tableId; - private final FlowRuleExtPayLoad payLoad; - - public DefaultFlowRule(FlowRule rule) { - this.deviceId = rule.deviceId(); - this.priority = rule.priority(); - this.selector = rule.selector(); - this.treatment = rule.treatment(); - this.appId = rule.appId(); - this.groupId = rule.groupId(); - this.id = rule.id(); - this.timeout = rule.timeout(); - this.permanent = rule.isPermanent(); - this.created = System.currentTimeMillis(); - this.tableId = rule.tableId(); - this.payLoad = rule.payLoad(); - } - - private DefaultFlowRule(DeviceId deviceId, TrafficSelector selector, - TrafficTreatment treatment, Integer priority, - FlowId flowId, Boolean permanent, Integer timeout, - Integer tableId) { - - this.deviceId = deviceId; - this.selector = selector; - this.treatment = treatment; - this.priority = priority; - this.appId = (short) (flowId.value() >>> 48); - this.id = flowId; - this.permanent = permanent; - this.timeout = timeout; - this.tableId = tableId; - this.created = System.currentTimeMillis(); - - - //FIXME: fields below will be removed. - this.groupId = new DefaultGroupId(0); - this.payLoad = null; - } - - /** - * Support for the third party flow rule. Creates a flow rule of flow table. - * - * @param deviceId the identity of the device where this rule applies - * @param selector the traffic selector that identifies what traffic this - * rule - * @param treatment the traffic treatment that applies to selected traffic - * @param priority the flow rule priority given in natural order - * @param appId the application id of this flow - * @param timeout the timeout for this flow requested by an application - * @param permanent whether the flow is permanent i.e. does not time out - * @param payLoad 3rd-party origin private flow - */ - public DefaultFlowRule(DeviceId deviceId, TrafficSelector selector, - TrafficTreatment treatment, int priority, - ApplicationId appId, int timeout, boolean permanent, - FlowRuleExtPayLoad payLoad) { - - if (priority < FlowRule.MIN_PRIORITY) { - throw new IllegalArgumentException("Priority cannot be less than " - + MIN_PRIORITY); - } - - this.deviceId = deviceId; - this.priority = priority; - this.selector = selector; - this.treatment = treatment; - this.appId = appId.id(); - this.groupId = new DefaultGroupId(0); - this.timeout = timeout; - this.permanent = permanent; - this.tableId = 0; - this.created = System.currentTimeMillis(); - this.payLoad = payLoad; - - /* - * id consists of the following. | appId (16 bits) | groupId (16 bits) | - * flowId (32 bits) | - */ - this.id = FlowId.valueOf((((long) this.appId) << 48) - | (((long) this.groupId.id()) << 32) - | (this.hash() & 0xffffffffL)); - } - - /** - * Support for the third party flow rule. Creates a flow rule of group - * table. - * - * @param deviceId the identity of the device where this rule applies - * @param selector the traffic selector that identifies what traffic this - * rule - * @param treatment the traffic treatment that applies to selected traffic - * @param priority the flow rule priority given in natural order - * @param appId the application id of this flow - * @param groupId the group id of this flow - * @param timeout the timeout for this flow requested by an application - * @param permanent whether the flow is permanent i.e. does not time out - * @param payLoad 3rd-party origin private flow - * - */ - public DefaultFlowRule(DeviceId deviceId, TrafficSelector selector, - TrafficTreatment treatment, int priority, - ApplicationId appId, GroupId groupId, int timeout, - boolean permanent, FlowRuleExtPayLoad payLoad) { - - if (priority < FlowRule.MIN_PRIORITY) { - throw new IllegalArgumentException("Priority cannot be less than " - + MIN_PRIORITY); - } - - this.deviceId = deviceId; - this.priority = priority; - this.selector = selector; - this.treatment = treatment; - this.appId = appId.id(); - this.groupId = groupId; - this.timeout = timeout; - this.permanent = permanent; - this.created = System.currentTimeMillis(); - this.tableId = 0; - this.payLoad = payLoad; - - /* - * id consists of the following. | appId (16 bits) | groupId (16 bits) | - * flowId (32 bits) | - */ - this.id = FlowId.valueOf((((long) this.appId) << 48) - | (((long) this.groupId.id()) << 32) - | (this.hash() & 0xffffffffL)); - } - - @Override - public FlowId id() { - return id; - } - - @Override - public short appId() { - return appId; - } - - @Override - public GroupId groupId() { - return groupId; - } - - @Override - public int priority() { - return priority; - } - - @Override - public DeviceId deviceId() { - return deviceId; - } - - @Override - public TrafficSelector selector() { - return selector; - } - - @Override - public TrafficTreatment treatment() { - return treatment; - } - - @Override - /* - * The priority and statistics can change on a given treatment and selector - * - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ - public int hashCode() { - return Objects.hash(deviceId, selector, tableId, payLoad); - } - - //FIXME do we need this method in addition to hashCode()? - private int hash() { - return Objects.hash(deviceId, selector, tableId, payLoad); - } - - @Override - /* - * The priority and statistics can change on a given treatment and selector - * - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultFlowRule) { - DefaultFlowRule that = (DefaultFlowRule) obj; - return Objects.equals(deviceId, that.deviceId) && - Objects.equals(priority, that.priority) && - Objects.equals(selector, that.selector) && - Objects.equals(tableId, that.tableId) - && Objects.equals(payLoad, that.payLoad); - } - return false; - } - - @Override - public boolean exactMatch(FlowRule rule) { - return this.equals(rule) && - Objects.equals(this.id, rule.id()) && - Objects.equals(this.treatment, rule.treatment()); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("id", Long.toHexString(id.value())) - .add("deviceId", deviceId) - .add("priority", priority) - .add("selector", selector.criteria()) - .add("treatment", treatment == null ? "N/A" : treatment.allInstructions()) - .add("tableId", tableId) - .add("created", created) - .add("payLoad", payLoad) - .toString(); - } - - @Override - public int timeout() { - return timeout; - } - - @Override - public boolean isPermanent() { - return permanent; - } - - @Override - public int tableId() { - return tableId; - } - - public static Builder builder() { - return new Builder(); - } - - public static final class Builder implements FlowRule.Builder { - - private FlowId flowId; - private ApplicationId appId; - private Integer priority; - private DeviceId deviceId; - private Integer tableId = 0; - private TrafficSelector selector; - private TrafficTreatment treatment; - private Integer timeout; - private Boolean permanent; - - @Override - public FlowRule.Builder withCookie(long cookie) { - this.flowId = FlowId.valueOf(cookie); - return this; - } - - @Override - public FlowRule.Builder fromApp(ApplicationId appId) { - this.appId = appId; - return this; - } - - @Override - public FlowRule.Builder withPriority(int priority) { - this.priority = priority; - return this; - } - - @Override - public FlowRule.Builder forDevice(DeviceId deviceId) { - this.deviceId = deviceId; - return this; - } - - @Override - public FlowRule.Builder forTable(int tableId) { - this.tableId = tableId; - return this; - } - - @Override - public FlowRule.Builder withSelector(TrafficSelector selector) { - this.selector = selector; - return this; - } - - @Override - public FlowRule.Builder withTreatment(TrafficTreatment treatment) { - this.treatment = treatment; - return this; - } - - @Override - public FlowRule.Builder makePermanent() { - this.timeout = 0; - this.permanent = true; - return this; - } - - @Override - public FlowRule.Builder makeTemporary(int timeout) { - this.permanent = false; - this.timeout = timeout; - return this; - } - - @Override - public FlowRule build() { - checkArgument(flowId != null || appId != null, "Either an application" + - " id or a cookie must be supplied"); - checkNotNull(selector, "Traffic selector cannot be null"); - checkArgument(timeout != null || permanent != null, "Must either have " + - "a timeout or be permanent"); - checkNotNull(deviceId, "Must refer to a device"); - checkNotNull(priority, "Priority cannot be null"); - checkArgument(priority >= MIN_PRIORITY, "Priority cannot be less than " + - MIN_PRIORITY); - - // Computing a flow ID based on appId takes precedence over setting - // the flow ID directly - if (appId != null) { - flowId = computeFlowId(appId); - } - - return new DefaultFlowRule(deviceId, selector, treatment, priority, - flowId, permanent, timeout, tableId); - } - - private FlowId computeFlowId(ApplicationId appId) { - return FlowId.valueOf((((long) appId.id()) << 48) - | (hash() & 0xffffffffL)); - } - - private int hash() { - return Objects.hash(deviceId, priority, selector, tableId); - } - - } - - @Override - public FlowRuleExtPayLoad payLoad() { - return payLoad; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTableStatisticsEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTableStatisticsEntry.java deleted file mode 100644 index 929b285d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTableStatisticsEntry.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.net.DeviceId; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default implementation of table statistics entry interface. - */ -public final class DefaultTableStatisticsEntry implements TableStatisticsEntry { - - private final DeviceId deviceId; - private final int tableId; - private final long activeFlowEntries; - private final long packetsLookedupCount; - private final long packetsMatchedCount; - - /** - * Default table statistics constructor. - * - * @param deviceId device identifier - * @param tableId table identifier - * @param activeFlowEntries number of active flow entries in the table - * @param packetsLookedupCount number of packets looked up in table - * @param packetsMatchedCount number of packets that hit table - */ - public DefaultTableStatisticsEntry(DeviceId deviceId, - int tableId, - long activeFlowEntries, - long packetsLookedupCount, - long packetsMatchedCount) { - this.deviceId = checkNotNull(deviceId); - this.tableId = tableId; - this.activeFlowEntries = activeFlowEntries; - this.packetsLookedupCount = packetsLookedupCount; - this.packetsMatchedCount = packetsMatchedCount; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("device: " + deviceId + ", "); - - sb.append("tableId: " + this.tableId + ", "); - sb.append("activeEntries: " + this.activeFlowEntries + ", "); - sb.append("packetsLookedUp: " + this.packetsLookedupCount + ", "); - sb.append("packetsMatched: " + this.packetsMatchedCount); - - return sb.toString(); - } - - @Override - public int tableId() { - return tableId; - } - - @Override - public long activeFlowEntries() { - return activeFlowEntries; - } - - @Override - public long packetsLookedup() { - return packetsLookedupCount; - } - - @Override - public long packetsMatched() { - return packetsMatchedCount; - } - - @Override - public DeviceId deviceId() { - return deviceId; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java deleted file mode 100644 index 0525d8fa..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java +++ /dev/null @@ -1,393 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableSet; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.Ip6Address; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onlab.packet.TpPort; -import org.onlab.packet.VlanId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.criteria.Criteria; -import org.onosproject.net.flow.criteria.Criterion; -import org.onosproject.net.flow.criteria.ExtensionSelector; - -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.TreeSet; - -/** - * Default traffic selector implementation. - */ -public final class DefaultTrafficSelector implements TrafficSelector { - - private static final Comparator TYPE_COMPARATOR = - (c1, c2) -> c1.type().compareTo(c2.type()); - - private final Set criteria; - - private static final TrafficSelector EMPTY - = new DefaultTrafficSelector(Collections.emptySet()); - - /** - * Creates a new traffic selector with the specified criteria. - * - * @param criteria criteria - */ - private DefaultTrafficSelector(Set criteria) { - TreeSet elements = new TreeSet<>(TYPE_COMPARATOR); - elements.addAll(criteria); - this.criteria = ImmutableSet.copyOf(elements); - } - - @Override - public Set criteria() { - return criteria; - } - - @Override - public Criterion getCriterion(Criterion.Type type) { - for (Criterion c : criteria) { - if (c.type() == type) { - return c; - } - } - return null; - } - - @Override - public int hashCode() { - return criteria.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultTrafficSelector) { - DefaultTrafficSelector that = (DefaultTrafficSelector) obj; - return Objects.equals(criteria, that.criteria); - - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("criteria", criteria) - .toString(); - } - - /** - * Returns a new traffic selector builder. - * - * @return traffic selector builder - */ - public static TrafficSelector.Builder builder() { - return new Builder(); - } - - /** - * Returns an empty traffic selector. - * - * @return empty traffic selector - */ - public static TrafficSelector emptySelector() { - return EMPTY; - } - - /** - * Returns a new traffic selector builder primed to produce entities - * patterned after the supplied selector. - * - * @param selector base selector - * @return traffic selector builder - */ - public static TrafficSelector.Builder builder(TrafficSelector selector) { - return new Builder(selector); - } - - /** - * Builder of traffic selector entities. - */ - public static final class Builder implements TrafficSelector.Builder { - - private final Map selector = new HashMap<>(); - - private Builder() { - } - - private Builder(TrafficSelector selector) { - for (Criterion c : selector.criteria()) { - add(c); - } - } - - @Override - public Builder add(Criterion criterion) { - selector.put(criterion.type(), criterion); - return this; - } - - @Override - public Builder matchInPort(PortNumber port) { - return add(Criteria.matchInPort(port)); - } - - @Override - public Builder matchInPhyPort(PortNumber port) { - return add(Criteria.matchInPhyPort(port)); - } - - @Override - public Builder matchMetadata(long metadata) { - return add(Criteria.matchMetadata(metadata)); - } - - @Override - public Builder matchEthDst(MacAddress addr) { - return add(Criteria.matchEthDst(addr)); - } - - @Override - public Builder matchEthSrc(MacAddress addr) { - return add(Criteria.matchEthSrc(addr)); - } - - @Override - public Builder matchEthType(short ethType) { - return add(Criteria.matchEthType(ethType)); - } - - @Override - public Builder matchVlanId(VlanId vlanId) { - return add(Criteria.matchVlanId(vlanId)); - } - - @Override - public Builder matchVlanPcp(byte vlanPcp) { - return add(Criteria.matchVlanPcp(vlanPcp)); - } - - @Override - public Builder matchIPDscp(byte ipDscp) { - return add(Criteria.matchIPDscp(ipDscp)); - } - - @Override - public Builder matchIPEcn(byte ipEcn) { - return add(Criteria.matchIPEcn(ipEcn)); - } - - @Override - public Builder matchIPProtocol(byte proto) { - return add(Criteria.matchIPProtocol(proto)); - } - - @Override - public Builder matchIPSrc(IpPrefix ip) { - return add(Criteria.matchIPSrc(ip)); - } - - @Override - public Builder matchIPDst(IpPrefix ip) { - return add(Criteria.matchIPDst(ip)); - } - - @Deprecated - @Override - public Builder matchTcpSrc(short tcpPort) { - return matchTcpSrc(TpPort.tpPort(tcpPort)); - } - - @Override - public Builder matchTcpSrc(TpPort tcpPort) { - return add(Criteria.matchTcpSrc(tcpPort)); - } - - @Deprecated - @Override - public Builder matchTcpDst(short tcpPort) { - return matchTcpDst(TpPort.tpPort(tcpPort)); - } - - @Override - public Builder matchTcpDst(TpPort tcpPort) { - return add(Criteria.matchTcpDst(tcpPort)); - } - - @Deprecated - @Override - public Builder matchUdpSrc(short udpPort) { - return matchUdpSrc(TpPort.tpPort(udpPort)); - } - - @Override - public Builder matchUdpSrc(TpPort udpPort) { - return add(Criteria.matchUdpSrc(udpPort)); - } - - @Deprecated - @Override - public Builder matchUdpDst(short udpPort) { - return matchUdpDst(TpPort.tpPort(udpPort)); - } - - @Override - public Builder matchUdpDst(TpPort udpPort) { - return add(Criteria.matchUdpDst(udpPort)); - } - - @Deprecated - @Override - public Builder matchSctpSrc(short sctpPort) { - return matchSctpSrc(TpPort.tpPort(sctpPort)); - } - - @Override - public Builder matchSctpSrc(TpPort sctpPort) { - return add(Criteria.matchSctpSrc(sctpPort)); - } - - @Deprecated - @Override - public Builder matchSctpDst(short sctpPort) { - return matchSctpDst(TpPort.tpPort(sctpPort)); - } - - @Override - public Builder matchSctpDst(TpPort sctpPort) { - return add(Criteria.matchSctpDst(sctpPort)); - } - - @Override - public Builder matchIcmpType(byte icmpType) { - return add(Criteria.matchIcmpType(icmpType)); - } - - @Override - public Builder matchIcmpCode(byte icmpCode) { - return add(Criteria.matchIcmpCode(icmpCode)); - } - - @Override - public Builder matchIPv6Src(IpPrefix ip) { - return add(Criteria.matchIPv6Src(ip)); - } - - @Override - public Builder matchIPv6Dst(IpPrefix ip) { - return add(Criteria.matchIPv6Dst(ip)); - } - - @Override - public Builder matchIPv6FlowLabel(int flowLabel) { - return add(Criteria.matchIPv6FlowLabel(flowLabel)); - } - - @Override - public Builder matchIcmpv6Type(byte icmpv6Type) { - return add(Criteria.matchIcmpv6Type(icmpv6Type)); - } - - @Override - public Builder matchIcmpv6Code(byte icmpv6Code) { - return add(Criteria.matchIcmpv6Code(icmpv6Code)); - } - - @Override - public Builder matchIPv6NDTargetAddress(Ip6Address targetAddress) { - return add(Criteria.matchIPv6NDTargetAddress(targetAddress)); - } - - @Override - public Builder matchIPv6NDSourceLinkLayerAddress(MacAddress mac) { - return add(Criteria.matchIPv6NDSourceLinkLayerAddress(mac)); - } - - @Override - public Builder matchIPv6NDTargetLinkLayerAddress(MacAddress mac) { - return add(Criteria.matchIPv6NDTargetLinkLayerAddress(mac)); - } - - @Override - public Builder matchMplsLabel(MplsLabel mplsLabel) { - return add(Criteria.matchMplsLabel(mplsLabel)); - } - - @Override - public Builder matchMplsBos(boolean mplsBos) { - return add(Criteria.matchMplsBos(mplsBos)); - } - - @Override - public TrafficSelector.Builder matchTunnelId(long tunnelId) { - return add(Criteria.matchTunnelId(tunnelId)); - } - - @Override - public Builder matchIPv6ExthdrFlags(short exthdrFlags) { - return add(Criteria.matchIPv6ExthdrFlags(exthdrFlags)); - } - - @Override - public Builder matchArpTpa(Ip4Address addr) { - return add(Criteria.matchArpTpa(addr)); - } - - @Override - public Builder matchArpSpa(Ip4Address addr) { - return add(Criteria.matchArpSpa(addr)); - } - - @Override - public Builder matchArpTha(MacAddress addr) { - return add(Criteria.matchArpTha(addr)); - } - - @Override - public Builder matchArpSha(MacAddress addr) { - return add(Criteria.matchArpSha(addr)); - } - - @Override - public Builder matchArpOp(int arpOp) { - return add(Criteria.matchArpOp(arpOp)); - } - - @Override - public TrafficSelector.Builder extension(ExtensionSelector extensionSelector, - DeviceId deviceId) { - return add(Criteria.extension(extensionSelector, deviceId)); - } - - @Override - public TrafficSelector build() { - return new DefaultTrafficSelector(ImmutableSet.copyOf(selector.values())); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java deleted file mode 100644 index 40291f57..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java +++ /dev/null @@ -1,524 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; -import java.util.Objects; - -import org.onlab.packet.EthType; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onlab.packet.TpPort; -import org.onlab.packet.VlanId; -import org.onosproject.core.GroupId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.IndexedLambda; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.instructions.ExtensionTreatment; -import org.onosproject.net.flow.instructions.Instruction; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.meter.MeterId; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -/** - * Default traffic treatment implementation. - */ -public final class DefaultTrafficTreatment implements TrafficTreatment { - - private final List immediate; - private final List deferred; - private final List all; - private final Instructions.TableTypeTransition table; - private final Instructions.MetadataInstruction meta; - - private final boolean hasClear; - - private static final DefaultTrafficTreatment EMPTY - = new DefaultTrafficTreatment(ImmutableList.of(Instructions.createNoAction())); - private final Instructions.MeterInstruction meter; - - /** - * Creates a new traffic treatment from the specified list of instructions. - * - * @param immediate immediate instructions - */ - private DefaultTrafficTreatment(List immediate) { - this.immediate = ImmutableList.copyOf(checkNotNull(immediate)); - this.deferred = ImmutableList.of(); - this.all = this.immediate; - this.hasClear = false; - this.table = null; - this.meta = null; - this.meter = null; - } - - /** - * Creates a new traffic treatment from the specified list of instructions. - * - * @param deferred deferred instructions - * @param immediate immediate instructions - * @param table table transition instruction - * @param clear instruction to clear the deferred actions list - */ - private DefaultTrafficTreatment(List deferred, - List immediate, - Instructions.TableTypeTransition table, - boolean clear, - Instructions.MetadataInstruction meta, - Instructions.MeterInstruction meter) { - this.immediate = ImmutableList.copyOf(checkNotNull(immediate)); - this.deferred = ImmutableList.copyOf(checkNotNull(deferred)); - this.all = new ImmutableList.Builder() - .addAll(immediate) - .addAll(deferred) - .build(); - this.table = table; - this.meta = meta; - this.hasClear = clear; - this.meter = meter; - } - - @Override - public List deferred() { - return deferred; - } - - @Override - public List immediate() { - return immediate; - } - - @Override - public List allInstructions() { - return all; - } - - @Override - public Instructions.TableTypeTransition tableTransition() { - return table; - } - - @Override - public boolean clearedDeferred() { - return hasClear; - } - - @Override - public Instructions.MetadataInstruction writeMetadata() { - return meta; - } - - @Override - public Instructions.MeterInstruction metered() { - return meter; - } - - /** - * Returns a new traffic treatment builder. - * - * @return traffic treatment builder - */ - public static TrafficTreatment.Builder builder() { - return new Builder(); - } - - /** - * Returns an empty traffic treatment. - * - * @return empty traffic treatment - */ - public static TrafficTreatment emptyTreatment() { - return EMPTY; - } - - /** - * Returns a new traffic treatment builder primed to produce entities - * patterned after the supplied treatment. - * - * @param treatment base treatment - * @return traffic treatment builder - */ - public static TrafficTreatment.Builder builder(TrafficTreatment treatment) { - return new Builder(treatment); - } - - //FIXME: Order of instructions may affect hashcode - @Override - public int hashCode() { - return Objects.hash(immediate, deferred, table, meta); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultTrafficTreatment) { - DefaultTrafficTreatment that = (DefaultTrafficTreatment) obj; - return Objects.equals(immediate, that.immediate) && - Objects.equals(deferred, that.deferred) && - Objects.equals(table, that.table) && - Objects.equals(meta, that.meta); - - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("immediate", immediate) - .add("deferred", deferred) - .add("transition", table == null ? "None" : table.toString()) - .add("cleared", hasClear) - .add("metadata", meta) - .toString(); - } - - /** - * Builds a list of treatments following the following order. - * Modifications -> Group -> Output (including drop) - */ - public static final class Builder implements TrafficTreatment.Builder { - - boolean clear = false; - - Instructions.TableTypeTransition table; - - Instructions.MetadataInstruction meta; - - Instructions.MeterInstruction meter; - - List deferred = Lists.newLinkedList(); - - List immediate = Lists.newLinkedList(); - - List current = immediate; - - // Creates a new builder - private Builder() { - } - - // Creates a new builder based off an existing treatment - private Builder(TrafficTreatment treatment) { - deferred(); - treatment.deferred().forEach(i -> add(i)); - - immediate(); - treatment.immediate().stream() - // NOACTION will get re-added if there are no other actions - .filter(i -> i.type() != Instruction.Type.NOACTION) - .forEach(i -> add(i)); - - clear = treatment.clearedDeferred(); - } - - @Override - public Builder add(Instruction instruction) { - - switch (instruction.type()) { - case DROP: - case NOACTION: - case OUTPUT: - case GROUP: - case QUEUE: - case L0MODIFICATION: - case L1MODIFICATION: - case L2MODIFICATION: - case L3MODIFICATION: - case L4MODIFICATION: - case EXTENSION: - current.add(instruction); - break; - case TABLE: - table = (Instructions.TableTypeTransition) instruction; - break; - case METADATA: - meta = (Instructions.MetadataInstruction) instruction; - break; - case METER: - meter = (Instructions.MeterInstruction) instruction; - break; - default: - throw new IllegalArgumentException("Unknown instruction type: " + - instruction.type()); - } - - return this; - } - - /** - * Add a NOACTION when DROP instruction is explicitly specified. - * - * @return the traffic treatment builder - */ - @Override - public Builder drop() { - return add(Instructions.createNoAction()); - } - - /** - * Add a NOACTION when no instruction is specified. - * - * @return the traffic treatment builder - */ - private Builder noAction() { - return add(Instructions.createNoAction()); - } - - @Override - public Builder punt() { - return add(Instructions.createOutput(PortNumber.CONTROLLER)); - } - - @Override - public Builder setOutput(PortNumber number) { - return add(Instructions.createOutput(number)); - } - - @Override - public Builder setEthSrc(MacAddress addr) { - return add(Instructions.modL2Src(addr)); - } - - @Override - public Builder setEthDst(MacAddress addr) { - return add(Instructions.modL2Dst(addr)); - } - - @Override - public Builder setVlanId(VlanId id) { - return add(Instructions.modVlanId(id)); - } - - @Override - public Builder setVlanPcp(Byte pcp) { - return add(Instructions.modVlanPcp(pcp)); - } - - @Override - public Builder setIpSrc(IpAddress addr) { - return add(Instructions.modL3Src(addr)); - } - - @Override - public Builder setIpDst(IpAddress addr) { - return add(Instructions.modL3Dst(addr)); - } - - @Override - public Builder decNwTtl() { - return add(Instructions.decNwTtl()); - } - - @Override - public Builder copyTtlIn() { - return add(Instructions.copyTtlIn()); - } - - @Override - public Builder copyTtlOut() { - return add(Instructions.copyTtlOut()); - } - - @Override - public Builder pushMpls() { - return add(Instructions.pushMpls()); - } - - @Override - public Builder popMpls() { - return add(Instructions.popMpls()); - } - - @Override - public Builder popMpls(int etherType) { - return add(Instructions.popMpls(new EthType(etherType))); - } - - @Override - public Builder popMpls(EthType etherType) { - return add(Instructions.popMpls(etherType)); - } - - @Override - public Builder setMpls(MplsLabel mplsLabel) { - return add(Instructions.modMplsLabel(mplsLabel)); - } - - @Override - public Builder setMplsBos(boolean mplsBos) { - return add(Instructions.modMplsBos(mplsBos)); - } - - @Override - public Builder decMplsTtl() { - return add(Instructions.decMplsTtl()); - } - - @Deprecated - @Override - public Builder setLambda(short lambda) { - return add(Instructions.modL0Lambda(new IndexedLambda(lambda))); - } - - @Override - public Builder group(GroupId groupId) { - return add(Instructions.createGroup(groupId)); - } - - @Override - public Builder setQueue(long queueId) { - return add(Instructions.setQueue(queueId, null)); - } - - @Override - public Builder setQueue(long queueId, PortNumber port) { - return add(Instructions.setQueue(queueId, port)); - } - - @Override - public TrafficTreatment.Builder meter(MeterId meterId) { - return add(Instructions.meterTraffic(meterId)); - } - - @Override - public Builder popVlan() { - return add(Instructions.popVlan()); - } - - @Override - public Builder pushVlan() { - return add(Instructions.pushVlan()); - } - - @Override - public Builder transition(Integer tableId) { - return add(Instructions.transition(tableId)); - } - - @Override - public Builder immediate() { - current = immediate; - return this; - } - - @Override - public Builder deferred() { - current = deferred; - return this; - } - - @Override - public Builder wipeDeferred() { - clear = true; - return this; - } - - @Override - public Builder writeMetadata(long metadata, long metadataMask) { - return add(Instructions.writeMetadata(metadata, metadataMask)); - } - - @Override - public Builder setTunnelId(long tunnelId) { - return add(Instructions.modTunnelId(tunnelId)); - } - - @Deprecated - @Override - public TrafficTreatment.Builder setTcpSrc(short port) { - return setTcpSrc(TpPort.tpPort(port)); - } - - @Override - public TrafficTreatment.Builder setTcpSrc(TpPort port) { - return add(Instructions.modTcpSrc(port)); - } - - @Deprecated - @Override - public TrafficTreatment.Builder setTcpDst(short port) { - return setTcpDst(TpPort.tpPort(port)); - } - - @Override - public TrafficTreatment.Builder setTcpDst(TpPort port) { - return add(Instructions.modTcpDst(port)); - } - - @Deprecated - @Override - public TrafficTreatment.Builder setUdpSrc(short port) { - return setUdpSrc(TpPort.tpPort(port)); - } - - @Override - public TrafficTreatment.Builder setUdpSrc(TpPort port) { - return add(Instructions.modUdpSrc(port)); - } - - @Deprecated - @Override - public TrafficTreatment.Builder setUdpDst(short port) { - return setUdpDst(TpPort.tpPort(port)); - } - - @Override - public TrafficTreatment.Builder setUdpDst(TpPort port) { - return add(Instructions.modUdpDst(port)); - } - - @Override - public Builder setArpSpa(IpAddress addr) { - return add(Instructions.modArpSpa(addr)); - } - - @Override - public Builder setArpSha(MacAddress addr) { - return add(Instructions.modArpSha(addr)); - } - - @Override - public Builder setArpOp(short op) { - return add(Instructions.modL3ArpOp(op)); - } - - @Override - public TrafficTreatment.Builder extension(ExtensionTreatment extension, - DeviceId deviceId) { - return add(Instructions.extension(extension, deviceId)); - } - - @Override - public TrafficTreatment build() { - if (deferred.size() == 0 && immediate.size() == 0 - && table == null && !clear) { - immediate(); - noAction(); - } - return new DefaultTrafficTreatment(deferred, immediate, table, clear, meta, meter); - } - - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTypedFlowEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTypedFlowEntry.java deleted file mode 100644 index afceb14e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/DefaultTypedFlowEntry.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Default flow entry class with FlowLiveType value, IMMEDIATE_FLOW, SHORT_FLOW, MID_FLOW, LONG_FLOW. - */ -public class DefaultTypedFlowEntry extends DefaultFlowEntry - implements TypedStoredFlowEntry { - private FlowLiveType liveType; - - /** - * Creates a typed flow entry from flow rule and its statistics, with default flow live type(IMMEDIATE_FLOW). - * - * @param rule the flow rule - * @param state the flow state - * @param life the flow duration since creation - * @param packets the flow packets count - * @param bytes the flow bytes count - * - */ - public DefaultTypedFlowEntry(FlowRule rule, FlowEntryState state, - long life, long packets, long bytes) { - super(rule, state, life, packets, bytes); - this.liveType = FlowLiveType.IMMEDIATE_FLOW; - } - - /** - * Creates a typed flow entry from flow rule, with default flow live type(IMMEDIATE_FLOW). - * - * @param rule the flow rule - * - */ - public DefaultTypedFlowEntry(FlowRule rule) { - super(rule); - this.liveType = FlowLiveType.IMMEDIATE_FLOW; - } - - /** - * Creates a typed flow entry from flow entry, with default flow live type(IMMEDIATE_FLOW). - * - * @param fe the flow entry - * - */ - public DefaultTypedFlowEntry(FlowEntry fe) { - super(fe, fe.state(), fe.life(), fe.packets(), fe.bytes()); - this.liveType = FlowLiveType.IMMEDIATE_FLOW; - } - - /** - * Creates a typed flow entry from flow rule and flow live type. - * - * @param rule the flow rule - * @param liveType the flow live type - * - */ - public DefaultTypedFlowEntry(FlowRule rule, FlowLiveType liveType) { - super(rule); - this.liveType = liveType; - } - - /** - * Creates a typed flow entry from flow entry and flow live type. - * - * @param fe the flow rule - * @param liveType the flow live type - * - */ - public DefaultTypedFlowEntry(FlowEntry fe, FlowLiveType liveType) { - super(fe, fe.state(), fe.life(), fe.packets(), fe.bytes()); - this.liveType = liveType; - } - - /** - * Creates a typed flow entry from flow rule, error code and flow live type. - * - * @param rule the flow rule - * @param errType the flow error type - * @param errCode the flow error code - * @param liveType the flow live type - * - */ - public DefaultTypedFlowEntry(FlowRule rule, int errType, int errCode, FlowLiveType liveType) { - super(rule, errType, errCode); - this.liveType = liveType; - } - - @Override - public FlowLiveType flowLiveType() { - return this.liveType; - } - - @Override - public void setFlowLiveType(FlowLiveType liveType) { - this.liveType = liveType; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("entry", super.toString()) - .add("type", liveType) - .toString(); - } -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/Extension.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/Extension.java deleted file mode 100644 index 1d61542e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/Extension.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.net.flow.instructions.ExtensionPropertyException; - -import java.util.List; - -/** - * An extension to the northbound APIs. - */ -public interface Extension { - - /** - * Sets a property on the extension. - * - * @param key property key - * @param value value to set for the given key - * @param class of the value - * @throws ExtensionPropertyException if the given key is not a valid - * property on this extension - */ - void setPropertyValue(String key, T value) throws ExtensionPropertyException; - - /** - * Gets a property value of an extension. - * - * @param key property key - * @param class of the value - * @return value of the property - * @throws ExtensionPropertyException if the given key is not a valid - * property on this extension - */ - T getPropertyValue(String key) throws ExtensionPropertyException; - - /** - * Gets a list of all properties on the extension. - * - * @return list of properties - */ - List getProperties(); - - /** - * Serialize the extension to a byte array. - * - * @return byte array - */ - byte[] serialize(); - - /** - * Deserialize the extension from a byte array. The properties - * of this object will be overwritten with the data in the byte array. - * - * @param data input byte array - */ - void deserialize(byte[] data); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java deleted file mode 100644 index 389b2142..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - - -/** - * Represents a generalized match & action pair to be applied to - * an infrastucture device. - */ -public interface FlowEntry extends FlowRule { - - - enum FlowEntryState { - - /** - * Indicates that this rule has been submitted for addition. - * Not necessarily in the flow table. - */ - PENDING_ADD, - - /** - * Rule has been added which means it is in the flow table. - */ - ADDED, - - /** - * Flow has been marked for removal, might still be in flow table. - */ - PENDING_REMOVE, - - /** - * Flow has been removed from flow table and can be purged. - */ - REMOVED, - - /** - * Indicates that the installation of this flow has failed. - */ - FAILED - } - - /** - * Returns the flow entry state. - * - * @return flow entry state - */ - FlowEntryState state(); - - /** - * Returns the number of milliseconds this flow rule has been applied. - * - * @return number of millis - */ - long life(); - - /** - * Returns the number of packets this flow rule has matched. - * - * @return number of packets - */ - long packets(); - - /** - * Returns the number of bytes this flow rule has matched. - * - * @return number of bytes - */ - long bytes(); - - // TODO: consider removing this attribute - /** - * When this flow entry was last deemed active. - * @return epoch time of last activity - */ - long lastSeen(); - - /** - * Indicates the error type. - * @return an integer value of the error - */ - int errType(); - - /** - * Indicates the error code. - * @return an integer value of the error - */ - int errCode(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowId.java deleted file mode 100644 index 52500f59..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowId.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import com.google.common.base.Objects; - -/** - * Representation of a Flow ID. - */ -public final class FlowId { - - private final long flowid; - - private FlowId(long id) { - this.flowid = id; - } - - public static FlowId valueOf(long id) { - return new FlowId(id); - } - - public long value() { - return flowid; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (obj.getClass() == this.getClass()) { - FlowId that = (FlowId) obj; - return Objects.equal(this.flowid, that.flowid); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hashCode(this.flowid); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRule.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRule.java deleted file mode 100644 index 35d45fbd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRule.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.core.ApplicationId; -import org.onosproject.core.GroupId; -import org.onosproject.net.DeviceId; - -/** - * Represents a generalized match & action pair to be applied to an - * infrastructure device. - */ -public interface FlowRule { - - int MAX_TIMEOUT = 60; - int MIN_PRIORITY = 0; - - /** - * Returns the ID of this flow. - * - * @return the flow ID - */ - FlowId id(); - - /** - * Returns the application id of this flow. - * - * @return an applicationId - */ - short appId(); - - /** - * Returns the group id of this flow. - * - * @return an groupId - */ - GroupId groupId(); - - /** - * Returns the flow rule priority given in natural order; higher numbers - * mean higher priorities. - * - * @return flow rule priority - */ - int priority(); - - /** - * Returns the identity of the device where this rule applies. - * - * @return device identifier - */ - DeviceId deviceId(); - - /** - * Returns the traffic selector that identifies what traffic this rule - * should apply to. - * - * @return traffic selector - */ - TrafficSelector selector(); - - /** - * Returns the traffic treatment that applies to selected traffic. - * - * @return traffic treatment - */ - TrafficTreatment treatment(); - - /** - * Returns the timeout for this flow requested by an application. - * - * @return integer value of the timeout - */ - int timeout(); - - /** - * Returns whether the flow is permanent i.e. does not time out. - * - * @return true if the flow is permanent, otherwise false - */ - boolean isPermanent(); - - /** - * Returns the table id for this rule. - * - * @return an integer. - */ - int tableId(); - - /** - * {@inheritDoc} - * - * Equality for flow rules only considers 'match equality'. This means that - * two flow rules with the same match conditions will be equal, regardless - * of the treatment or other characteristics of the flow. - * - * @param obj the reference object with which to compare. - * @return {@code true} if this object is the same as the obj - * argument; {@code false} otherwise. - */ - boolean equals(Object obj); - - /** - * Returns whether this flow rule is an exact match to the flow rule given - * in the argument. - *

- * Exact match means that deviceId, priority, selector, - * tableId, flowId and treatment are equal. Note that this differs from - * the notion of object equality for flow rules, which does not consider the - * flowId or treatment when testing equality. - *

- * - * @param rule other rule to match against - * @return true if the rules are an exact match, otherwise false - */ - boolean exactMatch(FlowRule rule); - - /** - * A flowrule builder. - */ - interface Builder { - - /** - * Assigns a cookie value to this flowrule. Mutually exclusive with the - * fromApp method. This method is intended to take a cookie value from - * the dataplane and not from the application. - * - * @param cookie a long value - * @return this - */ - Builder withCookie(long cookie); - - /** - * Assigns the application that built this flow rule to this object. - * The short value of the appId will be used as a basis for the - * cookie value computation. It is expected that application use this - * call to set their application id. - * - * @param appId an application id - * @return this - */ - Builder fromApp(ApplicationId appId); - - /** - * Sets the priority for this flow rule. - * - * @param priority an integer - * @return this - */ - Builder withPriority(int priority); - - /** - * Sets the deviceId for this flow rule. - * - * @param deviceId a device id - * @return this - */ - Builder forDevice(DeviceId deviceId); - - /** - * Sets the table id for this flow rule. Default value is 0. - * - * @param tableId an integer - * @return this - */ - Builder forTable(int tableId); - - /** - * Sets the selector (or match field) for this flow rule. - * - * @param selector a traffic selector - * @return this - */ - Builder withSelector(TrafficSelector selector); - - /** - * Sets the traffic treatment for this flow rule. - * - * @param treatment a traffic treatment - * @return this - */ - Builder withTreatment(TrafficTreatment treatment); - - /** - * Makes this rule permanent on the dataplane. - * - * @return this - */ - Builder makePermanent(); - - /** - * Makes this rule temporary and timeout after the specified amount - * of time. - * - * @param timeout an integer - * @return this - */ - Builder makeTemporary(int timeout); - - /** - * Builds a flow rule object. - * - * @return a flow rule. - */ - FlowRule build(); - - } - - /** - * Returns the third party original flow rule. - * - * @return FlowRuleExtPayLoad - */ - FlowRuleExtPayLoad payLoad(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchEntry.java deleted file mode 100644 index 455c6bd8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchEntry.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.net.flow.FlowRuleBatchEntry.FlowRuleOperation; - -@Deprecated -/** - * @deprecated in Drake release - no longer a public API - */ -public class FlowRuleBatchEntry - extends BatchOperationEntry { - - private final Long id; // FIXME: consider using Optional - - public FlowRuleBatchEntry(FlowRuleOperation operator, FlowRule target) { - super(operator, target); - this.id = null; - } - - public FlowRuleBatchEntry(FlowRuleOperation operator, FlowRule target, Long id) { - super(operator, target); - this.id = id; - } - - public Long id() { - return id; - } - - public enum FlowRuleOperation { - ADD, - REMOVE, - MODIFY - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchEvent.java deleted file mode 100644 index 2e823c23..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchEvent.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.net.DeviceId; - -@Deprecated -/** - * Describes flow rule batch event. - * - * @deprecated in Drake release - no longer a public API - */ -public final class FlowRuleBatchEvent extends AbstractEvent { - - - /** - * Type of flow rule events. - */ - public enum Type { - - // Request has been forwarded to MASTER Node - /** - * Signifies that a batch operation has been initiated. - */ - BATCH_OPERATION_REQUESTED, - - // MASTER Node has pushed the batch down to the Device - // (e.g., Received barrier reply) - /** - * Signifies that a batch operation has completed. - */ - BATCH_OPERATION_COMPLETED, - } - - private final CompletedBatchOperation result; - private final DeviceId deviceId; - - /** - * Constructs a new FlowRuleBatchEvent. - * - * @param request batch operation request - * @param deviceId the device this batch will be processed on - * @return event. - */ - public static FlowRuleBatchEvent requested(FlowRuleBatchRequest request, DeviceId deviceId) { - FlowRuleBatchEvent event = new FlowRuleBatchEvent(Type.BATCH_OPERATION_REQUESTED, request, deviceId); - return event; - } - - /** - * Constructs a new FlowRuleBatchEvent. - * @param request batch operation request. - * @param result completed batch operation result. - * @return event. - */ - public static FlowRuleBatchEvent completed(FlowRuleBatchRequest request, CompletedBatchOperation result) { - FlowRuleBatchEvent event = new FlowRuleBatchEvent(Type.BATCH_OPERATION_COMPLETED, request, result); - return event; - } - - /** - * Returns the result of this batch operation. - * @return batch operation result. - */ - public CompletedBatchOperation result() { - return result; - } - - /** - * Returns the deviceId for this batch. - * @return device id - */ - public DeviceId deviceId() { - return deviceId; - } - - /** - * Creates an event of a given type and for the specified flow rule batch. - * - * @param type flow rule batch event type - * @param request event flow rule batch subject - * @param result the result of the batch operation - */ - private FlowRuleBatchEvent(Type type, FlowRuleBatchRequest request, CompletedBatchOperation result) { - super(type, request); - this.result = result; - this.deviceId = result.deviceId(); - } - - /** - * Creates an event of a given type and for the specified flow rule batch. - * - * @param type flow rule batch event type - * @param request event flow rule batch subject - * @param deviceId the device id for this batch - */ - private FlowRuleBatchEvent(Type type, FlowRuleBatchRequest request, DeviceId deviceId) { - super(type, request); - this.result = null; - this.deviceId = deviceId; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchOperation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchOperation.java deleted file mode 100644 index 35428f46..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchOperation.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.net.DeviceId; - -import java.util.Collection; - -@Deprecated -/** - * Class used with the flow subsystem to process per device - * batches. - * - * @deprecated in Drake release - no longer a public API - */ -public class FlowRuleBatchOperation - extends BatchOperation { - - /** - * This id is used to cary to id of the original - * FlowOperations and track where this batch operation - * came from. The id is unique cluster wide. - */ - private final long id; - private final DeviceId deviceId; - - public FlowRuleBatchOperation(Collection operations, - DeviceId deviceId, long flowOperationId) { - super(operations); - this.id = flowOperationId; - this.deviceId = deviceId; - } - - public DeviceId deviceId() { - return this.deviceId; - } - - public long id() { - return id; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchRequest.java deleted file mode 100644 index 0b0585b9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleBatchRequest.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import com.google.common.collect.Lists; -import org.onosproject.net.DeviceId; - -import java.util.Collections; -import java.util.List; -import java.util.Set; - -@Deprecated -/** - * @deprecated in Drake release - no longer a public API - */ -public class FlowRuleBatchRequest { - - /** - * This id is used to carry to id of the original - * FlowOperations and track where this batch operation - * came from. The id is unique cluster wide. - */ - private final long batchId; - - private final Set ops; - - - public FlowRuleBatchRequest(long batchId, Set ops) { - this.batchId = batchId; - this.ops = Collections.unmodifiableSet(ops); - } - - public Set ops() { - return ops; - } - - public FlowRuleBatchOperation asBatchOperation(DeviceId deviceId) { - List entries = Lists.newArrayList(); - entries.addAll(ops); - return new FlowRuleBatchOperation(entries, deviceId, batchId); - } - - public long batchId() { - return batchId; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleEvent.java deleted file mode 100644 index 41ef1c8a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleEvent.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.event.AbstractEvent; - -/** - * Describes flow rule event. - */ -public class FlowRuleEvent extends AbstractEvent { - - /** - * Type of flow rule events. - */ - public enum Type { - /** - * Signifies that a new flow rule has been detected. - */ - RULE_ADDED, - - /** - * Signifies that a flow rule has been removed. - */ - RULE_REMOVED, - - /** - * Signifies that a rule has been updated. - */ - RULE_UPDATED, - - // internal event between Manager <-> Store - - /* - * Signifies that a request to add flow rule has been added to the store. - */ - RULE_ADD_REQUESTED, - /* - * Signifies that a request to remove flow rule has been added to the store. - */ - RULE_REMOVE_REQUESTED, - } - - /** - * Creates an event of a given type and for the specified flow rule and the - * current time. - * - * @param type flow rule event type - * @param flowRule event flow rule subject - */ - public FlowRuleEvent(Type type, FlowRule flowRule) { - super(type, flowRule); - } - - /** - * Creates an event of a given type and for the specified flow rule and time. - * - * @param type flow rule event type - * @param flowRule event flow rule subject - * @param time occurrence time - */ - public FlowRuleEvent(Type type, FlowRule flowRule, long time) { - super(type, flowRule, time); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleExtPayLoad.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleExtPayLoad.java deleted file mode 100644 index d4d2d9ec..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleExtPayLoad.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Arrays; - -/** - * Represents for 3rd-party private original flow. - */ -public final class FlowRuleExtPayLoad { - private final byte[] payLoad; - - /** - * private constructor. - * - * @param payLoad private flow - */ - private FlowRuleExtPayLoad(byte[] payLoad) { - this.payLoad = payLoad; - } - - /** - * Creates a FlowRuleExtPayLoad. - * - * @param payLoad payload byte data - * @return FlowRuleExtPayLoad payLoad - */ - public static FlowRuleExtPayLoad flowRuleExtPayLoad(byte[] payLoad) { - return new FlowRuleExtPayLoad(payLoad); - } - - /** - * Returns private flow. - * - * @return payLoad private flow - */ - public byte[] payLoad() { - return payLoad; - } - - @Override - public int hashCode() { - return Arrays.hashCode(payLoad); - } - - public int hash() { - return Arrays.hashCode(payLoad); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof FlowRuleExtPayLoad) { - FlowRuleExtPayLoad that = (FlowRuleExtPayLoad) obj; - return Arrays.equals(payLoad, that.payLoad); - - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("payLoad", payLoad).toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleListener.java deleted file mode 100644 index 1a6ef7d9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving flow rule related events. - */ -public interface FlowRuleListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperation.java deleted file mode 100644 index 82d43be8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperation.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -import com.google.common.base.MoreObjects; - -/** - * Representation of an operation on a flow rule table. - */ -public class FlowRuleOperation { - - /** - * Type of flow table operations. - */ - public enum Type { - ADD, - MODIFY, - REMOVE - } - - private final FlowRule rule; - private final Type type; - - public FlowRuleOperation(FlowRule rule, Type type) { - this.rule = rule; - this.type = type; - } - - /** - * Returns the type of operation. - * - * @return type - */ - public Type type() { - return type; - } - - /** - * Returns the flow rule. - * - * @return flow rule - */ - public FlowRule rule() { - return rule; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("rule", rule) - .add("type", type) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java deleted file mode 100644 index 84e0b8be..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperations.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; - -import java.util.List; -import java.util.Set; - -import static org.onosproject.net.flow.FlowRuleOperation.Type.*; - -/** - * A batch of flow rule operations that are broken into stages. - * TODO move this up to parent's package - */ -public class FlowRuleOperations { - - private final List> stages; - private final FlowRuleOperationsContext callback; // TODO consider Optional - - private FlowRuleOperations(List> stages, - FlowRuleOperationsContext cb) { - this.stages = stages; - this.callback = cb; - } - - // kryo-constructor - protected FlowRuleOperations() { - this.stages = Lists.newArrayList(); - this.callback = null; - } - - /** - * Returns the flow rule operations as sets of stages that should be - * executed sequentially. - * - * @return flow rule stages - */ - public List> stages() { - return stages; - } - - /** - * Returns the callback for this batch of operations. - * - * @return callback - */ - public FlowRuleOperationsContext callback() { - return callback; - } - - /** - * Returns a new builder. - * - * @return new builder - */ - public static Builder builder() { - return new Builder(); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("stages", stages) - .toString(); - } - - /** - * A builder for constructing flow rule operations. - */ - public static final class Builder { - - private final ImmutableList.Builder> listBuilder = ImmutableList.builder(); - private ImmutableSet.Builder currentStage = ImmutableSet.builder(); - - // prevent use of the default constructor outside of this file; use the above method - private Builder() {} - - /** - * Appends a flow rule add to the current stage. - * - * @param flowRule flow rule - * @return this - */ - public Builder add(FlowRule flowRule) { - currentStage.add(new FlowRuleOperation(flowRule, ADD)); - return this; - } - - /** - * Appends an existing flow rule to the current stage. - * - * @param flowRuleOperation flow rule operation - * @return this - */ - public Builder operation(FlowRuleOperation flowRuleOperation) { - currentStage.add(flowRuleOperation); - return this; - } - - /** - * Appends a flow rule modify to the current stage. - * - * @param flowRule flow rule - * @return this - */ - public Builder modify(FlowRule flowRule) { - currentStage.add(new FlowRuleOperation(flowRule, MODIFY)); - return this; - } - - /** - * Appends a flow rule remove to the current stage. - * - * @param flowRule flow rule - * @return this - */ - // FIXME this is confusing, consider renaming - public Builder remove(FlowRule flowRule) { - currentStage.add(new FlowRuleOperation(flowRule, REMOVE)); - return this; - } - - /** - * Closes the current stage. - */ - private void closeStage() { - ImmutableSet stage = currentStage.build(); - if (!stage.isEmpty()) { - listBuilder.add(stage); - } - } - - /** - * Closes the current stage and starts a new one. - * - * @return this - */ - public Builder newStage() { - closeStage(); - currentStage = ImmutableSet.builder(); - return this; - } - - /** - * Builds the immutable flow rule operations. - * - * @return flow rule operations - */ - public FlowRuleOperations build() { - return build(null); - } - - /** - * Builds the immutable flow rule operations. - * - * @param cb the callback to call when this operation completes - * @return flow rule operations - */ - public FlowRuleOperations build(FlowRuleOperationsContext cb) { - closeStage(); - return new FlowRuleOperations(listBuilder.build(), cb); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperationsContext.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperationsContext.java deleted file mode 100644 index c405b129..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleOperationsContext.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -/** - * The context of a flow rule operations that will become the subject of - * the notification. - * - * Implementations of this class must be serializable. - */ -public interface FlowRuleOperationsContext { - // TODO we might also want to execute a method on behalf of the app - default void onSuccess(FlowRuleOperations ops){} - default void onError(FlowRuleOperations ops){} -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProvider.java deleted file mode 100644 index ac2895eb..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProvider.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.provider.Provider; - -/** - * Abstraction of a flow rule provider. - */ -public interface FlowRuleProvider extends Provider { - - /** - * Instructs the provider to apply the specified flow rules to their - * respective devices. - * @param flowRules one or more flow rules - * throws SomeKindOfException that indicates which ones were applied and - * which ones failed - */ - void applyFlowRule(FlowRule... flowRules); - - /** - * Instructs the provider to remove the specified flow rules to their - * respective devices. - * @param flowRules one or more flow rules - * throws SomeKindOfException that indicates which ones were applied and - * which ones failed - */ - void removeFlowRule(FlowRule... flowRules); - - /** - * Removes rules by their id. - * @param id the id to remove - * @param flowRules one or more flow rules - */ - void removeRulesById(ApplicationId id, FlowRule... flowRules); - - /** - * Installs a batch of flow rules. Each flowrule is associated to an - * operation which results in either addition, removal or modification. - * @param batch a batch of flow rules - */ - void executeBatch(FlowRuleBatchOperation batch); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProviderRegistry.java deleted file mode 100644 index 7e317c01..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProviderRegistry.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.net.provider.ProviderRegistry; - -/** - * Abstraction for a flow rule provider registry. - */ -public interface FlowRuleProviderRegistry - extends ProviderRegistry { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProviderService.java deleted file mode 100644 index aefa96b4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleProviderService.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.List; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.provider.ProviderService; - -/** - * Service through which flow rule providers can inject information into - * the core. - */ -public interface FlowRuleProviderService extends ProviderService { - - /** - * Signals that a flow rule that was previously installed has been removed. - * - * @param flowEntry removed flow entry - */ - void flowRemoved(FlowEntry flowEntry); - - /** - * Pushes the collection of flow entries currently applied on the given - * device. - * - * @param deviceId device identifier - * @param flowEntries collection of flow rules - */ - void pushFlowMetrics(DeviceId deviceId, Iterable flowEntries); - - /** - * Pushes the collection of flow entries currently applied on the given - * device without flowMissing process. - * - * @param deviceId device identifier - * @param flowEntries collection of flow rules - */ - void pushFlowMetricsWithoutFlowMissing(DeviceId deviceId, Iterable flowEntries); - - /** - * Pushes the collection of table statistics entries currently extracted - * from the given device. - * - * @param deviceId device identifier - * @param tableStatsEntries collection of flow table statistics entries - */ - void pushTableStatistics(DeviceId deviceId, List tableStatsEntries); - - /** - * Indicates to the core that the requested batch operation has - * been completed. - * - * @param batchId the batch which was processed - * @param operation the resulting outcome of the operation - */ - void batchOperationCompleted(long batchId, CompletedBatchOperation operation); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleService.java deleted file mode 100644 index ee8d5a98..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleService.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.core.ApplicationId; -import org.onosproject.event.ListenerService; -import org.onosproject.net.DeviceId; - -/** - * Service for injecting flow rules into the environment and for obtaining - * information about flow rules already in the environment. This implements - * semantics of a distributed authoritative flow table where the master copy - * of the flow rules lies with the controller and the devices hold only the - * 'cached' copy. - */ -public interface FlowRuleService - extends ListenerService { - - /** - * The topic used for obtaining globally unique ids. - */ - String FLOW_OP_TOPIC = "flow-ops-ids"; - - /** - * Returns the number of flow rules in the system. - * - * @return flow rule count - */ - int getFlowRuleCount(); - - /** - * Returns the collection of flow entries applied on the specified device. - * This will include flow rules which may not yet have been applied to - * the device. - * - * @param deviceId device identifier - * @return collection of flow rules - */ - Iterable getFlowEntries(DeviceId deviceId); - - // TODO: add createFlowRule factory method and execute operations method - - /** - * Applies the specified flow rules onto their respective devices. These - * flow rules will be retained by the system and re-applied anytime the - * device reconnects to the controller. - * - * @param flowRules one or more flow rules - */ - void applyFlowRules(FlowRule... flowRules); - - /** - * Removes the specified flow rules from their respective devices. If the - * device is not presently connected to the controller, these flow will - * be removed once the device reconnects. - * - * @param flowRules one or more flow rules - * throws SomeKindOfException that indicates which ones were removed and - * which ones failed - */ - void removeFlowRules(FlowRule... flowRules); - - /** - * Removes all rules by id. - * - * @param appId id to remove - */ - void removeFlowRulesById(ApplicationId appId); - - /** - * Returns a list of rules with this application id. - * - * @param id the id to look up - * @return collection of flow rules - */ - Iterable getFlowRulesById(ApplicationId id); - - /** - * Returns a list of rules filterd by application and group id. - * - * @param appId the application id to lookup - * @param groupId the groupid to lookup - * @return collection of flow rules - */ - Iterable getFlowRulesByGroupId(ApplicationId appId, short groupId); - - /** - * Applies a batch operation of FlowRules. - * - * @param ops batch operation to apply - */ - void apply(FlowRuleOperations ops); - - /** - * Returns the collection of flow table statistics of the specified device. - * - * @param deviceId device identifier - * @return collection of flow table statistics - */ - Iterable getFlowTableStatistics(DeviceId deviceId); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStore.java deleted file mode 100644 index d81c73c9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStore.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.List; - -import org.onosproject.net.DeviceId; -import org.onosproject.store.Store; - -/** - * Manages inventory of flow rules; not intended for direct use. - */ -public interface FlowRuleStore extends Store { - - /** - * Returns the number of flow rule in the store. - * - * @return number of flow rules - */ - int getFlowRuleCount(); - - /** - * Returns the stored flow. - * - * @param rule the rule to look for - * @return a flow rule - */ - FlowEntry getFlowEntry(FlowRule rule); - - /** - * Returns the flow entries associated with a device. - * - * @param deviceId the device ID - * @return the flow entries - */ - Iterable getFlowEntries(DeviceId deviceId); - - /** - * // TODO: Better description of method behavior. - * Stores a new flow rule without generating events. - * - * @param rule the flow rule to add - * @deprecated in Cardinal Release - */ - @Deprecated - void storeFlowRule(FlowRule rule); - - /** - * Stores a batch of flow rules. - * - * @param batchOperation batch of flow rules. - * A batch can contain flow rules for a single device only. - * - */ - void storeBatch(FlowRuleBatchOperation batchOperation); - - /** - * Invoked on the completion of a storeBatch operation. - * - * @param event flow rule batch event - */ - void batchOperationComplete(FlowRuleBatchEvent event); - - /** - * Marks a flow rule for deletion. Actual deletion will occur - * when the provider indicates that the flow has been removed. - * - * @param rule the flow rule to delete - */ - void deleteFlowRule(FlowRule rule); - - /** - * Stores a new flow rule, or updates an existing entry. - * - * @param rule the flow rule to add or update - * @return flow_added event, or null if just an update - */ - FlowRuleEvent addOrUpdateFlowRule(FlowEntry rule); - - /** - * @param rule the flow entry to remove - * @return flow_removed event, or null if nothing removed - */ - FlowRuleEvent removeFlowRule(FlowEntry rule); - - /** - * Updates the flow table statistics of the specified device using - * the given statistics. - * - * @param deviceId device identifier - * @param tableStats list of table statistics - * @return ready to send event describing what occurred; - */ - FlowRuleEvent updateTableStatistics(DeviceId deviceId, - List tableStats); - - /** - * Returns the flow table statistics associated with a device. - * - * @param deviceId the device ID - * @return the flow table statistics - */ - Iterable getTableStatistics(DeviceId deviceId); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStoreDelegate.java deleted file mode 100644 index c4ddb129..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/FlowRuleStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.store.StoreDelegate; - -/** - * Flow rule store delegate abstraction. - */ -public interface FlowRuleStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/StoredFlowEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/StoredFlowEntry.java deleted file mode 100644 index dc0c3395..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/StoredFlowEntry.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - - -public interface StoredFlowEntry extends FlowEntry { - - /** - * Sets the last active epoch time. - */ - void setLastSeen(); - - /** - * Sets the new state for this entry. - * @param newState new flow entry state. - */ - void setState(FlowEntryState newState); - - /** - * Sets how long this entry has been entered in the system. - * @param life epoch time - */ - void setLife(long life); - - /** - * Number of packets seen by this entry. - * @param packets a long value - */ - void setPackets(long packets); - - /** - * Number of bytes seen by this rule. - * @param bytes a long value - */ - void setBytes(long bytes); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TableStatisticsEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TableStatisticsEntry.java deleted file mode 100644 index 563f31ce..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TableStatisticsEntry.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.net.DeviceId; - -/** - * Interface for flow table statistics of a device. - */ -public interface TableStatisticsEntry { - - /** - * Returns the device Id. - * - * @return device id - */ - DeviceId deviceId(); - - /** - * Returns the table number. - * - * @return table number - */ - int tableId(); - - /** - * Returns the number of active flow entries in this table. - * - * @return the number of active flow entries - */ - long activeFlowEntries(); - - /** - * Returns the number of packets looked up in the table. - * - * @return the number of packets looked up in the table - */ - long packetsLookedup(); - - /** - * Returns the number of packets that successfully matched in the table. - * - * @return the number of packets that successfully matched in the table - */ - long packetsMatched(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java deleted file mode 100644 index 0d055add..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java +++ /dev/null @@ -1,447 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onlab.packet.Ip4Address; -import org.onlab.packet.Ip6Address; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onlab.packet.TpPort; -import org.onlab.packet.VlanId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.criteria.Criterion; -import org.onosproject.net.flow.criteria.ExtensionSelector; - -import java.util.Set; - -/** - * Abstraction of a slice of network traffic. - */ -public interface TrafficSelector { - - /** - * Returns selection criteria as an ordered list. - * - * @return list of criteria - */ - Set criteria(); - - /** - * Returns the selection criterion for a particular type, if it exists in - * this traffic selector. - * - * @param type criterion type to look up - * @return the criterion of the specified type if one exists, otherwise null - */ - Criterion getCriterion(Criterion.Type type); - - /** - * Builder of traffic selector entities. - */ - interface Builder { - - /** - * Adds a traffic selection criterion. If a same type criterion has - * already been added, it will be replaced by this one. - * - * @param criterion new criterion - * @return self - */ - Builder add(Criterion criterion); - - /** - * Matches an inport. - * - * @param port the inport - * @return a selection builder - */ - Builder matchInPort(PortNumber port); - - /** - * Matches a physical inport. - * - * @param port the physical inport - * @return a selection builder - */ - Builder matchInPhyPort(PortNumber port); - - /** - * Matches a metadata. - * - * @param metadata the metadata - * @return a selection builder - */ - Builder matchMetadata(long metadata); - - /** - * Matches a l2 dst address. - * - * @param addr a l2 address - * @return a selection builder - */ - Builder matchEthDst(MacAddress addr); - - /** - * Matches a l2 src address. - * - * @param addr a l2 address - * @return a selection builder - */ - Builder matchEthSrc(MacAddress addr); - - /** - * Matches the ethernet type. - * - * @param ethType an ethernet type - * @return a selection builder - */ - Builder matchEthType(short ethType); - - /** - * Matches the vlan id. - * - * @param vlanId a vlan id - * @return a selection builder - */ - Builder matchVlanId(VlanId vlanId); - - /** - * Matches a vlan priority. - * - * @param vlanPcp a vlan priority - * @return a selection builder - */ - Builder matchVlanPcp(byte vlanPcp); - - /** - * Matches an IP DSCP (6 bits in ToS field). - * - * @param ipDscp an IP DSCP value - * @return a selection builder - */ - Builder matchIPDscp(byte ipDscp); - - /** - * Matches an IP ECN (2 bits in ToS field). - * - * @param ipEcn an IP ECN value - * @return a selection builder - */ - Builder matchIPEcn(byte ipEcn); - - /** - * Matches the l3 protocol. - * - * @param proto a l3 protocol - * @return a selection builder - */ - Builder matchIPProtocol(byte proto); - - /** - * Matches a l3 IPv4 address. - * - * @param ip a l3 address - * @return a selection builder - */ - Builder matchIPSrc(IpPrefix ip); - - /** - * Matches a l3 IPv4 address. - * - * @param ip a l3 address - * @return a selection builder - */ - Builder matchIPDst(IpPrefix ip); - - /** - * Matches a TCP source port number. - * - * @param tcpPort a TCP source port number - * @return a selection builder - * @deprecated in Drake release - */ - @Deprecated - Builder matchTcpSrc(short tcpPort); - - /** - * Matches a TCP source port number. - * - * @param tcpPort a TCP source port number - * @return a selection builder - */ - Builder matchTcpSrc(TpPort tcpPort); - - /** - * Matches a TCP destination port number. - * - * @param tcpPort a TCP destination port number - * @return a selection builder - * @deprecated in Drake release - */ - @Deprecated - Builder matchTcpDst(short tcpPort); - - /** - * Matches a TCP destination port number. - * - * @param tcpPort a TCP destination port number - * @return a selection builder - */ - Builder matchTcpDst(TpPort tcpPort); - - /** - * Matches an UDP source port number. - * - * @param udpPort an UDP source port number - * @return a selection builder - * @deprecated in Drake release - */ - @Deprecated - Builder matchUdpSrc(short udpPort); - - /** - * Matches an UDP source port number. - * - * @param udpPort an UDP source port number - * @return a selection builder - */ - Builder matchUdpSrc(TpPort udpPort); - - /** - * Matches an UDP destination port number. - * - * @param udpPort an UDP destination port number - * @return a selection builder - * @deprecated in Drake release - */ - @Deprecated - Builder matchUdpDst(short udpPort); - - /** - * Matches an UDP destination port number. - * - * @param udpPort an UDP destination port number - * @return a selection builder - */ - Builder matchUdpDst(TpPort udpPort); - - /** - * Matches a SCTP source port number. - * - * @param sctpPort a SCTP source port number - * @return a selection builder - * @deprecated in Drake release - */ - @Deprecated - Builder matchSctpSrc(short sctpPort); - - /** - * Matches a SCTP source port number. - * - * @param sctpPort a SCTP source port number - * @return a selection builder - */ - Builder matchSctpSrc(TpPort sctpPort); - - /** - * Matches a SCTP destination port number. - * - * @param sctpPort a SCTP destination port number - * @return a selection builder - * @deprecated in Drake release - */ - @Deprecated - Builder matchSctpDst(short sctpPort); - - /** - * Matches a SCTP destination port number. - * - * @param sctpPort a SCTP destination port number - * @return a selection builder - */ - Builder matchSctpDst(TpPort sctpPort); - - /** - * Matches an ICMP type. - * - * @param icmpType an ICMP type - * @return a selection builder - */ - Builder matchIcmpType(byte icmpType); - - /** - * Matches an ICMP code. - * - * @param icmpCode an ICMP code - * @return a selection builder - */ - Builder matchIcmpCode(byte icmpCode); - - /** - * Matches a l3 IPv6 address. - * - * @param ip a l3 IPv6 address - * @return a selection builder - */ - Builder matchIPv6Src(IpPrefix ip); - - /** - * Matches a l3 IPv6 address. - * - * @param ip a l3 IPv6 address - * @return a selection builder - */ - Builder matchIPv6Dst(IpPrefix ip); - - /** - * Matches an IPv6 flow label. - * - * @param flowLabel an IPv6 flow label - * @return a selection builder - */ - Builder matchIPv6FlowLabel(int flowLabel); - - /** - * Matches an ICMPv6 type. - * - * @param icmpv6Type an ICMPv6 type - * @return a selection builder - */ - Builder matchIcmpv6Type(byte icmpv6Type); - - /** - * Matches an ICMPv6 code. - * - * @param icmpv6Code an ICMPv6 code - * @return a selection builder - */ - Builder matchIcmpv6Code(byte icmpv6Code); - - /** - * Matches an IPv6 Neighbor Discovery target address. - * - * @param targetAddress an IPv6 Neighbor Discovery target address - * @return a selection builder - */ - Builder matchIPv6NDTargetAddress(Ip6Address targetAddress); - - /** - * Matches an IPv6 Neighbor Discovery source link-layer address. - * - * @param mac an IPv6 Neighbor Discovery source link-layer address - * @return a selection builder - */ - Builder matchIPv6NDSourceLinkLayerAddress(MacAddress mac); - - /** - * Matches an IPv6 Neighbor Discovery target link-layer address. - * - * @param mac an IPv6 Neighbor Discovery target link-layer address - * @return a selection builder - */ - Builder matchIPv6NDTargetLinkLayerAddress(MacAddress mac); - - /** - * Matches on a MPLS label. - * - * @param mplsLabel a MPLS label. - * @return a selection builder - */ - Builder matchMplsLabel(MplsLabel mplsLabel); - - /** - * Matches on a MPLS Bottom-of-Stack indicator bit. - * - * @param mplsBos boolean value indicating BOS=1 (true) or BOS=0 (false). - * @return a selection builder - */ - Builder matchMplsBos(boolean mplsBos); - - /** - * Matches a tunnel id. - * - * @param tunnelId a tunnel id - * @return a selection builder - */ - Builder matchTunnelId(long tunnelId); - - /** - * Matches on IPv6 Extension Header pseudo-field flags. - * - * @param exthdrFlags the IPv6 Extension Header pseudo-field flags - * @return a selection builder - */ - Builder matchIPv6ExthdrFlags(short exthdrFlags); - - /** - * Matches a arp IPv4 destination address. - * - * @param addr a arp IPv4 destination address - * @return a selection builder - */ - Builder matchArpTpa(Ip4Address addr); - - /** - * Matches a arp IPv4 source address. - * - * @param addr a arp IPv4 source address - * @return a selection builder - */ - Builder matchArpSpa(Ip4Address addr); - - /** - * Matches a arp_eth_dst address. - * - * @param addr a arp_eth_dst address - * @return a selection builder - */ - Builder matchArpTha(MacAddress addr); - - /** - * Matches a arp_eth_src address. - * - * @param addr a arp_eth_src address - * @return a selection builder - */ - Builder matchArpSha(MacAddress addr); - - /** - * Matches a arp operation type. - * - * @param arpOp a arp operation type - * @return a selection builder - */ - Builder matchArpOp(int arpOp); - - /** - * Uses an extension selector. - * - * @param extensionSelector extension selector - * @param deviceId device ID - * @return a selection builder - */ - Builder extension(ExtensionSelector extensionSelector, DeviceId deviceId); - - /** - * Builds an immutable traffic selector. - * - * @return traffic selector - */ - TrafficSelector build(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java deleted file mode 100644 index 3e57925d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java +++ /dev/null @@ -1,473 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.List; - -import org.onlab.packet.EthType; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onlab.packet.TpPort; -import org.onlab.packet.VlanId; -import org.onosproject.core.GroupId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.instructions.ExtensionTreatment; -import org.onosproject.net.flow.instructions.Instruction; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.meter.MeterId; - -/** - * Abstraction of network traffic treatment. - */ -public interface TrafficTreatment { - - /** - * Returns the list of treatment instructions that will be applied - * further down the pipeline. - * @return list of treatment instructions - */ - List deferred(); - - /** - * Returns the list of treatment instructions that will be applied - * immediately. - * @return list of treatment instructions - */ - List immediate(); - - /** - * Returns the list of all instructions in the treatment, both immediate and - * deferred. - * - * @return list of treatment instructions - */ - List allInstructions(); - - /** - * Returns the next table in the pipeline. - * @return a table transition; may be null. - */ - Instructions.TableTypeTransition tableTransition(); - - /** - * Whether the deferred treatment instructions will be cleared - * by the device. - * @return a boolean - */ - boolean clearedDeferred(); - - /** - * Returns the metadata instruction if there is one. - * - * @return a metadata instruction that may be null - */ - Instructions.MetadataInstruction writeMetadata(); - - /** - * Returns the meter instruction if there is one. - * - * @return a meter instruction that may be null - */ - Instructions.MeterInstruction metered(); - - /** - * Builder of traffic treatment entities. - */ - interface Builder { - - /** - * Adds an instruction to the builder. - * - * @param instruction an instruction - * @return a treatment builder - */ - Builder add(Instruction instruction); - - /** - * Adds a drop instruction. - * - * @return a treatment builder - */ - Builder drop(); - - /** - * Adds a punt-to-controller instruction. - * - * @return a treatment builder - */ - Builder punt(); - - /** - * Set the output port. - * - * @param number the out port - * @return a treatment builder - */ - Builder setOutput(PortNumber number); - - /** - * Sets the src l2 address. - * - * @param addr a macaddress - * @return a treatment builder - */ - Builder setEthSrc(MacAddress addr); - - /** - * Sets the dst l2 address. - * - * @param addr a macaddress - * @return a treatment builder - */ - Builder setEthDst(MacAddress addr); - - /** - * Sets the vlan id. - * - * @param id a vlanid - * @return a treatment builder - */ - Builder setVlanId(VlanId id); - - /** - * Sets the vlan priority. - * - * @param pcp a vlan priority - * @return a treatment builder - */ - Builder setVlanPcp(Byte pcp); - - /** - * Sets the src l3 address. - * - * @param addr an ip - * @return a treatment builder - */ - Builder setIpSrc(IpAddress addr); - - /** - * Sets the dst l3 address. - * - * @param addr an ip - * @return a treatment builder - */ - Builder setIpDst(IpAddress addr); - - /** - * Decrement the TTL in IP header by one. - * - * @return a treatment builder - */ - Builder decNwTtl(); - - /** - * Copy the TTL to outer protocol layer. - * - * @return a treatment builder - */ - Builder copyTtlOut(); - - /** - * Copy the TTL to inner protocol layer. - * - * @return a treatment builder - */ - Builder copyTtlIn(); - - /** - * Push MPLS ether type. - * - * @return a treatment builder - */ - Builder pushMpls(); - - /** - * Pops MPLS ether type. - * - * @return a treatment builder - */ - Builder popMpls(); - - /** - * Pops MPLS ether type and set the new ethertype. - * - * @param etherType an ether type - * @return a treatment builder - * @deprecated in Drake Release - */ - @Deprecated - Builder popMpls(int etherType); - - /** - * Pops MPLS ether type and set the new ethertype. - * - * @param etherType an ether type - * @return a treatment builder - */ - Builder popMpls(EthType etherType); - - /** - * Sets the mpls label. - * - * @param mplsLabel MPLS label - * @return a treatment builder - */ - Builder setMpls(MplsLabel mplsLabel); - - /** - * Sets the mpls bottom-of-stack indicator bit. - * - * @param mplsBos boolean to set BOS=1 (true) or BOS=0 (false) - * @return a treatment builder. - */ - Builder setMplsBos(boolean mplsBos); - - /** - * Decrement MPLS TTL. - * - * @return a treatment builder - */ - Builder decMplsTtl(); - - /** - * Sets the optical channel ID or lambda. - * - * @param lambda optical channel ID - * @return a treatment builder - * @deprecated in Drake Release - */ - @Deprecated - Builder setLambda(short lambda); - - /** - * Sets the group ID. - * - * @param groupId group ID - * @return a treatment builder - */ - Builder group(GroupId groupId); - - /** - * Sets the Queue ID. - * - * @param queueId a queue ID - * @return a treatment builder - */ - Builder setQueue(long queueId); - - /** - * Sets the Queue ID for a specific port. - * - * @param queueId a queue ID - * @param port a port number - * @return a treatment builder - */ - Builder setQueue(long queueId, PortNumber port); - - /** - * Sets a meter to be used by this flow. - * - * @param meterId a meter id - * @return a treatment builder - */ - Builder meter(MeterId meterId); - - /** - * Sets the next table id to transition to. - * - * @param tableId the table table - * @return a treatement builder - */ - Builder transition(Integer tableId); - - - /** - * Pops outermost VLAN tag. - * - * @return a treatment builder - */ - Builder popVlan(); - - /** - * Pushes a new VLAN tag. - * - * @return a treatment builder - */ - Builder pushVlan(); - - /** - * Any instructions preceded by this method call will be deferred. - * @return a treatment builder - */ - Builder deferred(); - - /** - * Any instructions preceded by this method call will be immediate. - * @return a treatment builder - */ - Builder immediate(); - - - /** - * Instructs the device to clear the deferred instructions set. - * @return a treatment builder - */ - Builder wipeDeferred(); - - /** - * Writes metadata to associate with a packet. - *
-         * {@code
-         * new_metadata = (old_metadata &  ̃mask) | (value & mask)
-         * }
-         * 
- * - * @param value the metadata to write - * @param mask the masked bits for the value - * @return a treatment builder - */ - Builder writeMetadata(long value, long mask); - - /** - * Sets the tunnel id. - * - * @param tunnelId a tunnel id - * @return a treatment builder - */ - Builder setTunnelId(long tunnelId); - - /** - * Sets the src TCP port. - * - * @param port a port number - * @return a treatment builder - * @deprecated in Drake release - */ - @Deprecated - Builder setTcpSrc(short port); - - /** - * Sets the src TCP port. - * - * @param port a port number - * @return a treatment builder - */ - Builder setTcpSrc(TpPort port); - - /** - * Sets the dst TCP port. - * - * @param port a port number - * @return a treatment builder - * @deprecated in Drake release - */ - @Deprecated - Builder setTcpDst(short port); - - /** - * Sets the dst TCP port. - * - * @param port a port number - * @return a treatment builder - */ - Builder setTcpDst(TpPort port); - - /** - * Sets the src UDP port. - * - * @param port a port number - * @return a treatment builder - * @deprecated in Drake release - */ - @Deprecated - Builder setUdpSrc(short port); - - /** - * Sets the src UDP port. - * - * @param port a port number - * @return a treatment builder - */ - Builder setUdpSrc(TpPort port); - - /** - * Sets the dst UDP port. - * - * @param port a port number - * @return a treatment builder - * @deprecated in Drake release - */ - @Deprecated - Builder setUdpDst(short port); - - /** - * Sets the dst UDP port. - * - * @param port a port number - * @return a treatment builder - */ - Builder setUdpDst(TpPort port); - - /** - * Sets the arp src ip address. - * - * @param addr an ip - * @return a treatment builder - */ - Builder setArpSpa(IpAddress addr); - - /** - * Sets the arp src mac address. - * - * @param addr a macaddress - * @return a treatment builder - */ - Builder setArpSha(MacAddress addr); - - /** - * Sets the arp operation. - * - * @param op the value of arp operation. - * @return a treatment builder. - */ - Builder setArpOp(short op); - - /** - * Uses an extension treatment. - * - * @param extension extension treatment - * @param deviceId device ID - * @return a treatment builder - */ - Builder extension(ExtensionTreatment extension, DeviceId deviceId); - - /** - * Builds an immutable traffic treatment descriptor. - *

- * If the treatment is empty when build() is called, it will add a default - * drop rule automatically. For a treatment that is actually empty, use - * {@link org.onosproject.net.flow.DefaultTrafficTreatment#emptyTreatment}. - *

- * - * @return traffic treatment - */ - TrafficTreatment build(); - - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TypedStoredFlowEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TypedStoredFlowEntry.java deleted file mode 100644 index 965fd1f8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/TypedStoredFlowEntry.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -/** - * Represents a flow live type for a given flow entry. - */ -public interface TypedStoredFlowEntry extends StoredFlowEntry { - enum FlowLiveType { - /** - * Indicates that this rule has been submitted for addition immediately. - * Not necessarily collecting flow stats. - */ - IMMEDIATE_FLOW, - - /** - * Indicates that this rule has been submitted for a short time. - * Necessarily collecting flow stats every calAndPollInterval. - */ - SHORT_FLOW, - - /** - * Indicates that this rule has been submitted for a mid time. - * Necessarily collecting flow stats every midPollInterval. - */ - MID_FLOW, - - /** - * Indicates that this rule has been submitted for a long time. - * Necessarily collecting flow stats every longPollInterval. - */ - LONG_FLOW, - - /** - * Indicates that this rule has been submitted for UNKNOWN or ERROR. - * Not necessarily collecting flow stats. - */ - UNKNOWN_FLOW - } - - /** - * Gets the flow live type for this entry. - * - * @return flow live type - */ - FlowLiveType flowLiveType(); - - /** - * Sets the new flow live type for this entry. - * @param liveType new flow live type. - */ - void setFlowLiveType(FlowLiveType liveType); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpHaCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpHaCriterion.java deleted file mode 100644 index 71269dd1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpHaCriterion.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onlab.packet.MacAddress; - -/** - * Implementation of arp_eth_src address or arp_eth_dst address criterion. - */ -public final class ArpHaCriterion implements Criterion { - private final MacAddress mac; - private final Type type; - - /** - * Constructor. - * - * @param mac the MAC Address to match. - * @param type the match type. Should be one of the following: - * Type.ARP_SHA, Type.ARP_THA - */ - ArpHaCriterion(MacAddress mac, Type type) { - checkNotNull(mac, "mac cannot be null"); - checkNotNull(type, "type cannot be null"); - this.mac = mac; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the MAC Address to match. - * - * @return the MAC Address to match - */ - public MacAddress mac() { - return this.mac; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("mac", mac).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), mac); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ArpHaCriterion) { - ArpHaCriterion that = (ArpHaCriterion) obj; - return Objects.equals(mac, that.mac) && - Objects.equals(type, that.type); - } - return false; - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpOpCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpOpCriterion.java deleted file mode 100644 index 8c5398c6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpOpCriterion.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; - -/** - * Implementation of arp operation type criterion. - */ -public final class ArpOpCriterion implements Criterion { - private final int arpOp; - private final Type type; - - /** - * Constructor. - * - * @param arpOp the arp operation type to match. - * @param type the match type. Should be the following: - * Type.ARP_OP - */ - ArpOpCriterion(int arpOp, Type type) { - this.arpOp = arpOp; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the arp operation type to match. - * - * @return the arp operation type to match - */ - public int arpOp() { - return this.arpOp; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("arpOp", arpOp).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), arpOp); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ArpOpCriterion) { - ArpOpCriterion that = (ArpOpCriterion) obj; - return Objects.equals(arpOp, that.arpOp) && - Objects.equals(type, that.type); - } - return false; - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpPaCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpPaCriterion.java deleted file mode 100644 index ba5a03d8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ArpPaCriterion.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; - -import org.onlab.packet.Ip4Address; - -/** - * Implementation of arp spa or tpa address criterion. - */ -public final class ArpPaCriterion implements Criterion { - private final Ip4Address ip; - private final Type type; - - /** - * Constructor. - * - * @param ip the Ip4 Address to match. - * @param type the match type. Should be one of the following: - * Type.ARP_SPA, Type.ARP_TPA - */ - ArpPaCriterion(Ip4Address ip, Type type) { - this.ip = ip; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the Ip4 Address to match. - * - * @return the Ip4 Address to match - */ - public Ip4Address ip() { - return this.ip; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("ip", ip).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), ip); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ArpPaCriterion) { - ArpPaCriterion that = (ArpPaCriterion) obj; - return Objects.equals(ip, that.ip) && - Objects.equals(type, that.type); - } - return false; - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java deleted file mode 100644 index c94b1e02..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criteria.java +++ /dev/null @@ -1,624 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.EthType; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.Ip6Address; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onlab.packet.TpPort; -import org.onlab.packet.VlanId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.IndexedLambda; -import org.onosproject.net.Lambda; -import org.onosproject.net.OchSignal; -import org.onosproject.net.OchSignalType; -import org.onosproject.net.OduSignalId; -import org.onosproject.net.OduSignalType; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.criteria.Criterion.Type; - -/** - * Factory class to create various traffic selection criteria. - */ -public final class Criteria { - - //TODO: incomplete type implementation. Need to implement complete list from Criterion - - // Ban construction - private Criteria() { - } - - /** - * Creates a match on IN_PORT field using the specified value. - * - * @param port inport value - * @return match criterion - */ - public static Criterion matchInPort(PortNumber port) { - return new PortCriterion(port, Type.IN_PORT); - } - - /** - * Creates a match on IN_PHY_PORT field using the specified value. - * - * @param port inport value - * @return match criterion - */ - public static Criterion matchInPhyPort(PortNumber port) { - return new PortCriterion(port, Type.IN_PHY_PORT); - } - - /** - * Creates a match on METADATA field using the specified value. - * - * @param metadata metadata value (64 bits data) - * @return match criterion - */ - public static Criterion matchMetadata(long metadata) { - return new MetadataCriterion(metadata); - } - - /** - * Creates a match on ETH_DST field using the specified value. This value - * may be a wildcard mask. - * - * @param mac MAC address value or wildcard mask - * @return match criterion - */ - public static Criterion matchEthDst(MacAddress mac) { - return new EthCriterion(mac, Type.ETH_DST); - } - - /** - * Creates a match on ETH_SRC field using the specified value. This value - * may be a wildcard mask. - * - * @param mac MAC address value or wildcard mask - * @return match criterion - */ - public static Criterion matchEthSrc(MacAddress mac) { - return new EthCriterion(mac, Type.ETH_SRC); - } - - /** - * Creates a match on ETH_TYPE field using the specified value. - * - * @param ethType eth type value (16 bits unsigned integer) - * @return match criterion - */ - public static Criterion matchEthType(int ethType) { - return new EthTypeCriterion(ethType); - } - - /** - * Creates a match on ETH_TYPE field using the specified value. - * - * @param ethType eth type value - * @return match criterion - */ - public static Criterion matchEthType(EthType ethType) { - return new EthTypeCriterion(ethType); - } - - /** - * Creates a match on VLAN ID field using the specified value. - * - * @param vlanId vlan id value - * @return match criterion - */ - public static Criterion matchVlanId(VlanId vlanId) { - return new VlanIdCriterion(vlanId); - } - - /** - * Creates a match on VLAN PCP field using the specified value. - * - * @param vlanPcp vlan pcp value (3 bits) - * @return match criterion - */ - public static Criterion matchVlanPcp(byte vlanPcp) { - return new VlanPcpCriterion(vlanPcp); - } - - /** - * Creates a match on IP DSCP field using the specified value. - * - * @param ipDscp ip dscp value (6 bits) - * @return match criterion - */ - public static Criterion matchIPDscp(byte ipDscp) { - return new IPDscpCriterion(ipDscp); - } - - /** - * Creates a match on IP ECN field using the specified value. - * - * @param ipEcn ip ecn value (2 bits) - * @return match criterion - */ - public static Criterion matchIPEcn(byte ipEcn) { - return new IPEcnCriterion(ipEcn); - } - - /** - * Creates a match on IP proto field using the specified value. - * - * @param proto ip protocol value (8 bits unsigned integer) - * @return match criterion - */ - public static Criterion matchIPProtocol(short proto) { - return new IPProtocolCriterion(proto); - } - - /** - * Creates a match on IPv4 source field using the specified value. - * - * @param ip ipv4 source value - * @return match criterion - */ - public static Criterion matchIPSrc(IpPrefix ip) { - return new IPCriterion(ip, Type.IPV4_SRC); - } - - /** - * Creates a match on IPv4 destination field using the specified value. - * - * @param ip ipv4 source value - * @return match criterion - */ - public static Criterion matchIPDst(IpPrefix ip) { - return new IPCriterion(ip, Type.IPV4_DST); - } - - /** - * Creates a match on TCP source port field using the specified value. - * - * @param tcpPort TCP source port - * @return match criterion - * @deprecated in Drake release - */ - @Deprecated - public static Criterion matchTcpSrc(short tcpPort) { - return new TcpPortCriterion(TpPort.tpPort(tcpPort), Type.TCP_SRC); - } - - /** - * Creates a match on TCP source port field using the specified value. - * - * @param tcpPort TCP source port - * @return match criterion - */ - public static Criterion matchTcpSrc(TpPort tcpPort) { - return new TcpPortCriterion(tcpPort, Type.TCP_SRC); - } - - /** - * Creates a match on TCP destination port field using the specified value. - * - * @param tcpPort TCP destination port - * @return match criterion - * @deprecated in Drake release - */ - @Deprecated - public static Criterion matchTcpDst(short tcpPort) { - return new TcpPortCriterion(TpPort.tpPort(tcpPort), Type.TCP_DST); - } - - /** - * Creates a match on TCP destination port field using the specified value. - * - * @param tcpPort TCP destination port - * @return match criterion - */ - public static Criterion matchTcpDst(TpPort tcpPort) { - return new TcpPortCriterion(tcpPort, Type.TCP_DST); - } - - /** - * Creates a match on TCP flags using the specified value. - * - * @param flags TCP flags - * @return match criterion - */ - public static Criterion matchTcpFlags(int flags) { - return new TcpFlagsCriterion(flags); - } - - /** - * Creates a match on UDP source port field using the specified value. - * - * @param udpPort UDP source port - * @return match criterion - * @deprecated in Drake release - */ - @Deprecated - public static Criterion matchUdpSrc(short udpPort) { - return new UdpPortCriterion(TpPort.tpPort(udpPort), Type.UDP_SRC); - } - - /** - * Creates a match on UDP source port field using the specified value. - * - * @param udpPort UDP source port - * @return match criterion - */ - public static Criterion matchUdpSrc(TpPort udpPort) { - return new UdpPortCriterion(udpPort, Type.UDP_SRC); - } - - /** - * Creates a match on UDP destination port field using the specified value. - * - * @param udpPort UDP destination port - * @return match criterion - * @deprecated in Drake release - */ - @Deprecated - public static Criterion matchUdpDst(short udpPort) { - return new UdpPortCriterion(TpPort.tpPort(udpPort), Type.UDP_DST); - } - - /** - * Creates a match on UDP destination port field using the specified value. - * - * @param udpPort UDP destination port - * @return match criterion - */ - public static Criterion matchUdpDst(TpPort udpPort) { - return new UdpPortCriterion(udpPort, Type.UDP_DST); - } - - /** - * Creates a match on SCTP source port field using the specified value. - * - * @param sctpPort SCTP source port - * @return match criterion - * @deprecated in Drake release - */ - @Deprecated - public static Criterion matchSctpSrc(short sctpPort) { - return new SctpPortCriterion(TpPort.tpPort(sctpPort), Type.SCTP_SRC); - } - - /** - * Creates a match on SCTP source port field using the specified value. - * - * @param sctpPort SCTP source port - * @return match criterion - */ - public static Criterion matchSctpSrc(TpPort sctpPort) { - return new SctpPortCriterion(sctpPort, Type.SCTP_SRC); - } - - /** - * Creates a match on SCTP destination port field using the specified - * value. - * - * @param sctpPort SCTP destination port - * @return match criterion - * @deprecated in Drake release - */ - @Deprecated - public static Criterion matchSctpDst(short sctpPort) { - return new SctpPortCriterion(TpPort.tpPort(sctpPort), Type.SCTP_DST); - } - - /** - * Creates a match on SCTP destination port field using the specified - * value. - * - * @param sctpPort SCTP destination port - * @return match criterion - */ - public static Criterion matchSctpDst(TpPort sctpPort) { - return new SctpPortCriterion(sctpPort, Type.SCTP_DST); - } - - /** - * Creates a match on ICMP type field using the specified value. - * - * @param icmpType ICMP type (8 bits unsigned integer) - * @return match criterion - */ - public static Criterion matchIcmpType(short icmpType) { - return new IcmpTypeCriterion(icmpType); - } - - /** - * Creates a match on ICMP code field using the specified value. - * - * @param icmpCode ICMP code (8 bits unsigned integer) - * @return match criterion - */ - public static Criterion matchIcmpCode(short icmpCode) { - return new IcmpCodeCriterion(icmpCode); - } - - /** - * Creates a match on IPv6 source field using the specified value. - * - * @param ip ipv6 source value - * @return match criterion - */ - public static Criterion matchIPv6Src(IpPrefix ip) { - return new IPCriterion(ip, Type.IPV6_SRC); - } - - /** - * Creates a match on IPv6 destination field using the specified value. - * - * @param ip ipv6 destination value - * @return match criterion - */ - public static Criterion matchIPv6Dst(IpPrefix ip) { - return new IPCriterion(ip, Type.IPV6_DST); - } - - /** - * Creates a match on IPv6 flow label field using the specified value. - * - * @param flowLabel IPv6 flow label (20 bits) - * @return match criterion - */ - public static Criterion matchIPv6FlowLabel(int flowLabel) { - return new IPv6FlowLabelCriterion(flowLabel); - } - - /** - * Creates a match on ICMPv6 type field using the specified value. - * - * @param icmpv6Type ICMPv6 type (8 bits unsigned integer) - * @return match criterion - */ - public static Criterion matchIcmpv6Type(short icmpv6Type) { - return new Icmpv6TypeCriterion(icmpv6Type); - } - - /** - * Creates a match on ICMPv6 code field using the specified value. - * - * @param icmpv6Code ICMPv6 code (8 bits unsigned integer) - * @return match criterion - */ - public static Criterion matchIcmpv6Code(short icmpv6Code) { - return new Icmpv6CodeCriterion(icmpv6Code); - } - - /** - * Creates a match on IPv6 Neighbor Discovery target address using the - * specified value. - * - * @param targetAddress IPv6 Neighbor Discovery target address - * @return match criterion - */ - public static Criterion matchIPv6NDTargetAddress(Ip6Address targetAddress) { - return new IPv6NDTargetAddressCriterion(targetAddress); - } - - /** - * Creates a match on IPv6 Neighbor Discovery source link-layer address - * using the specified value. - * - * @param mac IPv6 Neighbor Discovery source link-layer address - * @return match criterion - */ - public static Criterion matchIPv6NDSourceLinkLayerAddress(MacAddress mac) { - return new IPv6NDLinkLayerAddressCriterion(mac, Type.IPV6_ND_SLL); - } - - /** - * Creates a match on IPv6 Neighbor Discovery target link-layer address - * using the specified value. - * - * @param mac IPv6 Neighbor Discovery target link-layer address - * @return match criterion - */ - public static Criterion matchIPv6NDTargetLinkLayerAddress(MacAddress mac) { - return new IPv6NDLinkLayerAddressCriterion(mac, Type.IPV6_ND_TLL); - } - - /** - * Creates a match on MPLS label. - * - * @param mplsLabel MPLS label (20 bits) - * @return match criterion - */ - public static Criterion matchMplsLabel(MplsLabel mplsLabel) { - return new MplsCriterion(mplsLabel); - } - - /** - * Creates a match on MPLS Bottom-of-Stack indicator bit. - * - * @param mplsBos boolean value indicating true (BOS=1) or false (BOS=0) - * @return match criterion - */ - public static Criterion matchMplsBos(boolean mplsBos) { - return new MplsBosCriterion(mplsBos); - } - - /** - * Creates a match on MPLS TC. - * - * @param mplsTc MPLS TC (3 bits) - * @return match criterion - */ - public static Criterion matchMplsTc(byte mplsTc) { - return new MplsTcCriterion(mplsTc); - } - - /** - * Creates a match on Tunnel ID. - * - * @param tunnelId Tunnel ID (64 bits) - * @return match criterion - */ - public static Criterion matchTunnelId(long tunnelId) { - return new TunnelIdCriterion(tunnelId); - } - - /** - * Creates a match on IPv6 Extension Header pseudo-field fiags. - * Those are defined in Criterion.IPv6ExthdrFlags. - * - * @param exthdrFlags IPv6 Extension Header pseudo-field flags (16 bits) - * @return match criterion - */ - public static Criterion matchIPv6ExthdrFlags(int exthdrFlags) { - return new IPv6ExthdrFlagsCriterion(exthdrFlags); - } - - /** - * Creates a match on lambda using the specified value. - * - * @param lambda lambda - * @return match criterion - */ - public static Criterion matchLambda(Lambda lambda) { - if (lambda instanceof IndexedLambda) { - return new IndexedLambdaCriterion((IndexedLambda) lambda); - } else if (lambda instanceof OchSignal) { - return new OchSignalCriterion((OchSignal) lambda); - } else { - throw new UnsupportedOperationException(String.format("Unsupported type of Lambda: %s", lambda)); - } - } - - /** - * Create a match on OCh (Optical Channel) signal type. - * - * @param signalType OCh signal type - * @return match criterion - */ - public static Criterion matchOchSignalType(OchSignalType signalType) { - return new OchSignalTypeCriterion(signalType); - } - - /** - * Creates a match on ODU (Optical channel Data Unit) signal ID using the specified value. - * - * @param oduSignalId ODU Signal Id - * @return match criterion - */ - public static Criterion matchOduSignalId(OduSignalId oduSignalId) { - return new OduSignalIdCriterion(oduSignalId); - } - - /** - * Creates a match on ODU (Optical channel Data Unit) signal Type using the specified value. - * - * @param signalType ODU Signal Type - * @return match criterion - */ - public static Criterion matchOduSignalType(OduSignalType signalType) { - return new OduSignalTypeCriterion(signalType); - } - - /** - * Creates a match on IPv4 destination field using the specified value. - * - * @param ip ipv4 destination value - * @return match criterion - */ - public static Criterion matchArpTpa(Ip4Address ip) { - return new ArpPaCriterion(ip, Type.ARP_TPA); - } - - /** - * Creates a match on IPv4 source field using the specified value. - * - * @param ip ipv4 source value - * @return match criterion - */ - public static Criterion matchArpSpa(Ip4Address ip) { - return new ArpPaCriterion(ip, Type.ARP_SPA); - } - - /** - * Creates a match on MAC destination field using the specified value. - * - * @param mac MAC destination value - * @return match criterion - */ - public static Criterion matchArpTha(MacAddress mac) { - return new ArpHaCriterion(mac, Type.ARP_THA); - } - - /** - * Creates a match on MAC source field using the specified value. - * - * @param mac MAC source value - * @return match criterion - */ - public static Criterion matchArpSha(MacAddress mac) { - return new ArpHaCriterion(mac, Type.ARP_SHA); - } - - /** - * Creates a match on arp operation type field using the specified value. - * - * @param arpOp arp operation type value - * @return match criterion - */ - public static Criterion matchArpOp(int arpOp) { - return new ArpOpCriterion(arpOp, Type.ARP_OP); - } - - /** - * Creates a match on PBB I-SID field using the specific value. - * - * @param pbbIsid PBB I-SID - * @return match criterion - */ - public static Criterion matchPbbIsid(int pbbIsid) { - return new PbbIsidCriterion(pbbIsid); - } - - /** - * Creates an extension criterion for the specified extension selector. - * - * @param extensionSelector extension selector - * @param deviceId device ID - * @return match criterion - */ - public static Criterion extension(ExtensionSelector extensionSelector, - DeviceId deviceId) { - return new ExtensionCriterion(extensionSelector, deviceId); - } - - /** - * Creates a dummy criterion. - * - * @return match criterion - */ - public static Criterion dummy() { - return new DummyCriterion(); - } - - /** - * Dummy Criterion used with @see{FilteringObjective}. - */ - private static class DummyCriterion implements Criterion { - - @Override - public Type type() { - return Type.DUMMY; - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criterion.java deleted file mode 100644 index 17557b9d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Criterion.java +++ /dev/null @@ -1,270 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - - -/** - * Representation of a single header field selection. - */ -public interface Criterion { - - /** - * Types of fields to which the selection criterion may apply. - */ - // From page 75 of OpenFlow 1.5.0 spec - enum Type { - /** Switch input port. */ - IN_PORT, - - /** Switch physical input port. */ - IN_PHY_PORT, - - /** Metadata passed between tables. */ - METADATA, - - /** Ethernet destination address. */ - ETH_DST, - - /** Ethernet source address. */ - ETH_SRC, - - /** Ethernet frame type. */ - ETH_TYPE, - - /** VLAN id. */ - VLAN_VID, - - /** VLAN priority. */ - VLAN_PCP, - - /** IP DSCP (6 bits in ToS field). */ - IP_DSCP, - - /** IP ECN (2 bits in ToS field). */ - IP_ECN, - - /** IP protocol. */ - IP_PROTO, - - /** IPv4 source address. */ - IPV4_SRC, - - /** IPv4 destination address. */ - IPV4_DST, - - /** TCP source port. */ - TCP_SRC, - - /** TCP destination port. */ - TCP_DST, - - /** UDP source port. */ - UDP_SRC, - - /** UDP destination port. */ - UDP_DST, - - /** SCTP source port. */ - SCTP_SRC, - - /** SCTP destination port. */ - SCTP_DST, - - /** ICMP type. */ - ICMPV4_TYPE, - - /** ICMP code. */ - ICMPV4_CODE, - - /** ARP opcode. */ - ARP_OP, - - /** ARP source IPv4 address. */ - ARP_SPA, - - /** ARP target IPv4 address. */ - ARP_TPA, - - /** ARP source hardware address. */ - ARP_SHA, - - /** ARP target hardware address. */ - ARP_THA, - - /** IPv6 source address. */ - IPV6_SRC, - - /** IPv6 destination address. */ - IPV6_DST, - - /** IPv6 Flow Label. */ - IPV6_FLABEL, - - /** ICMPv6 type. */ - ICMPV6_TYPE, - - /** ICMPv6 code. */ - ICMPV6_CODE, - - /** Target address for ND. */ - IPV6_ND_TARGET, - - /** Source link-layer for ND. */ - IPV6_ND_SLL, - - /** Target link-layer for ND. */ - IPV6_ND_TLL, - - /** MPLS label. */ - MPLS_LABEL, - - /** MPLS TC. */ - MPLS_TC, - - /** MPLS BoS bit. */ - MPLS_BOS, - - /** PBB I-SID. */ - PBB_ISID, - - /** Logical Port Metadata. */ - TUNNEL_ID, - - /** IPv6 Extension Header pseudo-field. */ - IPV6_EXTHDR, - - /** Unassigned value: 40. */ - UNASSIGNED_40, - - /** PBB UCA header field. */ - PBB_UCA, - - /** TCP flags. */ - TCP_FLAGS, - - /** Output port from action set metadata. */ - ACTSET_OUTPUT, - - /** Packet type value. */ - PACKET_TYPE, - - // - // NOTE: Everything below is defined elsewhere: ONOS-specific, - // extensions, etc. - // - /** Optical channel signal ID (lambda). */ - OCH_SIGID, - - /** Optical channel signal type (fixed or flexible). */ - OCH_SIGTYPE, - - /** ODU (Optical channel Data Unit) signal ID. */ - ODU_SIGID, - - /** ODU (Optical channel Data Unit) signal type. */ - ODU_SIGTYPE, - - /** Extension criterion. */ - EXTENSION, - - /** An empty criterion. */ - DUMMY - } - - /** - * Returns the type of criterion. - * - * @return type of criterion - */ - Type type(); - - /** - * Bit definitions for IPv6 Extension Header pseudo-field. - * From page 79 of OpenFlow 1.5.0 spec. - */ - enum IPv6ExthdrFlags { - /** "No next header" encountered. */ - NONEXT((short) (1 << 0)), - /** Encrypted Sec Payload header present. */ - ESP((short) (1 << 1)), - /** Authentication header present. */ - AUTH((short) (1 << 2)), - /** 1 or 2 dest headers present. */ - DEST((short) (1 << 3)), - /** Fragment header present. */ - FRAG((short) (1 << 4)), - /** Router header present. */ - ROUTER((short) (1 << 5)), - /** Hop-by-hop header present. */ - HOP((short) (1 << 6)), - /** Unexpected repeats encountered. */ - UNREP((short) (1 << 7)), - /** Unexpected sequencing encountered. */ - UNSEQ((short) (1 << 8)); - - private short value; - - IPv6ExthdrFlags(short value) { - this.value = value; - } - - /** - * Gets the value as an integer. - * - * @return the value as an integer - */ - public short getValue() { - return this.value; - } - } - - enum TCPFlags { - - /** ECN-nonce concealment protection. */ - NS((short) (1 << 0)), - /** Congestion Window Reduced. */ - CWR((short) (1 << 1)), - /** ECN-Echo. **/ - ECE((short) (1 << 2)), - /** Urgent pointer field is significant. */ - URG((short) (1 << 3)), - /** Acknowledgment field is significant. */ - ACK((short) (1 << 4)), - /** Push the buffered data to the receiving application. */ - PSH((short) (1 << 5)), - /** Reset the connection. */ - RST((short) (1 << 6)), - /** Synchronize sequence numbers. */ - SYN((short) (1 << 7)), - /** No more data from sender. */ - FIN((short) (1 << 8)); - - private short value; - - TCPFlags(short value) { - this.value = value; - } - - /** - * Gets the value as an integer. - * - * @return the value as an integer - */ - public short getValue() { - return this.value; - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/EthCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/EthCriterion.java deleted file mode 100644 index 6020974d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/EthCriterion.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.MacAddress; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of MAC address criterion. - */ -public final class EthCriterion implements Criterion { - private final MacAddress mac; - private final Type type; - - /** - * Constructor. - * - * @param mac the source or destination MAC address to match - * @param type the match type. Should be either Type.ETH_DST or - * Type.ETH_SRC - */ - EthCriterion(MacAddress mac, Type type) { - this.mac = mac; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the MAC address to match. - * - * @return the MAC address to match - */ - public MacAddress mac() { - return this.mac; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("mac", mac).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type.ordinal(), mac); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof EthCriterion) { - EthCriterion that = (EthCriterion) obj; - return Objects.equals(mac, that.mac) && - Objects.equals(type, that.type); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/EthTypeCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/EthTypeCriterion.java deleted file mode 100644 index b2666d4d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/EthTypeCriterion.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.EthType; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of Ethernet type criterion (16 bits unsigned integer). - */ -public final class EthTypeCriterion implements Criterion { - - - private final EthType ethType; - - /** - * Constructor. - * - * @param ethType the Ethernet frame type to match (16 bits unsigned - * integer) - */ - EthTypeCriterion(int ethType) { - this.ethType = new EthType(ethType); - } - - /** - * Constructor. - * - * @param ethType the Ethernet frame type to match - */ - EthTypeCriterion(EthType ethType) { - this.ethType = ethType; - } - - @Override - public Type type() { - return Type.ETH_TYPE; - } - - /** - * Gets the Ethernet frame type to match. - * - * @return the Ethernet frame type to match (16 bits unsigned integer) - */ - public EthType ethType() { - return ethType; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("ethType", ethType.toString()) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), ethType); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof EthTypeCriterion) { - EthTypeCriterion that = (EthTypeCriterion) obj; - return Objects.equals(ethType, that.ethType) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionCriterion.java deleted file mode 100644 index 646b4184..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionCriterion.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onosproject.net.DeviceId; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Criterion for implementing selector extensions. - */ -public class ExtensionCriterion implements Criterion { - - private final ExtensionSelector extensionSelector; - private final DeviceId deviceId; - - /** - * Constructor. - * - * @param extensionSelector extension selector - */ - public ExtensionCriterion(ExtensionSelector extensionSelector, DeviceId deviceId) { - this.extensionSelector = extensionSelector; - this.deviceId = deviceId; - } - - /** - * Returns the extension selector. - * - * @return extension selector - */ - public ExtensionSelector extensionSelector() { - return extensionSelector; - } - - /** - * Returns the device ID. - * - * @return device ID - */ - public DeviceId deviceId() { - return deviceId; - } - - @Override - public Type type() { - return Type.EXTENSION; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("extensionSelector", extensionSelector.toString()) - .add("deviceId", deviceId) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), extensionSelector, deviceId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ExtensionCriterion) { - ExtensionCriterion that = (ExtensionCriterion) obj; - return Objects.equals(extensionSelector, that.extensionSelector) && - Objects.equals(deviceId, that.deviceId) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionSelector.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionSelector.java deleted file mode 100644 index d3cebb37..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionSelector.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onosproject.net.flow.Extension; - -/** - * An extension for the selector API. - */ -public interface ExtensionSelector extends Extension { - - /** - * Gets the type of the extension selector. - * - * @return type - */ - ExtensionSelectorType type(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionSelectorType.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionSelectorType.java deleted file mode 100644 index fa8f0923..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/ExtensionSelectorType.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; - -import java.util.Objects; - -/** - * Type of selector extensions. - */ -@Beta -public class ExtensionSelectorType { - - /** - * A list of well-known named extension selector type codes. - * These numbers have no impact on the actual OF type id. - */ - public enum ExtensionSelectorTypes { - NICIRA_MATCH_NSH_SPI(0), - NICIRA_MATCH_NSH_SI(1), - NICIRA_MATCH_NSH_CH1(2), - NICIRA_MATCH_NSH_CH2(3), - NICIRA_MATCH_NSH_CH3(4), - NICIRA_MATCH_NSH_CH4(5); - - - private ExtensionSelectorType type; - - /** - * Creates a new named extension selector type. - * - * @param type type code - */ - ExtensionSelectorTypes(int type) { - this.type = new ExtensionSelectorType(type); - } - - /** - * Gets the extension type object for this named type code. - * - * @return extension type object - */ - public ExtensionSelectorType type() { - return type; - } - } - - private final int type; - - /** - * Creates an extension type with the given int type code. - * - * @param type type code - */ - public ExtensionSelectorType(int type) { - this.type = type; - } - - @Override - public int hashCode() { - return Objects.hash(type); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ExtensionSelectorType) { - final ExtensionSelectorType that = (ExtensionSelectorType) obj; - return this.type == that.type; - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(ExtensionSelectorType.class) - .add("type", type) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPCriterion.java deleted file mode 100644 index 018afe80..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPCriterion.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.IpPrefix; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of IP address criterion. - */ -public final class IPCriterion implements Criterion { - private final IpPrefix ip; - private final Type type; - - /** - * Constructor. - * - * @param ip the IP prefix to match. Could be either IPv4 or IPv6 - * @param type the match type. Should be one of the following: - * Type.IPV4_SRC, Type.IPV4_DST, Type.IPV6_SRC, Type.IPV6_DST - */ - IPCriterion(IpPrefix ip, Type type) { - this.ip = ip; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the IP prefix to match. - * - * @return the IP prefix to match - */ - public IpPrefix ip() { - return this.ip; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("ip", ip).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), ip); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPCriterion) { - IPCriterion that = (IPCriterion) obj; - return Objects.equals(ip, that.ip) && - Objects.equals(type, that.type); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPDscpCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPDscpCriterion.java deleted file mode 100644 index 8634aa66..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPDscpCriterion.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of IP DSCP (Differentiated Services Code Point) - * criterion (6 bits). - */ -public final class IPDscpCriterion implements Criterion { - private static final byte MASK = 0x3f; - private final byte ipDscp; // IP DSCP value: 6 bits - - /** - * Constructor. - * - * @param ipDscp the IP DSCP value to match - */ - IPDscpCriterion(byte ipDscp) { - this.ipDscp = (byte) (ipDscp & MASK); - } - - @Override - public Type type() { - return Type.IP_DSCP; - } - - /** - * Gets the IP DSCP value to match. - * - * @return the IP DSCP value to match - */ - public byte ipDscp() { - return ipDscp; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("ipDscp", Long.toHexString(ipDscp)).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), ipDscp); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPDscpCriterion) { - IPDscpCriterion that = (IPDscpCriterion) obj; - return Objects.equals(ipDscp, that.ipDscp) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPEcnCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPEcnCriterion.java deleted file mode 100644 index 48b3fbf6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPEcnCriterion.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of IP ECN (Explicit Congestion Notification) criterion - * (2 bits). - */ -public final class IPEcnCriterion implements Criterion { - private static final byte MASK = 0x3; - private final byte ipEcn; // IP ECN value: 2 bits - - /** - * Constructor. - * - * @param ipEcn the IP ECN value to match (2 bits) - */ - IPEcnCriterion(byte ipEcn) { - this.ipEcn = (byte) (ipEcn & MASK); - } - - @Override - public Type type() { - return Type.IP_ECN; - } - - /** - * Gets the IP ECN value to match. - * - * @return the IP ECN value to match (2 bits) - */ - public byte ipEcn() { - return ipEcn; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("ipEcn", Long.toHexString(ipEcn)).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), ipEcn); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPEcnCriterion) { - IPEcnCriterion that = (IPEcnCriterion) obj; - return Objects.equals(ipEcn, that.ipEcn) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPProtocolCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPProtocolCriterion.java deleted file mode 100644 index 6879f802..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPProtocolCriterion.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of Internet Protocol Number criterion (8 bits unsigned) - * integer. - */ -public final class IPProtocolCriterion implements Criterion { - private static final short MASK = 0xff; - private final short proto; // IP protocol number: 8 bits - - /** - * Constructor. - * - * @param protocol the IP protocol (e.g., TCP=6, UDP=17) to match - * (8 bits unsigned integer) - */ - IPProtocolCriterion(short protocol) { - this.proto = (short) (protocol & MASK); - } - - @Override - public Type type() { - return Type.IP_PROTO; - } - - /** - * Gets the IP protocol to match. - * - * @return the IP protocol to match (8 bits unsigned integer) - */ - public short protocol() { - return proto; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("protocol", proto).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), proto); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPProtocolCriterion) { - IPProtocolCriterion that = (IPProtocolCriterion) obj; - return Objects.equals(proto, that.proto); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6ExthdrFlagsCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6ExthdrFlagsCriterion.java deleted file mode 100644 index 2463bf64..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6ExthdrFlagsCriterion.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of IPv6 Extension Header pseudo-field criterion - * (16 bits). Those are defined in Criterion.IPv6ExthdrFlags. - */ -public final class IPv6ExthdrFlagsCriterion implements Criterion { - private static final int MASK = 0xffff; - private final int exthdrFlags; // IPv6 Exthdr flags: 16 bits - - /** - * Constructor. - * - * @param exthdrFlags the IPv6 Extension Header pseudo-field flags - * to match (16 bits). Those are defined in Criterion.IPv6ExthdrFlags - */ - IPv6ExthdrFlagsCriterion(int exthdrFlags) { - this.exthdrFlags = exthdrFlags & MASK; - } - - @Override - public Type type() { - return Type.IPV6_EXTHDR; - } - - /** - * Gets the IPv6 Extension Header pseudo-field flags to match. - * - * @return the IPv6 Extension Header pseudo-field flags to match - * (16 bits). Those are defined in Criterion.IPv6ExthdrFlags - */ - public int exthdrFlags() { - return exthdrFlags; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("exthdrFlags", Long.toHexString(exthdrFlags)).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), exthdrFlags); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6ExthdrFlagsCriterion) { - IPv6ExthdrFlagsCriterion that = (IPv6ExthdrFlagsCriterion) obj; - return Objects.equals(exthdrFlags, that.exthdrFlags) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6FlowLabelCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6FlowLabelCriterion.java deleted file mode 100644 index 6e1021d9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6FlowLabelCriterion.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of IPv6 Flow Label (RFC 6437) criterion (20 bits unsigned - * integer). - */ -public final class IPv6FlowLabelCriterion implements Criterion { - private static final int MASK = 0xfffff; - private final int flowLabel; // IPv6 flow label: 20 bits - - /** - * Constructor. - * - * @param flowLabel the IPv6 flow label to match (20 bits) - */ - IPv6FlowLabelCriterion(int flowLabel) { - this.flowLabel = flowLabel & MASK; - } - - @Override - public Type type() { - return Type.IPV6_FLABEL; - } - - /** - * Gets the IPv6 flow label to match. - * - * @return the IPv6 flow label to match (20 bits) - */ - public int flowLabel() { - return flowLabel; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("flowLabel", Long.toHexString(flowLabel)).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), flowLabel); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6FlowLabelCriterion) { - IPv6FlowLabelCriterion that = (IPv6FlowLabelCriterion) obj; - return Objects.equals(flowLabel, that.flowLabel) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDLinkLayerAddressCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDLinkLayerAddressCriterion.java deleted file mode 100644 index 9f310d4a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDLinkLayerAddressCriterion.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.MacAddress; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of IPv6 Neighbor Discovery link-layer address criterion. - */ -public final class IPv6NDLinkLayerAddressCriterion implements Criterion { - private final MacAddress mac; - private final Type type; - - /** - * Constructor. - * - * @param mac the source or destination link-layer address to match - * @param type the match type. Should be either Type.IPV6_ND_SLL or - * Type.IPV6_ND_TLL - */ - IPv6NDLinkLayerAddressCriterion(MacAddress mac, Type type) { - this.mac = mac; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the MAC link-layer address to match. - * - * @return the MAC link-layer address to match - */ - public MacAddress mac() { - return this.mac; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("mac", mac).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), mac); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6NDLinkLayerAddressCriterion) { - IPv6NDLinkLayerAddressCriterion that = - (IPv6NDLinkLayerAddressCriterion) obj; - return Objects.equals(mac, that.mac) && - Objects.equals(type, that.type); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDTargetAddressCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDTargetAddressCriterion.java deleted file mode 100644 index ffef044a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IPv6NDTargetAddressCriterion.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.Ip6Address; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of IPv6 Neighbor Discovery target address criterion. - */ -public final class IPv6NDTargetAddressCriterion implements Criterion { - private final Ip6Address targetAddress; - - /** - * Constructor. - * - * @param targetAddress the IPv6 target address to match - */ - IPv6NDTargetAddressCriterion(Ip6Address targetAddress) { - this.targetAddress = targetAddress; - } - - @Override - public Type type() { - return Type.IPV6_ND_TARGET; - } - - /** - * Gets the IPv6 target address to match. - * - * @return the IPv6 target address to match - */ - public Ip6Address targetAddress() { - return this.targetAddress; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("targetAddress", targetAddress).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), targetAddress); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IPv6NDTargetAddressCriterion) { - IPv6NDTargetAddressCriterion that = - (IPv6NDTargetAddressCriterion) obj; - return Objects.equals(targetAddress, that.targetAddress) && - Objects.equals(type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpCodeCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpCodeCriterion.java deleted file mode 100644 index 516f61b3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpCodeCriterion.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of ICMP code criterion (8 bits unsigned integer). - */ -public final class IcmpCodeCriterion implements Criterion { - private static final short MASK = 0xff; - private final short icmpCode; // The ICMP code: 8 bits - - /** - * Constructor. - * - * @param icmpCode the ICMP code to match (8 bits unsigned integer) - */ - IcmpCodeCriterion(short icmpCode) { - this.icmpCode = (short) (icmpCode & MASK); - } - - @Override - public Type type() { - return Type.ICMPV4_CODE; - } - - /** - * Gets the ICMP code to match. - * - * @return the ICMP code to match (8 bits unsigned integer) - */ - public short icmpCode() { - return icmpCode; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("icmpCode", icmpCode).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), icmpCode); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IcmpCodeCriterion) { - IcmpCodeCriterion that = (IcmpCodeCriterion) obj; - return Objects.equals(icmpCode, that.icmpCode) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpTypeCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpTypeCriterion.java deleted file mode 100644 index 63251425..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IcmpTypeCriterion.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of ICMP type criterion (8 bits unsigned integer). - */ -public final class IcmpTypeCriterion implements Criterion { - private static final short MASK = 0xff; - private final short icmpType; // The ICMP type: 8 bits - - /** - * Constructor. - * - * @param icmpType the ICMP type to match (8 bits unsigned integer) - */ - IcmpTypeCriterion(short icmpType) { - this.icmpType = (short) (icmpType & MASK); - } - - @Override - public Type type() { - return Type.ICMPV4_TYPE; - } - - /** - * Gets the ICMP type to match. - * - * @return the ICMP type to match (8 bits unsigned integer) - */ - public short icmpType() { - return icmpType; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("icmpType", icmpType).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), icmpType); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof IcmpTypeCriterion) { - IcmpTypeCriterion that = (IcmpTypeCriterion) obj; - return Objects.equals(icmpType, that.icmpType) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6CodeCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6CodeCriterion.java deleted file mode 100644 index a41b6fef..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6CodeCriterion.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of ICMPv6 code criterion (8 bits unsigned integer). - */ -public final class Icmpv6CodeCriterion implements Criterion { - private static final short MASK = 0xff; - private final short icmpv6Code; // ICMPv6 code: 8 bits - - /** - * Constructor. - * - * @param icmpv6Code the ICMPv6 code to match (8 bits unsigned integer) - */ - Icmpv6CodeCriterion(short icmpv6Code) { - this.icmpv6Code = (short) (icmpv6Code & MASK); - } - - @Override - public Type type() { - return Type.ICMPV6_CODE; - } - - /** - * Gets the ICMPv6 code to match. - * - * @return the ICMPv6 code to match (8 bits unsigned integer) - */ - public short icmpv6Code() { - return icmpv6Code; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("icmpv6Code", icmpv6Code).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), icmpv6Code); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Icmpv6CodeCriterion) { - Icmpv6CodeCriterion that = (Icmpv6CodeCriterion) obj; - return Objects.equals(icmpv6Code, that.icmpv6Code) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6TypeCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6TypeCriterion.java deleted file mode 100644 index 7410ba17..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/Icmpv6TypeCriterion.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of ICMPv6 type criterion (8 bits unsigned integer). - */ -public final class Icmpv6TypeCriterion implements Criterion { - private static final short MASK = 0xff; - private final short icmpv6Type; // ICMPv6 type: 8 bits - - /** - * Constructor. - * - * @param icmpv6Type the ICMPv6 type to match (8 bits unsigned integer) - */ - Icmpv6TypeCriterion(short icmpv6Type) { - this.icmpv6Type = (short) (icmpv6Type & MASK); - } - - @Override - public Type type() { - return Type.ICMPV6_TYPE; - } - - /** - * Gets the ICMPv6 type to match. - * - * @return the ICMPv6 type to match (8 bits unsigned integer) - */ - public short icmpv6Type() { - return icmpv6Type; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("icmpv6Type", icmpv6Type).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), icmpv6Type); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Icmpv6TypeCriterion) { - Icmpv6TypeCriterion that = (Icmpv6TypeCriterion) obj; - return Objects.equals(icmpv6Type, that.icmpv6Type) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IndexedLambdaCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IndexedLambdaCriterion.java deleted file mode 100644 index 88a6fe10..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/IndexedLambdaCriterion.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.IndexedLambda; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Implementation of indexed lambda criterion. - */ -public class IndexedLambdaCriterion implements Criterion { - - private final IndexedLambda lambda; - - /** - * Creates a criterion with the specified value. - * - * @param lambda lambda index number - */ - IndexedLambdaCriterion(IndexedLambda lambda) { - this.lambda = checkNotNull(lambda); - } - - @Override - public Type type() { - // TODO: consider defining a new specific type - // Now OCH_SIGID is used due to compatibility concerns - return Type.OCH_SIGID; - } - - /** - * Returns the indexed lambda to match. - * - * @return the indexed lambda to match - */ - public IndexedLambda lambda() { - return lambda; - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), lambda); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof IndexedLambdaCriterion)) { - return false; - } - final IndexedLambdaCriterion that = (IndexedLambdaCriterion) obj; - return Objects.equals(this.lambda, that.lambda); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("lambda", lambda) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/LambdaCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/LambdaCriterion.java deleted file mode 100644 index 656800b1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/LambdaCriterion.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of lambda (wavelength) criterion (16 bits unsigned - * integer). - */ -public final class LambdaCriterion implements Criterion { - private static final int MASK = 0xffff; - private final int lambda; // Lambda value: 16 bits - private final Type type; - - /** - * Constructor. - * - * @param lambda the lambda (wavelength) to match (16 bits unsigned - * integer) - * @param type the match type. Should be Type.OCH_SIGID - */ - LambdaCriterion(int lambda, Type type) { - this.lambda = lambda & MASK; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the lambda (wavelength) to match. - * - * @return the lambda (wavelength) to match (16 bits unsigned integer) - */ - public int lambda() { - return lambda; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("lambda", lambda).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), lambda); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LambdaCriterion) { - LambdaCriterion that = (LambdaCriterion) obj; - return Objects.equals(lambda, that.lambda) && - Objects.equals(type, that.type); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MetadataCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MetadataCriterion.java deleted file mode 100644 index 8177b483..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MetadataCriterion.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of Metadata criterion. - */ -public final class MetadataCriterion implements Criterion { - private final long metadata; - - /** - * Constructor. - * - * @param metadata the metadata to match (64 bits data) - */ - MetadataCriterion(long metadata) { - this.metadata = metadata; - } - - @Override - public Type type() { - return Type.METADATA; - } - - /** - * Gets the metadata to match. - * - * @return the metadata to match (64 bits data) - */ - public long metadata() { - return metadata; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("metadata", Long.toHexString(metadata)) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), metadata); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MetadataCriterion) { - MetadataCriterion that = (MetadataCriterion) obj; - return Objects.equals(metadata, that.metadata) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsBosCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsBosCriterion.java deleted file mode 100644 index c8b6690d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsBosCriterion.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import static com.google.common.base.MoreObjects.toStringHelper; -import java.util.Objects; - -/** - * Implementation of MPLS BOS criterion (1 bit). - */ -public class MplsBosCriterion implements Criterion { - private boolean mplsBos; - - MplsBosCriterion(boolean mplsBos) { - this.mplsBos = mplsBos; - } - - @Override - public Type type() { - return Type.MPLS_BOS; - } - - public boolean mplsBos() { - return mplsBos; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("bos", mplsBos).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), mplsBos); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MplsBosCriterion) { - MplsBosCriterion that = (MplsBosCriterion) obj; - return Objects.equals(mplsBos, that.mplsBos()) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsCriterion.java deleted file mode 100644 index 34d384f1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsCriterion.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.MplsLabel; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of MPLS tag criterion (20 bits). - */ -public final class MplsCriterion implements Criterion { - private static final int MASK = 0xfffff; - private final MplsLabel mplsLabel; - - MplsCriterion(MplsLabel mplsLabel) { - this.mplsLabel = mplsLabel; - } - - @Override - public Type type() { - return Type.MPLS_LABEL; - } - - public MplsLabel label() { - return mplsLabel; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("mpls", mplsLabel).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), mplsLabel); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MplsCriterion) { - MplsCriterion that = (MplsCriterion) obj; - return Objects.equals(mplsLabel, that.mplsLabel) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsTcCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsTcCriterion.java deleted file mode 100644 index 8ad62358..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/MplsTcCriterion.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of MPLS TC criterion (3 bits). - */ -public final class MplsTcCriterion implements Criterion { - private static final byte MASK = 0x7; - private final byte mplsTc; - - /** - * Constructor. - * - * @param mplsTc the MPLS TC to match (3 bits) - */ - MplsTcCriterion(byte mplsTc) { - this.mplsTc = (byte) (mplsTc & MASK); - } - - @Override - public Type type() { - return Type.MPLS_TC; - } - - /** - * Gets the MPLS TC to match. - * - * @return the MPLS TC to match (3 bits) - */ - public byte tc() { - return mplsTc; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("tc", Long.toHexString(mplsTc)).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), mplsTc); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MplsTcCriterion) { - MplsTcCriterion that = (MplsTcCriterion) obj; - return Objects.equals(mplsTc, that.mplsTc) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalCriterion.java deleted file mode 100644 index 3a51a6bd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalCriterion.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.OchSignal; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Implementation of OCh (Optical Channel) signal criterion. - * This criterion is based on the specification of "OFPXMT_EXP_OCH_SIGID" in - * Open Networking Foundation "Optical Transport Protocol Extension Version 1.0", but - * defined in protocol agnostic way. - */ -public final class OchSignalCriterion implements Criterion { - - private final OchSignal lambda; - - /** - * Create an instance with the specified OCh signal. - * - * @param lambda OCh signal - */ - OchSignalCriterion(OchSignal lambda) { - this.lambda = checkNotNull(lambda); - } - - @Override - public Type type() { - return Type.OCH_SIGID; - } - - /** - * Returns the OCh signal to match. - * - * @return the OCh signal to match - */ - public OchSignal lambda() { - return lambda; - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), lambda); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof OchSignalCriterion)) { - return false; - } - final OchSignalCriterion that = (OchSignalCriterion) obj; - return Objects.equals(this.lambda, that.lambda); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("lambda", lambda) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalTypeCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalTypeCriterion.java deleted file mode 100644 index cf838bf3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OchSignalTypeCriterion.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.OchSignalType; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Implementation of OCh (Optical Channel) signal type criterion. - */ -public class OchSignalTypeCriterion implements Criterion { - - private final OchSignalType signalType; - - /** - * Creates a criterion with the specified value. - * - * @param signalType OCh signal type - */ - OchSignalTypeCriterion(OchSignalType signalType) { - this.signalType = checkNotNull(signalType); - } - - @Override - public Type type() { - return Type.OCH_SIGTYPE; - } - - /** - * Returns the OCh signal type to match. - * - * @return the OCh signal type to match - */ - public OchSignalType signalType() { - return signalType; - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), signalType); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof OchSignalTypeCriterion)) { - return false; - } - final OchSignalTypeCriterion that = (OchSignalTypeCriterion) obj; - return Objects.equals(this.signalType, that.signalType); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("signalType", signalType) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalIdCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalIdCriterion.java deleted file mode 100644 index 21018544..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalIdCriterion.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.net.OduSignalId; - -/** - * Implementation of ODU (Optical channel Data Unit) signal ID signal criterion. - * This criterion is based on the specification of "OFPXMT_EXP_ODU_SIGID" in - * Open Networking Foundation "Optical Transport Protocol Extension Version 1.0", but - * defined in protocol agnostic way. - */ -public final class OduSignalIdCriterion implements Criterion { - - private final OduSignalId oduSignalId; - - /** - * Create an instance with the specified ODU signal ID. - * - * @param oduSignalId - ODU signal ID - */ - OduSignalIdCriterion(OduSignalId oduSignalId) { - this.oduSignalId = checkNotNull(oduSignalId); - } - - @Override - public Type type() { - return Type.ODU_SIGID; - } - - /** - * Returns the ODU Signal to match. - * - * @return the ODU signal to match - */ - public OduSignalId oduSignalId() { - return oduSignalId; - } - - @Override - public int hashCode() { - return Objects.hash(type(), oduSignalId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof OduSignalIdCriterion)) { - return false; - } - final OduSignalIdCriterion that = (OduSignalIdCriterion) obj; - return Objects.equals(this.oduSignalId, that.oduSignalId); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("oduSignalId", oduSignalId) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalTypeCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalTypeCriterion.java deleted file mode 100644 index f4854339..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/OduSignalTypeCriterion.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.net.OduSignalType; - -/** - * Implementation of ODU (Optical channel Data Unit) signal Type criterion. - * This criterion is based on the specification of "OFPXMT_EXP_ODU_SIGTYPE" in - * Open Networking Foundation "Optical Transport Protocol Extension Version 1.0", but - * defined in protocol agnostic way. - */ -public final class OduSignalTypeCriterion implements Criterion { - - private final OduSignalType signalType; - - /** - * Create an instance with the specified ODU signal Type. - * - * @param signalType - ODU signal Type - */ - OduSignalTypeCriterion(OduSignalType signalType) { - this.signalType = checkNotNull(signalType); - } - - @Override - public Type type() { - return Type.ODU_SIGTYPE; - } - - /** - * Returns the ODU Signal Type to match. - * - * @return the ODU signal Type to match - */ - public OduSignalType signalType() { - return signalType; - } - - @Override - public int hashCode() { - return Objects.hash(type(), signalType); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof OduSignalTypeCriterion)) { - return false; - } - final OduSignalTypeCriterion that = (OduSignalTypeCriterion) obj; - return Objects.equals(this.signalType, that.signalType); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("signalType", signalType) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/PbbIsidCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/PbbIsidCriterion.java deleted file mode 100644 index 979aa6bd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/PbbIsidCriterion.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of PBB I-SID criterion (24 bits unsigned integer). - */ -public final class PbbIsidCriterion implements Criterion { - private static final int MASK = 0xfffff; - private final int pbbIsid; // PBB I-SID: 24 bits - - /** - * Constructor. - * - * @param pbbIsid the PBB I-SID to match (24 bits) - */ - PbbIsidCriterion(int pbbIsid) { - this.pbbIsid = pbbIsid & MASK; - } - - @Override - public Criterion.Type type() { - return Criterion.Type.PBB_ISID; - } - - /** - * Gets the PBB I-SID to match. - * - * @return the PBB I-SID to match (24 bits) - */ - public int pbbIsid() { - return this.pbbIsid; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("pbbIsid", Long.toHexString(pbbIsid)).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), pbbIsid); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PbbIsidCriterion) { - PbbIsidCriterion that = (PbbIsidCriterion) obj; - return Objects.equals(pbbIsid, that.pbbIsid) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/PortCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/PortCriterion.java deleted file mode 100644 index f07cd500..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/PortCriterion.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onosproject.net.PortNumber; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of input port criterion. - */ -public final class PortCriterion implements Criterion { - private final PortNumber port; - private final Type type; - - /** - * Constructor. - * - * @param port the input port number to match - * @param type the match type. Should be either Type.IN_PORT or - * Type.IN_PHY_PORT - */ - PortCriterion(PortNumber port, Type type) { - this.port = port; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the input port number to match. - * - * @return the input port number to match - */ - public PortNumber port() { - return this.port; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("port", port).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), port); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PortCriterion) { - PortCriterion that = (PortCriterion) obj; - return Objects.equals(port, that.port) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/SctpPortCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/SctpPortCriterion.java deleted file mode 100644 index 2d4cf15a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/SctpPortCriterion.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.TpPort; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of SCTP port criterion (16 bits unsigned integer). - */ -public final class SctpPortCriterion implements Criterion { - private final TpPort sctpPort; - private final Type type; - - /** - * Constructor. - * - * @param sctpPort the SCTP port to match - * @param type the match type. Should be either Type.SCTP_SRC or - * Type.SCTP_DST - */ - SctpPortCriterion(TpPort sctpPort, Type type) { - this.sctpPort = sctpPort; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the SCTP port to match. - * - * @return the SCTP port to match - */ - public TpPort sctpPort() { - return this.sctpPort; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("sctpPort", sctpPort).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), sctpPort); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SctpPortCriterion) { - SctpPortCriterion that = (SctpPortCriterion) obj; - return Objects.equals(sctpPort, that.sctpPort) && - Objects.equals(type, that.type); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpFlagsCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpFlagsCriterion.java deleted file mode 100644 index e0b53958..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpFlagsCriterion.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of TCP flags criterion (12 bits unsigned integer). - */ -public final class TcpFlagsCriterion implements Criterion { - private static final int MASK = 0xfffff; - private final int flags; // TCP flags: 12 bits - - /** - * Constructor. - * - * @param flags the TCP flags to match (12 bits) - */ - TcpFlagsCriterion(int flags) { - this.flags = flags & MASK; - } - - @Override - public Type type() { - return Type.TCP_FLAGS; - } - - /** - * Gets the TCP flags to match. - * - * @return the TCP flags to match (12 bits) - */ - public int flags() { - return flags; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("flags", Long.toHexString(flags)).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), flags); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TcpFlagsCriterion) { - TcpFlagsCriterion that = (TcpFlagsCriterion) obj; - return Objects.equals(flags, that.flags) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpPortCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpPortCriterion.java deleted file mode 100644 index e682b238..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TcpPortCriterion.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.TpPort; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of TCP port criterion (16 bits unsigned integer). - */ -public final class TcpPortCriterion implements Criterion { - private final TpPort tcpPort; - private final Type type; - - /** - * Constructor. - * - * @param tcpPort the TCP port to match - * @param type the match type. Should be either Type.TCP_SRC or - * Type.TCP_DST - */ - TcpPortCriterion(TpPort tcpPort, Type type) { - this.tcpPort = tcpPort; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the TCP port to match. - * - * @return the TCP port to match - */ - public TpPort tcpPort() { - return this.tcpPort; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("tcpPort", tcpPort).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), tcpPort); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TcpPortCriterion) { - TcpPortCriterion that = (TcpPortCriterion) obj; - return Objects.equals(tcpPort, that.tcpPort) && - Objects.equals(type, that.type); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TunnelIdCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TunnelIdCriterion.java deleted file mode 100644 index 3362c73f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/TunnelIdCriterion.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -/** - * Implementation of Tunnel ID criterion. - */ -public class TunnelIdCriterion implements Criterion { - private final long tunnelId; - - /** - * Constructor. - * - * @param tunnelId a Tunnel ID to match(64 bits) - */ - TunnelIdCriterion(long tunnelId) { - this.tunnelId = tunnelId; - } - - @Override - public Type type() { - return Type.TUNNEL_ID; - } - - /** - * Gets the Tunnel ID to match. - * - * @return the Tunnel ID to match (64 bits) - */ - public long tunnelId() { - return tunnelId; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("tunnelId", Long.toHexString(tunnelId)) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), tunnelId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TunnelIdCriterion) { - TunnelIdCriterion that = (TunnelIdCriterion) obj; - return Objects.equals(tunnelId, that.tunnelId) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/UdpPortCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/UdpPortCriterion.java deleted file mode 100644 index 8a29f471..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/UdpPortCriterion.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.TpPort; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of UDP port criterion (16 bits unsigned integer). - */ -public final class UdpPortCriterion implements Criterion { - private final TpPort udpPort; - private final Type type; - - /** - * Constructor. - * - * @param udpPort the UDP port to match - * @param type the match type. Should be either Type.UDP_SRC or - * Type.UDP_DST - */ - UdpPortCriterion(TpPort udpPort, Type type) { - this.udpPort = udpPort; - this.type = type; - } - - @Override - public Type type() { - return this.type; - } - - /** - * Gets the UDP port to match. - * - * @return the UDP port to match - */ - public TpPort udpPort() { - return this.udpPort; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("udpPort", udpPort).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), udpPort); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof UdpPortCriterion) { - UdpPortCriterion that = (UdpPortCriterion) obj; - return Objects.equals(udpPort, that.udpPort) && - Objects.equals(type, that.type); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanIdCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanIdCriterion.java deleted file mode 100644 index c73edb12..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanIdCriterion.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import org.onlab.packet.VlanId; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of VLAN ID criterion. - */ -public final class VlanIdCriterion implements Criterion { - private final VlanId vlanId; - - /** - * Constructor. - * - * @param vlanId the VLAN ID to match - */ - VlanIdCriterion(VlanId vlanId) { - this.vlanId = vlanId; - } - - @Override - public Type type() { - return Type.VLAN_VID; - } - - /** - * Gets the VLAN ID to match. - * - * @return the VLAN ID to match - */ - public VlanId vlanId() { - return vlanId; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("vlanId", vlanId).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), vlanId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof VlanIdCriterion) { - VlanIdCriterion that = (VlanIdCriterion) obj; - return Objects.equals(vlanId, that.vlanId) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanPcpCriterion.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanPcpCriterion.java deleted file mode 100644 index 0c83e141..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/VlanPcpCriterion.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Implementation of VLAN priority criterion (3 bits). - */ -public final class VlanPcpCriterion implements Criterion { - private static final byte MASK = 0x7; - private final byte vlanPcp; // VLAN pcp value: 3 bits - - /** - * Constructor. - * - * @param vlanPcp the VLAN priority to match (3 bits) - */ - VlanPcpCriterion(byte vlanPcp) { - this.vlanPcp = (byte) (vlanPcp & MASK); - } - - @Override - public Type type() { - return Type.VLAN_PCP; - } - - /** - * Gets the VLAN priority to match. - * - * @return the VLAN priority to match (3 bits) - */ - public byte priority() { - return vlanPcp; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("priority", Long.toHexString(vlanPcp)).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), vlanPcp); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof VlanPcpCriterion) { - VlanPcpCriterion that = (VlanPcpCriterion) obj; - return Objects.equals(vlanPcp, that.vlanPcp) && - Objects.equals(this.type(), that.type()); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/package-info.java deleted file mode 100644 index 1f091928..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/criteria/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Traffic selection criteria model. - */ -package org.onosproject.net.flow.criteria; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionPropertyException.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionPropertyException.java deleted file mode 100644 index 5750d09e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionPropertyException.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -/** - * Exception indicating there was an error while setting/getting an extension - * instruction property. - */ -public class ExtensionPropertyException extends Exception { - - public ExtensionPropertyException(String message) { - super(message); - } - - public ExtensionPropertyException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java deleted file mode 100644 index 3df152e9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -import org.onosproject.net.flow.Extension; - -/** - * An extension for the treatment API. - */ -public interface ExtensionTreatment extends Extension { - - /** - * Gets the type of the treatment extension. - * - * @return type - */ - ExtensionTreatmentType type(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java deleted file mode 100644 index f597a46c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; - -import java.util.Objects; - -/** - * Type of treatment extensions. - */ -@Beta -public final class ExtensionTreatmentType { - - /** - * A list of well-known named extension instruction type codes. - * These numbers have no impact on the actual OF type id. - */ - public enum ExtensionTreatmentTypes { - NICIRA_SET_TUNNEL_DST(0), - NICIRA_RESUBMIT(1), - NICIRA_RESUBMIT_TABLE(14), - NICIRA_SET_NSH_SPI(32), - NICIRA_SET_NSH_SI(33), - NICIRA_SET_NSH_CH1(34), - NICIRA_SET_NSH_CH2(35), - NICIRA_SET_NSH_CH3(36), - NICIRA_SET_NSH_CH4(37), - NICIRA_MOV_ARP_SHA_TO_THA(2), - NICIRA_MOV_ARP_SPA_TO_TPA(3), - NICIRA_MOV_ETH_SRC_TO_DST(4), - NICIRA_MOV_IP_SRC_TO_DST(5); - - private ExtensionTreatmentType type; - - /** - * Creates a new named extension treatment type. - * - * @param type type code - */ - ExtensionTreatmentTypes(int type) { - this.type = new ExtensionTreatmentType(type); - } - - /** - * Gets the extension type object for this named type code. - * - * @return extension type object - */ - public ExtensionTreatmentType type() { - return type; - } - } - - private final int type; - - /** - * Creates an extension type with the given int type code. - * - * @param type type code - */ - public ExtensionTreatmentType(int type) { - this.type = type; - } - - @Override - public int hashCode() { - return Objects.hash(type); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ExtensionTreatmentType) { - final ExtensionTreatmentType that = (ExtensionTreatmentType) obj; - return this.type == that.type; - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(ExtensionTreatmentType.class) - .add("type", type) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/Instruction.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/Instruction.java deleted file mode 100644 index 31ad80c5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/Instruction.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -/** - * Abstraction of a single traffic treatment step. - */ -public interface Instruction { - - /** - * Represents the type of traffic treatment. - */ - enum Type { - /** - * Signifies that the traffic should be dropped. - */ - @Deprecated - DROP, - - /** - * Signifies that the traffic requires no action. - * - * In OF10, the behavior of NOACTION is DROP. - * In OF13, the behavior depends on current Action Set. - */ - NOACTION, - - /** - * Signifies that the traffic should be output to a port. - */ - OUTPUT, - - /** - * Signifies that traffic should be sent out of a group. - */ - GROUP, - - /** - * Signifies that the traffic should be enqueued to an already-configured - queue on a port. - */ - QUEUE, - - /** - * Signifies that traffic should be metered according to a meter. - */ - METER, - - /** - * Signifies that the traffic should be modified in L0 way. - */ - L0MODIFICATION, - - /** - * Signifies that the traffic should be modified in L1 way. - */ - L1MODIFICATION, - - /** - * Signifies that the traffic should be modified in L2 way. - */ - L2MODIFICATION, - - /** - * Signifies that the traffic should be passed to another table. - */ - TABLE, - - /** - * Signifies that the traffic should be modified in L3 way. - */ - L3MODIFICATION, - - /** - * Signifies that metadata be attached to traffic. - */ - METADATA, - - /** - * Signifies that the traffic should be modified in L4 way. - */ - L4MODIFICATION, - - /** - * Signifies that an extension instruction will be used. - */ - EXTENSION - } - - /** - * Returns the type of instruction. - * - * @return type of instruction - */ - Type type(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java deleted file mode 100644 index 8ed882c8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java +++ /dev/null @@ -1,948 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -import com.google.common.base.MoreObjects; -import org.onlab.packet.EthType; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onlab.packet.TpPort; -import org.onlab.packet.VlanId; -import org.onosproject.core.GroupId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.IndexedLambda; -import org.onosproject.net.Lambda; -import org.onosproject.net.OchSignal; -import org.onosproject.net.OduSignalId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.instructions.L0ModificationInstruction.L0SubType; -import org.onosproject.net.flow.instructions.L0ModificationInstruction.ModLambdaInstruction; -import org.onosproject.net.flow.instructions.L0ModificationInstruction.ModOchSignalInstruction; -import org.onosproject.net.flow.instructions.L1ModificationInstruction.ModOduSignalIdInstruction; -import org.onosproject.net.flow.instructions.L3ModificationInstruction.L3SubType; -import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModIPInstruction; -import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModArpIPInstruction; -import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModArpEthInstruction; -import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModArpOpInstruction; -import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModIPv6FlowLabelInstruction; -import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModTtlInstruction; -import org.onosproject.net.flow.instructions.L4ModificationInstruction.L4SubType; -import org.onosproject.net.flow.instructions.L4ModificationInstruction.ModTransportPortInstruction; -import org.onosproject.net.meter.MeterId; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Factory class for creating various traffic treatment instructions. - */ -public final class Instructions { - - // Ban construction - private Instructions() {} - - /** - * Creates an output instruction using the specified port number. This can - * include logical ports such as CONTROLLER, FLOOD, etc. - * - * @param number port number - * @return output instruction - */ - public static OutputInstruction createOutput(final PortNumber number) { - checkNotNull(number, "PortNumber cannot be null"); - return new OutputInstruction(number); - } - - /** - * Creates a drop instruction. - * - * @return drop instruction - */ - @Deprecated - public static DropInstruction createDrop() { - return new DropInstruction(); - } - - /** - * Creates a no action instruction. - * - * @return no action instruction - */ - public static NoActionInstruction createNoAction() { - return new NoActionInstruction(); - } - - /** - * Creates a group instruction. - * - * @param groupId Group Id - * @return group instruction - */ - public static GroupInstruction createGroup(final GroupId groupId) { - checkNotNull(groupId, "GroupId cannot be null"); - return new GroupInstruction(groupId); - } - - /** - * Creates a set-queue instruction. - * - * @param queueId Queue Id - * @param port Port number - * @return set-queue instruction - */ - public static SetQueueInstruction setQueue(final long queueId, final PortNumber port) { - checkNotNull(queueId, "queue ID cannot be null"); - return new SetQueueInstruction(queueId, port); - } - - public static MeterInstruction meterTraffic(final MeterId meterId) { - checkNotNull(meterId, "meter id cannot be null"); - return new MeterInstruction(meterId); - } - - /** - * Creates an L0 modification with the specified OCh signal. - * - * @param lambda OCh signal - * @return an L0 modification - */ - public static L0ModificationInstruction modL0Lambda(Lambda lambda) { - checkNotNull(lambda, "L0 OCh signal cannot be null"); - - if (lambda instanceof IndexedLambda) { - return new ModLambdaInstruction(L0SubType.LAMBDA, (short) ((IndexedLambda) lambda).index()); - } else if (lambda instanceof OchSignal) { - return new ModOchSignalInstruction((OchSignal) lambda); - } else { - throw new UnsupportedOperationException(String.format("Unsupported type: %s", lambda)); - } - } - - /** - * Creates an L1 modification with the specified ODU signal Id. - * - * @param oduSignalId ODU Signal Id - * @return a L1 modification - */ - public static L1ModificationInstruction modL1OduSignalId(OduSignalId oduSignalId) { - checkNotNull(oduSignalId, "L1 ODU signal ID cannot be null"); - return new ModOduSignalIdInstruction(oduSignalId); - } - /** - * Creates a l2 src modification. - * - * @param addr the mac address to modify to - * @return a l2 modification - */ - public static L2ModificationInstruction modL2Src(MacAddress addr) { - checkNotNull(addr, "Src l2 address cannot be null"); - return new L2ModificationInstruction.ModEtherInstruction( - L2ModificationInstruction.L2SubType.ETH_SRC, addr); - } - - /** - * Creates a L2 dst modification. - * - * @param addr the mac address to modify to - * @return a L2 modification - */ - public static L2ModificationInstruction modL2Dst(MacAddress addr) { - checkNotNull(addr, "Dst l2 address cannot be null"); - return new L2ModificationInstruction.ModEtherInstruction( - L2ModificationInstruction.L2SubType.ETH_DST, addr); - } - - /** - * Creates a VLAN ID modification. - * - * @param vlanId the VLAN ID to modify to - * @return a L2 modification - */ - public static L2ModificationInstruction modVlanId(VlanId vlanId) { - checkNotNull(vlanId, "VLAN id cannot be null"); - return new L2ModificationInstruction.ModVlanIdInstruction(vlanId); - } - - /** - * Creates a VLAN PCP modification. - * - * @param vlanPcp the PCP to modify to - * @return a L2 modification - */ - public static L2ModificationInstruction modVlanPcp(Byte vlanPcp) { - checkNotNull(vlanPcp, "VLAN Pcp cannot be null"); - return new L2ModificationInstruction.ModVlanPcpInstruction(vlanPcp); - } - - /** - * Creates a MPLS label modification. - * - * @param mplsLabel MPLS label to set - * @return a L2 Modification - */ - public static L2ModificationInstruction modMplsLabel(MplsLabel mplsLabel) { - checkNotNull(mplsLabel, "MPLS label cannot be null"); - return new L2ModificationInstruction.ModMplsLabelInstruction(mplsLabel); - } - - /** - * Creates a MPLS BOS bit modification. - * - * @param mplsBos MPLS BOS bit to set (true) or unset (false) - * @return a L2 Modification - */ - public static L2ModificationInstruction modMplsBos(boolean mplsBos) { - return new L2ModificationInstruction.ModMplsBosInstruction(mplsBos); - } - - /** - * Creates a MPLS decrement TTL modification. - * - * @return a L2 Modification - */ - public static L2ModificationInstruction decMplsTtl() { - return new L2ModificationInstruction.ModMplsTtlInstruction(); - } - - /** - * Creates a L3 IPv4 src modification. - * - * @param addr the IPv4 address to modify to - * @return a L3 modification - */ - public static L3ModificationInstruction modL3Src(IpAddress addr) { - checkNotNull(addr, "Src l3 IPv4 address cannot be null"); - return new ModIPInstruction(L3SubType.IPV4_SRC, addr); - } - - /** - * Creates a L3 IPv4 dst modification. - * - * @param addr the IPv4 address to modify to - * @return a L3 modification - */ - public static L3ModificationInstruction modL3Dst(IpAddress addr) { - checkNotNull(addr, "Dst l3 IPv4 address cannot be null"); - return new ModIPInstruction(L3SubType.IPV4_DST, addr); - } - - /** - * Creates a L3 IPv6 src modification. - * - * @param addr the IPv6 address to modify to - * @return a L3 modification - */ - public static L3ModificationInstruction modL3IPv6Src(IpAddress addr) { - checkNotNull(addr, "Src l3 IPv6 address cannot be null"); - return new ModIPInstruction(L3SubType.IPV6_SRC, addr); - } - - /** - * Creates a L3 IPv6 dst modification. - * - * @param addr the IPv6 address to modify to - * @return a L3 modification - */ - public static L3ModificationInstruction modL3IPv6Dst(IpAddress addr) { - checkNotNull(addr, "Dst l3 IPv6 address cannot be null"); - return new ModIPInstruction(L3SubType.IPV6_DST, addr); - } - - /** - * Creates a L3 IPv6 Flow Label modification. - * - * @param flowLabel the IPv6 flow label to modify to (20 bits) - * @return a L3 modification - */ - public static L3ModificationInstruction modL3IPv6FlowLabel(int flowLabel) { - return new ModIPv6FlowLabelInstruction(flowLabel); - } - - /** - * Creates a L3 decrement TTL modification. - * - * @return a L3 modification - */ - public static L3ModificationInstruction decNwTtl() { - return new ModTtlInstruction(L3SubType.DEC_TTL); - } - - /** - * Creates a L3 copy TTL to outer header modification. - * - * @return a L3 modification - */ - public static L3ModificationInstruction copyTtlOut() { - return new ModTtlInstruction(L3SubType.TTL_OUT); - } - - /** - * Creates a L3 copy TTL to inner header modification. - * - * @return a L3 modification - */ - public static L3ModificationInstruction copyTtlIn() { - return new ModTtlInstruction(L3SubType.TTL_IN); - } - - /** - * Creates a L3 ARP IP src modification. - * - * @param addr the ip address to modify to - * @return a L3 modification - */ - public static L3ModificationInstruction modArpSpa(IpAddress addr) { - checkNotNull(addr, "Src l3 ARP IP address cannot be null"); - return new ModArpIPInstruction(L3SubType.ARP_SPA, addr); - } - - /** - * Creates a l3 ARP Ether src modification. - * - * @param addr the mac address to modify to - * @return a l3 modification - */ - public static L3ModificationInstruction modArpSha(MacAddress addr) { - checkNotNull(addr, "Src l3 ARP address cannot be null"); - return new ModArpEthInstruction(L3SubType.ARP_SHA, addr); - } - - /** - * Creates a l3 ARP operation modification. - * - * @param op the ARP operation to modify to - * @return a l3 modification - */ - public static L3ModificationInstruction modL3ArpOp(short op) { - checkNotNull(op, "Arp operation cannot be null"); - return new ModArpOpInstruction(L3SubType.ARP_OP, op); - } - - /** - * Creates a push MPLS header instruction. - * - * @return a L2 modification. - */ - public static Instruction pushMpls() { - return new L2ModificationInstruction.PushHeaderInstructions( - L2ModificationInstruction.L2SubType.MPLS_PUSH, - EthType.EtherType.MPLS_UNICAST.ethType()); - } - - /** - * Creates a pop MPLS header instruction. - * - * @return a L2 modification. - */ - public static Instruction popMpls() { - return new L2ModificationInstruction.PushHeaderInstructions( - L2ModificationInstruction.L2SubType.MPLS_POP, - EthType.EtherType.MPLS_UNICAST.ethType()); - } - - /** - * Creates a pop MPLS header instruction with a particular ethertype. - * - * @param etherType Ethernet type to set - * @return a L2 modification. - */ - public static Instruction popMpls(EthType etherType) { - checkNotNull(etherType, "Ethernet type cannot be null"); - return new L2ModificationInstruction.PushHeaderInstructions( - L2ModificationInstruction.L2SubType.MPLS_POP, etherType); - } - - /** - * Creates a pop VLAN header instruction. - * - * @return a L2 modification - */ - public static Instruction popVlan() { - return new L2ModificationInstruction.PopVlanInstruction( - L2ModificationInstruction.L2SubType.VLAN_POP); - } - - /** - * Creates a push VLAN header instruction. - * - * @return a L2 modification - */ - public static Instruction pushVlan() { - return new L2ModificationInstruction.PushHeaderInstructions( - L2ModificationInstruction.L2SubType.VLAN_PUSH, - EthType.EtherType.VLAN.ethType()); - } - - /** - * Sends the packet to the table id. - * - * @param tableId flow rule table id - * @return table type transition instruction - */ - public static Instruction transition(Integer tableId) { - checkNotNull(tableId, "Table id cannot be null"); - return new TableTypeTransition(tableId); - } - - /** - * Writes metadata to associate with a packet. - * - * @param metadata the metadata value to write - * @param metadataMask the bits to mask for the metadata value - * @return metadata instruction - */ - public static Instruction writeMetadata(long metadata, long metadataMask) { - return new MetadataInstruction(metadata, metadataMask); - } - - /** - * Creates a Tunnel ID modification. - * - * @param tunnelId the Tunnel ID to modify to - * @return a L2 modification - */ - public static L2ModificationInstruction modTunnelId(long tunnelId) { - checkNotNull(tunnelId, "Tunnel id cannot be null"); - return new L2ModificationInstruction.ModTunnelIdInstruction(tunnelId); - } - - /** - * Creates a TCP src modification. - * - * @param port the TCP port number to modify to - * @return a L4 modification - * @deprecated in Drake release - */ - @Deprecated - public static L4ModificationInstruction modTcpSrc(short port) { - checkNotNull(port, "Src TCP port cannot be null"); - return new ModTransportPortInstruction(L4SubType.TCP_SRC, TpPort.tpPort(port)); - } - - /** - * Creates a TCP src modification. - * - * @param port the TCP port number to modify to - * @return a L4 modification - */ - public static L4ModificationInstruction modTcpSrc(TpPort port) { - checkNotNull(port, "Src TCP port cannot be null"); - return new ModTransportPortInstruction(L4SubType.TCP_SRC, port); - } - - /** - * Creates a TCP dst modification. - * - * @param port the TCP port number to modify to - * @return a L4 modification - * @deprecated in Drake release - */ - @Deprecated - public static L4ModificationInstruction modTcpDst(short port) { - checkNotNull(port, "Dst TCP port cannot be null"); - return new ModTransportPortInstruction(L4SubType.TCP_DST, TpPort.tpPort(port)); - } - - /** - * Creates a TCP dst modification. - * - * @param port the TCP port number to modify to - * @return a L4 modification - */ - public static L4ModificationInstruction modTcpDst(TpPort port) { - checkNotNull(port, "Dst TCP port cannot be null"); - return new ModTransportPortInstruction(L4SubType.TCP_DST, port); - } - - /** - * Creates a UDP src modification. - * - * @param port the UDP port number to modify to - * @return a L4 modification - * @deprecated in Drake release - */ - @Deprecated - public static L4ModificationInstruction modUdpSrc(short port) { - checkNotNull(port, "Src UDP port cannot be null"); - return new ModTransportPortInstruction(L4SubType.UDP_SRC, TpPort.tpPort(port)); - } - - /** - * Creates a UDP src modification. - * - * @param port the UDP port number to modify to - * @return a L4 modification - */ - public static L4ModificationInstruction modUdpSrc(TpPort port) { - checkNotNull(port, "Src UDP port cannot be null"); - return new ModTransportPortInstruction(L4SubType.UDP_SRC, port); - } - - /** - * Creates a UDP dst modification. - * - * @param port the UDP port number to modify to - * @return a L4 modification - * @deprecated in Drake release - */ - @Deprecated - public static L4ModificationInstruction modUdpDst(short port) { - checkNotNull(port, "Dst UDP port cannot be null"); - return new ModTransportPortInstruction(L4SubType.UDP_DST, TpPort.tpPort(port)); - } - - /** - * Creates a UDP dst modification. - * - * @param port the UDP port number to modify to - * @return a L4 modification - */ - public static L4ModificationInstruction modUdpDst(TpPort port) { - checkNotNull(port, "Dst UDP port cannot be null"); - return new ModTransportPortInstruction(L4SubType.UDP_DST, port); - } - - /** - * Creates an extension instruction. - * - * @param extension extension instruction - * @param deviceId device ID - * @return extension instruction - */ - public static ExtensionInstructionWrapper extension(ExtensionTreatment extension, - DeviceId deviceId) { - checkNotNull(extension, "Extension instruction cannot be null"); - checkNotNull(deviceId, "Device ID cannot be null"); - return new ExtensionInstructionWrapper(extension, deviceId); - } - - /** - * Drop instruction. - */ - @Deprecated - public static final class DropInstruction implements Instruction { - - private DropInstruction() {} - - @Override - public Type type() { - return Type.DROP; - } - - @Override - public String toString() { - return toStringHelper(type().toString()).toString(); - } - - @Override - public int hashCode() { - return type().ordinal(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DropInstruction) { - return true; - } - return false; - } - } - - /** - * No Action instruction. - */ - public static final class NoActionInstruction implements Instruction { - - private NoActionInstruction() {} - - @Override - public Type type() { - return Type.NOACTION; - } - - @Override - public String toString() { - return toStringHelper(type().toString()).toString(); - } - - @Override - public int hashCode() { - return type().ordinal(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof NoActionInstruction) { - return true; - } - return false; - } - } - - /** - * Output Instruction. - */ - public static final class OutputInstruction implements Instruction { - private final PortNumber port; - - private OutputInstruction(PortNumber port) { - this.port = port; - } - - public PortNumber port() { - return port; - } - - @Override - public Type type() { - return Type.OUTPUT; - } - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("port", port).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), port); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OutputInstruction) { - OutputInstruction that = (OutputInstruction) obj; - return Objects.equals(port, that.port); - - } - return false; - } - } - - /** - * Group Instruction. - */ - public static final class GroupInstruction implements Instruction { - private final GroupId groupId; - - private GroupInstruction(GroupId groupId) { - this.groupId = groupId; - } - - public GroupId groupId() { - return groupId; - } - - @Override - public Type type() { - return Type.GROUP; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .addValue("group ID=0x" + Integer.toHexString(groupId.id())) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), groupId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof GroupInstruction) { - GroupInstruction that = (GroupInstruction) obj; - return Objects.equals(groupId, that.groupId); - - } - return false; - } - } - - /** - * Set-Queue Instruction. - */ - public static final class SetQueueInstruction implements Instruction { - private final long queueId; - private final PortNumber port; - - private SetQueueInstruction(long queueId) { - this.queueId = queueId; - this.port = null; - } - - private SetQueueInstruction(long queueId, PortNumber port) { - this.queueId = queueId; - this.port = port; - } - - public long queueId() { - return queueId; - } - - public PortNumber port() { - return port; - } - - @Override - public Type type() { - return Type.QUEUE; - } - - @Override - public String toString() { - MoreObjects.ToStringHelper toStringHelper = toStringHelper(type().toString()); - toStringHelper.add("queueId", queueId); - - if (port() != null) { - toStringHelper.add("port", port); - } - return toStringHelper.toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), queueId, port); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SetQueueInstruction) { - SetQueueInstruction that = (SetQueueInstruction) obj; - return Objects.equals(queueId, that.queueId) && Objects.equals(port, that.port); - - } - return false; - } - } - - /** - * A meter instruction. - */ - public static final class MeterInstruction implements Instruction { - private final MeterId meterId; - - private MeterInstruction(MeterId meterId) { - this.meterId = meterId; - } - - public MeterId meterId() { - return meterId; - } - - @Override - public Type type() { - return Type.METER; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("meter ID", meterId.id()).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), meterId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MeterInstruction) { - MeterInstruction that = (MeterInstruction) obj; - return Objects.equals(meterId, that.meterId); - - } - return false; - } - } - - /** - * Transition instruction. - */ - public static class TableTypeTransition implements Instruction { - private final Integer tableId; - - TableTypeTransition(Integer tableId) { - this.tableId = tableId; - } - - @Override - public Type type() { - return Type.TABLE; - } - - public Integer tableId() { - return this.tableId; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("tableId", this.tableId).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), tableId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TableTypeTransition) { - TableTypeTransition that = (TableTypeTransition) obj; - return Objects.equals(tableId, that.tableId); - - } - return false; - } - } - - /** - * Metadata instruction. - */ - public static class MetadataInstruction implements Instruction { - private final long metadata; - private final long metadataMask; - - MetadataInstruction(long metadata, long metadataMask) { - this.metadata = metadata; - this.metadataMask = metadataMask; - } - - @Override - public Type type() { - return Type.METADATA; - } - - public long metadata() { - return this.metadata; - } - - public long metadataMask() { - return this.metadataMask; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("metadata", Long.toHexString(this.metadata)) - .add("metadata mask", Long.toHexString(this.metadataMask)) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), metadata, metadataMask); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MetadataInstruction) { - MetadataInstruction that = (MetadataInstruction) obj; - return Objects.equals(metadata, that.metadata) && - Objects.equals(metadataMask, that.metadataMask); - - } - return false; - } - } - - /** - * Extension instruction. - */ - public static class ExtensionInstructionWrapper implements Instruction { - private final ExtensionTreatment extensionTreatment; - private final DeviceId deviceId; - - ExtensionInstructionWrapper(ExtensionTreatment extension, DeviceId deviceId) { - extensionTreatment = extension; - this.deviceId = deviceId; - } - - public ExtensionTreatment extensionInstruction() { - return extensionTreatment; - } - - public DeviceId deviceId() { - return deviceId; - } - - @Override - public Type type() { - return Type.EXTENSION; - } - - @Override - public String toString() { - return toStringHelper(type().toString()) - .add("extension", extensionTreatment) - .add("deviceId", deviceId) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type().ordinal(), extensionTreatment, deviceId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ExtensionInstructionWrapper) { - ExtensionInstructionWrapper that = (ExtensionInstructionWrapper) obj; - return Objects.equals(extensionTreatment, that.extensionTreatment) - && Objects.equals(deviceId, that.deviceId); - - } - return false; - } - } - -} - - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java deleted file mode 100644 index 4af3d168..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.OchSignal; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; - -public abstract class L0ModificationInstruction implements Instruction { - - /** - * Represents the type of traffic treatment. - */ - public enum L0SubType { - /** - * Lambda modification. - */ - LAMBDA, - /** - * OCh (Optical Channel) modification. - */ - OCH, - } - - public abstract L0SubType subtype(); - - @Override - public final Type type() { - return Type.L0MODIFICATION; - } - - /** - * Represents a L0 lambda modification instruction. - */ - public static final class ModLambdaInstruction extends L0ModificationInstruction { - - private final L0SubType subtype; - private final short lambda; - - ModLambdaInstruction(L0SubType subType, short lambda) { - this.subtype = subType; - this.lambda = lambda; - } - - @Override - public L0SubType subtype() { - return this.subtype; - } - - public short lambda() { - return this.lambda; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("lambda", lambda).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype, lambda); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModLambdaInstruction) { - ModLambdaInstruction that = (ModLambdaInstruction) obj; - return Objects.equals(lambda, that.lambda) && - Objects.equals(subtype, that.subtype); - } - return false; - } - } - - /** - * Represents an L0 OCh (Optical Channel) modification instruction. - */ - public static final class ModOchSignalInstruction extends L0ModificationInstruction { - - private final OchSignal lambda; - - ModOchSignalInstruction(OchSignal lambda) { - this.lambda = lambda; - } - - @Override - public L0SubType subtype() { - return L0SubType.OCH; - } - - public OchSignal lambda() { - return lambda; - } - - @Override - public int hashCode() { - return lambda.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof ModOchSignalInstruction)) { - return false; - } - final ModOchSignalInstruction that = (ModOchSignalInstruction) obj; - return Objects.equals(this.lambda, that.lambda); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("lambda", lambda) - .toString(); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java deleted file mode 100644 index b72dd7bc..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -import org.onosproject.net.OduSignalId; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; - -public abstract class L1ModificationInstruction implements Instruction { - - /** - * Represents the type of traffic treatment. - */ - public enum L1SubType { - /** - * ODU (Optical channel Data Unit) Signal Id modification. - */ - ODU_SIGID - } - - public abstract L1SubType subtype(); - - @Override - public final Type type() { - return Type.L1MODIFICATION; - } - - /** - * Represents an L1 ODU (Optical channel Data Unit) Signal Id modification instruction. - */ - public static final class ModOduSignalIdInstruction extends L1ModificationInstruction { - - private final OduSignalId oduSignalId; - - ModOduSignalIdInstruction(OduSignalId oduSignalId) { - this.oduSignalId = oduSignalId; - } - - @Override - public L1SubType subtype() { - return L1SubType.ODU_SIGID; - } - - public OduSignalId oduSignalId() { - return oduSignalId; - } - - @Override - public int hashCode() { - return oduSignalId.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof ModOduSignalIdInstruction)) { - return false; - } - final ModOduSignalIdInstruction that = (ModOduSignalIdInstruction) obj; - return Objects.equals(this.oduSignalId, that.oduSignalId); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("oduSignalId", oduSignalId) - .toString(); - } - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java deleted file mode 100644 index 0dbbb451..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java +++ /dev/null @@ -1,517 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -import org.onlab.packet.EthType; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onlab.packet.VlanId; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Abstraction of a single traffic treatment step. - */ -public abstract class L2ModificationInstruction implements Instruction { - - /** - * Represents the type of traffic treatment. - */ - public enum L2SubType { - /** - * Ether src modification. - */ - ETH_SRC, - - /** - * Ether dst modification. - */ - ETH_DST, - - /** - * VLAN id modification. - */ - VLAN_ID, - - /** - * VLAN priority modification. - */ - VLAN_PCP, - - /** - * MPLS Label modification. - */ - MPLS_LABEL, - - /** - * MPLS Push modification. - */ - MPLS_PUSH, - - /** - * MPLS Pop modification. - */ - MPLS_POP, - - /** - * MPLS TTL modification. - */ - DEC_MPLS_TTL, - - /** - * VLAN Pop modification. - */ - VLAN_POP, - - /** - * VLAN Push modification. - */ - VLAN_PUSH, - - /** - * Tunnel id modification. - */ - TUNNEL_ID, - - /** - * MPLS BOS instruction. - */ - MPLS_BOS - } - - // TODO: Create factory class 'Instructions' that will have various factory - // to create specific instructions. - - public abstract L2SubType subtype(); - - @Override - public final Type type() { - return Type.L2MODIFICATION; - } - - /** - * Represents a L2 src/dst modification instruction. - */ - public static final class ModEtherInstruction extends L2ModificationInstruction { - - private final L2SubType subtype; - private final MacAddress mac; - - ModEtherInstruction(L2SubType subType, MacAddress addr) { - - this.subtype = subType; - this.mac = addr; - } - - @Override - public L2SubType subtype() { - return this.subtype; - } - - public MacAddress mac() { - return this.mac; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("mac", mac).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype, mac); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModEtherInstruction) { - ModEtherInstruction that = (ModEtherInstruction) obj; - return Objects.equals(mac, that.mac) && - Objects.equals(subtype, that.subtype); - } - return false; - } - } - - // TODO This instruction is reused for Pop-Mpls. Consider renaming. - public static final class PushHeaderInstructions extends - L2ModificationInstruction { - - - private final L2SubType subtype; - private final EthType ethernetType; // Ethernet type value: 16 bits - - PushHeaderInstructions(L2SubType subType, EthType ethernetType) { - this.subtype = subType; - this.ethernetType = ethernetType; - } - - public EthType ethernetType() { - return ethernetType; - } - - @Override - public L2SubType subtype() { - return this.subtype; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("ethernetType", ethernetType()) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype, ethernetType); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PushHeaderInstructions) { - PushHeaderInstructions that = (PushHeaderInstructions) obj; - return Objects.equals(subtype, that.subtype) && - Objects.equals(this.ethernetType, that.ethernetType); - } - return false; - } - } - - - - /** - * Represents a VLAN id modification instruction. - */ - public static final class ModVlanIdInstruction extends L2ModificationInstruction { - - private final VlanId vlanId; - - ModVlanIdInstruction(VlanId vlanId) { - this.vlanId = vlanId; - } - - @Override - public L2SubType subtype() { - return L2SubType.VLAN_ID; - } - - public VlanId vlanId() { - return this.vlanId; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("id", vlanId).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), vlanId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModVlanIdInstruction) { - ModVlanIdInstruction that = (ModVlanIdInstruction) obj; - return Objects.equals(vlanId, that.vlanId); - } - return false; - } - } - - /** - * Represents a VLAN PCP modification instruction. - */ - public static final class ModVlanPcpInstruction extends L2ModificationInstruction { - - private static final byte MASK = 0x7; - private final byte vlanPcp; - - ModVlanPcpInstruction(byte vlanPcp) { - this.vlanPcp = (byte) (vlanPcp & MASK); - } - - @Override - public L2SubType subtype() { - return L2SubType.VLAN_PCP; - } - - public byte vlanPcp() { - return this.vlanPcp; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("pcp", Long.toHexString(vlanPcp)).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), vlanPcp); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModVlanPcpInstruction) { - ModVlanPcpInstruction that = (ModVlanPcpInstruction) obj; - return Objects.equals(vlanPcp, that.vlanPcp); - } - return false; - } - } - - /** - * Represents a VLAN POP modification instruction. - */ - public static final class PopVlanInstruction extends L2ModificationInstruction { - private final L2SubType subtype; - - PopVlanInstruction(L2SubType subType) { - this.subtype = subType; - } - - @Override - public L2SubType subtype() { - return subtype; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PopVlanInstruction) { - PopVlanInstruction that = (PopVlanInstruction) obj; - return Objects.equals(subtype, that.subtype); - } - return false; - } - } - - /** - * Represents a MPLS label modification. - */ - public static final class ModMplsLabelInstruction - extends L2ModificationInstruction { - - private final MplsLabel mplsLabel; - - ModMplsLabelInstruction(MplsLabel mplsLabel) { - this.mplsLabel = mplsLabel; - } - - /** - * @deprecated in Drake Release. - * @return integer value of label - */ - // Consider changing return value to MplsLabel - // after deprecation process so that it'll be symmetric to - // MplsCriterion#label() - @Deprecated - public Integer label() { - return mplsLabel.toInt(); - } - - public MplsLabel mplsLabel() { - return mplsLabel; - } - - @Override - public L2SubType subtype() { - return L2SubType.MPLS_LABEL; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("mpls", mplsLabel).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), mplsLabel); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModMplsLabelInstruction) { - ModMplsLabelInstruction that = (ModMplsLabelInstruction) obj; - return Objects.equals(mplsLabel, that.mplsLabel); - } - return false; - } - } - - /** - * Represents a MPLS BOS modification. - */ - public static final class ModMplsBosInstruction - extends L2ModificationInstruction { - - private final boolean mplsBos; - - ModMplsBosInstruction(boolean mplsBos) { - this.mplsBos = mplsBos; - } - - public boolean mplsBos() { - return mplsBos; - } - - @Override - public L2SubType subtype() { - return L2SubType.MPLS_BOS; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()).add("bos", mplsBos) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), mplsBos); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModMplsBosInstruction) { - ModMplsBosInstruction that = (ModMplsBosInstruction) obj; - return Objects.equals(mplsBos, that.mplsBos()); - } - return false; - } - } - - /** - * Represents a MPLS TTL modification. - */ - public static final class ModMplsTtlInstruction - extends L2ModificationInstruction { - - ModMplsTtlInstruction() { - } - - @Override - public L2SubType subtype() { - return L2SubType.DEC_MPLS_TTL; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModMplsTtlInstruction) { - return true; - } - return false; - } - } - - /** - * Represents a Tunnel id modification. - */ - public static final class ModTunnelIdInstruction - extends L2ModificationInstruction { - - private final long tunnelId; - - ModTunnelIdInstruction(long tunnelId) { - this.tunnelId = tunnelId; - } - - public long tunnelId() { - return this.tunnelId; - } - - @Override - public L2SubType subtype() { - return L2SubType.TUNNEL_ID; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("id", Long.toHexString(tunnelId)) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), tunnelId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModTunnelIdInstruction) { - ModTunnelIdInstruction that = (ModTunnelIdInstruction) obj; - return Objects.equals(tunnelId, that.tunnelId); - } - return false; - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java deleted file mode 100644 index 0efe9a77..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; - -/** - * Abstraction of a single traffic treatment step. - */ -public abstract class L3ModificationInstruction implements Instruction { - - /** - * Represents the type of traffic treatment. - */ - public enum L3SubType { - /** - * IPv4 src modification. - */ - IPV4_SRC, - - /** - * IPv4 dst modification. - */ - IPV4_DST, - - /** - * IPv6 src modification. - */ - IPV6_SRC, - - /** - * IPv6 dst modification. - */ - IPV6_DST, - - /** - * IPv6 flow label modification. - */ - IPV6_FLABEL, - - /** - * Decrement TTL. - */ - DEC_TTL, - - /** - * Copy TTL out. - */ - TTL_OUT, - - /** - * Copy TTL in. - */ - TTL_IN, - - /** - * ARP IP src modification. - */ - ARP_SPA, - - /** - * ARP Ether src modification. - */ - ARP_SHA, - - /** - * Arp operation modification. - */ - ARP_OP - - //TODO: remaining types - } - - /** - * Returns the subtype of the modification instruction. - * @return type of instruction - */ - public abstract L3SubType subtype(); - - @Override - public final Type type() { - return Type.L3MODIFICATION; - } - - /** - * Represents a L3 src/dst modification instruction. - */ - public static final class ModIPInstruction extends L3ModificationInstruction { - - private final L3SubType subtype; - private final IpAddress ip; - - ModIPInstruction(L3SubType subType, IpAddress addr) { - - this.subtype = subType; - this.ip = addr; - } - - @Override - public L3SubType subtype() { - return this.subtype; - } - - public IpAddress ip() { - return this.ip; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("ip", ip).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), ip); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModIPInstruction) { - ModIPInstruction that = (ModIPInstruction) obj; - return Objects.equals(ip, that.ip) && - Objects.equals(this.subtype(), that.subtype()); - } - return false; - } - } - - /** - * Represents a L3 ARP IP src/dst modification instruction. - */ - public static final class ModArpIPInstruction extends L3ModificationInstruction { - - private final L3SubType subtype; - private final IpAddress ip; - - ModArpIPInstruction(L3SubType subType, IpAddress addr) { - - this.subtype = subType; - this.ip = addr; - } - - @Override - public L3SubType subtype() { - return this.subtype; - } - - public IpAddress ip() { - return this.ip; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("ip", ip).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), ip); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModArpIPInstruction) { - ModArpIPInstruction that = (ModArpIPInstruction) obj; - return Objects.equals(ip, that.ip) && - Objects.equals(this.subtype(), that.subtype()); - } - return false; - } - } - - /** - * Represents a L3 ARP Ether src/dst modification instruction. - */ - public static final class ModArpEthInstruction extends L3ModificationInstruction { - - private final L3SubType subtype; - private final MacAddress mac; - - ModArpEthInstruction(L3SubType subType, MacAddress addr) { - - this.subtype = subType; - this.mac = addr; - } - - @Override - public L3SubType subtype() { - return this.subtype; - } - - public MacAddress mac() { - return this.mac; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("mac", mac).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), mac); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModArpEthInstruction) { - ModArpEthInstruction that = (ModArpEthInstruction) obj; - return Objects.equals(mac, that.mac) && - Objects.equals(this.subtype(), that.subtype()); - } - return false; - } - } - - /** - * Represents a L3 ARP operation modification instruction. - */ - public static final class ModArpOpInstruction extends L3ModificationInstruction { - - private final L3SubType subtype; - private final short op; - - ModArpOpInstruction(L3SubType subType, short op) { - - this.subtype = subType; - this.op = op; - } - - @Override - public L3SubType subtype() { - return this.subtype; - } - - public long op() { - return this.op; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("op", op).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), op); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModArpOpInstruction) { - ModArpOpInstruction that = (ModArpOpInstruction) obj; - return Objects.equals(op, that.op) && - Objects.equals(this.subtype(), that.subtype()); - } - return false; - } - } - - /** - * Represents a L3 IPv6 Flow Label (RFC 6437) modification instruction - * (20 bits unsigned integer). - */ - public static final class ModIPv6FlowLabelInstruction - extends L3ModificationInstruction { - private static final int MASK = 0xfffff; - private final int flowLabel; // IPv6 flow label: 20 bits - - /** - * Creates a new flow mod instruction. - * - * @param flowLabel the IPv6 flow label to set in the treatment (20 bits) - */ - ModIPv6FlowLabelInstruction(int flowLabel) { - this.flowLabel = flowLabel & MASK; - } - - @Override - public L3SubType subtype() { - return L3SubType.IPV6_FLABEL; - } - - /** - * Gets the IPv6 flow label to set in the treatment. - * - * @return the IPv6 flow label to set in the treatment (20 bits) - */ - public int flowLabel() { - return this.flowLabel; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("flowLabel", Long.toHexString(flowLabel)).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), flowLabel); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModIPv6FlowLabelInstruction) { - ModIPv6FlowLabelInstruction that = - (ModIPv6FlowLabelInstruction) obj; - return Objects.equals(flowLabel, that.flowLabel); - } - return false; - } - } - - /** - * Represents a L3 TTL modification instruction. - */ - public static final class ModTtlInstruction extends L3ModificationInstruction { - - private final L3SubType subtype; - - ModTtlInstruction(L3SubType subtype) { - this.subtype = subtype; - } - - @Override - public L3SubType subtype() { - return this.subtype; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModTtlInstruction) { - ModTtlInstruction that = (ModTtlInstruction) obj; - return Objects.equals(this.subtype(), that.subtype()); - } - return false; - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L4ModificationInstruction.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L4ModificationInstruction.java deleted file mode 100644 index 441a2c5f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/L4ModificationInstruction.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -import org.onlab.packet.TpPort; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Abstraction of a single traffic treatment step. - */ -public abstract class L4ModificationInstruction implements Instruction { - - /** - * Represents the type of traffic treatment. - */ - public enum L4SubType { - /** - * TCP src modification. - */ - TCP_SRC, - - /** - * TCP dst modification. - */ - TCP_DST, - - /** - * UDP src modification. - */ - UDP_SRC, - - /** - * UDP dst modification. - */ - UDP_DST - - //TODO: remaining types - } - - /** - * Returns the subtype of the modification instruction. - * - * @return type of instruction - */ - public abstract L4SubType subtype(); - - @Override - public Type type() { - return Type.L4MODIFICATION; - } - - /** - * Represents a L4 src/dst modification instruction. - */ - public static final class ModTransportPortInstruction extends L4ModificationInstruction { - - private final L4SubType subtype; - private final TpPort port; - - public ModTransportPortInstruction(L4SubType subtype, TpPort port) { - this.subtype = subtype; - this.port = port; - } - - @Override - public L4SubType subtype() { - return this.subtype; - } - - public TpPort port() { - return this.port; - } - - @Override - public String toString() { - return toStringHelper(subtype().toString()) - .add("port", port).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(type(), subtype(), port); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ModTransportPortInstruction) { - ModTransportPortInstruction that = (ModTransportPortInstruction) obj; - return Objects.equals(port, that.port) && - Objects.equals(this.subtype(), that.subtype()); - } - return false; - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/package-info.java deleted file mode 100644 index 65f58a40..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/instructions/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Traffic treatment model. - */ -package org.onosproject.net.flow.instructions; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/package-info.java deleted file mode 100644 index 6068b6f2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flow/package-info.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Flow rule model & related services API definitions. - * - *

- * The figure below depicts the general interactions between different - * components of the intent subsystem.
- * ONOS flow rule subsystem design - *

- */ -package org.onosproject.net.flow; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java deleted file mode 100644 index 4d9d7225..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultFilteringObjective.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableList; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.criteria.Criteria; -import org.onosproject.net.flow.criteria.Criterion; - -import java.util.Collection; -import java.util.List; -import java.util.Objects; -import java.util.Optional; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default implementation of a filtering objective. - */ -@Beta -public final class DefaultFilteringObjective implements FilteringObjective { - - - private final Type type; - private final boolean permanent; - private final int timeout; - private final ApplicationId appId; - private final int priority; - private final Criterion key; - private final List conditions; - private final int id; - private final Operation op; - private final Optional context; - private final TrafficTreatment meta; - - private DefaultFilteringObjective(Builder builder) { - this.key = builder.key; - this.type = builder.type; - this.permanent = builder.permanent; - this.timeout = builder.timeout; - this.appId = builder.appId; - this.priority = builder.priority; - this.conditions = builder.conditions; - this.op = builder.op; - this.context = Optional.ofNullable(builder.context); - this.meta = builder.meta; - - this.id = Objects.hash(type, key, conditions, permanent, - timeout, appId, priority); - } - - @Override - public Criterion key() { - return key; - } - - @Override - public Type type() { - return this.type; - } - - @Override - public Collection conditions() { - return conditions; - } - - @Override - public int id() { - return id; - } - - @Override - public TrafficTreatment meta() { - return meta; - } - - - @Override - public int priority() { - return priority; - } - - @Override - public ApplicationId appId() { - return appId; - } - - @Override - public int timeout() { - return timeout; - } - - @Override - public boolean permanent() { - return permanent; - } - - @Override - public Operation op() { - return op; - } - - @Override - public Optional context() { - return context; - } - - /** - * Returns a new builder. - * - * @return new builder - */ - public static Builder builder() { - return new Builder(); - } - - - public static final class Builder implements FilteringObjective.Builder { - private final ImmutableList.Builder listBuilder - = ImmutableList.builder(); - - private Type type; - private boolean permanent = DEFAULT_PERMANENT; - private int timeout = DEFAULT_TIMEOUT; - private ApplicationId appId; - private int priority = DEFAULT_PRIORITY; - private Criterion key = Criteria.dummy(); - private List conditions; - private Operation op; - private ObjectiveContext context; - private TrafficTreatment meta; - - @Override - public Builder withKey(Criterion key) { - this.key = key; - return this; - } - - @Override - public Builder addCondition(Criterion criterion) { - listBuilder.add(criterion); - return this; - } - - @Override - public Builder permit() { - this.type = Type.PERMIT; - return this; - } - - @Override - public Builder deny() { - this.type = Type.DENY; - return this; - } - - @Override - public Builder makeTemporary(int timeout) { - this.timeout = timeout; - permanent = false; - return this; - } - - @Override - public Builder makePermanent() { - permanent = true; - return this; - } - - @Override - public Builder fromApp(ApplicationId appId) { - this.appId = appId; - return this; - } - - @Override - public Builder withPriority(int priority) { - this.priority = priority; - return this; - } - - @Override - public Builder withMeta(TrafficTreatment treatment) { - this.meta = treatment; - return this; - } - - @Override - public FilteringObjective add() { - conditions = listBuilder.build(); - op = Operation.ADD; - checkNotNull(type, "Must have a type."); - checkArgument(!conditions.isEmpty(), "Must have at least one condition."); - checkNotNull(appId, "Must supply an application id"); - - return new DefaultFilteringObjective(this); - - } - - @Override - public FilteringObjective remove() { - conditions = listBuilder.build(); - checkNotNull(type, "Must have a type."); - checkArgument(!conditions.isEmpty(), "Must have at least one condition."); - checkNotNull(appId, "Must supply an application id"); - op = Operation.REMOVE; - - return new DefaultFilteringObjective(this); - - } - - @Override - public FilteringObjective add(ObjectiveContext context) { - conditions = listBuilder.build(); - checkNotNull(type, "Must have a type."); - checkArgument(!conditions.isEmpty(), "Must have at least one condition."); - checkNotNull(appId, "Must supply an application id"); - op = Operation.ADD; - this.context = context; - - return new DefaultFilteringObjective(this); - } - - @Override - public FilteringObjective remove(ObjectiveContext context) { - conditions = listBuilder.build(); - checkNotNull(type, "Must have a type."); - checkArgument(!conditions.isEmpty(), "Must have at least one condition."); - checkNotNull(appId, "Must supply an application id"); - op = Operation.REMOVE; - this.context = context; - - return new DefaultFilteringObjective(this); - } - - - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java deleted file mode 100644 index af481805..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import java.util.Objects; -import java.util.Optional; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default implementation of a forwarding objective. - */ -@Beta -public final class DefaultForwardingObjective implements ForwardingObjective { - - private final TrafficSelector selector; - private final Flag flag; - private final boolean permanent; - private final int timeout; - private final ApplicationId appId; - private final int priority; - private final Integer nextId; - private final TrafficTreatment treatment; - private final Operation op; - private final Optional context; - - private final int id; - - private DefaultForwardingObjective(Builder builder) { - this.selector = builder.selector; - this.flag = builder.flag; - this.permanent = builder.permanent; - this.timeout = builder.timeout; - this.appId = builder.appId; - this.priority = builder.priority; - this.nextId = builder.nextId; - this.treatment = builder.treatment; - this.op = builder.op; - this.context = Optional.ofNullable(builder.context); - - this.id = Objects.hash(selector, flag, permanent, - timeout, appId, priority, nextId, - treatment, op); - } - - - @Override - public TrafficSelector selector() { - return selector; - } - - @Override - public Integer nextId() { - return nextId; - } - - @Override - public TrafficTreatment treatment() { - return treatment; - } - - - @Override - public Flag flag() { - return flag; - } - - @Override - public int id() { - return id; - } - - @Override - public int priority() { - return priority; - } - - @Override - public ApplicationId appId() { - return appId; - } - - @Override - public int timeout() { - return timeout; - } - - @Override - public boolean permanent() { - return permanent; - } - - @Override - public Operation op() { - return op; - } - - @Override - public Optional context() { - return context; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - return Objects.hash(selector, flag, permanent, - timeout, appId, priority, nextId, - treatment, op); - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof DefaultForwardingObjective)) { - return false; - } - final DefaultForwardingObjective other = (DefaultForwardingObjective) obj; - boolean nextEq = false, treatmentEq = false; - if (this.selector.equals(other.selector) && - this.flag == other.flag && - this.permanent == other.permanent && - this.timeout == other.timeout && - this.appId.equals(other.appId) && - this.priority == other.priority && - this.op == other.op) { - if (this.nextId != null && other.nextId != null) { - nextEq = this.nextId == other.nextId; - } - if (this.treatment != null && other.treatment != null) { - treatmentEq = this.treatment.equals(other.treatment); - } - if (nextEq && treatmentEq) { - return true; - } - } - return false; - } - - /** - * Returns a new builder. - * - * @return new builder - */ - public static Builder builder() { - return new Builder(); - } - - public static final class Builder implements ForwardingObjective.Builder { - - private TrafficSelector selector; - private Flag flag; - private boolean permanent = DEFAULT_PERMANENT; - private int timeout = DEFAULT_TIMEOUT; - private int priority = DEFAULT_PRIORITY; - private ApplicationId appId; - private Integer nextId; - private TrafficTreatment treatment; - private Operation op; - private ObjectiveContext context; - - @Override - public Builder withSelector(TrafficSelector selector) { - this.selector = selector; - return this; - } - - @Override - public Builder nextStep(int nextId) { - this.nextId = nextId; - return this; - } - - @Override - public Builder withTreatment(TrafficTreatment treatment) { - this.treatment = treatment; - return this; - } - - @Override - public Builder withFlag(Flag flag) { - this.flag = flag; - return this; - } - - @Override - public Builder makeTemporary(int timeout) { - this.timeout = timeout; - this.permanent = false; - return this; - } - - @Override - public Builder makePermanent() { - this.permanent = true; - return this; - } - - @Override - public Builder fromApp(ApplicationId appId) { - this.appId = appId; - return this; - } - - @Override - public Builder withPriority(int priority) { - this.priority = priority; - return this; - } - - @Override - public ForwardingObjective add() { - checkNotNull(selector, "Must have a selector"); - checkNotNull(flag, "A flag must be set"); - checkArgument(nextId != null || treatment != null, "Must supply at " + - "least a treatment and/or a nextId"); - checkNotNull(appId, "Must supply an application id"); - op = Operation.ADD; - return new DefaultForwardingObjective(this); - } - - @Override - public ForwardingObjective remove() { - checkNotNull(selector, "Must have a selector"); - checkNotNull(flag, "A flag must be set"); - checkArgument(nextId != null || treatment != null, "Must supply at " + - "least a treatment and/or a nextId"); - checkNotNull(appId, "Must supply an application id"); - op = Operation.REMOVE; - return new DefaultForwardingObjective(this); - } - - @Override - public ForwardingObjective add(ObjectiveContext context) { - checkNotNull(selector, "Must have a selector"); - checkNotNull(flag, "A flag must be set"); - checkArgument(nextId != null || treatment != null, "Must supply at " + - "least a treatment and/or a nextId"); - checkNotNull(appId, "Must supply an application id"); - op = Operation.ADD; - this.context = context; - - return new DefaultForwardingObjective(this); - } - - @Override - public ForwardingObjective remove(ObjectiveContext context) { - checkNotNull(selector, "Must have a selector"); - checkNotNull(flag, "A flag must be set"); - checkArgument(nextId != null || treatment != null, "Must supply at " + - "least a treatment and/or a nextId"); - checkNotNull(appId, "Must supply an application id"); - op = Operation.REMOVE; - this.context = context; - - return new DefaultForwardingObjective(this); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultNextObjective.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultNextObjective.java deleted file mode 100644 index bd580507..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultNextObjective.java +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableList; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import java.util.Collection; -import java.util.List; -import java.util.Optional; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default implementation of a next objective. - */ -@Beta -public final class DefaultNextObjective implements NextObjective { - - private final List treatments; - private final ApplicationId appId; - private final Type type; - private final Integer id; - private final Operation op; - private final Optional context; - private final TrafficSelector meta; - - private DefaultNextObjective(Builder builder) { - this.treatments = builder.treatments; - this.appId = builder.appId; - this.type = builder.type; - this.id = builder.id; - this.op = builder.op; - this.context = Optional.ofNullable(builder.context); - this.meta = builder.meta; - } - - @Override - public Collection next() { - return treatments; - } - - @Override - public Type type() { - return type; - } - - @Override - public int id() { - return id; - } - - @Override - public int priority() { - return 0; - } - - @Override - public ApplicationId appId() { - return appId; - } - - @Override - public int timeout() { - return 0; - } - - @Override - public boolean permanent() { - return false; - } - - @Override - public Operation op() { - return op; - } - - @Override - public Optional context() { - return context; - } - - @Override - public TrafficSelector meta() { - return meta; - } - - /** - * Returns a new builder. - * - * @return new builder - */ - public static Builder builder() { - return new Builder(); - } - - public static final class Builder implements NextObjective.Builder { - - private ApplicationId appId; - private Type type; - private Integer id; - private List treatments; - private Operation op; - private ObjectiveContext context; - private TrafficSelector meta; - - private final ImmutableList.Builder listBuilder - = ImmutableList.builder(); - - @Override - public Builder withId(int nextId) { - this.id = nextId; - return this; - } - - @Override - public Builder withType(Type type) { - this.type = type; - return this; - } - - @Override - public Builder addTreatment(TrafficTreatment treatment) { - listBuilder.add(treatment); - return this; - } - - /** - * Noop. This method has no effect. - * - * @param timeout a timeout - * @return a next objective builder - */ - @Override - public Builder makeTemporary(int timeout) { - return this; - } - - /** - * Noop. This method has no effect. - * - * @return a next objective builder - */ - @Override - public Builder makePermanent() { - return this; - } - - @Override - public Builder fromApp(ApplicationId appId) { - this.appId = appId; - return this; - } - - /** - * Noop. This method has no effect. - * - * @param priority an integer - * @return a next objective builder - */ - @Override - public Builder withPriority(int priority) { - return this; - } - - @Override - public Builder withMeta(TrafficSelector meta) { - this.meta = meta; - return this; - } - - @Override - public NextObjective add() { - treatments = listBuilder.build(); - op = Operation.ADD; - checkNotNull(appId, "Must supply an application id"); - checkNotNull(id, "id cannot be null"); - checkNotNull(type, "The type cannot be null"); - checkArgument(!treatments.isEmpty(), "Must have at least one treatment"); - - return new DefaultNextObjective(this); - } - - @Override - public NextObjective remove() { - treatments = listBuilder.build(); - op = Operation.REMOVE; - checkNotNull(appId, "Must supply an application id"); - checkNotNull(id, "id cannot be null"); - checkNotNull(type, "The type cannot be null"); - - return new DefaultNextObjective(this); - } - - @Override - public NextObjective add(ObjectiveContext context) { - treatments = listBuilder.build(); - op = Operation.ADD; - this.context = context; - checkNotNull(appId, "Must supply an application id"); - checkNotNull(id, "id cannot be null"); - checkNotNull(type, "The type cannot be null"); - checkArgument(!treatments.isEmpty(), "Must have at least one treatment"); - - return new DefaultNextObjective(this); - } - - @Override - public NextObjective remove(ObjectiveContext context) { - treatments = listBuilder.build(); - op = Operation.REMOVE; - this.context = context; - checkNotNull(appId, "Must supply an application id"); - checkNotNull(id, "id cannot be null"); - checkNotNull(type, "The type cannot be null"); - - return new DefaultNextObjective(this); - } - - @Override - public NextObjective addToExisting() { - treatments = listBuilder.build(); - op = Operation.ADD_TO_EXISTING; - checkNotNull(appId, "Must supply an application id"); - checkNotNull(id, "id cannot be null"); - checkNotNull(type, "The type cannot be null"); - checkArgument(!treatments.isEmpty(), "Must have at least one treatment"); - - return new DefaultNextObjective(this); - } - - @Override - public NextObjective removeFromExisting() { - treatments = listBuilder.build(); - op = Operation.REMOVE_FROM_EXISTING; - checkNotNull(appId, "Must supply an application id"); - checkNotNull(id, "id cannot be null"); - checkNotNull(type, "The type cannot be null"); - - return new DefaultNextObjective(this); - } - - @Override - public NextObjective addToExisting(ObjectiveContext context) { - treatments = listBuilder.build(); - op = Operation.ADD_TO_EXISTING; - this.context = context; - checkNotNull(appId, "Must supply an application id"); - checkNotNull(id, "id cannot be null"); - checkNotNull(type, "The type cannot be null"); - checkArgument(!treatments.isEmpty(), "Must have at least one treatment"); - - return new DefaultNextObjective(this); - } - - @Override - public NextObjective removeFromExisting(ObjectiveContext context) { - treatments = listBuilder.build(); - op = Operation.REMOVE_FROM_EXISTING; - this.context = context; - checkNotNull(appId, "Must supply an application id"); - checkNotNull(id, "id cannot be null"); - checkNotNull(type, "The type cannot be null"); - - return new DefaultNextObjective(this); - } - - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java deleted file mode 100644 index 8ed793d0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FilteringObjective.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.criteria.Criterion; - -import java.util.Collection; - -/** - * Represents a filtering flow objective. Each filtering flow objective - * is made up of a key (typically a PortCriterion) mapped to a set of criteria. - * Using this information, a pipeline aware driver will decide how this objective - * should be mapped to the device specific pipeline-tables in order to satisfy the - * filtering condition. For example, consider the following PERMIT filtering - * objective: - *

- * portX -> {MAC1, VLAN1} - *

- * The driver could decide to pass packets to the MAC table or VLAN or PORT - * tables to ensure that only those packets arriving with the correct dst MAC - * and VLAN ids from Port X are allowed into the pipeline. - *

- * Filtering objectives of type PERMIT allow packets that match the key:criteria - * to enter the pipeline. As a result, the implication is that packets that don't - * match are automatically denied (dropped). - *

- * Filtering objectives of type DENY, are used to deny packets that would - * otherwise be permitted and forwarded through the pipeline (ie. those packets - * that make it through the PERMIT filters). - */ -@Beta -public interface FilteringObjective extends Objective { - - enum Type { - /** - * Permits packets that match the filtering condition to be processed - * by the rest of the pipeline. Automatically denies packets that don't - * match the criteria. - */ - PERMIT, - - /** - * Denies packets that make it through the permit filters. - */ - DENY - } - - /** - * Obtain the key for this filter. The filter may or may not require a key. - * - * @return a criterion, which could be null if no key was provided. - */ - Criterion key(); - - /** - * Obtain this filtering type. - * - * @return the type - */ - Type type(); - - /** - * The set of conditions the filter must provision at the device. - * - * @return a collection of criteria - */ - Collection conditions(); - - /** - * Auxiliary optional information provided to the device-driver.Typically - * conveys information about changes (treatments) to packets that are - * permitted into the pipeline by the PERMIT filtering condition. - * - * @return a treatment on the packets that make it through the PERMIT filters. - * Value may be null if no meta information is provided. - */ - TrafficTreatment meta(); - - /** - * Builder of Filtering objective entities. - */ - interface Builder extends Objective.Builder { - - /** - * Specify the key for the filter. - * - * @param key a criterion - * @return a filter objective builder - */ - Builder withKey(Criterion key); - - /** - * Add a filtering condition. - * - * @param criterion new criterion - * @return a filtering builder - */ - Builder addCondition(Criterion criterion); - - /** - * Permit this filtering condition set. - * - * @return a filtering builder - */ - Builder permit(); - - /** - * Deny this filtering condition set. - * - * @return a filtering builder - */ - Builder deny(); - - /** - * Set meta information about this filtering condition set. - * - * @param treatment traffic treatment to use - * @return a filtering builder - */ - Builder withMeta(TrafficTreatment treatment); - - /** - * Assigns an application id. - * - * @param appId an application id - * @return a filtering builder - */ - @Override - Builder fromApp(ApplicationId appId); - - /** - * Builds the filtering objective that will be added. - * - * @return a filtering objective - */ - FilteringObjective add(); - - /** - * Builds the filtering objective that will be removed. - * - * @return a filtering objective. - */ - FilteringObjective remove(); - - /** - * Builds the filtering objective that will be added. - * The context will be used to notify the calling application. - * - * @param context an objective context - * @return a filtering objective - */ - FilteringObjective add(ObjectiveContext context); - - /** - * Builds the filtering objective that will be removed. - * The context will be used to notify the calling application. - * - * @param context an objective context - * @return a filtering objective - */ - FilteringObjective remove(ObjectiveContext context); - - - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveService.java deleted file mode 100644 index d3254151..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveService.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; -import org.onosproject.net.DeviceId; - -/** - * Service for programming data plane flow rules in manner independent of - * specific device table pipeline configuration. - */ -@Beta -public interface FlowObjectiveService { - - /** - * Installs the filtering rules onto the specified device. - * - * @param deviceId device identifier - * @param filteringObjective the filtering objective - */ - void filter(DeviceId deviceId, FilteringObjective filteringObjective); - - /** - * Installs the forwarding rules onto the specified device. - * - * @param deviceId device identifier - * @param forwardingObjective the forwarding objective - */ - void forward(DeviceId deviceId, ForwardingObjective forwardingObjective); - - /** - * Installs the next hop elements into the specified device. - * - * @param deviceId device identifier - * @param nextObjective a next objective - */ - void next(DeviceId deviceId, NextObjective nextObjective); - - /** - * Obtains a globally unique next objective. - * - * @return an integer - */ - int allocateNextId(); - - /** - * Installs the filtering rules onto the specified device. - * - * @param policy policy expression - */ - void initPolicy(String policy); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStore.java deleted file mode 100644 index ecf5d733..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStore.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; -import org.onosproject.net.behaviour.NextGroup; -import org.onosproject.store.Store; - -/** - * The flow objective store. - */ -@Beta -public interface FlowObjectiveStore - extends Store { - - /** - * Adds a NextGroup to the store. - * - * @param nextId an integer - * @param group a next group opaque object - */ - void putNextGroup(Integer nextId, NextGroup group); - - /** - * Fetch a next group from the store. - * @param nextId an integer - * @return a next group - */ - NextGroup getNextGroup(Integer nextId); - - /** - * Allocates a next objective id. This id is globally unique - * - * @return an integer - */ - int allocateNextId(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStoreDelegate.java deleted file mode 100644 index 2189af1b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/FlowObjectiveStoreDelegate.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; -import org.onosproject.store.StoreDelegate; - -/** - * Flow Objective store delegate abstraction. - */ -@Beta -public interface FlowObjectiveStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java deleted file mode 100644 index 9857a710..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ForwardingObjective.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -/** - * Represents a description of which types of traffic need to - * be forwarded through the device. A forwarding objective may - * result in multiple rules at the device. There are two main types - * of forwarding objectives: - * - * - Versatile - * - Specific - * - * A versatile forwarding objective represents a composite rule that matches - * two or more header fields. The use of versatile usually indicates that this - * rule should be inserted in its entirety into the ACL table. Although, - * drivers for some devices are free to implement this differently. - * - * A specific forwarding objective represents a specific rule matching one or - * more header fields. The installation of this rule may result in several rules - * at the device. For example, one per table type. - */ -@Beta -public interface ForwardingObjective extends Objective { - - /** - * Represents whether this objective is monolithic or - * may be broken down into parts. - */ - enum Flag { - /** - * A decomposable objective. - */ - SPECIFIC, - - /** - * A monolithic objective. - */ - VERSATILE - } - - /** - * Obtain the selector for this objective. - * - * @return a traffic selector - */ - TrafficSelector selector(); - - /** - * Obtain the traffic treatment for this objective. Mutually exclusive with - * 'treatment'. - * - * @return an integer - */ - Integer nextId(); - - /** - * A traffic treatment for this forwarding objective. Mutually exclusive - * with a nextId. - * - * @return a traffic treatment - */ - TrafficTreatment treatment(); - - /** - * Obtain the type of this objective. - * - * @return a flag type - */ - Flag flag(); - - /** - * A forwarding objective builder. - */ - interface Builder extends Objective.Builder { - - /** - * Assigns a selector to the forwarding objective. - * - * @param selector a traffic selector - * @return a forwarding objective builder - */ - Builder withSelector(TrafficSelector selector); - - /** - * Assigns a next step to the forwarding objective. - * - * @param nextId a next objective id. - * @return a forwarding objective builder - */ - Builder nextStep(int nextId); - - /** - * Assigns the treatment for this forwarding objective. - * - * @param treatment a traffic treatment - * @return a forwarding objective - */ - Builder withTreatment(TrafficTreatment treatment); - - /** - * Assigns the flag to the forwarding objective. - * - * @param flag a flag - * @return a forwarding objective builder - */ - Builder withFlag(Flag flag); - - /** - * Builds the forwarding objective that will be added. - * - * @return a forwarding objective - */ - ForwardingObjective add(); - - /** - * Builds the forwarding objective that will be removed. - * - * @return a forwarding objective. - */ - ForwardingObjective remove(); - - /** - * Builds the forwarding objective that will be added. - * The context will be used to notify the calling application. - * - * @param context an objective context - * @return a forwarding objective - */ - ForwardingObjective add(ObjectiveContext context); - - /** - * Builds the forwarding objective that will be removed. - * The context will be used to notify the calling application. - * - * @param context an objective context - * @return a forwarding objective - */ - ForwardingObjective remove(ObjectiveContext context); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java deleted file mode 100644 index 36098d71..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/NextObjective.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import java.util.Collection; - -/** - * Represents a nexthop which will be translated by a driver - * into the appropriate group or actions needed to implement - * the egress function. - * - * A next objective is made up of a collection of traffic treatments - * associated with a type. These types are: - * - * - Hashed - * - Broadcast - * - Failover - * - Simple - * - * These types will indicate to the driver what the intended behavior is. - * For example, a broadcast next objective with a collection of output - * treatments will indicate to a driver that all output actions are expected - * to be executed simultaneously. The driver is then free to implement this - * as a group or a simple action list. - */ -@Beta -public interface NextObjective extends Objective { - - /** - * Represents the type of next phase to build. - */ - enum Type { - /** - * A hashed packet processing. - */ - HASHED, - - /** - * Broadcast packet process. - */ - BROADCAST, - - /** - * Failover handling. - */ - FAILOVER, - - /** - * Simple processing. Could be a group or a treatment. - */ - SIMPLE - } - - /** - * The collection of treatments that need to be applied to a set of traffic. - * - * @return a collection of traffic treatments - */ - Collection next(); - - /** - * The type of operation that will be applied to the traffic using the collection - * of treatments. - * - * @return a type - */ - Type type(); - - /** - * Auxiliary optional information provided to the device-driver.Typically - * conveys information about selectors (matches) that are intended to - * use this Next Objective. - * - * @return a selector intended to pass meta information to the device driver. - * Value may be null if no meta information is provided. - */ - TrafficSelector meta(); - - /** - * A next step builder. - */ - interface Builder extends Objective.Builder { - - /** - * Specifies the id for this next objective. - * - * @param nextId an integer - * @return a next objective builder - */ - Builder withId(int nextId); - - /** - * Sets the type of next step. - * - * @param type a type - * @return a next step builder - */ - Builder withType(Type type); - - /** - * Adds a treatment to this next step. - * - * @param treatment a traffic treatment - * @return a next step builder - */ - Builder addTreatment(TrafficTreatment treatment); - - /** - * Specifies the application which applied the filter. - * - * @param appId an application id - * @return an objective builder - */ - @Override - Builder fromApp(ApplicationId appId); - - /** - * Sets the priority for this objective. - * - * @param priority an integer - * @return an objective builder - */ - @Override - Builder withPriority(int priority); - - /** - * Set meta information related to this next objective. - * - * @param selector match conditions - * @return an objective builder - */ - Builder withMeta(TrafficSelector selector); - - /** - * Builds the next objective that will be added. - * - * @return a next objective - */ - NextObjective add(); - - /** - * Builds the next objective that will be removed. - * - * @return a next objective. - */ - NextObjective remove(); - - /** - * Builds the next objective that will be added. - * The context will be used to notify the calling application. - * - * @param context an objective context - * @return a next objective - */ - NextObjective add(ObjectiveContext context); - - /** - * Builds the next objective that will be removed. - * The context will be used to notify the calling application. - * - * @param context an objective context - * @return a next objective - */ - NextObjective remove(ObjectiveContext context); - - /** - * Build the next objective that will be added, with {@link Operation} - * ADD_TO_EXISTING. - * - * @return a next objective - */ - NextObjective addToExisting(); - - /** - * Build the next objective that will be removed, with {@link Operation} - * REMOVE_FROM_EXISTING. - * - * @return a next objective - */ - NextObjective removeFromExisting(); - - /** - * Builds the next objective that will be added, with {@link Operation} - * ADD_TO_EXISTING. The context will be used to notify the calling application. - * - * @param context an objective context - * @return a next objective - */ - NextObjective addToExisting(ObjectiveContext context); - - /** - * Builds the next objective that will be removed, with {@link Operation} - * REMOVE_FROM_EXISTING. The context will be used to notify the calling application. - * - * @param context an objective context - * @return a next objective - */ - NextObjective removeFromExisting(ObjectiveContext context); - - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java deleted file mode 100644 index b1d73a7c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/Objective.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; - -import java.util.Optional; - -/** - * Base representation of a flow-objective description. - */ -@Beta -public interface Objective { - - boolean DEFAULT_PERMANENT = true; - int DEFAULT_TIMEOUT = 0; - int DEFAULT_PRIORITY = 32768; - - /** - * Type of operation. - */ - enum Operation { - /** - * Adds the objective. Can be used for any flow objective. For forwarding - * and filtering objectives, existing objectives with identical selector - * and priority fields (but different treatments or next) will be replaced. - * For next objectives, if modification is desired, ADD will not - * do anything - use ADD_TO_EXISTING. - */ - ADD, - - /** - * Removes the objective. Can be used for any flow objective. - */ - REMOVE, - - /** - * Add to an existing Next Objective. Should not be used for any other - * objective. - */ - ADD_TO_EXISTING, - - /** - * Remove from an existing Next Objective. Should not be used for any - * other objective. - */ - REMOVE_FROM_EXISTING - } - - /** - * An identifier for this objective. - * - * @return an integer - */ - int id(); - - /** - * The priority for this objective. - * - * @return an integer - */ - int priority(); - - /** - * The application which applied this objective. - * - * @return an application id - */ - ApplicationId appId(); - - /** - * The timeout for this objective. - * - * @return an integer - */ - int timeout(); - - /** - * Whether this objective is permanent. - * - * @return a boolean - */ - boolean permanent(); - - /** - * The type of operation for this objective. - * - * @return an operation - */ - Operation op(); - - /** - * Obtains an optional context. - * - * @return optional; which will be empty if there is no context. - * Otherwise it will return the context. - */ - Optional context(); - - /** - * An objective builder. - */ - interface Builder { - /** - * Makes the filtering objective temporary. - * - * @param timeout a timeout - * @return an objective builder - */ - Builder makeTemporary(int timeout); - - /** - * Makes the filtering objective permanent. - * - * @return an objective builder - */ - Builder makePermanent(); - - /** - * Specifies the application which applied the filter. - * - * @param appId an application id - * @return an objective builder - */ - Builder fromApp(ApplicationId appId); - - /** - * Sets the priority for this objective. - * - * @param priority an integer - * @return an objective builder - */ - Builder withPriority(int priority); - - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveContext.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveContext.java deleted file mode 100644 index f3d23e4a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveContext.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; - -/** - * The context of a objective that will become the subject of - * the notification. - *

- * Implementations of this class must be serializable. - *

- */ -@Beta -public interface ObjectiveContext { - - /** - * Invoked on successful execution of the flow objective. - * - * @param objective objective to execute - */ - default void onSuccess(Objective objective) { - } - - /** - * Invoked when error is encountered while executing the flow objective. - * - * @param objective objective to execute - * @param error error encountered - */ - default void onError(Objective objective, ObjectiveError error) { - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveError.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveError.java deleted file mode 100644 index fd159d7e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveError.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; - -/** - * Represents the set of errors possible when processing an objective. - */ -@Beta -public enum ObjectiveError { - - /** - * The driver processing this objective does not know how to process it. - */ - UNSUPPORTED, - - /** - * The flow installation for this objective failed. - */ - FLOWINSTALLATIONFAILED, - - /** - * THe group installation for this objective failed. - */ - GROUPINSTALLATIONFAILED, - - /** - * The group was reported as installed but is missing. - */ - GROUPMISSING, - - /** - * The device was not available to install objectives to. - */ - DEVICEMISSING, - - /** - * Incorrect Objective parameters passed in by the caller. - */ - BADPARAMS, - - /** - * An unknown error occurred. - */ - UNKNOWN -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveEvent.java deleted file mode 100644 index c6937e31..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/ObjectiveEvent.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import com.google.common.annotations.Beta; -import org.onosproject.event.AbstractEvent; - -/** - * Describes a objective event. - */ -@Beta -public class ObjectiveEvent extends AbstractEvent { - - /** - * Type of objective events. - */ - public enum Type { - /** - * Signifies that the objective has been added to the store. - */ - ADD, - - /** - * Signifies that the objective has been removed. - */ - REMOVE - } - - /** - * Creates an event of the given type for the specified objective id. - * - * @param type the type of the event - * @param objective the objective id the event is about - */ - public ObjectiveEvent(Type type, Integer objective) { - super(type, objective); - } - - /** - * Creates an event of the given type for the specified objective id at the given - * time. - * - * @param type the type of the event - * @param objective the objective id the event is about - * @param time the time of the event - */ - public ObjectiveEvent(Type type, Integer objective, long time) { - super(type, objective, time); - } -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/package-info.java deleted file mode 100644 index 105f7b59..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/flowobjective/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Abstractions for objective-based flow programming of data plane without - * requiring device pipeline structure awareness.  This subsystem is - * experimental and its interfaces will change in the upcoming release. - */ -package org.onosproject.net.flowobjective; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroup.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroup.java deleted file mode 100644 index 97f8aedf..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroup.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; - -import org.onosproject.core.GroupId; -import org.onosproject.net.DeviceId; - -/** - * ONOS implementation of default group that is stored in the system. - */ -public class DefaultGroup extends DefaultGroupDescription - implements Group, StoredGroupEntry { - - private GroupState state; - private boolean isGroupStateAddedFirstTime; - private long life; - private long packets; - private long bytes; - private long referenceCount; - private GroupId id; - - /** - * Initializes default values. - * - * @param newId group id for new group - */ - private void initialize(GroupId newId) { - id = newId; - state = GroupState.PENDING_ADD; - life = 0; - packets = 0; - bytes = 0; - referenceCount = 0; - } - - /** - * Default group object constructor with the parameters. - * - * @param id group identifier - * @param groupDesc group description parameters - */ - public DefaultGroup(GroupId id, GroupDescription groupDesc) { - super(groupDesc); - initialize(id); - } - - /** - * Default group object constructor with the available information - * from data plane. - * - * @param id group identifier - * @param deviceId device identifier - * @param type type of the group - * @param buckets immutable list of group bucket - */ - public DefaultGroup(GroupId id, - DeviceId deviceId, - GroupDescription.Type type, - GroupBuckets buckets) { - super(deviceId, type, buckets); - initialize(id); - } - - /** - * Returns group identifier associated with a group object. - * - * @return GroupId Group Identifier - */ - @Override - public GroupId id() { - return this.id; - } - - /** - * Returns current state of a group object. - * - * @return GroupState Group State - */ - @Override - public GroupState state() { - return this.state; - } - - /** - * Returns the number of milliseconds this group has been alive. - * - * @return number of millis - */ - @Override - public long life() { - return this.life; - } - - /** - * Returns the number of packets processed by this group. - * - * @return number of packets - */ - @Override - public long packets() { - return this.packets; - } - - /** - * Returns the number of bytes processed by this group. - * - * @return number of bytes - */ - @Override - public long bytes() { - return this.bytes; - } - - /** - * Sets the new state for this entry. - * - * @param newState new group entry state. - */ - @Override - public void setState(Group.GroupState newState) { - this.state = newState; - } - - /** - * Sets how long this entry has been entered in the system. - * - * @param life epoch time - */ - @Override - public void setLife(long life) { - this.life = life; - } - - /** - * Sets number of packets processed by this group entry. - * - * @param packets a long value - */ - @Override - public void setPackets(long packets) { - this.packets = packets; - } - - /** - * Sets number of bytes processed by this group entry. - * - * @param bytes a long value - */ - @Override - public void setBytes(long bytes) { - this.bytes = bytes; - } - - @Override - public void setReferenceCount(long referenceCount) { - this.referenceCount = referenceCount; - } - - @Override - public long referenceCount() { - return referenceCount; - } - - /* - * The deviceId, type and buckets are used for hash. - * - * (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), id); - } - - /* - * The deviceId, groupId, type and buckets should be same. - * - * (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultGroup) { - DefaultGroup that = (DefaultGroup) obj; - return super.equals(obj) && - Objects.equals(id, that.id); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("description", super.toString()) - .add("groupid", id) - .add("state", state) - .toString(); - } - - @Override - public void setIsGroupStateAddedFirstTime(boolean isGroupStateAddedFirstTime) { - this.isGroupStateAddedFirstTime = isGroupStateAddedFirstTime; - } - - @Override - public boolean isGroupStateAddedFirstTime() { - return isGroupStateAddedFirstTime; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupBucket.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupBucket.java deleted file mode 100644 index 9d942ee4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupBucket.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.onosproject.core.GroupId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.instructions.Instruction; - -import java.util.List; -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Group bucket implementation. A group bucket is collection of - * instructions that can be performed on a traffic flow. A select - * Group can have one or more Buckets where traffic will be - * processed by a single bucket in the group, based on device - * specific selection algorithm (e.g. hash on some fields of the - * incoming traffic flows or round robin) and hence can contains - * optional weight field to define the weights among the buckets - * in the group. A failover group bucket is associated with a - * specific port or group that controls its liveness. - */ -public final class DefaultGroupBucket implements GroupBucket, StoredGroupBucketEntry { - private final GroupDescription.Type type; - private final TrafficTreatment treatment; - private final short weight; - private final PortNumber watchPort; - private final GroupId watchGroup; - private long packets; - private long bytes; - - /** - * Group bucket constructor with the parameters. - * - * @param type group bucket type - * @param treatment traffic treatment associated with group bucket - * @param weight optional weight associated with group bucket - * @param watchPort port that determines the liveness of group bucket - * @param watchGroup group that determines the liveness of group bucket - */ - private DefaultGroupBucket(GroupDescription.Type type, - TrafficTreatment treatment, - short weight, - PortNumber watchPort, - GroupId watchGroup) { - this.type = type; - this.treatment = checkNotNull(treatment); - this.weight = weight; - this.watchPort = watchPort; - this.watchGroup = watchGroup; - } - - /** - * Creates indirect group bucket. - * - * @param treatment traffic treatment associated with group bucket - * @return indirect group bucket object - */ - public static GroupBucket createIndirectGroupBucket( - TrafficTreatment treatment) { - return new DefaultGroupBucket(GroupDescription.Type.INDIRECT, - treatment, - (short) -1, - null, - null); - } - - /** - * Creates select group bucket with weight as 1. - * - * @param treatment traffic treatment associated with group bucket - * @return select group bucket object - */ - public static GroupBucket createSelectGroupBucket( - TrafficTreatment treatment) { - return new DefaultGroupBucket(GroupDescription.Type.SELECT, - treatment, - (short) 1, - null, - null); - } - - /** - * Creates select group bucket with specified weight. - * - * @param treatment traffic treatment associated with group bucket - * @param weight weight associated with group bucket - * @return select group bucket object - */ - public static GroupBucket createSelectGroupBucket( - TrafficTreatment treatment, - short weight) { - if (weight == 0) { - return null; - } - - return new DefaultGroupBucket(GroupDescription.Type.SELECT, - treatment, - weight, - null, - null); - } - - /** - * Creates failover group bucket with watchport or watchgroup. - * - * @param treatment traffic treatment associated with group bucket - * @param watchPort port that determines the liveness of group bucket - * @param watchGroup group that determines the liveness of group bucket - * @return failover group bucket object - */ - public static GroupBucket createFailoverGroupBucket( - TrafficTreatment treatment, - PortNumber watchPort, - GroupId watchGroup) { - checkArgument(((watchPort != null) || (watchGroup != null))); - return new DefaultGroupBucket(GroupDescription.Type.FAILOVER, - treatment, - (short) -1, - watchPort, - watchGroup); - } - - /** - * Creates all group bucket. - * - * @param treatment traffic treatment associated with group bucket - * @return all group bucket object - */ - public static GroupBucket createAllGroupBucket(TrafficTreatment treatment) { - return new DefaultGroupBucket(GroupDescription.Type.ALL, - treatment, - (short) -1, - null, - null); - } - - @Override - public GroupDescription.Type type() { - return this.type; - } - - /** - * Returns list of Traffic instructions that are part of the bucket. - * - * @return TrafficTreatment Traffic instruction list - */ - @Override - public TrafficTreatment treatment() { - return treatment; - } - - /** - * Returns weight of select group bucket. - * - * @return short weight associated with a bucket - */ - @Override - public short weight() { - return weight; - } - - /** - * Returns port number used for liveness detection for a - * failover bucket. - * - * @return PortNumber port number used for liveness detection - */ - @Override - public PortNumber watchPort() { - return watchPort; - } - - /** - * Returns group identifier used for liveness detection for a - * failover bucket. - * - * @return GroupId group identifier to be used for liveness detection - */ - @Override - public GroupId watchGroup() { - return watchGroup; - } - - /* - * The type and treatment can change on a given bucket - * - * (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public int hashCode() { - return Objects.hash(type, treatment); - } - - /* - * The priority and statistics can change on a given treatment and selector - * - * (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultGroupBucket) { - DefaultGroupBucket that = (DefaultGroupBucket) obj; - List myInstructions = this.treatment.allInstructions(); - List theirInstructions = that.treatment.allInstructions(); - - return Objects.equals(type, that.type) && - myInstructions.containsAll(theirInstructions) && - theirInstructions.containsAll(myInstructions); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("type", type) - .add("treatment", treatment) - .add("packets", packets) - .add("bytes", bytes) - .toString(); - } - - @Override - public long packets() { - return packets; - } - - @Override - public long bytes() { - return bytes; - } - - @Override - public void setPackets(long packets) { - this.packets = packets; - } - - @Override - public void setBytes(long bytes) { - this.bytes = bytes; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java deleted file mode 100644 index 1580d835..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; - -/** - * Default implementation of group description interface. - */ -public class DefaultGroupDescription implements GroupDescription { - private final GroupDescription.Type type; - private final GroupBuckets buckets; - private final GroupKey appCookie; - private final ApplicationId appId; - private final DeviceId deviceId; - private final Integer givenGroupId; - - /** - * Constructor to be used by north bound applications. - * NOTE: The caller of this subsystem MUST ensure the appCookie - * provided in this API is immutable. - * NOTE: The caller may choose to pass in 'null' for the groupId. This is - * the typical case, where the caller allows the group subsystem to choose - * the groupId in a globally unique way. If the caller passes in the groupId, - * the caller MUST ensure that the id is globally unique (not just unique - * per device). - * - * @param deviceId device identifier - * @param type type of the group - * @param buckets immutable list of group bucket - * @param appCookie immutable application cookie of type DefaultGroupKey - * to be associated with the group - * @param groupId group identifier - * @param appId application id - */ - public DefaultGroupDescription(DeviceId deviceId, - GroupDescription.Type type, - GroupBuckets buckets, - GroupKey appCookie, - Integer groupId, - ApplicationId appId) { - this.type = checkNotNull(type); - this.deviceId = checkNotNull(deviceId); - this.buckets = checkNotNull(buckets); - this.appCookie = appCookie; - this.givenGroupId = groupId; - this.appId = appId; - } - - /** - * Constructor to be used by group subsystem internal components. - * Creates group description object from another object of same type. - * - * @param groupDesc group description object - * - */ - public DefaultGroupDescription(GroupDescription groupDesc) { - this.type = groupDesc.type(); - this.deviceId = groupDesc.deviceId(); - this.buckets = groupDesc.buckets(); - this.appCookie = groupDesc.appCookie(); - this.appId = groupDesc.appId(); - this.givenGroupId = groupDesc.givenGroupId(); - } - - /** - * Constructor to be used by group subsystem internal components. - * Creates group description object from the information retrieved - * from data plane. - * - * @param deviceId device identifier - * @param type type of the group - * @param buckets immutable list of group bucket - * - */ - public DefaultGroupDescription(DeviceId deviceId, - GroupDescription.Type type, - GroupBuckets buckets) { - this(deviceId, type, buckets, null, null, null); - } - - /** - * Returns type of a group object. - * - * @return GroupType group type - */ - @Override - public GroupDescription.Type type() { - return this.type; - } - - /** - * Returns device identifier on which this group object is created. - * - * @return DeviceId device identifier - */ - @Override - public DeviceId deviceId() { - return this.deviceId; - } - - /** - * Returns application identifier that has created this group object. - * - * @return ApplicationId application identifier - */ - @Override - public ApplicationId appId() { - return this.appId; - } - - /** - * Returns application cookie associated with a group object. - * - * @return GroupKey application cookie - */ - @Override - public GroupKey appCookie() { - return this.appCookie; - } - - /** - * Returns group buckets of a group. - * - * @return GroupBuckets immutable list of group bucket - */ - @Override - public GroupBuckets buckets() { - return this.buckets; - } - - /** - * Returns groupId passed in by application. - * - * @return Integer group Id passed in by caller. May be null if caller passed - * in null during GroupDescription creation. - */ - @Override - public Integer givenGroupId() { - return this.givenGroupId; - } - - @Override - /* - * The deviceId, type and buckets are used for hash. - * - * (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - public int hashCode() { - return Objects.hash(deviceId, type, buckets); - } - - @Override - /* - * The deviceId, type and buckets should be same. - * - * (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultGroupDescription) { - DefaultGroupDescription that = (DefaultGroupDescription) obj; - return Objects.equals(deviceId, that.deviceId) && - Objects.equals(type, that.type) && - Objects.equals(buckets, that.buckets); - - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("deviceId", deviceId) - .add("type", type) - .add("buckets", buckets) - .add("appId", appId) - .add("givenGroupId", givenGroupId) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupKey.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupKey.java deleted file mode 100644 index e1eacd1e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/DefaultGroupKey.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Arrays; - -/** - * Default implementation of group key interface. - */ -public class DefaultGroupKey implements GroupKey { - - private final byte[] key; - protected static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray(); - - public DefaultGroupKey(byte[] key) { - this.key = checkNotNull(key); - } - - @Override - public byte[] key() { - return key; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof DefaultGroupKey)) { - return false; - } - DefaultGroupKey that = (DefaultGroupKey) o; - return (Arrays.equals(this.key, that.key)); - } - - @Override - public int hashCode() { - return Arrays.hashCode(this.key); - } - - /** - * Returns a hex string representation of the byte array that is used - * as a group key. This solution was adapted from - * http://stackoverflow.com/questions/9655181/ - */ - @Override - public String toString() { - char[] hexChars = new char[key.length * 2]; - for (int j = 0; j < key.length; j++) { - int v = key[j] & 0xFF; - hexChars[j * 2] = HEX_ARRAY[v >>> 4]; - hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F]; - } - return "GroupKey:0x" + new String(hexChars); - } - -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/Group.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/Group.java deleted file mode 100644 index 54407752..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/Group.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.onosproject.core.GroupId; - -/** - * ONOS representation of group that is stored in the system. - */ -public interface Group extends GroupDescription { - /** - * State of the group object in ONOS. - */ - enum GroupState { - /** - * Group create request is queued as group AUDIT is in progress. - */ - WAITING_AUDIT_COMPLETE, - /** - * Group create request is processed by ONOS and not yet - * received the confirmation from data plane. - */ - PENDING_ADD, - /** - * Group is missing in data plane and retrying GROUP ADD request. - */ - PENDING_ADD_RETRY, - /** - * Group is created in the data plane. - */ - ADDED, - /** - * Group update request is processed by ONOS and not - * received the confirmation from data plane post which - * state moves to ADDED state. - */ - PENDING_UPDATE, - /** - * Group delete request is processed by ONOS and not - * received the confirmation from data plane. - */ - PENDING_DELETE - } - - /** - * Returns group identifier associated with a group object. - * - * @return GroupId Group Identifier - */ - GroupId id(); - - /** - * Returns current state of a group object. - * - * @return GroupState Group State - */ - GroupState state(); - - /** - * Returns the number of milliseconds this group has been alive. - * - * @return number of millis - */ - long life(); - - /** - * Returns the number of packets processed by this group. - * - * @return number of packets - */ - long packets(); - - /** - * Returns the number of bytes processed by this group. - * - * @return number of bytes - */ - long bytes(); - - /** - * Returns the number of flow rules or other groups reference this group. - * - * @return number of flow rules or other groups pointing to this group - */ - long referenceCount(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupBucket.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupBucket.java deleted file mode 100644 index a503c154..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupBucket.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.onosproject.core.GroupId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.TrafficTreatment; - -/** - * Group Bucket definition. A default group Bucket is collection of - * Instructions that can be performed on a traffic flow. A failover - * group bucket is associated with a specific port or group that - * controls its liveness. A select group bucket contains optional - * weight field to define the weights among the buckets in the group. - */ -public interface GroupBucket { - /** - * Returns group type of the bucket. - * - * @return GroupType group type - */ - GroupDescription.Type type(); - - /** - * Returns list of Traffic instructions that are part of the bucket. - * - * @return TrafficTreatment traffic instruction list - */ - TrafficTreatment treatment(); - - /** - * Returns weight of select group bucket. - * - * @return short weight associated with a bucket - */ - short weight(); - - /** - * Returns port number used for liveness detection for a - * failover bucket. - * - * @return PortNumber port number used for liveness detection - */ - PortNumber watchPort(); - - /** - * Returns group identifier used for liveness detection for a - * failover bucket. - * - * @return GroupId group identifier to be used for liveness detection - */ - GroupId watchGroup(); - - /** - * Returns the number of packets processed by this group bucket. - * - * @return number of packets - */ - long packets(); - - /** - * Returns the number of bytes processed by this group bucket. - * - * @return number of bytes - */ - long bytes(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupBuckets.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupBuckets.java deleted file mode 100644 index c0b5e5c6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupBuckets.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; - -import com.google.common.collect.ImmutableList; - -/** - * Immutable collection of group bucket. - */ -public final class GroupBuckets { - private final List buckets; - - /** - * Creates a immutable list of group bucket. - * - * @param buckets list of group bucket - */ - public GroupBuckets(List buckets) { - this.buckets = ImmutableList.copyOf(checkNotNull(buckets)); - } - - /** - * Returns immutable list of group buckets. - * - * @return list of group bucket - */ - public List buckets() { - return buckets; - } - - @Override - public int hashCode() { - int result = 17; - int combinedHash = 0; - for (GroupBucket bucket:buckets) { - combinedHash = combinedHash + bucket.hashCode(); - } - result = 31 * result + combinedHash; - - return result; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof GroupBuckets) { - return (this.buckets.containsAll(((GroupBuckets) obj).buckets) && - ((GroupBuckets) obj).buckets.containsAll(this.buckets)); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("buckets", buckets.toString()) - .toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupDescription.java deleted file mode 100644 index 671b9a54..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupDescription.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; - -/** - * ONOS representation of group description that is used to create - * a group. It contains immutable properties of a ONOS group construct - * such as "type", "DeviceId", "appCookie", "appId" and "buckets" - */ -public interface GroupDescription { - /** - * Types of the group supported by ONOS. - */ - enum Type { - /** - * Load-balancing among different buckets in a group. - */ - SELECT, - /** - * Single Bucket Group. - */ - INDIRECT, - /** - * Multicast to all buckets in a group. - */ - ALL, - /** - * Uses the first live bucket in a group. - */ - FAILOVER - } - - /** - * Returns type of a group object. - * - * @return GroupType group type - */ - Type type(); - - /** - * Returns device identifier on which this group object is created. - * - * @return DeviceId device identifier - */ - DeviceId deviceId(); - - /** - * Returns application identifier that has created this group object. - * - * @return ApplicationId application identifier - */ - ApplicationId appId(); - - /** - * Returns application cookie associated with a group object. - * - * @return GroupKey application cookie - */ - GroupKey appCookie(); - - /** - * Returns groupId passed in by caller. - * - * @return Integer group id passed in by caller. May be null if caller - * passed in null to let groupService determin the group id. - */ - Integer givenGroupId(); - - /** - * Returns group buckets of a group. - * - * @return GroupBuckets immutable list of group bucket - */ - GroupBuckets buckets(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupEvent.java deleted file mode 100644 index 45fbb3ed..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupEvent.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.onosproject.event.AbstractEvent; - -/** - * Describes group events. - */ -public class GroupEvent extends AbstractEvent { - - /** - * Type of flow rule events. - */ - public enum Type { - /** - * Signifies that a new Group has been detected. - */ - GROUP_ADDED, - - /** - * Signifies that a Group has been removed. - */ - GROUP_REMOVED, - - /** - * Signifies that a Group has been updated. - */ - GROUP_UPDATED, - - /** - * Signifies that a request to create Group has failed. - */ - GROUP_ADD_FAILED, - - /** - * Signifies that a request to remove Group has failed. - */ - GROUP_REMOVE_FAILED, - - /** - * Signifies that a request to update Group has failed. - */ - GROUP_UPDATE_FAILED, - - // internal event between Manager <-> Store - - /* - * Signifies that a request to create Group has been added to the store. - */ - GROUP_ADD_REQUESTED, - /* - * Signifies that a request to update Group has been added to the store. - */ - GROUP_UPDATE_REQUESTED, - /* - * Signifies that a request to delete Group has been added to the store. - */ - GROUP_REMOVE_REQUESTED, - - - } - - /** - * Creates an event of a given type and for the specified Group and the - * current time. - * - * @param type Group event type - * @param group event subject - */ - public GroupEvent(Type type, Group group) { - super(type, group); - } - - /** - * Creates an event of a given type and for the specified Group and time. - * - * @param type Group event type - * @param group event subject - * @param time occurrence time - */ - public GroupEvent(Type type, Group group, long time) { - super(type, group, time); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupKey.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupKey.java deleted file mode 100644 index a63bee27..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupKey.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -/** - * Representation of generalized Key that would be used to store - * groups in < Key, Value > store. This key uses a generic - * byte array so that applications can associate their groups with - * any of their data by translating it into a byte array. - */ -public interface GroupKey { - /** - * Returns the byte representation of key. - * - * @return byte array - */ - byte[] key(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupListener.java deleted file mode 100644 index 349ce6a7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving Group related events. - */ -public interface GroupListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupOperation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupOperation.java deleted file mode 100644 index e4173b30..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupOperation.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onosproject.core.GroupId; - -/** - * Group operation definition to be used between core and provider - * layers of group subsystem. - * - */ -public final class GroupOperation { - private final Type opType; - private final GroupId groupId; - private final GroupDescription.Type groupType; - private final GroupBuckets buckets; - - public enum Type { - /** - * Create a group in a device with the specified parameters. - */ - ADD, - /** - * Modify a group in a device with the specified parameters. - */ - MODIFY, - /** - * Delete a specified group. - */ - DELETE - } - - /** - * Group operation constructor with the parameters. - * - * @param opType group operation type - * @param groupId group Identifier - * @param groupType type of the group - * @param buckets immutable list of group buckets to be part of group - */ - private GroupOperation(Type opType, - GroupId groupId, - GroupDescription.Type groupType, - GroupBuckets buckets) { - this.opType = checkNotNull(opType); - this.groupId = checkNotNull(groupId); - this.groupType = checkNotNull(groupType); - this.buckets = buckets; - } - - /** - * Creates ADD group operation object. - * - * @param groupId group Identifier - * @param groupType type of the group - * @param buckets immutable list of group buckets to be part of group - * @return add group operation object - */ - public static GroupOperation createAddGroupOperation(GroupId groupId, - GroupDescription.Type groupType, - GroupBuckets buckets) { - checkNotNull(buckets); - return new GroupOperation(Type.ADD, groupId, groupType, buckets); - } - - /** - * Creates MODIFY group operation object. - * - * @param groupId group Identifier - * @param groupType type of the group - * @param buckets immutable list of group buckets to be part of group - * @return modify group operation object - */ - public static GroupOperation createModifyGroupOperation(GroupId groupId, - GroupDescription.Type groupType, - GroupBuckets buckets) { - checkNotNull(buckets); - return new GroupOperation(Type.MODIFY, groupId, groupType, buckets); - - } - - /** - * Creates DELETE group operation object. - * - * @param groupId group Identifier - * @param groupType type of the group - * @return delete group operation object - */ - public static GroupOperation createDeleteGroupOperation(GroupId groupId, - GroupDescription.Type groupType) { - return new GroupOperation(Type.DELETE, groupId, groupType, null); - - } - - /** - * Returns group operation type. - * - * @return GroupOpType group operation type - */ - public Type opType() { - return this.opType; - } - - /** - * Returns group identifier attribute of the operation. - * - * @return GroupId group identifier - */ - public GroupId groupId() { - return this.groupId; - } - - /** - * Returns group type attribute of the operation. - * - * @return GroupType group type - */ - public GroupDescription.Type groupType() { - return this.groupType; - } - - /** - * Returns group buckets associated with the operation. - * - * @return GroupBuckets group buckets - */ - public GroupBuckets buckets() { - return this.buckets; - } - - @Override - /* - * The deviceId, type and buckets are used for hash. - * - * (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - public int hashCode() { - return (buckets != null) ? Objects.hash(groupId, opType, buckets) : - Objects.hash(groupId, opType); - } - - @Override - /* - * The deviceId, type and buckets should be same. - * - * (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof GroupOperation) { - GroupOperation that = (GroupOperation) obj; - return Objects.equals(groupId, that.groupId) && - Objects.equals(groupType, that.groupType) && - Objects.equals(opType, that.opType) && - Objects.equals(buckets, that.buckets); - - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupOperations.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupOperations.java deleted file mode 100644 index bc03628d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupOperations.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; - -import com.google.common.collect.ImmutableList; - -/** - * Immutable collection of group operation to be used between - * core and provider layers of group subsystem. - * - */ -public final class GroupOperations { - private final List operations; - - /** - * Creates a immutable list of group operation. - * - * @param operations list of group operation - */ - public GroupOperations(List operations) { - this.operations = ImmutableList.copyOf(checkNotNull(operations)); - } - - /** - * Returns immutable list of group operation. - * - * @return list of group operation - */ - public List operations() { - return operations; - } - -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProvider.java deleted file mode 100644 index 6757e669..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProvider.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.provider.Provider; - -/** - * Abstraction of group provider. - */ -public interface GroupProvider extends Provider { - - /** - * Performs a batch of group operation in the specified device with the - * specified parameters. - * - * @param deviceId device identifier on which the batch of group - * operations to be executed - * @param groupOps immutable list of group operation - */ - void performGroupOperation(DeviceId deviceId, - GroupOperations groupOps); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProviderRegistry.java deleted file mode 100644 index d45789db..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProviderRegistry.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.onosproject.net.provider.ProviderRegistry; - -/** - * Abstraction for a group provider registry. - */ -public interface GroupProviderRegistry - extends ProviderRegistry { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProviderService.java deleted file mode 100644 index 076de498..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupProviderService.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import java.util.Collection; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.provider.ProviderService; - -/** - * Service through which Group providers can inject information into - * the core. - */ -public interface GroupProviderService extends ProviderService { - - /** - * Notifies core if any failure from data plane during group operations. - * - * @param deviceId the device ID - * @param operation offended group operation - */ - void groupOperationFailed(DeviceId deviceId, GroupOperation operation); - - /** - * Pushes the collection of group detected in the data plane along - * with statistics. - * - * @param deviceId device identifier - * @param groupEntries collection of group entries as seen in data plane - */ - void pushGroupMetrics(DeviceId deviceId, - Collection groupEntries); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupService.java deleted file mode 100644 index 4163248f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupService.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.onosproject.core.ApplicationId; -import org.onosproject.event.ListenerService; -import org.onosproject.net.DeviceId; - -/** - * Service for create/update/delete "group" in the devices. - * Flow entries can point to a "group" defined in the devices that enables - * to represent additional methods of forwarding like load-balancing or - * failover among different group of ports or multicast to all ports - * specified in a group. - * "group" can also be used for grouping common actions of different flows, - * so that in some scenarios only one group entry required to be modified - * for all the referencing flow entries instead of modifying all of them. - * - * This implements semantics of a distributed authoritative group store - * where the master copy of the groups lies with the controller and - * the devices hold only the 'cached' copy. - */ -public interface GroupService - extends ListenerService { - - /** - * Creates a group in the specified device with the provided buckets. - * This API provides an option for application to associate a cookie - * while creating a group, so that applications can look-up the - * groups based on the cookies. These Groups will be retained by - * the core system and re-applied if any groups found missing in the - * device when it reconnects. This API would immediately return after - * submitting the request locally or to a remote Master controller - * instance. As a response to this API invocation, GROUP_ADDED or - * GROUP_ADD_FAILED notifications would be provided along with cookie - * depending on the result of the operation on the device in the - * data plane. The caller may also use "getGroup" API to get the - * Group object created as part of this request. - * - * @param groupDesc group creation parameters - * - */ - void addGroup(GroupDescription groupDesc); - - /** - * Returns a group object associated to an application cookie. - * - * NOTE1: The presence of group object in the system does not - * guarantee that the "group" is actually created in device. - * GROUP_ADDED notification would confirm the creation of - * this group in data plane. - * - * @param deviceId device identifier - * @param appCookie application cookie to be used for lookup - * @return group associated with the application cookie or - * NULL if Group is not found for the provided cookie - */ - Group getGroup(DeviceId deviceId, GroupKey appCookie); - - /** - * Appends buckets to existing group. The caller can optionally - * associate a new cookie during this updation. GROUP_UPDATED or - * GROUP_UPDATE_FAILED notifications would be provided along with - * cookie depending on the result of the operation on the device. - * - * @param deviceId device identifier - * @param oldCookie cookie to be used to retrieve the existing group - * @param buckets immutable list of group bucket to be added - * @param newCookie immutable cookie to be used post update operation - * @param appId Application Id - */ - void addBucketsToGroup(DeviceId deviceId, - GroupKey oldCookie, - GroupBuckets buckets, - GroupKey newCookie, - ApplicationId appId); - - /** - * Removes buckets from existing group. The caller can optionally - * associate a new cookie during this updation. GROUP_UPDATED or - * GROUP_UPDATE_FAILED notifications would be provided along with - * cookie depending on the result of the operation on the device. - * - * @param deviceId device identifier - * @param oldCookie cookie to be used to retrieve the existing group - * @param buckets immutable list of group bucket to be removed - * @param newCookie immutable cookie to be used post update operation - * @param appId Application Id - */ - void removeBucketsFromGroup(DeviceId deviceId, - GroupKey oldCookie, - GroupBuckets buckets, - GroupKey newCookie, - ApplicationId appId); - - /** - * Deletes a group associated to an application cookie. - * GROUP_DELETED or GROUP_DELETE_FAILED notifications would be - * provided along with cookie depending on the result of the - * operation on the device. - * - * @param deviceId device identifier - * @param appCookie application cookie to be used for lookup - * @param appId Application Id - */ - void removeGroup(DeviceId deviceId, GroupKey appCookie, ApplicationId appId); - - /** - * Retrieves all groups created by an application in the specified device - * as seen by current controller instance. - * - * @param deviceId device identifier - * @param appId application id - * @return collection of immutable group objects created by the application - */ - Iterable getGroups(DeviceId deviceId, ApplicationId appId); - - /** - * Returns all groups associated with the given device. - * - * @param deviceId device ID to get groups for - * @return iterable of device's groups - */ - Iterable getGroups(DeviceId deviceId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupStore.java deleted file mode 100644 index 8b6df5d9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupStore.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import java.util.Collection; - -import org.onosproject.core.GroupId; -import org.onosproject.net.DeviceId; -import org.onosproject.store.Store; - -/** - * Manages inventory of groups per device; not intended for direct use. - */ -public interface GroupStore extends Store { - - enum UpdateType { - /** - * Modify existing group entry by adding provided information. - */ - ADD, - /** - * Modify existing group by removing provided information from it. - */ - REMOVE - } - - /** - * Returns the number of groups for the specified device in the store. - * - * @param deviceId the device ID - * @return number of groups for the specified device - */ - int getGroupCount(DeviceId deviceId); - - /** - * Returns the groups associated with a device. - * - * @param deviceId the device ID - * @return the group entries - */ - Iterable getGroups(DeviceId deviceId); - - /** - * Returns the stored group entry. - * - * @param deviceId the device ID - * @param appCookie the group key - * @return a group associated with the key - */ - Group getGroup(DeviceId deviceId, GroupKey appCookie); - - /** - * Returns the stored group entry for an id. - * - * @param deviceId the device ID - * @param groupId the group identifier - * @return a group associated with the key - */ - Group getGroup(DeviceId deviceId, GroupId groupId); - - /** - * Stores a new group entry using the information from group description. - * - * @param groupDesc group description to be used to store group entry - */ - void storeGroupDescription(GroupDescription groupDesc); - - /** - * Updates the existing group entry with the information - * from group description. - * - * @param deviceId the device ID - * @param oldAppCookie the current group key - * @param type update type - * @param newBuckets group buckets for updates - * @param newAppCookie optional new group key - */ - void updateGroupDescription(DeviceId deviceId, - GroupKey oldAppCookie, - UpdateType type, - GroupBuckets newBuckets, - GroupKey newAppCookie); - - /** - * Triggers deleting the existing group entry. - * - * @param deviceId the device ID - * @param appCookie the group key - */ - void deleteGroupDescription(DeviceId deviceId, - GroupKey appCookie); - - /** - * Stores a new group entry, or updates an existing entry. - * - * @param group group entry - */ - void addOrUpdateGroupEntry(Group group); - - /** - * Removes the group entry from store. - * - * @param group group entry - */ - void removeGroupEntry(Group group); - - /** - * A group entry that is present in switch but not in the store. - * - * @param group group entry - */ - void addOrUpdateExtraneousGroupEntry(Group group); - - /** - * Remove the group entry from extraneous database. - * - * @param group group entry - */ - void removeExtraneousGroupEntry(Group group); - - /** - * Returns the extraneous groups associated with a device. - * - * @param deviceId the device ID - * - * @return the extraneous group entries - */ - Iterable getExtraneousGroups(DeviceId deviceId); - - /** - * Indicates the first group audit is completed. - * - * @param deviceId the device ID - * @param completed initial audit status - */ - void deviceInitialAuditCompleted(DeviceId deviceId, boolean completed); - - /** - * Retrieves the initial group audit status for a device. - * - * @param deviceId the device ID - * - * @return initial group audit status - */ - boolean deviceInitialAuditStatus(DeviceId deviceId); - - /** - * Indicates the group operations failed. - * - * @param deviceId the device ID - * @param operation the group operation failed - */ - void groupOperationFailed(DeviceId deviceId, GroupOperation operation); - - /** - * Submits the group metrics to store for a given device ID. - * - * @param deviceId the device ID - * @param groupEntries the group entries as received from southbound - */ - void pushGroupMetrics(DeviceId deviceId, Collection groupEntries); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupStoreDelegate.java deleted file mode 100644 index 308ebb1c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/GroupStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.onosproject.store.StoreDelegate; - -/** - * Group store delegate abstraction. - */ -public interface GroupStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/StoredGroupBucketEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/StoredGroupBucketEntry.java deleted file mode 100644 index 131875b3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/StoredGroupBucketEntry.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -/** - * Generic group bucket entry representation that is stored in a - * group object. A group bucket entry provides additional info of - * group bucket like statistics...etc - */ -public interface StoredGroupBucketEntry extends GroupBucket { - /** - * Sets number of packets processed by this group bucket entry. - * - * @param packets a long value - */ - void setPackets(long packets); - - /** - * Sets number of bytes processed by this group bucket entry. - * - * @param bytes a long value - */ - void setBytes(long bytes); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/StoredGroupEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/StoredGroupEntry.java deleted file mode 100644 index 47d36122..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/StoredGroupEntry.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -/** - * Interface that defines set methods for a group entry - * that is stored in the system. - */ -public interface StoredGroupEntry extends Group { - - /** - * Sets the new state for this entry. - * - * @param newState new group entry state. - */ - void setState(Group.GroupState newState); - - /** - * Sets if group has transitioned to ADDED state for the first time. - * This is to differentiate state transitions "from PENDING_ADD to ADDED" - * and "from PENDING_UPDATE to ADDED". For internal use only. - * - * @param isGroupAddedFirstTime true if group moves to ADDED state - * for the first time. - */ - void setIsGroupStateAddedFirstTime(boolean isGroupAddedFirstTime); - - /** - * Returns the isGroupStateAddedFirstTime value. For internal use only. - * - * @return isGroupStateAddedFirstTime value - */ - boolean isGroupStateAddedFirstTime(); - - /** - * Sets how long this entry has been entered in the system. - * - * @param life epoch time - */ - void setLife(long life); - - /** - * Sets number of packets processed by this group entry. - * - * @param packets a long value - */ - void setPackets(long packets); - - /** - * Sets number of bytes processed by this group entry. - * - * @param bytes a long value - */ - void setBytes(long bytes); - - /** - * Sets number of flow rules or groups referencing this group entry. - * - * @param referenceCount reference count - */ - void setReferenceCount(long referenceCount); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/package-info.java deleted file mode 100644 index 26528c48..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/group/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Abstractions for interacting with device port groups. - */ -package org.onosproject.net.group; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java deleted file mode 100644 index 307a6078..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/DefaultHostDescription.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import java.util.Collections; -import java.util.Set; - -import org.onosproject.net.AbstractDescription; -import org.onosproject.net.HostLocation; -import org.onosproject.net.SparseAnnotations; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; - -import com.google.common.collect.ImmutableSet; - -import static com.google.common.base.MoreObjects.toStringHelper; -import com.google.common.base.Objects; - -/** - * Default implementation of an immutable host description. - */ -public class DefaultHostDescription extends AbstractDescription - implements HostDescription { - - private final MacAddress mac; - private final VlanId vlan; - private final HostLocation location; - private final Set ip; - - /** - * Creates a host description using the supplied information. - * - * @param mac host MAC address - * @param vlan host VLAN identifier - * @param location host location - * @param annotations optional key/value annotations map - */ - public DefaultHostDescription(MacAddress mac, VlanId vlan, - HostLocation location, - SparseAnnotations... annotations) { - this(mac, vlan, location, Collections.emptySet(), - annotations); - } - - /** - * Creates a host description using the supplied information. - * - * @param mac host MAC address - * @param vlan host VLAN identifier - * @param location host location - * @param ip host IP address - * @param annotations optional key/value annotations map - */ - public DefaultHostDescription(MacAddress mac, VlanId vlan, - HostLocation location, IpAddress ip, - SparseAnnotations... annotations) { - this(mac, vlan, location, ImmutableSet.of(ip), annotations); - } - - /** - * Creates a host description using the supplied information. - * - * @param mac host MAC address - * @param vlan host VLAN identifier - * @param location host location - * @param ip host IP addresses - * @param annotations optional key/value annotations map - */ - public DefaultHostDescription(MacAddress mac, VlanId vlan, - HostLocation location, Set ip, - SparseAnnotations... annotations) { - super(annotations); - this.mac = mac; - this.vlan = vlan; - this.location = location; - this.ip = ImmutableSet.copyOf(ip); - } - - @Override - public MacAddress hwAddress() { - return mac; - } - - @Override - public VlanId vlan() { - return vlan; - } - - @Override - public HostLocation location() { - return location; - } - - @Override - public Set ipAddress() { - return ip; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("mac", mac) - .add("vlan", vlan) - .add("location", location) - .add("ipAddress", ip) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), mac, vlan, location, ip); - } - - @Override - public boolean equals(Object object) { - if (object != null && getClass() == object.getClass()) { - if (!super.equals(object)) { - return false; - } - DefaultHostDescription that = (DefaultHostDescription) object; - return Objects.equal(this.mac, that.mac) - && Objects.equal(this.vlan, that.vlan) - && Objects.equal(this.location, that.location) - && Objects.equal(this.ip, that.ip); - } - return false; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostAdminService.java deleted file mode 100644 index 8676e46a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostAdminService.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.host; - -import org.onosproject.net.HostId; - -/** - * Service for administering the inventory of end-station hosts. - */ -public interface HostAdminService extends HostService { - - /** - * Removes the end-station host with the specified identifier. - * - * @param hostId host identifier - */ - void removeHost(HostId hostId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostDescription.java deleted file mode 100644 index 14c6f7ad..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostDescription.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import java.util.Set; - -import org.onosproject.net.Description; -import org.onosproject.net.HostLocation; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; - -/** - * Information describing host and its location. - */ -public interface HostDescription extends Description { - - /** - * Returns the MAC address associated with this host (NIC). - * - * @return the MAC address of this host - */ - MacAddress hwAddress(); - - /** - * Returns the VLAN associated with this host. - * - * @return the VLAN ID value - */ - VlanId vlan(); - - /** - * Returns the location of the host on the network edge. - * - * @return the network location - */ - HostLocation location(); - - /** - * Returns the IP address associated with this host's MAC. - * - * @return host IP address - */ - Set ipAddress(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java deleted file mode 100644 index 92824cf8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostEvent.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.joda.time.LocalDateTime; -import org.onosproject.event.AbstractEvent; -import org.onosproject.net.Host; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Describes end-station host event. - */ -public class HostEvent extends AbstractEvent { - - /** - * Type of host events. - */ - public enum Type { - /** - * Signifies that a new host has been detected. - */ - HOST_ADDED, - - /** - * Signifies that a host has been removed. - */ - HOST_REMOVED, - - /** - * Signifies that host data changed, e.g. IP address - */ - HOST_UPDATED, - - /** - * Signifies that a host location has changed. - */ - HOST_MOVED - } - - private Host prevSubject; - - /** - * Creates an event of a given type and for the specified host and the - * current time. - * - * @param type host event type - * @param host event host subject - */ - public HostEvent(Type type, Host host) { - super(type, host); - } - - /** - * Creates an event of a given type and for the specified host and time. - * - * @param type host event type - * @param host event host subject - * @param time occurrence time - */ - public HostEvent(Type type, Host host, long time) { - super(type, host, time); - } - - /** - * Creates an event with previous subject. - * - * The previous subject is ignored if the type is not moved or updated - * - * @param type host event type - * @param host event host subject - * @param prevSubject previous host subject - */ - public HostEvent(Type type, Host host, Host prevSubject) { - super(type, host); - if (type == Type.HOST_MOVED || type == Type.HOST_UPDATED) { - this.prevSubject = prevSubject; - } - } - - /** - * Gets the previous subject in this host event. - * - * @return the previous subject, or null if previous subject is not - * specified. - */ - public Host prevSubject() { - return this.prevSubject; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("time", new LocalDateTime(time())) - .add("type", type()) - .add("subject", subject()) - .add("prevSubject", prevSubject()) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostListener.java deleted file mode 100644 index 2eef7592..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving end-station host related events. - */ -public interface HostListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProvider.java deleted file mode 100644 index 0270996b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProvider.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.onosproject.net.Host; -import org.onosproject.net.provider.Provider; - -/** - * Provider of information about hosts and their location on the network. - */ -public interface HostProvider extends Provider { - - /** - * Triggers an asynchronous probe of the specified host, intended to - * determine whether the host is present or not. An indirect result of this - * should be invocation of {@link org.onosproject.net.host.HostProviderService#hostDetected} - * or {@link org.onosproject.net.host.HostProviderService#hostVanished} - * at some later point in time. - * - * @param host host to probe - */ - void triggerProbe(Host host); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProviderRegistry.java deleted file mode 100644 index 8ab600c2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProviderRegistry.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.onosproject.net.provider.ProviderRegistry; - -/** - * Abstraction of a host provider registry. - */ -public interface HostProviderRegistry - extends ProviderRegistry { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProviderService.java deleted file mode 100644 index 3403486c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostProviderService.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.onlab.packet.IpAddress; -import org.onosproject.net.HostId; -import org.onosproject.net.provider.ProviderService; - -/** - * Means of conveying host information to the core. - */ -public interface HostProviderService extends ProviderService { - - /** - * Notifies the core when a host has been detected on a network along with - * information that identifies the host location. - * - * @param hostId id of the host that been detected - * @param hostDescription description of host and its location - * @deprecated in Drake release - */ - @Deprecated - default void hostDetected(HostId hostId, HostDescription hostDescription) { - hostDetected(hostId, hostDescription, false); - } - - /** - * Notifies the core when a host has been detected on a network along with - * information that identifies the host location. - * - * @param hostId id of the host that been detected - * @param hostDescription description of host and its location - * @param replaceIps replace IP set if true, merge IP set otherwise - */ - void hostDetected(HostId hostId, HostDescription hostDescription, boolean replaceIps); - - /** - * Notifies the core when a host is no longer detected on a network. - * - * @param hostId id of the host that vanished - */ - void hostVanished(HostId hostId); - - /** - * Notifies the core when an IP is no longer associated with a host. - * - * @param hostId id of the host - * @param ipAddress ip address of host that vanished - */ - void removeIpFromHost(HostId hostId, IpAddress ipAddress); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostService.java deleted file mode 100644 index 39012159..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostService.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; -import org.onosproject.event.ListenerService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; - -import java.util.Set; - -/** - * Service for interacting with the inventory of end-station hosts. - */ -public interface HostService - extends ListenerService { - - /** - * Returns the number of end-station hosts known to the system. - * - * @return number of end-station hosts - */ - int getHostCount(); - - /** - * Returns a collection of all end-station hosts. - * - * @return collection of hosts - */ - Iterable getHosts(); - - /** - * Returns the host with the specified identifier. - * - * @param hostId host identifier - * @return host or null if one with the given identifier is not known - */ - Host getHost(HostId hostId); - - /** - * Returns the set of hosts that belong to the specified VLAN. - * - * @param vlanId vlan identifier - * @return set of hosts in the given vlan id - */ - Set getHostsByVlan(VlanId vlanId); - - /** - * Returns the set of hosts that have the specified MAC address. - * - * @param mac mac address - * @return set of hosts with the given mac - */ - Set getHostsByMac(MacAddress mac); - - /** - * Returns the set of hosts that have the specified IP address. - * - * @param ip ip address - * @return set of hosts with the given IP - */ - Set getHostsByIp(IpAddress ip); - - // TODO: consider adding Host getHostByIp(IpAddress ip, VlanId vlan); - - /** - * Returns the set of hosts whose most recent location is the specified - * connection point. - * - * @param connectPoint connection point - * @return set of hosts connected to the connection point - */ - Set getConnectedHosts(ConnectPoint connectPoint); - - /** - * Returns the set of hosts whose most recent location is the specified - * infrastructure device. - * - * @param deviceId device identifier - * @return set of hosts connected to the device - */ - Set getConnectedHosts(DeviceId deviceId); - - /** - * Requests the host service to monitor hosts with the given IP address and - * notify listeners of changes. - * - * @param ip IP address of the host to monitor - */ - void startMonitoringIp(IpAddress ip); - - /** - * Stops the host service from monitoring an IP address. - * - * @param ip IP address to stop monitoring - */ - // TODO clients can cancel other client's requests - void stopMonitoringIp(IpAddress ip); - - /** - * Requests the host service to resolve the MAC address for the given IP - * address. This will trigger a notification to the host listeners if the MAC - * address is found. - * - * @param ip IP address to find the MAC address for - */ - void requestMac(IpAddress ip); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostStore.java deleted file mode 100644 index 918ced45..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostStore.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.store.Store; - -import java.util.Set; - -/** - * Manages inventory of end-station hosts; not intended for direct use. - */ -public interface HostStore extends Store { - - /** - * Creates a new host or updates the existing one based on the specified - * description. - * - * @param providerId provider identification - * @param hostId host identification - * @param hostDescription host description data - * @param replaceIps replace IP set if true, merge IP set otherwise - * @return appropriate event or null if no change resulted - */ - HostEvent createOrUpdateHost(ProviderId providerId, HostId hostId, - HostDescription hostDescription, - boolean replaceIps); - - /** - * Removes the specified host from the inventory. - * - * @param hostId host identification - * @return remove event or null if host was not found - */ - HostEvent removeHost(HostId hostId); - - /** - * Removes the specified ip from the host entry. - * - * @param hostId host identification - * @param ipAddress ipAddress to be removed - * @return remove event or null if host was not found - */ - HostEvent removeIp(HostId hostId, IpAddress ipAddress); - - /** - * Returns the number of hosts in the store. - * - * @return host count - */ - int getHostCount(); - - /** - * Returns a collection of all hosts in the store. - * - * @return iterable collection of all hosts - */ - Iterable getHosts(); - - /** - * Returns the host with the specified identifer. - * - * @param hostId host identification - * @return host or null if not found - */ - Host getHost(HostId hostId); - - /** - * Returns the set of all hosts within the specified VLAN. - * - * @param vlanId vlan id - * @return set of hosts in the vlan - */ - Set getHosts(VlanId vlanId); - - /** - * Returns the set of hosts with the specified MAC address. - * - * @param mac mac address - * @return set of hosts with the given mac - */ - Set getHosts(MacAddress mac); - - /** - * Returns the set of hosts with the specified IP address. - * - * @param ip ip address - * @return set of hosts with the given IP - */ - Set getHosts(IpAddress ip); - - /** - * Returns the set of hosts whose location falls on the given connection point. - * - * @param connectPoint connection point - * @return set of hosts - */ - Set getConnectedHosts(ConnectPoint connectPoint); - - /** - * Returns the set of hosts whose location falls on the given device. - * - * @param deviceId infrastructure device identifier - * @return set of hosts - */ - Set getConnectedHosts(DeviceId deviceId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostStoreDelegate.java deleted file mode 100644 index efc84232..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/HostStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.onosproject.store.StoreDelegate; - -/** - * Infrastructure link store delegate abstraction. - */ -public interface HostStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java deleted file mode 100644 index 2f53df50..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Represents a single IP address information on an interface. - * - * TODO: - * - Add computation for the default broadcast address if it is not - * specified - * - Add explicit checks that each IP address or prefix belong to the - * same IP version: IPv4/IPv6. - * - Inside the copy constructor we should use copy constructors for each - * field - */ -public class InterfaceIpAddress { - private final IpAddress ipAddress; - private final IpPrefix subnetAddress; - private final IpAddress broadcastAddress; - private final IpAddress peerAddress; - - /** - * Copy constructor. - * - * @param other the object to copy from - */ - public InterfaceIpAddress(InterfaceIpAddress other) { - // TODO: we should use copy constructors for each field - this.ipAddress = other.ipAddress; - this.subnetAddress = other.subnetAddress; - this.broadcastAddress = other.broadcastAddress; - this.peerAddress = other.peerAddress; - } - - /** - * Constructor for a given IP address and a subnet address. - * - * @param ipAddress the IP address - * @param subnetAddress the IP subnet address - */ - public InterfaceIpAddress(IpAddress ipAddress, IpPrefix subnetAddress) { - this.ipAddress = checkNotNull(ipAddress); - this.subnetAddress = checkNotNull(subnetAddress); - // TODO: Recompute the default broadcast address from the subnet - // address - this.broadcastAddress = null; - this.peerAddress = null; - } - - /** - * Constructor for a given IP address and a subnet address. - * - * @param ipAddress the IP address - * @param subnetAddress the IP subnet address - * @param broadcastAddress the IP broadcast address. It can be used - * to specify non-default broadcast address - */ - public InterfaceIpAddress(IpAddress ipAddress, IpPrefix subnetAddress, - IpAddress broadcastAddress) { - this.ipAddress = checkNotNull(ipAddress); - this.subnetAddress = checkNotNull(subnetAddress); - this.broadcastAddress = broadcastAddress; - this.peerAddress = null; - } - - /** - * Constructor for a given IP address and a subnet address. - * - * @param ipAddress the IP address - * @param subnetAddress the IP subnet address - * @param broadcastAddress the IP broadcast address. It can be used - * to specify non-default broadcast address. It should be null for - * point-to-point interfaces with a peer address - * @param peerAddress the peer IP address for point-to-point interfaces - */ - public InterfaceIpAddress(IpAddress ipAddress, IpPrefix subnetAddress, - IpAddress broadcastAddress, - IpAddress peerAddress) { - this.ipAddress = checkNotNull(ipAddress); - this.subnetAddress = checkNotNull(subnetAddress); - this.broadcastAddress = broadcastAddress; - this.peerAddress = peerAddress; - } - - /** - * Gets the IP address. - * - * @return the IP address - */ - public IpAddress ipAddress() { - return ipAddress; - } - - /** - * Gets the IP subnet address. - * - * @return the IP subnet address - */ - public IpPrefix subnetAddress() { - return subnetAddress; - } - - /** - * Gets the subnet IP broadcast address. - * - * @return the subnet IP broadcast address - */ - public IpAddress broadcastAddress() { - return broadcastAddress; - } - - /** - * Gets the IP point-to-point interface peer address. - * - * @return the IP point-to-point interface peer address - */ - public IpAddress peerAddress() { - return peerAddress; - } - - /** - * Converts a CIDR string literal to an interface IP address. - * E.g. 10.0.0.1/24 - * - * @param value an IP address value in string form - * @return an interface IP address - * @throws IllegalArgumentException if the argument is invalid - */ - public static InterfaceIpAddress valueOf(String value) { - String[] splits = value.split("/"); - checkArgument(splits.length == 2, "Invalid IP address and prefix length format"); - - // NOTE: IpPrefix will mask-out the bits after the prefix length. - IpPrefix subnet = IpPrefix.valueOf(value); - IpAddress addr = IpAddress.valueOf(splits[0]); - return new InterfaceIpAddress(addr, subnet); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - if (!(other instanceof InterfaceIpAddress)) { - return false; - } - InterfaceIpAddress otherAddr = (InterfaceIpAddress) other; - - return Objects.equals(this.ipAddress, otherAddr.ipAddress) - && Objects.equals(this.subnetAddress, otherAddr.subnetAddress) - && Objects.equals(this.broadcastAddress, - otherAddr.broadcastAddress) - && Objects.equals(this.peerAddress, otherAddr.peerAddress); - } - - @Override - public int hashCode() { - return Objects.hash(ipAddress, subnetAddress, broadcastAddress, - peerAddress); - } - - @Override - public String toString() { - /*return toStringHelper(this).add("ipAddress", ipAddress) - .add("subnetAddress", subnetAddress) - .add("broadcastAddress", broadcastAddress) - .add("peerAddress", peerAddress) - .omitNullValues().toString();*/ - return ipAddress.toString() + "/" + subnetAddress.prefixLength(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/package-info.java deleted file mode 100644 index 4f2bc7c4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/host/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * End-station host model & related services API definitions. - */ -package org.onosproject.net.host; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/ConnectivityIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/ConnectivityIntent.java deleted file mode 100644 index 7caee3e8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/ConnectivityIntent.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.Link; -import org.onosproject.net.NetworkResource; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Abstraction of connectivity intent for traffic matching some criteria. - */ -@Beta -public abstract class ConnectivityIntent extends Intent { - - // TODO: other forms of intents should be considered for this family: - // point-to-point with constraints (waypoints/obstacles) - // multi-to-single point with constraints (waypoints/obstacles) - // single-to-multi point with constraints (waypoints/obstacles) - // concrete path (with alternate) - // ... - - private final TrafficSelector selector; - private final TrafficTreatment treatment; - private final List constraints; - - /** - * Creates a connectivity intent that matches on the specified selector - * and applies the specified treatment. - *

- * Path will be optimized based on the first constraint if one is given. - *

- * - * @param appId application identifier - * @param key explicit key to use for intent - * @param resources required network resources (optional) - * @param selector traffic selector - * @param treatment treatment - * @param constraints optional prioritized list of constraints - * @param priority priority to use for flows generated by this intent - * @throws NullPointerException if the selector or treatment is null - */ - protected ConnectivityIntent(ApplicationId appId, - Key key, - Collection resources, - TrafficSelector selector, - TrafficTreatment treatment, - List constraints, - int priority) { - super(appId, key, resources, priority); - this.selector = checkNotNull(selector); - this.treatment = checkNotNull(treatment); - this.constraints = checkNotNull(constraints); - } - - /** - * Constructor for serializer. - */ - protected ConnectivityIntent() { - super(); - this.selector = null; - this.treatment = null; - this.constraints = Collections.emptyList(); - } - - /** - * Abstract builder for connectivity intents. - */ - public abstract static class Builder extends Intent.Builder { - protected TrafficSelector selector = DefaultTrafficSelector.emptySelector(); - protected TrafficTreatment treatment = DefaultTrafficTreatment.emptyTreatment(); - protected List constraints = ImmutableList.of(); - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - - /** - * Sets the traffic selector for the intent that will be built. - * - * @param selector selector to use for built intent - * @return this builder - */ - public Builder selector(TrafficSelector selector) { - this.selector = selector; - return this; - } - - /** - * Sets the traffic treatment for the intent that will be built. - * - * @param treatment treatment to use for built intent - * @return this builder - */ - public Builder treatment(TrafficTreatment treatment) { - this.treatment = treatment; - return this; - } - - /** - * Sets the constraints for the intent that will be built. - * - * @param constraints constraints to use for built intent - * @return this builder - */ - public Builder constraints(List constraints) { - this.constraints = ImmutableList.copyOf(constraints); - return this; - } - } - - - /** - * Returns the match specifying the type of traffic. - * - * @return traffic match - */ - public TrafficSelector selector() { - return selector; - } - - /** - * Returns the action applied to the traffic. - * - * @return applied action - */ - public TrafficTreatment treatment() { - return treatment; - } - - /** - * Returns the set of connectivity constraints. - * - * @return list of intent constraints - */ - public List constraints() { - return constraints; - } - - /** - * Produces a collection of network resources from the given links. - * - * @param links collection of links - * @return collection of link resources - */ - protected static Collection resources(Collection links) { - return ImmutableSet.copyOf(links); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Constraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Constraint.java deleted file mode 100644 index 03acf17c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Constraint.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.resource.link.LinkResourceService; - -/** - * Representation of a connectivity constraint capable of evaluating a link - * and determining the cost of traversing that link in the context of this - * constraint. - */ -@Beta -public interface Constraint { - - // TODO: Consider separating cost vs viability. - - /** - * Evaluates the specified link and provides the cost for its traversal. - * - * @param link link to be evaluated - * @param resourceService resource service for validating availability of - * link resources - * @return cost of link traversal - */ - double cost(Link link, LinkResourceService resourceService); - - /** - * Validates that the specified path satisfies the constraint. - * - * @param path path to be validated - * @param resourceService resource service for validating availability of - * link resources - * @return cost of link traversal - */ - boolean validate(Path path, LinkResourceService resourceService); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/FlowRuleIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/FlowRuleIntent.java deleted file mode 100644 index 2a2d7c78..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/FlowRuleIntent.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.NetworkResource; -import org.onosproject.net.flow.FlowRule; - -import java.util.Collection; -import java.util.List; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * An intent that enables to tell flow level operation. - * This instance holds a collection of flow rules that may be executed in parallel. - */ -@Beta -public class FlowRuleIntent extends Intent { - - private final Collection flowRules; - - /** - * Creates a flow rule intent with the specified flow rules and resources. - * - * @param appId application id - * @param flowRules flow rules to be set - * @param resources network resource to be set - */ - public FlowRuleIntent(ApplicationId appId, List flowRules, Collection resources) { - this(appId, null, flowRules, resources); - } - - /** - * Creates an flow rule intent with the specified key, flow rules to be set, and - * required network resources. - * - * @param appId application id - * @param key key - * @param flowRules flow rules - * @param resources network resources - */ - public FlowRuleIntent(ApplicationId appId, Key key, Collection flowRules, - Collection resources) { - super(appId, key, resources, DEFAULT_INTENT_PRIORITY); - this.flowRules = ImmutableList.copyOf(checkNotNull(flowRules)); - } - - /** - * Constructor for serializer. - */ - protected FlowRuleIntent() { - super(); - this.flowRules = null; - } - - /** - * Returns a collection of flow rules to be set. - * - * @return a collection of flow rules - */ - public Collection flowRules() { - return flowRules; - } - - @Override - public boolean isInstallable() { - return true; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("id", id()) - .add("key", key()) - .add("appId", appId()) - .add("resources", resources()) - .add("flowRule", flowRules) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/HostToHostIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/HostToHostIntent.java deleted file mode 100644 index 306597b3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/HostToHostIntent.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.HostId; -import org.onosproject.net.Link; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.intent.constraint.LinkTypeConstraint; - -import java.util.List; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Abstraction of end-station to end-station bidirectional connectivity. - */ -@Beta -public final class HostToHostIntent extends ConnectivityIntent { - - static final LinkTypeConstraint NOT_OPTICAL = new LinkTypeConstraint(false, Link.Type.OPTICAL); - - private final HostId one; - private final HostId two; - - /** - * Returns a new host to host intent builder. - * - * @return host to host intent builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder of a host to host intent. - */ - public static final class Builder extends ConnectivityIntent.Builder { - HostId one; - HostId two; - - private Builder() { - // Hide constructor - } - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder selector(TrafficSelector selector) { - return (Builder) super.selector(selector); - } - - @Override - public Builder treatment(TrafficTreatment treatment) { - return (Builder) super.treatment(treatment); - } - - @Override - public Builder constraints(List constraints) { - return (Builder) super.constraints(constraints); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the first host of the intent that will be built. - * - * @param one first host - * @return this builder - */ - public Builder one(HostId one) { - this.one = one; - return this; - } - - /** - * Sets the second host of the intent that will be built. - * - * @param two second host - * @return this builder - */ - public Builder two(HostId two) { - this.two = two; - return this; - } - - - - /** - * Builds a host to host intent from the accumulated parameters. - * - * @return point to point intent - */ - public HostToHostIntent build() { - - List theConstraints = constraints; - // If not-OPTICAL constraint hasn't been specified, add them - if (!constraints.contains(NOT_OPTICAL)) { - theConstraints = ImmutableList.builder() - .add(NOT_OPTICAL) - .addAll(constraints) - .build(); - } - - return new HostToHostIntent( - appId, - key, - one, - two, - selector, - treatment, - theConstraints, - priority - ); - } - } - - - /** - * Creates a new host-to-host intent with the supplied host pair. - * - * @param appId application identifier - * @param key intent key - * @param one first host - * @param two second host - * @param selector action - * @param treatment ingress port - * @param constraints optional prioritized list of path selection constraints - * @param priority priority to use for flows generated by this intent - * @throws NullPointerException if {@code one} or {@code two} is null. - */ - private HostToHostIntent(ApplicationId appId, Key key, - HostId one, HostId two, - TrafficSelector selector, - TrafficTreatment treatment, - List constraints, - int priority) { - super(appId, key, ImmutableSet.of(one, two), selector, treatment, - constraints, priority); - - // TODO: consider whether the case one and two are same is allowed - this.one = checkNotNull(one); - this.two = checkNotNull(two); - - } - - /** - * Returns identifier of the first host. - * - * @return first host identifier - */ - public HostId one() { - return one; - } - - /** - * Returns identifier of the second host. - * - * @return second host identifier - */ - public HostId two() { - return two; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()) - .add("key", key()) - .add("appId", appId()) - .add("priority", priority()) - .add("resources", resources()) - .add("selector", selector()) - .add("treatment", treatment()) - .add("constraints", constraints()) - .add("one", one) - .add("two", two) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Intent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Intent.java deleted file mode 100644 index 077fd895..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Intent.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.Collection; -import java.util.Objects; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.IdGenerator; -import org.onosproject.net.NetworkResource; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; - -/** - * Abstraction of an application level intent. - *

- * Make sure that an Intent should be immutable when a new type is defined. - *

- */ -@Beta -public abstract class Intent { - - private final IntentId id; - - private final ApplicationId appId; - private final Key key; - - private final int priority; - public static final int DEFAULT_INTENT_PRIORITY = 100; - public static final int MAX_PRIORITY = (1 << 16) - 1; - public static final int MIN_PRIORITY = 1; - - private final Collection resources; - - private static IdGenerator idGenerator; - - /** - * Constructor for serializer. - */ - protected Intent() { - this.id = null; - this.appId = null; - this.key = null; - this.resources = null; - this.priority = DEFAULT_INTENT_PRIORITY; - } - - /** - * Creates a new intent. - * - * @param appId application identifier - * @param key optional key - * @param resources required network resources (optional) - * @param priority flow rule priority - */ - protected Intent(ApplicationId appId, - Key key, - Collection resources, - int priority) { - checkState(idGenerator != null, "Id generator is not bound."); - checkArgument(priority <= MAX_PRIORITY && priority >= MIN_PRIORITY); - this.id = IntentId.valueOf(idGenerator.getNewId()); - this.appId = checkNotNull(appId, "Application ID cannot be null"); - this.key = (key != null) ? key : Key.of(id.fingerprint(), appId); - this.priority = priority; - this.resources = checkNotNull(resources); - } - - /** - * Abstract builder for intents. - */ - public abstract static class Builder { - protected ApplicationId appId; - protected Key key; - protected int priority = Intent.DEFAULT_INTENT_PRIORITY; - - /** - * Sets the application id for the intent that will be built. - * - * @param appId application id to use for built intent - * @return this builder - */ - public Builder appId(ApplicationId appId) { - this.appId = appId; - return this; - } - - /** - * Sets the key for the intent that will be built. - * - * @param key key to use for built intent - * @return this builder - */ - public Builder key(Key key) { - this.key = key; - return this; - } - - /** - * Sets the priority for the intent that will be built. - * - * @param priority priority to use for built intent - * @return this builder - */ - public Builder priority(int priority) { - this.priority = priority; - return this; - } - - } - - /** - * Returns the intent identifier. - * - * @return intent fingerprint - */ - public IntentId id() { - return id; - } - - /** - * Returns the identifier of the application that requested the intent. - * - * @return application identifier - */ - public ApplicationId appId() { - return appId; - } - - /** - * Returns the priority of the intent. - * - * @return intent priority - */ - public int priority() { - return priority; - } - - /** - * Returns the collection of resources required for this intent. - * - * @return collection of resources; may be null - */ - public Collection resources() { - return resources; - } - - /** - * Indicates whether or not the intent is installable. - * - * @return true if installable - */ - public boolean isInstallable() { - return false; - } - - @Override - public final int hashCode() { - return id.hashCode(); - } - - @Override - public final boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final Intent other = (Intent) obj; - return this.id().equals(other.id()); - } - - /** - * Binds an id generator for unique intent id generation. - * - * Note: A generator cannot be bound if there is already a generator bound. - * - * @param newIdGenerator id generator - */ - public static void bindIdGenerator(IdGenerator newIdGenerator) { - checkState(idGenerator == null, "Id generator is already bound."); - idGenerator = checkNotNull(newIdGenerator); - } - - /** - * Unbinds an id generator. - * - * Note: The caller must provide the old id generator to succeed. - * - * @param oldIdGenerator the current id generator - */ - public static void unbindIdGenerator(IdGenerator oldIdGenerator) { - if (Objects.equals(idGenerator, oldIdGenerator)) { - idGenerator = null; - } - } - - public Key key() { - return key; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentBatchDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentBatchDelegate.java deleted file mode 100644 index e4babfb1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentBatchDelegate.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; - -import java.util.Collection; - -/** - * Facade for receiving notifications from the intent batch service. - */ -@Beta -public interface IntentBatchDelegate { - - /** - * Submits the specified batch of intent operations for processing. - * - * @param operations batch of operations - */ - void execute(Collection operations); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentClockService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentClockService.java deleted file mode 100644 index d0dbacf8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentClockService.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.store.Timestamp; - -/** - * Logical clock service that issues per-intent timestamps. - */ -@Beta -public interface IntentClockService { - - /** - * Returns a new timestamp for the specified intent. - * - * @param intentId identifier for the intent. - * @return timestamp - */ - Timestamp getTimestamp(IntentId intentId); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentCompiler.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentCompiler.java deleted file mode 100644 index 9a059be8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentCompiler.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.net.resource.link.LinkResourceAllocations; - -import java.util.List; -import java.util.Set; - -/** - * Abstraction of a compiler which is capable of taking an intent - * and translating it to other, potentially installable, intents. - * - * @param the type of intent - */ -@Beta -public interface IntentCompiler { - /** - * Compiles the specified intent into other intents. - * - * @param intent intent to be compiled - * @param installable previously compilation result; optional - * @param resources previously allocated resources; optional - * @return list of resulting intents - * @throws IntentException if issues are encountered while compiling the intent - */ - List compile(T intent, List installable, - Set resources); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentData.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentData.java deleted file mode 100644 index e24e14e0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentData.java +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; -import org.onosproject.cluster.NodeId; -import org.onosproject.store.Timestamp; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collections; -import java.util.List; -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.net.intent.IntentState.*; - -/** - * A wrapper class that contains an intents, its state, and other metadata for - * internal use. - */ -@Beta -public class IntentData { //FIXME need to make this "immutable" - // manager should be able to mutate a local copy while processing - - private static final Logger log = LoggerFactory.getLogger(IntentData.class); - - private final Intent intent; - - private final IntentState request; //TODO perhaps we want a full fledged object for requests - private IntentState state; - private Timestamp version; - private NodeId origin; - private int errorCount; - - private List installables; - - /** - * Creates a new intent data object. - * - * @param intent intent this metadata references - * @param state intent state - * @param version version of the intent for this key - */ - public IntentData(Intent intent, IntentState state, Timestamp version) { - this.intent = intent; - this.state = state; - this.request = state; - this.version = version; - } - - /** - * Copy constructor. - * - * @param intentData intent data to copy - */ - public IntentData(IntentData intentData) { - checkNotNull(intentData); - - intent = intentData.intent; - state = intentData.state; - request = intentData.request; - version = intentData.version; - origin = intentData.origin; - installables = intentData.installables; - errorCount = intentData.errorCount; - } - - // kryo constructor - protected IntentData() { - intent = null; - request = null; - } - - /** - * Returns the intent this metadata references. - * - * @return intent - */ - public Intent intent() { - return intent; - } - - /** - * Returns the state of the intent. - * - * @return intent state - */ - public IntentState state() { - return state; - } - - public IntentState request() { - return request; - } - - /** - * Returns the intent key. - * - * @return intent key - */ - public Key key() { - return intent.key(); - } - - /** - * Returns the version of the intent for this key. - * - * @return intent version - */ - public Timestamp version() { - return version; - } - - /** - * Sets the origin, which is the node that created the intent. - * - * @param origin origin instance - */ - public void setOrigin(NodeId origin) { - this.origin = origin; - } - - /** - * Returns the origin node that created this intent. - * - * @return origin node ID - */ - public NodeId origin() { - return origin; - } - - /** - * Updates the state of the intent to the given new state. - * - * @param newState new state of the intent - */ - public void setState(IntentState newState) { - this.state = newState; - } - - /** - * Sets the version for this intent data. - *

- * The store should call this method only once when the IntentData is - * first passed into the pending map. Ideally, an IntentData is timestamped - * on the same thread that the called used to submit the intents. - *

- * - * @param version the version/timestamp for this intent data - */ - public void setVersion(Timestamp version) { - this.version = version; - } - - /** - * Increments the error count for this intent. - */ - public void incrementErrorCount() { - errorCount++; - } - - /** - * Sets the error count for this intent. - * - * @param newCount new count - */ - public void setErrorCount(int newCount) { - errorCount = newCount; - } - - /** - * Returns the number of times that this intent has encountered an error - * during installation or withdrawal. - * - * @return error count - */ - public int errorCount() { - return errorCount; - } - - /** - * Sets the intent installables to the given list of intents. - * - * @param installables list of installables for this intent - */ - public void setInstallables(List installables) { - this.installables = ImmutableList.copyOf(installables); - } - - /** - * Returns the installables associated with this intent. - * - * @return list of installable intents - */ - public List installables() { - return installables != null ? installables : Collections.emptyList(); - } - - /** - * Determines whether an intent data update is allowed. The update must - * either have a higher version than the current data, or the state - * transition between two updates of the same version must be sane. - * - * @param currentData existing intent data in the store - * @param newData new intent data update proposal - * @return true if we can apply the update, otherwise false - */ - public static boolean isUpdateAcceptable(IntentData currentData, IntentData newData) { - - if (currentData == null) { - return true; - } else if (currentData.version().isOlderThan(newData.version())) { - return true; - } else if (currentData.version().isNewerThan(newData.version())) { - return false; - } - - // current and new data versions are the same - IntentState currentState = currentData.state(); - IntentState newState = newData.state(); - - switch (newState) { - case INSTALLING: - if (currentState == INSTALLING) { - return false; - } - // FALLTHROUGH - case INSTALLED: - if (currentState == INSTALLED) { - return false; - } else if (currentState == WITHDRAWING || currentState == WITHDRAWN - || currentState == PURGE_REQ) { - log.warn("Invalid state transition from {} to {} for intent {}", - currentState, newState, newData.key()); - return false; - } - return true; - - case WITHDRAWING: - if (currentState == WITHDRAWING) { - return false; - } - // FALLTHROUGH - case WITHDRAWN: - if (currentState == WITHDRAWN) { - return false; - } else if (currentState == INSTALLING || currentState == INSTALLED - || currentState == PURGE_REQ) { - log.warn("Invalid state transition from {} to {} for intent {}", - currentState, newState, newData.key()); - return false; - } - return true; - - case FAILED: - if (currentState == FAILED) { - return false; - } - return true; - - case CORRUPT: - if (currentState == CORRUPT) { - return false; - } - return true; - - case PURGE_REQ: - // TODO we should enforce that only WITHDRAWN intents can be purged - return true; - - case COMPILING: - case RECOMPILING: - case INSTALL_REQ: - case WITHDRAW_REQ: - default: - log.warn("Invalid state {} for intent {}", newState, newData.key()); - return false; - } - } - - @Override - public int hashCode() { - return Objects.hash(intent, version); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final IntentData other = (IntentData) obj; - return Objects.equals(this.intent, other.intent) - && Objects.equals(this.version, other.version); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("key", key()) - .add("state", state()) - .add("version", version()) - .add("intent", intent()) - .add("origin", origin()) - .add("installables", installables()) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentEvent.java deleted file mode 100644 index b27a5074..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentEvent.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.event.AbstractEvent; - -/** - * A class to represent an intent related event. - */ -@Beta -public class IntentEvent extends AbstractEvent { - - public enum Type { - /** - * Signifies that an intent is to be installed or reinstalled. - */ - INSTALL_REQ, - - /** - * Signifies that an intent has been successfully installed. - */ - INSTALLED, - - /** - * Signifies that an intent has failed compilation and that it cannot - * be satisfied by the network at this time. - */ - FAILED, - - /** - * Signifies that an intent will be withdrawn. - */ - WITHDRAW_REQ, - - /** - * Signifies that an intent has been withdrawn from the system. - */ - WITHDRAWN, - - /** - * Signifies that an intent has failed installation or withdrawal, but - * still hold some or all of its resources. - * (e.g. link reservations, flow rules on the data plane, etc.) - */ - CORRUPT, - - /** - * Signifies that an intent has been purged from the system. - */ - PURGED - } - - /** - * Creates an event of a given type and for the specified intent and the - * current time. - * - * @param type event type - * @param intent subject intent - * @param time time the event created in milliseconds since start of epoch - */ - public IntentEvent(Type type, Intent intent, long time) { - super(type, intent, time); - } - - /** - * Creates an event of a given type and for the specified intent and the - * current time. - * - * @param type event type - * @param intent subject intent - */ - public IntentEvent(Type type, Intent intent) { - super(type, intent); - } - - /** - * Creates an IntentEvent based on the state contained in the given intent - * data. Some states are not sent as external events, and these states will - * return null events. - * - * @param data the intent data to create an event for - * @return new intent event if the state is valid, otherwise null. - */ - public static IntentEvent getEvent(IntentData data) { - return getEvent(data.state(), data.intent()); - } - - /** - * Creates an IntentEvent based on the given state and intent. Some states - * are not sent as external events, and these states will return null events. - * - * @param state new state of the intent - * @param intent intent to put in event - * @return new intent event if the state is valid, otherwise null. - */ - public static IntentEvent getEvent(IntentState state, Intent intent) { - Type type; - switch (state) { - case INSTALL_REQ: - type = Type.INSTALL_REQ; - break; - case INSTALLED: - type = Type.INSTALLED; - break; - case WITHDRAW_REQ: - type = Type.WITHDRAW_REQ; - break; - case WITHDRAWN: - type = Type.WITHDRAWN; - break; - case FAILED: - type = Type.FAILED; - break; - case CORRUPT: - type = Type.CORRUPT; - break; - case PURGE_REQ: - type = Type.PURGED; - break; - - // fallthrough to default from here - case COMPILING: - case INSTALLING: - case RECOMPILING: - case WITHDRAWING: - default: - return null; - } - return new IntentEvent(type, intent); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentException.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentException.java deleted file mode 100644 index 3ac1df50..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentException.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; - -/** - * Represents an intent related error. - */ -@Beta -public class IntentException extends RuntimeException { - - private static final long serialVersionUID = 1907263634145241319L; - - /** - * Constructs an exception with no message and no underlying cause. - */ - public IntentException() { - } - - /** - * Constructs an exception with the specified message. - * - * @param message the message describing the specific nature of the error - */ - public IntentException(String message) { - super(message); - } - - /** - * Constructs an exception with the specified message and the underlying cause. - * - * @param message the message describing the specific nature of the error - * @param cause the underlying cause of this error - */ - public IntentException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentExtensionService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentExtensionService.java deleted file mode 100644 index d7c7c641..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentExtensionService.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; - -import java.util.Map; - -/** - * Service for extending the capability of intent framework by - * adding additional compilers or/and installers. - */ -@Beta -public interface IntentExtensionService { - /** - * Registers the specified compiler for the given intent class. - * - * @param cls intent class - * @param compiler intent compiler - * @param the type of intent - */ - void registerCompiler(Class cls, IntentCompiler compiler); - - /** - * Unregisters the compiler for the specified intent class. - * - * @param cls intent class - * @param the type of intent - */ - void unregisterCompiler(Class cls); - - /** - * Returns immutable set of bindings of currently registered intent compilers. - * - * @return the set of compiler bindings - */ - Map, IntentCompiler> getCompilers(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentId.java deleted file mode 100644 index b9a30d2d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentId.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.net.newresource.ResourceConsumer; - -/** - * Intent identifier suitable as an external key. - *

This class is immutable.

- */ -@Beta -public final class IntentId implements ResourceConsumer { - - private final long value; - - /** - * Creates an intent identifier from the specified long representation. - * - * @param value long value - * @return intent identifier - */ - public static IntentId valueOf(long value) { - return new IntentId(value); - } - - /** - * Constructor for serializer. - */ - IntentId() { - this.value = 0; - } - - /** - * Constructs the ID corresponding to a given long value. - * - * @param value the underlying value of this ID - */ - IntentId(long value) { - this.value = value; - } - - /** - * Returns the backing value. - * - * @return the value - */ - public long fingerprint() { - return value; - } - - @Override - public int hashCode() { - return Long.hashCode(value); - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof IntentId)) { - return false; - } - IntentId that = (IntentId) obj; - return this.value == that.value; - } - - @Override - public String toString() { - return "0x" + Long.toHexString(value); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentListener.java deleted file mode 100644 index 4858c7ed..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.event.EventListener; - -/** - * Listener for {@link IntentEvent intent events}. - */ -@Beta -public interface IntentListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentOperation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentOperation.java deleted file mode 100644 index 1b51b4f3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentOperation.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - - -import com.google.common.annotations.Beta; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Abstraction of an intent-related operation, e.g. add, remove, replace. - */ -@Beta -public final class IntentOperation { - - private final Type type; - private final Intent intent; - - /** - * Operation type. - */ - public enum Type { - /** - * Indicates that an intent should be added. - */ - SUBMIT, - - /** - * Indicates that an intent should be removed. - */ - WITHDRAW, - } - - /** - * Creates an intent operation. - * - * @param type operation type - * @param intent intent subject - */ - public IntentOperation(Type type, Intent intent) { - this.type = checkNotNull(type); - this.intent = intent; - } - - /** - * Returns the type of the operation. - * - * @return operation type - */ - public Type type() { - return type; - } - - /** - * Returns the identifier of the intent to which this operation applies. - * - * @return intent identifier - */ - public IntentId intentId() { - return intent.id(); - } - - /** - * Returns the key for this intent. - * - * @return key value - */ - public Key key() { - return intent.key(); - } - - /** - * Returns the intent to which this operation applied. For remove, - * this can be null. - * - * @return intent that is the subject of the operation; null for remove - */ - public Intent intent() { - return intent; - } - - @Override - public int hashCode() { - return Objects.hash(type, intent); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final IntentOperation other = (IntentOperation) obj; - return Objects.equals(this.type, other.type) && - Objects.equals(this.intent, other.intent); - } - - - @Override - public String toString() { - return toStringHelper(this) - .add("type", type) - .add("intent", intent) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentService.java deleted file mode 100644 index 8533cebc..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentService.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - - -import com.google.common.annotations.Beta; -import org.onosproject.event.ListenerService; - -import java.util.List; - -/** - * Service for application submitting or withdrawing their intents. - */ -@Beta -public interface IntentService - extends ListenerService { - - /** - * Submits an intent into the system. - *

- * This is an asynchronous request meaning that any compiling or - * installation activities may be done at later time. - *

- * @param intent intent to be submitted - */ - void submit(Intent intent); - - /** - * Withdraws an intent from the system. - *

- * This is an asynchronous request meaning that the environment may be - * affected at later time. - *

- * @param intent intent to be withdrawn - */ - void withdraw(Intent intent); - - /** - * Purges a specific intent from the system if it is FAILED or - * WITHDRAWN. Otherwise, the intent remains in its current state. - * - * @param intent intent to purge - */ - void purge(Intent intent); - - /** - * Fetches an intent based on its key. - * - * @param key key of the intent - * @return intent object if the key is found, null otherwise - */ - Intent getIntent(Key key); - - /** - * Returns an iterable of intents currently in the system. - * - * @return set of intents - */ - Iterable getIntents(); - - /** - * Returns an iterable of intent data objects currently in the system. - * - * @return set of intent data objects - */ - Iterable getIntentData(); - - /** - * Returns the number of intents currently in the system. - * - * @return number of intents - */ - long getIntentCount(); - - /** - * Retrieves the state of an intent by its identifier. - * - * @param intentKey intent identifier - * @return the intent state or null if one with the given identifier is not - * found - */ - IntentState getIntentState(Key intentKey); - - /** - * Returns the list of the installable events associated with the specified - * top-level intent. - * - * @param intentKey top-level intent identifier - * @return compiled installable intents - */ - List getInstallableIntents(Key intentKey); - - /** - * Signifies whether the local node is responsible for processing the given - * intent key. - * - * @param intentKey intent key to check - * @return true if the local node is responsible for the intent key, - * otherwise false - */ - boolean isLocal(Key intentKey); - - /** - * Returns the list of intent requests pending processing. - * - * @return intents pending processing - */ - Iterable getPending(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentState.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentState.java deleted file mode 100644 index 1e5fd054..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentState.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; - -/** - * Representation of the phases an intent may attain during its lifecycle. - */ -@Beta -public enum IntentState { - - /** - * Signifies that the intent has been submitted and will start compiling - * shortly. However, this compilation may not necessarily occur on the - * local controller instance. - *

- * All intent in the runtime take this state first. - *

- * Intents will also pass through this state when they are updated. - *

- */ - INSTALL_REQ, // TODO submit_REQ? - - /** - * Signifies that the intent is being compiled into installable intents. - * This is a transitional state after which the intent will enter either - * {@link #FAILED} state or {@link #INSTALLING} state. - */ - COMPILING, //TODO do we really need this? - - /** - * Signifies that the resulting installable intents are being installed - * into the network environment. This is a transitional state after which - * the intent will enter either {@link #INSTALLED} state or - * {@link #RECOMPILING} state. - */ - INSTALLING, - - /** - * The intent has been successfully installed. This is a state where the - * intent may remain parked until it is withdrawn by the application or - * until the network environment changes in some way to make the original - * set of installable intents untenable. - */ - INSTALLED, - - /** - * Signifies that the intent is being recompiled into installable intents - * as an attempt to adapt to an anomaly in the network environment. - * This is a transitional state after which the intent will enter either - * {@link #FAILED} state or {@link #INSTALLING} state. - *

- * Exit to the {@link #FAILED} state may be caused by failure to compile - * or by compiling into the same set of installable intents which have - * previously failed to be installed. - *

- */ - RECOMPILING, // TODO perhaps repurpose as BROKEN. - - /** - * Indicates that an application has requested that an intent be withdrawn. - * It will start withdrawing shortly, but not necessarily on this instance. - * Intents can also be parked here if it is impossible to withdraw them. - */ - WITHDRAW_REQ, - - /** - * Indicates that the intent is being withdrawn. This is a transitional - * state, triggered by invocation of the - * {@link IntentService#withdraw(Intent)} but one with only one outcome, - * which is the the intent being placed in the {@link #WITHDRAWN} state. - */ - WITHDRAWING, - - /** - * Indicates that the intent has been successfully withdrawn. - */ - WITHDRAWN, - - /** - * Signifies that the intent has failed to be installed and cannot be - * satisfied given current network conditions. But, the framework will - * reattempt to install it when network conditions change until it is - * withdrawn by an application. - */ - FAILED, //TODO consider renaming to UNSATISFIABLE - - /** - * Signifies that an intent has failed either installation or withdrawal, - * and still hold some or all of its resources. - * (e.g. link reservations, flow rules on the data plane, etc.) - */ - CORRUPT, //TODO consider renaming to ERROR - - /** - * Indicates that the intent should be purged from the database. - *

- * Note: This operation will only be performed if the intent is already - * in WITHDRAWN or FAILED. - *

- */ - PURGE_REQ -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java deleted file mode 100644 index 167ba152..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.store.Store; - -import java.util.List; - -/** - * Manages inventory of end-station intents; not intended for direct use. - */ -@Beta -public interface IntentStore extends Store { - - /** - * Returns the number of intents in the store. - * - * @return the number of intents in the store - */ - long getIntentCount(); - - /** - * Returns an iterable of all intents in the store. - * - * @return iterable of all intents - */ - Iterable getIntents(); - - - /** - * Returns an iterable of all intent data objects in the store. - * - * @param localOnly should only intents for which this instance is master - * be returned - * @param olderThan specified duration in milliseconds (0 for "now") - * @return iterable of all intent data objects - */ - Iterable getIntentData(boolean localOnly, long olderThan); - - /** - * Returns the state of the specified intent. - * - * @param intentKey intent identification - * @return current intent state - */ - IntentState getIntentState(Key intentKey); - - /** - * Returns the list of the installable events associated with the specified - * original intent. - * - * @param intentKey original intent identifier - * @return compiled installable intents, or null if no installables exist - */ - List getInstallableIntents(Key intentKey); - - /** - * Writes an IntentData object to the store. - * - * @param newData new intent data to write - */ - void write(IntentData newData); - - /** - * Writes a batch of IntentData objects to the store. A batch has no - * semantics, this is simply a convenience API. - * - * @param updates collection of intent data objects to write - */ - void batchWrite(Iterable updates); - - /** - * Returns the intent with the specified identifier. - * - * @param key key - * @return intent or null if not found - */ - Intent getIntent(Key key); - - /** - * Returns the intent data object associated with the specified key. - * - * @param key key to look up - * @return intent data object - */ - IntentData getIntentData(Key key); - - /** - * Adds a new operation, which should be persisted and delegated. - * - * @param intent operation - */ - void addPending(IntentData intent); - - /** - * Checks to see whether the calling instance is the master for processing - * this intent, or more specifically, the key contained in this intent. - * - * @param intentKey intentKey to check - * @return true if master; false, otherwise - */ - //TODO better name - boolean isMaster(Key intentKey); - - /** - * Returns the intent requests pending processing. - * - * @return pending intents - */ - Iterable getPending(); - - /** - * Returns the intent data objects that are pending processing. - * - * @return pending intent data objects - */ - Iterable getPendingData(); - - /** - * Returns the intent data objects that are pending processing for longer - * than the specified duration. - * - * @param localOnly should only intents for which this instance is master - * be returned - * @param olderThan specified duration in milliseconds (0 for "now") - * @return pending intent data objects - */ - Iterable getPendingData(boolean localOnly, long olderThan); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentStoreDelegate.java deleted file mode 100644 index fd99881c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentStoreDelegate.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.store.StoreDelegate; - -/** - * Intent store delegate abstraction. - */ -@Beta -public interface IntentStoreDelegate extends StoreDelegate { - - /** - * Provides an intent data object that should be processed (compiled and - * installed) by this manager. - * - * @param intentData intent data object - */ - void process(IntentData intentData); - - /** - * Called when a new intent has been updated for which this node is the master. - * - * @param intentData intent data object - */ - default void onUpdate(IntentData intentData) { - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentUtils.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentUtils.java deleted file mode 100644 index f6e33b6b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/IntentUtils.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Objects; - -/** - * Utilities for dealing with intents. - */ -public final class IntentUtils { - - private static final Logger log = LoggerFactory.getLogger(IntentUtils.class); - - private IntentUtils() { - } - - /** - * Checks if two intents represent the same value. - * - *

({@link Intent#equals(Object)} only checks ID equality)

- * - *

Both intents must be of the same type.

- * - * @param one first intent - * @param two second intent - * @return true if the two intents represent the same value, otherwise false - */ - public static boolean equals(Intent one, Intent two) { - if (one.getClass() != two.getClass()) { - return false; - } - - if (!(Objects.equals(one.appId(), two.appId()) && - Objects.equals(one.key(), two.key()))) { - return false; - } - - if (one instanceof SinglePointToMultiPointIntent) { - SinglePointToMultiPointIntent intent1 = (SinglePointToMultiPointIntent) one; - SinglePointToMultiPointIntent intent2 = (SinglePointToMultiPointIntent) two; - - return Objects.equals(intent1.selector(), intent2.selector()) && - Objects.equals(intent1.treatment(), intent2.treatment()) && - Objects.equals(intent1.ingressPoint(), intent2.ingressPoint()) && - Objects.equals(intent1.egressPoints(), intent2.egressPoints()); - } else if (one instanceof MultiPointToSinglePointIntent) { - MultiPointToSinglePointIntent intent1 = (MultiPointToSinglePointIntent) one; - MultiPointToSinglePointIntent intent2 = (MultiPointToSinglePointIntent) two; - - return Objects.equals(intent1.selector(), intent2.selector()) && - Objects.equals(intent1.treatment(), intent2.treatment()) && - Objects.equals(intent1.ingressPoints(), intent2.ingressPoints()) && - Objects.equals(intent1.egressPoint(), intent2.egressPoint()); - } else if (one instanceof PointToPointIntent) { - PointToPointIntent intent1 = (PointToPointIntent) one; - PointToPointIntent intent2 = (PointToPointIntent) two; - - return Objects.equals(intent1.selector(), intent2.selector()) && - Objects.equals(intent1.treatment(), intent2.treatment()) && - Objects.equals(intent1.ingressPoint(), intent2.ingressPoint()) && - Objects.equals(intent1.egressPoint(), intent2.egressPoint()); - } else { - log.error("Unimplemented intent type"); - return false; - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Key.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Key.java deleted file mode 100644 index 0344acbf..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/Key.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import com.google.common.hash.HashFunction; -import com.google.common.hash.Hashing; -import org.onosproject.core.ApplicationId; - -import java.nio.charset.StandardCharsets; -import java.util.Objects; - -/** - * Key class for Intents. - */ -// TODO maybe pull this up to utils -@Beta -public abstract class Key implements Comparable { - - //TODO consider making this a HashCode object (worry about performance) - private final long hash; - private static final HashFunction HASH_FN = Hashing.md5(); - - protected Key(long hash) { - this.hash = hash; - } - - public long hash() { - return hash; - } - - @Override - public int hashCode() { - return Long.hashCode(hash); - } - - @Override - public abstract boolean equals(Object obj); - - /** - * Creates a key based on the provided string. - *

- * Note: Two keys with equal value, but different appId, are not equal. - *

- * - * @param key the provided string - * @param appId application id to associate with this key - * @return the key for the string - */ - public static Key of(String key, ApplicationId appId) { - return new StringKey(key, appId); - } - - /** - * Creates a key based on the provided long. - *

- * Note: Two keys with equal value, but different appId, are not equal. - * Also, "10" and 10L are different. - *

- * - * @param key the provided long - * @param appId application id to associate with this key - * @return the key for the long - */ - public static Key of(long key, ApplicationId appId) { - return new LongKey(key, appId); - } - - private static final class StringKey extends Key { - - private final ApplicationId appId; - private final String key; - - private StringKey(String key, ApplicationId appId) { - super(HASH_FN.newHasher() - .putShort(appId.id()) - .putString(key, StandardCharsets.UTF_8) - .hash().asLong()); - this.key = key; - this.appId = appId; - } - - @Override - public String toString() { - return key; - } - - // checkstyle requires this - @Override - public int hashCode() { - return super.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final StringKey other = (StringKey) obj; - return this.hash() == other.hash() && - Objects.equals(this.appId, other.appId) && - Objects.equals(this.key, other.key); - } - - @Override - public int compareTo(Key o) { - StringKey sk = (StringKey) o; - return this.key.compareTo(sk.key); - } - } - - private static final class LongKey extends Key { - - private final ApplicationId appId; - private final long key; - - private LongKey(long key, ApplicationId appId) { - super(HASH_FN.newHasher() - .putShort(appId.id()) - .putLong(key) - .hash().asLong()); - this.key = key; - this.appId = appId; - } - - @Override - public String toString() { - return "0x" + Long.toHexString(key); - } - - // checkstyle requires this - @Override - public int hashCode() { - return super.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final LongKey other = (LongKey) obj; - return this.hash() == other.hash() && - this.key == other.key && - Objects.equals(this.appId, other.appId); - } - - @Override - public int compareTo(Key o) { - Long myKey = key; - Long otherKey = ((LongKey) o).key; - return myKey.compareTo(otherKey); - } - } -} - - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/LinkCollectionIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/LinkCollectionIntent.java deleted file mode 100644 index d7953fd8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/LinkCollectionIntent.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.List; -import java.util.Set; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Link; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableSet; - -/** - * Abstraction of a connectivity intent that is implemented by a set of path - * segments. - */ -@Beta -public final class LinkCollectionIntent extends ConnectivityIntent { - - private final Set links; - - private final Set ingressPoints; - private final Set egressPoints; - - /** - * Creates a new actionable intent capable of funneling the selected - * traffic along the specified convergent tree and out the given egress - * point satisfying the specified constraints. - * - * @param appId application identifier - * @param key key to use for the intent - * @param selector traffic match - * @param treatment action - * @param links traversed links - * @param ingressPoints ingress points - * @param egressPoints egress points - * @param constraints optional list of constraints - * @param priority priority to use for the flows generated by this intent - * @throws NullPointerException {@code path} is null - */ - private LinkCollectionIntent(ApplicationId appId, - Key key, - TrafficSelector selector, - TrafficTreatment treatment, - Set links, - Set ingressPoints, - Set egressPoints, - List constraints, - int priority) { - super(appId, key, resources(links), selector, treatment, constraints, priority); - this.links = links; - this.ingressPoints = ingressPoints; - this.egressPoints = egressPoints; - } - - /** - * Constructor for serializer. - */ - protected LinkCollectionIntent() { - super(); - this.links = null; - this.ingressPoints = null; - this.egressPoints = null; - } - - /** - * Returns a new link collection intent builder. The application id, - * ingress point and egress points are required fields. If they are - * not set by calls to the appropriate methods, an exception will - * be thrown. - * - * @return single point to multi point builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder of a single point to multi point intent. - */ - public static final class Builder extends ConnectivityIntent.Builder { - Set links; - Set ingressPoints; - Set egressPoints; - - private Builder() { - // Hide constructor - } - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder selector(TrafficSelector selector) { - return (Builder) super.selector(selector); - } - - @Override - public Builder treatment(TrafficTreatment treatment) { - return (Builder) super.treatment(treatment); - } - - @Override - public Builder constraints(List constraints) { - return (Builder) super.constraints(constraints); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the ingress point of the single point to multi point intent - * that will be built. - * - * @param ingressPoints ingress connect points - * @return this builder - */ - public Builder ingressPoints(Set ingressPoints) { - this.ingressPoints = ImmutableSet.copyOf(ingressPoints); - return this; - } - - /** - * Sets the egress points of the single point to multi point intent - * that will be built. - * - * @param egressPoints egress connect points - * @return this builder - */ - public Builder egressPoints(Set egressPoints) { - this.egressPoints = ImmutableSet.copyOf(egressPoints); - return this; - } - - /** - * Sets the links of the link collection intent - * that will be built. - * - * @param links links for the intent - * @return this builder - */ - public Builder links(Set links) { - this.links = ImmutableSet.copyOf(links); - return this; - } - - - /** - * Builds a single point to multi point intent from the - * accumulated parameters. - * - * @return point to point intent - */ - public LinkCollectionIntent build() { - - return new LinkCollectionIntent( - appId, - key, - selector, - treatment, - links, - ingressPoints, - egressPoints, - constraints, - priority - ); - } - } - - - /** - * Returns the set of links that represent the network connections needed - * by this intent. - * - * @return Set of links for the network hops needed by this intent - */ - public Set links() { - return links; - } - - /** - * Returns the ingress points of the intent. - * - * @return the ingress points - */ - public Set ingressPoints() { - return ingressPoints; - } - - /** - * Returns the egress points of the intent. - * - * @return the egress points - */ - public Set egressPoints() { - return egressPoints; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()) - .add("key", key()) - .add("appId", appId()) - .add("priority", priority()) - .add("resources", resources()) - .add("selector", selector()) - .add("treatment", treatment()) - .add("links", links()) - .add("ingress", ingressPoints()) - .add("egress", egressPoints()) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MplsIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MplsIntent.java deleted file mode 100644 index 7df3c81e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MplsIntent.java +++ /dev/null @@ -1,276 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import com.google.common.annotations.Beta; -import org.onlab.packet.MplsLabel; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.base.MoreObjects; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - - -/** - * Abstraction of MPLS label-switched connectivity. - */ -@Beta -public final class MplsIntent extends ConnectivityIntent { - - private final ConnectPoint ingressPoint; - private final Optional ingressLabel; - private final ConnectPoint egressPoint; - private final Optional egressLabel; - - /** - * Creates a new point-to-point intent with the supplied ingress/egress - * ports, labels and constraints. - * - * @param appId application identifier - * @param selector traffic selector - * @param treatment treatment - * @param ingressPoint ingress port - * @param ingressLabel ingress MPLS label - * @param egressPoint egress port - * @param egressLabel egress MPLS label - * @param constraints optional list of constraints - * @param priority priority to use for flows generated by this intent - * @throws NullPointerException if {@code ingressPoint} or {@code egressPoints} is null. - */ - private MplsIntent(ApplicationId appId, - Key key, - TrafficSelector selector, - TrafficTreatment treatment, - ConnectPoint ingressPoint, - Optional ingressLabel, - ConnectPoint egressPoint, - Optional egressLabel, - List constraints, - int priority) { - - super(appId, key, Collections.emptyList(), selector, treatment, constraints, - priority); - - this.ingressPoint = checkNotNull(ingressPoint); - this.ingressLabel = checkNotNull(ingressLabel); - this.egressPoint = checkNotNull(egressPoint); - this.egressLabel = checkNotNull(egressLabel); - - checkArgument(!ingressPoint.equals(egressPoint), - "ingress and egress should be different (ingress: %s, egress: %s)", - ingressPoint, egressPoint); - } - - /** - * Returns a new MPLS intent builder. The application id, - * ingress point, egress point, ingress label and egress label are - * required fields. If they are not set by calls to the appropriate - * methods, an exception will be thrown. - * - * @return point to point builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder of an MPLS intent. - */ - public static final class Builder extends ConnectivityIntent.Builder { - ConnectPoint ingressPoint; - ConnectPoint egressPoint; - Optional ingressLabel; - Optional egressLabel; - - private Builder() { - // Hide constructor - } - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder selector(TrafficSelector selector) { - return (Builder) super.selector(selector); - } - - @Override - public Builder treatment(TrafficTreatment treatment) { - return (Builder) super.treatment(treatment); - } - - @Override - public Builder constraints(List constraints) { - return (Builder) super.constraints(constraints); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the ingress point of the point to point intent that will be built. - * - * @param ingressPoint ingress connect point - * @return this builder - */ - public Builder ingressPoint(ConnectPoint ingressPoint) { - this.ingressPoint = ingressPoint; - return this; - } - - /** - * Sets the egress point of the point to point intent that will be built. - * - * @param egressPoint egress connect point - * @return this builder - */ - public Builder egressPoint(ConnectPoint egressPoint) { - this.egressPoint = egressPoint; - return this; - } - - /** - * Sets the ingress label of the intent that will be built. - * - * @param ingressLabel ingress label - * @return this builder - */ - public Builder ingressLabel(Optional ingressLabel) { - this.ingressLabel = ingressLabel; - return this; - } - - /** - * Sets the ingress label of the intent that will be built. - * - * @param egressLabel ingress label - * @return this builder - */ - public Builder egressLabel(Optional egressLabel) { - this.egressLabel = egressLabel; - return this; - } - - /** - * Builds a point to point intent from the accumulated parameters. - * - * @return point to point intent - */ - public MplsIntent build() { - - return new MplsIntent( - appId, - key, - selector, - treatment, - ingressPoint, - ingressLabel, - egressPoint, - egressLabel, - constraints, - priority - ); - } - } - - - - /** - * Constructor for serializer. - */ - protected MplsIntent() { - super(); - this.ingressPoint = null; - this.ingressLabel = null; - this.egressPoint = null; - this.egressLabel = null; - } - - /** - * Returns the port on which the ingress traffic should be connected to - * the egress. - * - * @return ingress switch port - */ - public ConnectPoint ingressPoint() { - return ingressPoint; - } - - /** - * Returns the port on which the traffic should egress. - * - * @return egress switch port - */ - public ConnectPoint egressPoint() { - return egressPoint; - } - - - /** - * Returns the MPLS label which the ingress traffic should tagged. - * - * @return ingress MPLS label - */ - public Optional ingressLabel() { - return ingressLabel; - } - - /** - * Returns the MPLS label which the egress traffic should tagged. - * - * @return egress MPLS label - */ - public Optional egressLabel() { - return egressLabel; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()) - .add("appId", appId()) - .add("key", key()) - .add("priority", priority()) - .add("selector", selector()) - .add("treatment", treatment()) - .add("ingressPoint", ingressPoint) - .add("ingressLabel", ingressLabel) - .add("egressPoint", egressPoint) - .add("egressLabel", egressLabel) - .add("constraints", constraints()) - .toString(); - } - - - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MplsPathIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MplsPathIntent.java deleted file mode 100644 index 4548c44d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MplsPathIntent.java +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.List; -import java.util.Optional; - -import com.google.common.annotations.Beta; -import org.onlab.packet.MplsLabel; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.Path; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import static com.google.common.base.Preconditions.checkNotNull; - - -/** - * Abstraction of explicit MPLS label-switched path. - */ -@Beta -public final class MplsPathIntent extends PathIntent { - - private final Optional ingressLabel; - private final Optional egressLabel; - - /** - * Creates a new point-to-point intent with the supplied ingress/egress - * ports and using the specified explicit path. - * - * @param appId application identifier - * @param key intent key - * @param selector traffic selector - * @param treatment treatment - * @param path traversed links - * @param ingressLabel MPLS egress label - * @param egressLabel MPLS ingress label - * @param constraints optional list of constraints - * @param priority priority to use for flows generated by this intent - * @throws NullPointerException {@code path} is null - */ - private MplsPathIntent(ApplicationId appId, Key key, TrafficSelector selector, - TrafficTreatment treatment, Path path, Optional ingressLabel, - Optional egressLabel, List constraints, - int priority) { - super(appId, key, selector, treatment, path, constraints, - priority); - - this.ingressLabel = checkNotNull(ingressLabel); - this.egressLabel = checkNotNull(egressLabel); - } - - /** - * Returns a new host to host intent builder. - * - * @return host to host intent builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder of a host to host intent. - */ - public static final class Builder extends PathIntent.Builder { - private Optional ingressLabel = Optional.empty(); - private Optional egressLabel = Optional.empty(); - - private Builder() { - // Hide constructor - } - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder selector(TrafficSelector selector) { - return (Builder) super.selector(selector); - } - - @Override - public Builder treatment(TrafficTreatment treatment) { - return (Builder) super.treatment(treatment); - } - - @Override - public Builder constraints(List constraints) { - return (Builder) super.constraints(constraints); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - @Override - public Builder path(Path path) { - return (Builder) super.path(path); - } - - /** - * Sets the ingress label of the intent that will be built. - * - * @param ingressLabel ingress label - * @return this builder - */ - public Builder ingressLabel(Optional ingressLabel) { - this.ingressLabel = ingressLabel; - return this; - } - - /** - * Sets the ingress label of the intent that will be built. - * - * @param egressLabel ingress label - * @return this builder - */ - public Builder egressLabel(Optional egressLabel) { - this.egressLabel = egressLabel; - return this; - } - - - /** - * Builds a host to host intent from the accumulated parameters. - * - * @return point to point intent - */ - public MplsPathIntent build() { - - return new MplsPathIntent( - appId, - key, - selector, - treatment, - path, - ingressLabel, - egressLabel, - constraints, - priority - ); - } - } - - - /** - * Returns the MPLS label which the ingress traffic should tagged. - * - * @return ingress MPLS label - */ - public Optional ingressLabel() { - return ingressLabel; - } - - /** - * Returns the MPLS label which the egress traffic should tagged. - * - * @return egress MPLS label - */ - public Optional egressLabel() { - return egressLabel; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MultiPointToSinglePointIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MultiPointToSinglePointIntent.java deleted file mode 100644 index ac6061c7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/MultiPointToSinglePointIntent.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import java.util.Collections; -import java.util.List; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Abstraction of multiple source to single destination connectivity intent. - */ -@Beta -public final class MultiPointToSinglePointIntent extends ConnectivityIntent { - - private final Set ingressPoints; - private final ConnectPoint egressPoint; - - /** - * Creates a new multi-to-single point connectivity intent for the specified - * traffic selector and treatment. - * - * @param appId application identifier - * @param key intent key - * @param selector traffic selector - * @param treatment treatment - * @param ingressPoints set of ports from which ingress traffic originates - * @param egressPoint port to which traffic will egress - * @param constraints constraints to apply to the intent - * @param priority priority to use for flows generated by this intent - * @throws NullPointerException if {@code ingressPoints} or - * {@code egressPoint} is null. - * @throws IllegalArgumentException if the size of {@code ingressPoints} is - * not more than 1 - */ - private MultiPointToSinglePointIntent(ApplicationId appId, - Key key, - TrafficSelector selector, - TrafficTreatment treatment, - Set ingressPoints, - ConnectPoint egressPoint, - List constraints, - int priority) { - super(appId, key, Collections.emptyList(), selector, treatment, constraints, - priority); - - checkNotNull(ingressPoints); - checkArgument(!ingressPoints.isEmpty(), "Ingress point set cannot be empty"); - checkNotNull(egressPoint); - checkArgument(!ingressPoints.contains(egressPoint), - "Set of ingresses should not contain egress (egress: %s)", egressPoint); - - this.ingressPoints = Sets.newHashSet(ingressPoints); - this.egressPoint = egressPoint; - } - - /** - * Constructor for serializer. - */ - protected MultiPointToSinglePointIntent() { - super(); - this.ingressPoints = null; - this.egressPoint = null; - } - - /** - * Returns a new multi point to single point intent builder. The application id, - * ingress points and egress point are required fields. If they are - * not set by calls to the appropriate methods, an exception will - * be thrown. - * - * @return single point to multi point builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder of a multi point to single point intent. - */ - public static final class Builder extends ConnectivityIntent.Builder { - Set ingressPoints; - ConnectPoint egressPoint; - - private Builder() { - // Hide constructor - } - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder selector(TrafficSelector selector) { - return (Builder) super.selector(selector); - } - - @Override - public Builder treatment(TrafficTreatment treatment) { - return (Builder) super.treatment(treatment); - } - - @Override - public Builder constraints(List constraints) { - return (Builder) super.constraints(constraints); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the ingress point of the single point to multi point intent - * that will be built. - * - * @param ingressPoints ingress connect points - * @return this builder - */ - public Builder ingressPoints(Set ingressPoints) { - this.ingressPoints = ImmutableSet.copyOf(ingressPoints); - return this; - } - - /** - * Sets the egress point of the multi point to single point intent - * that will be built. - * - * @param egressPoint egress connect point - * @return this builder - */ - public Builder egressPoint(ConnectPoint egressPoint) { - this.egressPoint = egressPoint; - return this; - } - - /** - * Builds a multi point to single point intent from the - * accumulated parameters. - * - * @return point to point intent - */ - public MultiPointToSinglePointIntent build() { - - return new MultiPointToSinglePointIntent( - appId, - key, - selector, - treatment, - ingressPoints, - egressPoint, - constraints, - priority - ); - } - } - - - /** - * Returns the set of ports on which ingress traffic should be connected to - * the egress port. - * - * @return set of ingress ports - */ - public Set ingressPoints() { - return ingressPoints; - } - - /** - * Returns the port on which the traffic should egress. - * - * @return egress port - */ - public ConnectPoint egressPoint() { - return egressPoint; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()) - .add("key", key()) - .add("appId", appId()) - .add("priority", priority()) - .add("resources", resources()) - .add("selector", selector()) - .add("treatment", treatment()) - .add("ingress", ingressPoints()) - .add("egress", egressPoint()) - .add("constraints", constraints()) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalCircuitIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalCircuitIntent.java deleted file mode 100644 index 1e515c8c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalCircuitIntent.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.OduCltPort; - -import java.util.Collections; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * An optical layer intent for circuits between two OduClt ports. - * No traffic selector or traffic treatment are needed. - */ -@Beta -public class OpticalCircuitIntent extends Intent { - private final ConnectPoint src; - private final ConnectPoint dst; - private final OduCltPort.SignalType signalType; - private final boolean isBidirectional; - - /** - * Creates an optical circuit intent between the specified - * connection points. - * - * @param appId application identification - * @param key intent key - * @param src the source transponder port - * @param dst the destination transponder port - * @param signalType ODU signal type - * @param isBidirectional indicate if intent is bidirectional - * @param priority priority to use for flows from this intent - */ - protected OpticalCircuitIntent(ApplicationId appId, Key key, ConnectPoint src, ConnectPoint dst, - OduCltPort.SignalType signalType, boolean isBidirectional, int priority) { - super(appId, key, Collections.emptyList(), priority); - this.src = checkNotNull(src); - this.dst = checkNotNull(dst); - this.signalType = checkNotNull(signalType); - this.isBidirectional = isBidirectional; - } - - /** - * Returns a new optical circuit intent builder. - * - * @return host to host intent builder - */ - public static Builder builder() { - return new Builder(); - } - - - /** - * Builder for optical circuit intents. - */ - public static class Builder extends Intent.Builder { - private ConnectPoint src; - private ConnectPoint dst; - private OduCltPort.SignalType signalType; - private boolean isBidirectional; - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the source for the intent that will be built. - * - * @param src source to use for built intent - * @return this builder - */ - public Builder src(ConnectPoint src) { - this.src = src; - return this; - } - - /** - * Sets the destination for the intent that will be built. - * - * @param dst dest to use for built intent - * @return this builder - */ - public Builder dst(ConnectPoint dst) { - this.dst = dst; - return this; - } - - /** - * Sets the ODU signal type for the intent that will be built. - * - * @param signalType signal type to use for built intent - * @return this builder - */ - public Builder signalType(OduCltPort.SignalType signalType) { - this.signalType = signalType; - return this; - } - - /** - * Sets the directionality of the intent. - * - * @param isBidirectional true if bidirectional, false if unidirectional - * @return this builder - */ - public Builder bidirectional(boolean isBidirectional) { - this.isBidirectional = isBidirectional; - return this; - } - - /** - * Builds an optical circuit intent from the accumulated parameters. - * - * @return point to point intent - */ - public OpticalCircuitIntent build() { - - return new OpticalCircuitIntent( - appId, - key, - src, - dst, - signalType, - isBidirectional, - priority - ); - } - } - - /** - * Constructor for serializer. - */ - protected OpticalCircuitIntent() { - super(); - this.src = null; - this.dst = null; - this.signalType = null; - this.isBidirectional = false; - } - - /** - * Returns the source transponder port. - * - * @return source transponder port - */ - public ConnectPoint getSrc() { - return src; - } - - /** - * Returns the destination transponder port. - * - * @return source transponder port - */ - public ConnectPoint getDst() { - return dst; - } - - /** - * Returns the ODU signal type. - * - * @return ODU signal type - */ - public OduCltPort.SignalType getSignalType() { - return signalType; - } - - /** - * Returns the directionality of the intent. - * - * @return true if bidirectional, false if unidirectional - */ - public boolean isBidirectional() { - return isBidirectional; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("id", id()) - .add("key", key()) - .add("appId", appId()) - .add("priority", priority()) - .add("resources", resources()) - .add("src", src) - .add("dst", dst) - .add("signalType", signalType) - .add("isBidirectional", isBidirectional) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalConnectivityIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalConnectivityIntent.java deleted file mode 100644 index aeb0255f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalConnectivityIntent.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.OduSignalType; - -import java.util.Collections; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * An optical layer intent for connectivity between two OCh ports. - * No traffic selector or traffic treatment are needed. - */ -@Beta -public final class OpticalConnectivityIntent extends Intent { - private final ConnectPoint src; - private final ConnectPoint dst; - private final OduSignalType signalType; - private final boolean isBidirectional; - - /** - * Creates an optical connectivity intent between the specified - * connection points. - * - * @param appId application identification - * @param key intent key - * @param src the source transponder port - * @param dst the destination transponder port - * @param signalType signal type - * @param isBidirectional indicates if intent is unidirectional - * @param priority priority to use for flows from this intent - */ - protected OpticalConnectivityIntent(ApplicationId appId, - Key key, - ConnectPoint src, - ConnectPoint dst, - OduSignalType signalType, - boolean isBidirectional, - int priority) { - super(appId, key, Collections.emptyList(), priority); - this.src = checkNotNull(src); - this.dst = checkNotNull(dst); - this.signalType = checkNotNull(signalType); - this.isBidirectional = isBidirectional; - } - - /** - * Returns a new optical connectivity intent builder. - * - * @return host to host intent builder - */ - public static Builder builder() { - return new Builder(); - } - - - /** - * Builder for optical connectivity intents. - */ - public static class Builder extends Intent.Builder { - private ConnectPoint src; - private ConnectPoint dst; - private OduSignalType signalType; - private boolean isBidirectional; - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the source for the intent that will be built. - * - * @param src source to use for built intent - * @return this builder - */ - public Builder src(ConnectPoint src) { - this.src = src; - return this; - } - - /** - * Sets the destination for the intent that will be built. - * - * @param dst dest to use for built intent - * @return this builder - */ - public Builder dst(ConnectPoint dst) { - this.dst = dst; - return this; - } - - /** - * Sets the ODU signal type for the intent that will be built. - * - * @param signalType ODU signal type - * @return this builder - */ - public Builder signalType(OduSignalType signalType) { - this.signalType = signalType; - return this; - } - - /** - * Sets the directionality of the intent. - * - * @param isBidirectional true if bidirectional, false if unidirectional - * @return this builder - */ - public Builder bidirectional(boolean isBidirectional) { - this.isBidirectional = isBidirectional; - return this; - } - - /** - * Builds an optical connectivity intent from the accumulated parameters. - * - * @return point to point intent - */ - public OpticalConnectivityIntent build() { - - return new OpticalConnectivityIntent( - appId, - key, - src, - dst, - signalType, - isBidirectional, - priority - ); - } - } - - /** - * Constructor for serializer. - */ - protected OpticalConnectivityIntent() { - super(); - this.src = null; - this.dst = null; - this.signalType = null; - this.isBidirectional = false; - } - - /** - * Returns the source transponder port. - * - * @return source transponder port - */ - public ConnectPoint getSrc() { - return src; - } - - /** - * Returns the destination transponder port. - * - * @return source transponder port - */ - public ConnectPoint getDst() { - return dst; - } - - /** - * Returns the ODU signal type. - * - * @return ODU signal type - */ - public OduSignalType getSignalType() { - return signalType; - } - - /** - * Returns the directionality of the intent. - * - * @return true if bidirectional, false if unidirectional - */ - public boolean isBidirectional() { - return isBidirectional; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("id", id()) - .add("key", key()) - .add("appId", appId()) - .add("priority", priority()) - .add("resources", resources()) - .add("src", src) - .add("dst", dst) - .add("signalType", signalType) - .add("isBidirectional", isBidirectional) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalPathIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalPathIntent.java deleted file mode 100644 index 5a5461cb..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/OpticalPathIntent.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.OchSignal; -import org.onosproject.net.OchSignalType; -import org.onosproject.net.Path; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableSet; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * An optical layer intent with explicitly selected path. - */ -@Beta -public final class OpticalPathIntent extends Intent { - - private final ConnectPoint src; - private final ConnectPoint dst; - private final Path path; - private final OchSignal lambda; - private final OchSignalType signalType; - private final boolean isBidirectional; - - private OpticalPathIntent(ApplicationId appId, - Key key, - ConnectPoint src, - ConnectPoint dst, - Path path, - OchSignal lambda, - OchSignalType signalType, - boolean isBidirectional, - int priority) { - super(appId, key, ImmutableSet.copyOf(path.links()), priority); - this.src = checkNotNull(src); - this.dst = checkNotNull(dst); - this.path = checkNotNull(path); - this.lambda = checkNotNull(lambda); - this.signalType = checkNotNull(signalType); - this.isBidirectional = isBidirectional; - } - - protected OpticalPathIntent() { - this.src = null; - this.dst = null; - this.path = null; - this.lambda = null; - this.signalType = null; - this.isBidirectional = true; - } - - /** - * Returns a new optical connectivity intent builder. - * - * @return host to host intent builder - */ - public static Builder builder() { - return new Builder(); - } - - - /** - * Builder for optical path intents. - */ - public static class Builder extends Intent.Builder { - private ConnectPoint src; - private ConnectPoint dst; - private Path path; - private OchSignal lambda; - private OchSignalType signalType; - private boolean isBidirectional; - Key key; - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the source for the intent that will be built. - * - * @param src source to use for built intent - * @return this builder - */ - public Builder src(ConnectPoint src) { - this.src = src; - return this; - } - - /** - * Sets the destination for the intent that will be built. - * - * @param dst dest to use for built intent - * @return this builder - */ - public Builder dst(ConnectPoint dst) { - this.dst = dst; - return this; - } - - /** - * Sets the path for the intent that will be built. - * - * @param path path to use for built intent - * @return this builder - */ - public Builder path(Path path) { - this.path = path; - return this; - } - - /** - * Sets the optical channel (lambda) for the intent that will be built. - * - * @param lambda the optical channel - * @return this builder - */ - public Builder lambda(OchSignal lambda) { - this.lambda = lambda; - return this; - } - - /** - * Sets the optical signal type for the intent that will be built. - * - * @param signalType the optical signal type - * @return this builder - */ - public Builder signalType(OchSignalType signalType) { - this.signalType = signalType; - return this; - } - - /** - * Sets the intent's direction. - * - * @param isBidirectional indicates if intent is bidirectional - * @return this builder - */ - public Builder bidirectional(boolean isBidirectional) { - this.isBidirectional = isBidirectional; - return this; - } - - /** - * Builds an optical path intent from the accumulated parameters. - * - * @return optical path intent - */ - public OpticalPathIntent build() { - - return new OpticalPathIntent( - appId, - key, - src, - dst, - path, - lambda, - signalType, - isBidirectional, - priority - ); - } - } - - - public ConnectPoint src() { - return src; - } - - public ConnectPoint dst() { - return dst; - } - - public Path path() { - return path; - } - - public OchSignal lambda() { - return lambda; - } - - public OchSignalType signalType() { - return signalType; - } - - public boolean isBidirectional() { - return isBidirectional; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()) - .add("appId", appId()) - .add("key", key()) - .add("resources", resources()) - .add("ingressPort", src) - .add("egressPort", dst) - .add("path", path) - .add("lambda", lambda) - .add("signalType", signalType) - .add("isBidirectional", isBidirectional) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionEvent.java deleted file mode 100644 index c79a3818..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionEvent.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.event.AbstractEvent; - -/** - * Partition event. - */ -//TODO change String into a proper object type -@Beta -public class PartitionEvent extends AbstractEvent { - - public enum Type { - LEADER_CHANGED - } - - public PartitionEvent(Type type, String partition) { - super(type, partition); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionEventListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionEventListener.java deleted file mode 100644 index 5f1da334..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionEventListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving device partition-related events. - */ -@Beta -public interface PartitionEventListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionService.java deleted file mode 100644 index 02ccccac..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PartitionService.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import org.onosproject.cluster.NodeId; -import org.onosproject.event.ListenerService; - -/** - * Service for interacting with the partition-to-instance assignments. - */ -@Beta -public interface PartitionService - extends ListenerService { - - /** - * Returns whether the given intent key is in a partition owned by this - * instance or not. - * - * @param intentKey intent key to query - * @return true if the key is owned by this instance, otherwise false - */ - boolean isMine(Key intentKey); - - /** - * Returns the leader for a particular key. - * - * @param intentKey intent key to query - * @return the leader node - */ - NodeId getLeader(Key intentKey); - - // TODO add API for rebalancing partitions - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PathIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PathIntent.java deleted file mode 100644 index 9bf137a1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PathIntent.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.List; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.Iterables; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Abstraction of explicitly path specified connectivity intent. - */ -@Beta -public class PathIntent extends ConnectivityIntent { - - private final Path path; - - /** - * Creates a new point-to-point intent with the supplied ingress/egress - * ports and using the specified explicit path. - * - * @param appId application identifier - * @param key intent key - * @param selector traffic selector - * @param treatment treatment - * @param path traversed links - * @param constraints optional list of constraints - * @param priority priority to use for the generated flows - * @throws NullPointerException {@code path} is null - */ - protected PathIntent(ApplicationId appId, - Key key, - TrafficSelector selector, - TrafficTreatment treatment, - Path path, - List constraints, - int priority) { - super(appId, key, resources(path.links()), selector, treatment, constraints, - priority); - PathIntent.validate(path.links()); - this.path = path; - } - - /** - * Constructor for serializer. - */ - protected PathIntent() { - super(); - this.path = null; - } - - /** - * Returns a new host to host intent builder. - * - * @return host to host intent builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder of a host to host intent. - */ - public static class Builder extends ConnectivityIntent.Builder { - Path path; - - protected Builder() { - // Hide default constructor - } - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder selector(TrafficSelector selector) { - return (Builder) super.selector(selector); - } - - @Override - public Builder treatment(TrafficTreatment treatment) { - return (Builder) super.treatment(treatment); - } - - @Override - public Builder constraints(List constraints) { - return (Builder) super.constraints(constraints); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the path of the intent that will be built. - * - * @param path path for the intent - * @return this builder - */ - public Builder path(Path path) { - this.path = path; - return this; - } - - /** - * Builds a path intent from the accumulated parameters. - * - * @return point to point intent - */ - public PathIntent build() { - - return new PathIntent( - appId, - key, - selector, - treatment, - path, - constraints, - priority - ); - } - } - - - - // NOTE: This methods takes linear time with the number of links. - /** - * Validates that source element ID and destination element ID of a link are - * different for the specified all links and that destination element ID of a link and source - * element ID of the next adjacent source element ID are same for the specified all links. - * - * @param links links to be validated - */ - public static void validate(List links) { - checkArgument(Iterables.all(links, link -> !link.src().elementId().equals(link.dst().elementId())), - "element of src and dst in a link must be different: {}", links); - - boolean adjacentSame = true; - for (int i = 0; i < links.size() - 1; i++) { - if (!links.get(i).dst().elementId().equals(links.get(i + 1).src().elementId())) { - adjacentSame = false; - break; - } - } - checkArgument(adjacentSame, "adjacent links must share the same element: {}", links); - } - - /** - * Returns the links which the traffic goes along. - * - * @return traversed links - */ - public Path path() { - return path; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()) - .add("key", key()) - .add("appId", appId()) - .add("priority", priority()) - .add("resources", resources()) - .add("selector", selector()) - .add("treatment", treatment()) - .add("constraints", constraints()) - .add("path", path) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PointToPointIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PointToPointIntent.java deleted file mode 100644 index d3f7529d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/PointToPointIntent.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.Collections; -import java.util.List; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.base.MoreObjects; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Abstraction of point-to-point connectivity. - */ -@Beta -public final class PointToPointIntent extends ConnectivityIntent { - - private final ConnectPoint ingressPoint; - private final ConnectPoint egressPoint; - - /** - * Returns a new point to point intent builder. The application id, - * ingress point and egress point are required fields. If they are - * not set by calls to the appropriate methods, an exception will - * be thrown. - * - * @return point to point builder - */ - public static PointToPointIntent.Builder builder() { - return new Builder(); - } - - /** - * Builder of a point to point intent. - */ - public static final class Builder extends ConnectivityIntent.Builder { - ConnectPoint ingressPoint; - ConnectPoint egressPoint; - - private Builder() { - // Hide constructor - } - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder selector(TrafficSelector selector) { - return (Builder) super.selector(selector); - } - - @Override - public Builder treatment(TrafficTreatment treatment) { - return (Builder) super.treatment(treatment); - } - - @Override - public Builder constraints(List constraints) { - return (Builder) super.constraints(constraints); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the ingress point of the point to point intent that will be built. - * - * @param ingressPoint ingress connect point - * @return this builder - */ - public Builder ingressPoint(ConnectPoint ingressPoint) { - this.ingressPoint = ingressPoint; - return this; - } - - /** - * Sets the egress point of the point to point intent that will be built. - * - * @param egressPoint egress connect point - * @return this builder - */ - public Builder egressPoint(ConnectPoint egressPoint) { - this.egressPoint = egressPoint; - return this; - } - - /** - * Builds a point to point intent from the accumulated parameters. - * - * @return point to point intent - */ - public PointToPointIntent build() { - - return new PointToPointIntent( - appId, - key, - selector, - treatment, - ingressPoint, - egressPoint, - constraints, - priority - ); - } - } - - - - /** - * Creates a new point-to-point intent with the supplied ingress/egress - * ports and constraints. - * - * @param appId application identifier - * @param key key of the intent - * @param selector traffic selector - * @param treatment treatment - * @param ingressPoint ingress port - * @param egressPoint egress port - * @param constraints optional list of constraints - * @param priority priority to use for flows generated by this intent - * @throws NullPointerException if {@code ingressPoint} or - * {@code egressPoints} or {@code appId} is null. - */ - private PointToPointIntent(ApplicationId appId, - Key key, - TrafficSelector selector, - TrafficTreatment treatment, - ConnectPoint ingressPoint, - ConnectPoint egressPoint, - List constraints, - int priority) { - super(appId, key, Collections.emptyList(), selector, treatment, constraints, - priority); - - checkArgument(!ingressPoint.equals(egressPoint), - "ingress and egress should be different (ingress: %s, egress: %s)", ingressPoint, egressPoint); - - this.ingressPoint = checkNotNull(ingressPoint); - this.egressPoint = checkNotNull(egressPoint); - } - - /** - * Constructor for serializer. - */ - protected PointToPointIntent() { - super(); - this.ingressPoint = null; - this.egressPoint = null; - } - - /** - * Returns the port on which the ingress traffic should be connected to - * the egress. - * - * @return ingress port - */ - public ConnectPoint ingressPoint() { - return ingressPoint; - } - - /** - * Returns the port on which the traffic should egress. - * - * @return egress port - */ - public ConnectPoint egressPoint() { - return egressPoint; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()) - .add("key", key()) - .add("appId", appId()) - .add("priority", priority()) - .add("resources", resources()) - .add("selector", selector()) - .add("treatment", treatment()) - .add("ingress", ingressPoint) - .add("egress", egressPoint) - .add("constraints", constraints()) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/SinglePointToMultiPointIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/SinglePointToMultiPointIntent.java deleted file mode 100644 index de555cf0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/SinglePointToMultiPointIntent.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableSet; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import java.util.Collections; -import java.util.Set; -import java.util.List; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Abstraction of single source, multiple destination connectivity intent. - */ -@Beta -public final class SinglePointToMultiPointIntent extends ConnectivityIntent { - - private final ConnectPoint ingressPoint; - private final Set egressPoints; - - /** - * Creates a new single-to-multi point connectivity intent. - * - * @param appId application identifier - * @param key intent key - * @param selector traffic selector - * @param treatment treatment - * @param ingressPoint port on which traffic will ingress - * @param egressPoints set of ports on which traffic will egress - * @param constraints constraints to apply to the intent - * @param priority priority to use for flows generated by this intent - * @throws NullPointerException if {@code ingressPoint} or - * {@code egressPoints} is null - * @throws IllegalArgumentException if the size of {@code egressPoints} is - * not more than 1 - */ - private SinglePointToMultiPointIntent(ApplicationId appId, - Key key, - TrafficSelector selector, TrafficTreatment treatment, - ConnectPoint ingressPoint, Set egressPoints, - List constraints, - int priority) { - super(appId, key, Collections.emptyList(), selector, treatment, constraints, - priority); - checkNotNull(egressPoints); - checkNotNull(ingressPoint); - checkArgument(!egressPoints.isEmpty(), "Egress point set cannot be empty"); - checkArgument(!egressPoints.contains(ingressPoint), - "Set of egresses should not contain ingress (ingress: %s)", ingressPoint); - - this.ingressPoint = checkNotNull(ingressPoint); - this.egressPoints = egressPoints; - } - - /** - * Returns a new single point to multi point intent builder. The application id, - * ingress point and egress points are required fields. If they are - * not set by calls to the appropriate methods, an exception will - * be thrown. - * - * @return single point to multi point builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder of a single point to multi point intent. - */ - public static final class Builder extends ConnectivityIntent.Builder { - ConnectPoint ingressPoint; - Set egressPoints; - - private Builder() { - // Hide constructor - } - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder selector(TrafficSelector selector) { - return (Builder) super.selector(selector); - } - - @Override - public Builder treatment(TrafficTreatment treatment) { - return (Builder) super.treatment(treatment); - } - - @Override - public Builder constraints(List constraints) { - return (Builder) super.constraints(constraints); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the ingress point of the single point to multi point intent - * that will be built. - * - * @param ingressPoint ingress connect point - * @return this builder - */ - public Builder ingressPoint(ConnectPoint ingressPoint) { - this.ingressPoint = ingressPoint; - return this; - } - - /** - * Sets the egress points of the single point to multi point intent - * that will be built. - * - * @param egressPoints egress connect points - * @return this builder - */ - public Builder egressPoints(Set egressPoints) { - this.egressPoints = ImmutableSet.copyOf(egressPoints); - return this; - } - - /** - * Builds a single point to multi point intent from the - * accumulated parameters. - * - * @return point to point intent - */ - public SinglePointToMultiPointIntent build() { - - return new SinglePointToMultiPointIntent( - appId, - key, - selector, - treatment, - ingressPoint, - egressPoints, - constraints, - priority - ); - } - } - - /** - * Constructor for serializer. - */ - protected SinglePointToMultiPointIntent() { - super(); - this.ingressPoint = null; - this.egressPoints = null; - } - - /** - * Returns the port on which the ingress traffic should be connected to the - * egress. - * - * @return ingress port - */ - public ConnectPoint ingressPoint() { - return ingressPoint; - } - - /** - * Returns the set of ports on which the traffic should egress. - * - * @return set of egress ports - */ - public Set egressPoints() { - return egressPoints; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()) - .add("key", key()) - .add("appId", appId()) - .add("priority", priority()) - .add("resources", resources()) - .add("selector", selector()) - .add("treatment", treatment()) - .add("ingress", ingressPoint) - .add("egress", egressPoints) - .add("constraints", constraints()) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/TwoWayP2PIntent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/TwoWayP2PIntent.java deleted file mode 100644 index b9f126f4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/TwoWayP2PIntent.java +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.Collections; -import java.util.List; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.base.MoreObjects; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Abstraction of bidirectional connectivity between two points in the network. - */ -@Beta -public final class TwoWayP2PIntent extends ConnectivityIntent { - - private final ConnectPoint one; - private final ConnectPoint two; - - - /** - * Creates a new host-to-host intent with the supplied host pair. - * - * @param appId application identifier - * @param key intent key - * @param one first host - * @param two second host - * @param selector action - * @param treatment ingress port - * @param constraints optional prioritized list of path selection constraints - * @param priority priority to use for flows generated by this intent - * @throws NullPointerException if {@code one} or {@code two} is null. - */ - private TwoWayP2PIntent(ApplicationId appId, Key key, - ConnectPoint one, ConnectPoint two, - TrafficSelector selector, - TrafficTreatment treatment, - List constraints, - int priority) { - super(appId, key, Collections.emptyList(), selector, treatment, constraints, - priority); - - // TODO: consider whether the case one and two are same is allowed - this.one = checkNotNull(one); - this.two = checkNotNull(two); - - } - - /** - * Returns a new two way intent builder. - * - * @return two way intent builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder of a point to point intent. - */ - public static final class Builder extends ConnectivityIntent.Builder { - ConnectPoint one; - ConnectPoint two; - - private Builder() { - // Hide constructor - } - - @Override - public Builder appId(ApplicationId appId) { - return (Builder) super.appId(appId); - } - - @Override - public Builder key(Key key) { - return (Builder) super.key(key); - } - - @Override - public Builder selector(TrafficSelector selector) { - return (Builder) super.selector(selector); - } - - @Override - public Builder treatment(TrafficTreatment treatment) { - return (Builder) super.treatment(treatment); - } - - @Override - public Builder constraints(List constraints) { - return (Builder) super.constraints(constraints); - } - - @Override - public Builder priority(int priority) { - return (Builder) super.priority(priority); - } - - /** - * Sets the first connection point of the two way intent that will be built. - * - * @param one first connect point - * @return this builder - */ - public Builder one(ConnectPoint one) { - this.one = one; - return this; - } - - /** - * Sets the second connection point of the two way intent that will be built. - * - * @param two second connect point - * @return this builder - */ - public Builder two(ConnectPoint two) { - this.two = two; - return this; - } - - /** - * Builds a point to point intent from the accumulated parameters. - * - * @return point to point intent - */ - public TwoWayP2PIntent build() { - - return new TwoWayP2PIntent( - appId, - key, - one, - two, - selector, - treatment, - constraints, - priority - ); - } - } - - /** - * Returns identifier of the first host. - * - * @return first host identifier - */ - public ConnectPoint one() { - return one; - } - - /** - * Returns identifier of the second host. - * - * @return second host identifier - */ - public ConnectPoint two() { - return two; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()) - .add("key", key()) - .add("appId", appId()) - .add("priority", priority()) - .add("resources", resources()) - .add("selector", selector()) - .add("treatment", treatment()) - .add("constraints", constraints()) - .add("one", one) - .add("two", two) - .toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/AnnotationConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/AnnotationConstraint.java deleted file mode 100644 index f5439efd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/AnnotationConstraint.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import org.onosproject.net.Link; -import org.onosproject.net.resource.link.LinkResourceService; - -import java.util.Objects; - -import static org.onosproject.net.AnnotationKeys.getAnnotatedValue; - -/** - * Constraint that evaluates an arbitrary link annotated value is under the specified threshold. - */ -@Beta -public class AnnotationConstraint extends BooleanConstraint { - - private final String key; - private final double threshold; - - /** - * Creates a new constraint to keep the value for the specified key - * of link annotation under the threshold. - * - * @param key key of link annotation - * @param threshold threshold value of the specified link annotation - */ - public AnnotationConstraint(String key, double threshold) { - this.key = key; - this.threshold = threshold; - } - - // Constructor for serialization - private AnnotationConstraint() { - this.key = ""; - this.threshold = 0; - } - - /** - * Returns the key of link annotation this constraint designates. - * @return key of link annotation - */ - public String key() { - return key; - } - - /** - * Returns the threshold this constraint ensures as link annotated value. - * - * @return threshold as link annotated value - */ - public double threshold() { - return threshold; - } - - @Override - public boolean isValid(Link link, LinkResourceService resourceService) { - double value = getAnnotatedValue(link, key); - - return value <= threshold; - } - - @Override - public double cost(Link link, LinkResourceService resourceService) { - if (isValid(link, resourceService)) { - return getAnnotatedValue(link, key); - } else { - return -1; - } - } - - @Override - public int hashCode() { - return Objects.hash(key, threshold); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (!(obj instanceof AnnotationConstraint)) { - return false; - } - - final AnnotationConstraint other = (AnnotationConstraint) obj; - return Objects.equals(this.key, other.key) && Objects.equals(this.threshold, other.threshold); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("key", key) - .add("threshold", threshold) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/AsymmetricPathConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/AsymmetricPathConstraint.java deleted file mode 100644 index e0f8614c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/AsymmetricPathConstraint.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.annotations.Beta; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.resource.link.LinkResourceService; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Constraint that serves as a request for asymmetric bi-directional path. - */ -@Beta -public class AsymmetricPathConstraint implements Constraint { - - @Override - public double cost(Link link, LinkResourceService resourceService) { - return 1; - } - - @Override - public boolean validate(Path path, LinkResourceService resourceService) { - return true; - } - - @Override - public int hashCode() { - return Objects.hashCode(true); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - return true; - } - - @Override - public String toString() { - return toStringHelper(this).toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java deleted file mode 100644 index 1b4a2600..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.annotations.Beta; - -import org.onlab.util.Bandwidth; -import org.onlab.util.DataRateUnit; -import org.onosproject.net.Link; -import org.onosproject.net.resource.link.BandwidthResourceRequest; -import org.onosproject.net.resource.link.LinkResourceService; -import org.onosproject.net.resource.ResourceRequest; -import org.onosproject.net.resource.ResourceType; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Constraint that evaluates links based on available bandwidths. - */ -@Beta -public final class BandwidthConstraint extends BooleanConstraint { - - private final Bandwidth bandwidth; - - /** - * Creates a new bandwidth constraint. - * - * @param bandwidth required bandwidth - */ - public BandwidthConstraint(Bandwidth bandwidth) { - this.bandwidth = checkNotNull(bandwidth, "Bandwidth cannot be null"); - } - - /** - * Creates a new bandwidth constraint. - * - * @param v required amount of bandwidth - * @param unit {@link DataRateUnit} of {@code v} - * @return {@link BandwidthConstraint} instance with given bandwidth requirement - */ - public static BandwidthConstraint of(double v, DataRateUnit unit) { - return new BandwidthConstraint(Bandwidth.of(v, unit)); - } - - // Constructor for serialization - private BandwidthConstraint() { - this.bandwidth = null; - } - - @Override - public boolean isValid(Link link, LinkResourceService resourceService) { - for (ResourceRequest request : resourceService.getAvailableResources(link)) { - if (request.type() == ResourceType.BANDWIDTH) { - BandwidthResourceRequest brr = (BandwidthResourceRequest) request; - if (brr.bandwidth().toDouble() >= bandwidth.bps()) { - return true; - } - } - } - return false; - } - - /** - * Returns the bandwidth required by this constraint. - * - * @return required bandwidth - */ - public Bandwidth bandwidth() { - return bandwidth; - } - - @Override - public int hashCode() { - return bandwidth.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final BandwidthConstraint other = (BandwidthConstraint) obj; - return Objects.equals(this.bandwidth, other.bandwidth); - } - - @Override - public String toString() { - return toStringHelper(this).add("bandwidth", bandwidth).toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/BooleanConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/BooleanConstraint.java deleted file mode 100644 index f1d4ad9f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/BooleanConstraint.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.annotations.Beta; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.resource.link.LinkResourceService; - -/** - * Abstract base class for various constraints that evaluate link viability - * in a yes/no fashion. - */ -@Beta -public abstract class BooleanConstraint implements Constraint { - - /** - * Returns true if the specified link satisfies the constraint. - * - * @param link link to be validated - * @param resourceService resource service for checking available link resources - * @return true if link is viable - */ - public abstract boolean isValid(Link link, LinkResourceService resourceService); - - /** - * {@inheritDoc} - * - * Negative return value means the specified link does not satisfy this constraint. - * - * @param link {@inheritDoc} - * @param resourceService {@inheritDoc} - * @return {@inheritDoc} - */ - @Override - public double cost(Link link, LinkResourceService resourceService) { - return isValid(link, resourceService) ? +1 : -1; - } - - @Override - public boolean validate(Path path, LinkResourceService resourceService) { - for (Link link : path.links()) { - if (!isValid(link, resourceService)) { - return false; - } - } - return true; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/EncapsulationConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/EncapsulationConstraint.java deleted file mode 100644 index e8539398..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/EncapsulationConstraint.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent.constraint; - - -import org.onosproject.net.EncapsulationType; -import org.onosproject.net.Link; -import org.onosproject.net.resource.link.LinkResourceService; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Encapsulation to manage core transportation. - */ -public class EncapsulationConstraint extends BooleanConstraint { - - private EncapsulationType encapType; - - /** - * Creates a new encapsulation constraint. - * - * @param encapType the encapsulation type {@link EncapsulationType} - */ - public EncapsulationConstraint(EncapsulationType encapType) { - checkNotNull(encapType, "EncapsulationType cannot be null"); - this.encapType = encapType; - } - - - @Override - public boolean isValid(Link link, LinkResourceService resourceService) { - //TODO: validate the availability of the resources for each link in the path. - //e.g., availability of MPLSlabels, VLANID - - return true; - } - - /** - * Returns the encapsulation type required by this constraint. - * - * @return encapType - */ - public EncapsulationType encapType() { - return encapType; - } - - @Override - public int hashCode() { - return encapType.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final EncapsulationConstraint other = (EncapsulationConstraint) obj; - return this.encapType() == other.encapType(); - } - - @Override - public String toString() { - return toStringHelper(this).add("encapType", encapType).toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java deleted file mode 100644 index eba28984..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.annotations.Beta; -import org.onosproject.net.IndexedLambda; -import org.onosproject.net.Link; -import org.onosproject.net.resource.link.LinkResourceService; -import org.onosproject.net.resource.ResourceRequest; -import org.onosproject.net.resource.ResourceType; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Constraint that evaluates links based on available lambda. - */ -@Beta -public class LambdaConstraint extends BooleanConstraint { - - private final IndexedLambda lambda; - - /** - * Creates a new optical lambda constraint. - * - * @param lambda optional lambda to indicate a specific lambda - */ - public LambdaConstraint(IndexedLambda lambda) { - this.lambda = lambda; - } - - // Constructor for serialization - private LambdaConstraint() { - this.lambda = null; - } - - @Override - public boolean isValid(Link link, LinkResourceService resourceService) { - for (ResourceRequest request : resourceService.getAvailableResources(link)) { - if (request.type() == ResourceType.LAMBDA) { - return true; - } - } - return false; - } - - /** - * Returns the lambda required by this constraint. - * - * @return required lambda - */ - public IndexedLambda lambda() { - return lambda; - } - - @Override - public int hashCode() { - return Objects.hashCode(lambda); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final LambdaConstraint other = (LambdaConstraint) obj; - return Objects.equals(this.lambda, other.lambda); - } - - @Override - public String toString() { - return toStringHelper(this).add("lambda", lambda).toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LatencyConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LatencyConstraint.java deleted file mode 100644 index aecef879..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LatencyConstraint.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.resource.link.LinkResourceService; - -import java.time.Duration; -import java.time.temporal.ChronoUnit; -import java.util.Objects; - -import static org.onosproject.net.AnnotationKeys.LATENCY; -import static org.onosproject.net.AnnotationKeys.getAnnotatedValue; - -/** - * Constraint that evaluates the latency through a path. - */ -@Beta -public class LatencyConstraint implements Constraint { - - private final Duration latency; - - /** - * Creates a new constraint to keep under specified latency through a path. - * @param latency latency to be kept - */ - public LatencyConstraint(Duration latency) { - this.latency = latency; - } - - // Constructor for serialization - private LatencyConstraint() { - this.latency = Duration.ZERO; - } - - public Duration latency() { - return latency; - } - - @Override - public double cost(Link link, LinkResourceService resourceService) { - return getAnnotatedValue(link, LATENCY); - } - - @Override - public boolean validate(Path path, LinkResourceService resourceService) { - double pathLatency = path.links().stream().mapToDouble(link -> cost(link, resourceService)).sum(); - return Duration.of((long) pathLatency, ChronoUnit.MICROS).compareTo(latency) <= 0; - } - - @Override - public int hashCode() { - return latency.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (!(obj instanceof LatencyConstraint)) { - return false; - } - - final LatencyConstraint that = (LatencyConstraint) obj; - return Objects.equals(this.latency, that.latency); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("latency", latency) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LinkTypeConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LinkTypeConstraint.java deleted file mode 100644 index ffa4405b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/LinkTypeConstraint.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableSet; -import org.onosproject.net.Link; -import org.onosproject.net.resource.link.LinkResourceService; - -import java.util.Objects; -import java.util.Set; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Constraint that evaluates links based on their type. - */ -@Beta -public class LinkTypeConstraint extends BooleanConstraint { - - private final Set types; - private final boolean isInclusive; - - /** - * Creates a new constraint for requesting connectivity using or avoiding - * the specified link types. - * - * @param inclusive indicates whether the given link types are to be - * permitted or avoided - * @param types link types - */ - public LinkTypeConstraint(boolean inclusive, Link.Type... types) { - checkNotNull(types, "Link types cannot be null"); - checkArgument(types.length > 0, "There must be more than one type"); - this.types = ImmutableSet.copyOf(types); - this.isInclusive = inclusive; - } - - // Constructor for serialization - private LinkTypeConstraint() { - this.types = null; - this.isInclusive = false; - } - - @Override - public boolean isValid(Link link, LinkResourceService resourceService) { - boolean contains = types.contains(link.type()); - return isInclusive ? contains : !contains; - } - - /** - * Returns the set of link types. - * - * @return set of link types - */ - public Set types() { - return types; - } - - /** - * Indicates if the constraint is inclusive or exclusive. - * - * @return true if inclusive - */ - public boolean isInclusive() { - return isInclusive; - } - - @Override - public int hashCode() { - return Objects.hash(types, isInclusive); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final LinkTypeConstraint other = (LinkTypeConstraint) obj; - return Objects.equals(this.types, other.types) && Objects.equals(this.isInclusive, other.isInclusive); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("inclusive", isInclusive) - .add("types", types) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java deleted file mode 100644 index ca4f3fd3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableSet; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.resource.link.LinkResourceService; - -import java.util.Collections; -import java.util.Objects; -import java.util.Set; - -/** - * Constraint that evaluates elements not passed through. - */ -@Beta -public class ObstacleConstraint extends BooleanConstraint { - - private final Set obstacles; - - /** - * Creates a new constraint that the specified device are not passed through. - * @param obstacles devices not to be passed - */ - public ObstacleConstraint(DeviceId... obstacles) { - this.obstacles = ImmutableSet.copyOf(obstacles); - } - - // Constructor for serialization - private ObstacleConstraint() { - this.obstacles = Collections.emptySet(); - } - - /** - * Returns the obstacle device ids. - * - * @return Set of obstacle device ids - */ - public Set obstacles() { - return obstacles; - } - - @Override - public boolean isValid(Link link, LinkResourceService resourceService) { - DeviceId src = link.src().deviceId(); - DeviceId dst = link.dst().deviceId(); - - return !(obstacles.contains(src) || obstacles.contains(dst)); - } - - @Override - public int hashCode() { - return obstacles.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (!(obj instanceof ObstacleConstraint)) { - return false; - } - - final ObstacleConstraint that = (ObstacleConstraint) obj; - return Objects.equals(this.obstacles, that.obstacles); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("obstacles", obstacles) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/PartialFailureConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/PartialFailureConstraint.java deleted file mode 100644 index 827859b1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/PartialFailureConstraint.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.intent.ConnectivityIntent; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.intent.Intent; -import org.onosproject.net.resource.link.LinkResourceService; - -/** - * A constraint that allows intents that can only be partially compiled - * (i.e. MultiPointToSinglePointIntent or SinglePointToMultiPointIntent) - * to be installed when some endpoints or paths are not found. - */ -public class PartialFailureConstraint implements Constraint { - @Override - public double cost(Link link, LinkResourceService resourceService) { - return 1; - } - - @Override - public boolean validate(Path path, LinkResourceService resourceService) { - return true; - } - - public static boolean intentAllowsPartialFailure(Intent intent) { - if (intent instanceof ConnectivityIntent) { - ConnectivityIntent connectivityIntent = (ConnectivityIntent) intent; - return connectivityIntent.constraints().stream() - .anyMatch(c -> c instanceof PartialFailureConstraint); - } - return false; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/WaypointConstraint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/WaypointConstraint.java deleted file mode 100644 index 4839feec..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/WaypointConstraint.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.resource.link.LinkResourceService; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Constraint that evaluates elements passed through in order. - */ -@Beta -public class WaypointConstraint implements Constraint { - - private final List waypoints; - - /** - * Creates a new waypoint constraint. - * - * @param waypoints waypoints - */ - public WaypointConstraint(DeviceId... waypoints) { - checkNotNull(waypoints, "waypoints cannot be null"); - checkArgument(waypoints.length > 0, "length of waypoints should be more than 0"); - this.waypoints = ImmutableList.copyOf(waypoints); - } - - // Constructor for serialization - private WaypointConstraint() { - this.waypoints = Collections.emptyList(); - } - - public List waypoints() { - return waypoints; - } - - @Override - public double cost(Link link, LinkResourceService resourceService) { - // Always consider the number of hops - return 1; - } - - @Override - public boolean validate(Path path, LinkResourceService resourceService) { - LinkedList waypoints = new LinkedList<>(this.waypoints); - DeviceId current = waypoints.poll(); - // This is safe because Path class ensures the number of links are more than 0 - Link firstLink = path.links().get(0); - if (firstLink.src().elementId().equals(current)) { - current = waypoints.poll(); - } - - for (Link link : path.links()) { - if (link.dst().elementId().equals(current)) { - current = waypoints.poll(); - // Empty waypoints means passing through all waypoints in the specified order - if (current == null) { - return true; - } - } - } - - return false; - } - - @Override - public int hashCode() { - return waypoints.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (!(obj instanceof WaypointConstraint)) { - return false; - } - - final WaypointConstraint that = (WaypointConstraint) obj; - return Objects.equals(this.waypoints, that.waypoints); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("waypoints", waypoints) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/package-info.java deleted file mode 100644 index 60d8df16..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/constraint/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Definitions of constraints used to refine intent specifications. - */ -package org.onosproject.net.intent.constraint; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/package-info.java deleted file mode 100644 index a86b3118..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/intent/package-info.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Set of abstractions for conveying high-level intents for treatment of - * selected network traffic by allowing applications to express the - * what rather than the how. This makes such instructions - * largely independent of topology and device specifics, thus allowing them to - * survive topology mutations. - *

- * The controller core provides a suite of built-in intents and their compilers - * and installers. However, the intent framework is extensible in that it allows - * additional intents and their compilers or installers to be added - * dynamically at run-time. This allows others to enhance the initial arsenal of - * connectivity and policy-based intents available in base controller software. - *

- *

- * The following diagram depicts the state transition diagram for each top-level intent:
- * ONOS intent states - *

- *

- * The controller core accepts the intent specifications and translates them, via a - * process referred to as intent compilation, to installable intents, which are - * essentially actionable operations on the network environment. - * These actions are carried out by intent installation process, which results - * in some changes to the environment, e.g. tunnel links being provisioned, - * flow rules being installed on the data-plane, optical lambdas being reserved. - *

- *

- * After an intent is submitted by an application, it will be sent immediately - * (but asynchronously) into a compiling phase, then to installing phase and if - * all goes according to plan into installed state. Once an application decides - * it no longer wishes the intent to hold, it can withdraw it. This describes - * the nominal flow. However, it may happen that some issue is encountered. - * For example, an application may ask for an objective that is not currently - * achievable, e.g. connectivity across to unconnected network segments. - * If this is the case, the compiling phase may fail to produce a set of - * installable intents and instead result in a failed compile. If this occurs, - * only a change in the environment can trigger a transition back to the - * compiling state. - *

- *

- * Similarly, an issue may be encountered during the installation phase in - * which case the framework will attempt to recompile the intent to see if an - * alternate approach is available. If so, the intent will be sent back to - * installing phase. Otherwise, it will be parked in the failed state. Another - * scenario that’s very likely to be encountered is where the intent is - * successfully compiled and installed, but due to some topology event, such - * as a downed or downgraded link, loss of throughput may occur or connectivity - * may be lost altogether, thus impacting the viability of a previously - * satisfied intent. If this occurs, the framework will attempt to recompile - * the intent, and if an alternate approach is available, its installation - * will be attempted. Otherwise, the original top-level intent will be parked - * in the failed state. - *

- *

- * Please note that all *ing states, depicted in orange, are transitional and - * are expected to last only a brief amount of time. The rest of the states - * are parking states where the intent may spent some time; except for the - * submitted state of course. There, the intent may pause, but only briefly, - * while the system determines where to perform the compilation or while it - * performs global recomputation/optimization across all prior intents. - *

- *

- * The figure below depicts the general interactions between different - * components of the intent subsystem.
- * ONOS intent subsystem design - *

- */ -package org.onosproject.net.intent; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java deleted file mode 100644 index cba17640..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.AbstractDescription; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Link; -import org.onosproject.net.SparseAnnotations; -import com.google.common.base.Objects; - -/** - * Default implementation of immutable link description entity. - */ -public class DefaultLinkDescription extends AbstractDescription - implements LinkDescription { - - private final ConnectPoint src; - private final ConnectPoint dst; - private final Link.Type type; - - /** - * Creates a link description using the supplied information. - * - * @param src link source - * @param dst link destination - * @param type link type - * @param annotations optional key/value annotations - */ - public DefaultLinkDescription(ConnectPoint src, ConnectPoint dst, - Link.Type type, SparseAnnotations... annotations) { - super(annotations); - this.src = src; - this.dst = dst; - this.type = type; - } - - @Override - public ConnectPoint src() { - return src; - } - - @Override - public ConnectPoint dst() { - return dst; - } - - @Override - public Link.Type type() { - return type; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("src", src()) - .add("dst", dst()) - .add("type", type()).toString(); - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), src, dst, type); - } - - @Override - public boolean equals(Object object) { - if (object != null && getClass() == object.getClass()) { - if (!super.equals(object)) { - return false; - } - DefaultLinkDescription that = (DefaultLinkDescription) object; - return Objects.equal(this.src, that.src) - && Objects.equal(this.dst, that.dst) - && Objects.equal(this.type, that.type); - } - return false; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkAdminService.java deleted file mode 100644 index a0b5e1e2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkAdminService.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.link; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; - -/** - * Service for administering the inventory of infrastructure links. - */ -public interface LinkAdminService extends LinkService { - - /** - * Removes all infrastructure links leading to and from the - * specified connection point. - * - * @param connectPoint connection point - */ - void removeLinks(ConnectPoint connectPoint); - - /** - * Removes all infrastructure links leading to and from the - * specified device. - * - * @param deviceId device identifier - */ - void removeLinks(DeviceId deviceId); - - /** - * Removes all links between between the specified src and - * dst connection points. - * - * @param src link source - * @param dst link destination - */ - void removeLink(ConnectPoint src, ConnectPoint dst); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkDescription.java deleted file mode 100644 index f85718b7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkDescription.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Description; -import org.onosproject.net.Link; - -/** - * Describes an infrastructure link. - */ -public interface LinkDescription extends Description { - - /** - * Returns the link source. - * - * @return links source - */ - ConnectPoint src(); - - /** - * Returns the link destination. - * - * @return links destination - */ - ConnectPoint dst(); - - /** - * Returns the link type. - * - * @return link type - */ - Link.Type type(); - - // Add further link attributes -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkEvent.java deleted file mode 100644 index d87bce06..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkEvent.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.net.Link; - -/** - * Describes infrastructure link event. - */ -public class LinkEvent extends AbstractEvent { - - /** - * Type of link events. - */ - public enum Type { - /** - * Signifies that a new link has been detected. - */ - LINK_ADDED, - - /** - * Signifies that a link has been updated or changed state. - */ - LINK_UPDATED, - - /** - * Signifies that a link has been removed. - */ - LINK_REMOVED - } - - /** - * Creates an event of a given type and for the specified link and the - * current time. - * - * @param type link event type - * @param link event link subject - */ - public LinkEvent(Type type, Link link) { - super(type, link); - } - - /** - * Creates an event of a given type and for the specified link and time. - * - * @param type link event type - * @param link event link subject - * @param time occurrence time - */ - public LinkEvent(Type type, Link link, long time) { - super(type, link, time); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkListener.java deleted file mode 100644 index 82f6bdb9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving infrastructure link related events. - */ -public interface LinkListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProvider.java deleted file mode 100644 index ed4348c7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import org.onosproject.net.provider.Provider; - -/** - * Abstraction of an entity providing information about infrastructure links - * to the core. - */ -public interface LinkProvider extends Provider { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProviderRegistry.java deleted file mode 100644 index 57a05d93..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProviderRegistry.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import org.onosproject.net.provider.ProviderRegistry; - -/** - * Abstraction of an infrastructure link provider registry. - */ -public interface LinkProviderRegistry - extends ProviderRegistry { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProviderService.java deleted file mode 100644 index f5ef52a2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkProviderService.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.provider.ProviderService; - -/** - * Means for injecting link information into the core. - */ -public interface LinkProviderService extends ProviderService { - - /** - * Signals that an infrastructure link has been detected. - * - * @param linkDescription link information - */ - void linkDetected(LinkDescription linkDescription); - - /** - * Signals that an infrastructure link has disappeared. - * - * @param linkDescription link information - */ - void linkVanished(LinkDescription linkDescription); - - /** - * Signals that infrastructure links associated with the specified - * connect point have vanished. - * - * @param connectPoint connect point - */ - void linksVanished(ConnectPoint connectPoint); - - /** - * Signals that infrastructure links associated with the specified - * device have vanished. - * - * @param deviceId device identifier - */ - void linksVanished(DeviceId deviceId); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkService.java deleted file mode 100644 index c27e3110..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkService.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import java.util.Set; - -import org.onosproject.event.ListenerService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; - -/** - * Service for interacting with the inventory of infrastructure links. - */ -public interface LinkService - extends ListenerService { - - /** - * Returns the count of all known infrastructure links. - * - * @return number of infrastructure links - */ - int getLinkCount(); - - /** - * Returns a collection of all known infrastructure links. - * - * @return all infrastructure links - */ - Iterable getLinks(); - - /** - * Returns a collection of all active infrastructure links. - * - * @return all infrastructure links - */ - Iterable getActiveLinks(); - - /** - * Returns set of all infrastructure links leading to and from the - * specified device. - * - * @param deviceId device identifier - * @return set of device links - */ - Set getDeviceLinks(DeviceId deviceId); - - /** - * Returns set of all infrastructure links leading from the specified device. - * - * @param deviceId device identifier - * @return set of device egress links - */ - Set getDeviceEgressLinks(DeviceId deviceId); - - /** - * Returns set of all infrastructure links leading to the specified device. - * - * @param deviceId device identifier - * @return set of device ingress links - */ - Set getDeviceIngressLinks(DeviceId deviceId); - - /** - * Returns set of all infrastructure links leading to and from the - * specified connection point. - * - * @param connectPoint connection point - * @return set of links - */ - Set getLinks(ConnectPoint connectPoint); - - /** - * Returns set of all infrastructure links leading from the specified - * connection point. - * - * @param connectPoint connection point - * @return set of device egress links - */ - Set getEgressLinks(ConnectPoint connectPoint); - - /** - * Returns set of all infrastructure links leading to the specified - * connection point. - * - * @param connectPoint connection point - * @return set of device ingress links - */ - Set getIngressLinks(ConnectPoint connectPoint); - - // FIXME: I don't think this makes sense; discuss and remove or adjust return - // to be a Set or add Link.Type parameter - /** - * Returns the infrastructure links between the specified source - * and destination connection points. - * - * @param src source connection point - * @param dst destination connection point - * @return link from source to destination; null if none found - */ - Link getLink(ConnectPoint src, ConnectPoint dst); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkStore.java deleted file mode 100644 index 04c8773b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkStore.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.store.Store; - -import java.util.Set; - -/** - * Manages inventory of infrastructure links; not intended for direct use. - */ -public interface LinkStore extends Store { - - /** - * Returns the number of links in the store. - * - * @return number of links - */ - int getLinkCount(); - - /** - * Returns an iterable collection of all links in the inventory. - * - * @return collection of all links - */ - Iterable getLinks(); - - /** - * Returns all links egressing from the specified device. - * - * @param deviceId device identifier - * @return set of device links - */ - Set getDeviceEgressLinks(DeviceId deviceId); - - /** - * Returns all links ingressing from the specified device. - * - * @param deviceId device identifier - * @return set of device links - */ - Set getDeviceIngressLinks(DeviceId deviceId); - - /** - * Returns the link between the two end-points. - * - * @param src source connection point - * @param dst destination connection point - * @return link or null if one not found between the end-points - */ - Link getLink(ConnectPoint src, ConnectPoint dst); - - /** - * Returns all links egressing from the specified connection point. - * - * @param src source connection point - * @return set of connection point links - */ - Set getEgressLinks(ConnectPoint src); - - /** - * Returns all links ingressing to the specified connection point. - * - * @param dst destination connection point - * @return set of connection point links - */ - Set getIngressLinks(ConnectPoint dst); - - /** - * Creates a new link, or updates an existing one, based on the given - * information. - * - * @param providerId provider identity - * @param linkDescription link description - * @return create or update link event, or null if no change resulted - */ - LinkEvent createOrUpdateLink(ProviderId providerId, - LinkDescription linkDescription); - - /** - * Removes the link, or marks it as inactive if the link is durable, - * based on the specified information. - * - * @param src link source - * @param dst link destination - * @return remove or update link event, or null if no change resulted - */ - LinkEvent removeOrDownLink(ConnectPoint src, ConnectPoint dst); - - /** - * Removes the link based on the specified information. - * - * @param src link source - * @param dst link destination - * @return remove link event, or null if no change resulted - */ - LinkEvent removeLink(ConnectPoint src, ConnectPoint dst); - - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkStoreDelegate.java deleted file mode 100644 index 1f66dd49..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/LinkStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import org.onosproject.store.StoreDelegate; - -/** - * Infrastructure link store delegate abstraction. - */ -public interface LinkStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/package-info.java deleted file mode 100644 index 57aa5fa2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/link/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Infrastructure link model & related services API definitions. - */ -package org.onosproject.net.link; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastEvent.java deleted file mode 100644 index 979194c3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastEvent.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.mcast; - -import com.google.common.annotations.Beta; -import org.onosproject.event.AbstractEvent; -import org.onosproject.net.ConnectPoint; - -import java.util.Optional; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * An entity representing a multicast event. Event either add or remove - * sinks or sources. - */ -@Beta -public class McastEvent extends AbstractEvent { - - private final Optional sink; - private final Optional source; - - public enum Type { - /** - * A new mcast route has been added. - */ - ROUTE_ADDED, - - /** - * A mcast route has been removed. - */ - ROUTE_REMOVED, - - /** - * A source for a mcast route (ie. the subject) has been added. - */ - SOURCE_ADDED, - - /** - * A sink for a mcast route (ie. the subject) has been added. - */ - SINK_ADDED, - - /** - * A source for a mcast route (ie. the subject) has been removed. - */ - SINK_REMOVED - } - - private McastEvent(McastEvent.Type type, McastRoute subject) { - super(type, subject); - sink = Optional.empty(); - source = Optional.empty(); - } - - private McastEvent(McastEvent.Type type, McastRoute subject, long time) { - super(type, subject, time); - sink = Optional.empty(); - source = Optional.empty(); - } - - public McastEvent(McastEvent.Type type, McastRoute subject, - ConnectPoint sink, - ConnectPoint source) { - super(type, subject); - this.sink = Optional.ofNullable(sink); - this.source = Optional.ofNullable(source); - } - - public McastEvent(McastEvent.Type type, McastRoute subject, long time, - ConnectPoint sink, - ConnectPoint source) { - super(type, subject, time); - this.sink = Optional.ofNullable(sink); - this.source = Optional.ofNullable(source); - } - - /** - * The sink which has been removed or added. The field may not be set - * if the sink has not been detected yet or has been removed. - * - * @return an optional connect point - */ - public Optional sink() { - return sink; - } - - /** - * The source which has been removed or added. - - * @return an optional connect point - */ - public Optional source() { - return source; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("type", type()) - .add("route", subject()) - .add("source", source) - .add("sinks", sink).toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastListener.java deleted file mode 100644 index 06449b99..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.mcast; - -import com.google.common.annotations.Beta; -import org.onosproject.event.EventListener; - -/** - * A listener interface for multicast events. - */ -@Beta -public interface McastListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastRoute.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastRoute.java deleted file mode 100644 index ff1292bf..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/McastRoute.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.mcast; - -import com.google.common.annotations.Beta; -import com.google.common.base.Objects; -import org.onlab.packet.IpPrefix; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * An entity representing a multicast route consisting of a source - * and a multicast group address. - */ -@Beta -public class McastRoute { - - public enum Type { - /** - * Route originates from PIM. - */ - PIM, - - /** - * Route originates from IGMP. - */ - IGMP, - - /** - * Route originates from other config (ie. REST, CLI). - */ - STATIC - } - - private final IpPrefix source; - private final IpPrefix group; - private final Type type; - - public McastRoute(IpPrefix source, IpPrefix group, Type type) { - checkNotNull(source, "Multicast route must have a source"); - checkNotNull(group, "Multicast route must specify a group address"); - checkNotNull(type, "Must indicate what type of route"); - this.source = source; - this.group = group; - this.type = type; - } - - /** - * Fetches the source address of this route. - * - * @return an ip address - */ - public IpPrefix source() { - return source; - } - - /** - * Fetches the group address of this route. - * - * @return an ip address - */ - public IpPrefix group() { - return group; - } - - /** - * Obtains how this route was created. - * @return a type of route - - */ - public Type type() { - return type; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("source", source) - .add("group", group) - .add("origin", type) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - McastRoute that = (McastRoute) o; - return Objects.equal(source, that.source) && - Objects.equal(group, that.group) && - Objects.equal(type, that.type); - } - - @Override - public int hashCode() { - return Objects.hashCode(source, group, type); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/MulticastRouteService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/MulticastRouteService.java deleted file mode 100644 index bf65033a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/MulticastRouteService.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.mcast; - -import com.google.common.annotations.Beta; -import org.onosproject.event.ListenerService; -import org.onosproject.net.ConnectPoint; - -import java.util.List; - -/** - * A service interface for maintaining multicast information. - */ -@Beta -public interface MulticastRouteService - extends ListenerService { - - /** - * Adds a route to the information base. - * - * @param route a multicast route - */ - void add(McastRoute route); - - /** - * Removes a route from the information base. - * - * @param route a multicast route - */ - void remove(McastRoute route); - - /** - * Adds a source connection to the route from where the - * data stream is originating. - * - * @param route the multicast route - * @param connectPoint a source connect point - */ - void addSource(McastRoute route, ConnectPoint connectPoint); - - /** - * Adds a sink to the route to which a data stream should be - * sent to. - * - * @param route a multicast route - * @param connectPoint a sink connect point - */ - void addSink(McastRoute route, ConnectPoint connectPoint); - - /** - * Removes a sink from the route. - * - * @param route the multicast route - * @param connectPoint a sink connect point - */ - void removeSink(McastRoute route, ConnectPoint connectPoint); - - /** - * Find the data source association for this multicast route. - * - * @param route a multicast route - * @return a connect point - */ - ConnectPoint fetchSource(McastRoute route); - - /** - * Find the list of sinks for this route. - * - * @param route a multicast route - * @return a list of connect points - */ - List fetchSinks(McastRoute route); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/package-info.java deleted file mode 100644 index e8dcc7b8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/mcast/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * External model entities of the multicast RIB. - */ -package org.onosproject.net.mcast; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/Band.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/Band.java deleted file mode 100644 index 2bfafad2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/Band.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -/** - * Represents a band used within a meter. - */ -public interface Band { - - /** - * Specifies the type of band. - */ - enum Type { - /** - * Simple rate limiter which drops packets - * when the rate is exceeded. - */ - DROP, - - /** - * defines a simple DiffServ policer that remark - * the drop precedence of the DSCP field in the - * IP header of the packets that exceed the band - * rate value. - */ - REMARK - } - - /** - * The rate at which this meter applies. - * - * @return the long value of the rate - */ - long rate(); - - /** - * The burst size at which the meter applies. - * - * @return the long value of the size - */ - long burst(); - - /** - * Only meaningful in the case of a REMARK band type. - * indicates by which amount the drop precedence of - * the packet should be increase if the band is exceeded. - * - * @return a short value - */ - short dropPrecedence(); - - /** - * Signals the type of band to create. - * - * @return a band type - */ - Type type(); - - /** - * Returns the packets seen by this band. - * - * @return a long value - */ - long packets(); - - /** - * Return the bytes seen by this band. - * - * @return a byte counter - */ - long bytes(); - - interface Builder { - - /** - * Assigns a rate to this band. The units for this rate - * are defined in the encapsulating meter. - * - * @param rate a long value - * @return this - */ - Builder withRate(long rate); - - /** - * Assigns a burst size to this band. Only meaningful if - * the encapsulating meter is of burst type. - * - * @param burstSize a long value. - * @return this - */ - Builder burstSize(long burstSize); - - /** - * Assigns the drop precedence for this band. Only meaningful if - * the band is of REMARK type. - * - * @param prec a short value - * @return this - */ - Builder dropPrecedence(short prec); - - /** - * Assigns the @See Type of this band. - * - * @param type a band type - * @return this - */ - Builder ofType(Type type); - - /** - * Builds the band. - * - * @return a band - */ - Band build(); - - } - - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/BandEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/BandEntry.java deleted file mode 100644 index 03145e91..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/BandEntry.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -/** - * Represents a stored band. - */ -public interface BandEntry extends Band { - - /** - * Sets the number of packets seen by this band. - * - * @param packets a packet count - */ - void setPackets(long packets); - - /** - * Sets the number of bytes seen by this band. - * - * @param bytes a byte counter - */ - void setBytes(long bytes); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java deleted file mode 100644 index 58a24766..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; - -/** - * A default implementation for a Band. - */ -public final class DefaultBand implements Band, BandEntry { - - private final Type type; - private final long rate; - //TODO: should be made optional - private final Long burstSize; - private final Short prec; - private long packets; - private long bytes; - - public DefaultBand(Type type, long rate, - Long burstSize, Short prec) { - this.type = type; - this.rate = rate; - this.burstSize = burstSize; - this.prec = prec; - } - - @Override - public long rate() { - return rate; - } - - @Override - public long burst() { - return burstSize; - } - - @Override - public short dropPrecedence() { - return prec; - } - - @Override - public Type type() { - return type; - } - - @Override - public long packets() { - return packets; - } - - @Override - public long bytes() { - return bytes; - } - - @Override - public void setPackets(long packets) { - this.packets = packets; - } - - @Override - public void setBytes(long bytes) { - this.bytes = bytes; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("rate", rate) - .add("burst-size", burstSize) - .add("type", type) - .add("drop-precedence", prec).toString(); - } - - public static Builder builder() { - return new Builder(); - } - - public static final class Builder implements Band.Builder { - - private long rate; - private Long burstSize; - private Short prec; - private Type type; - - @Override - public Band.Builder withRate(long rate) { - this.rate = rate; - return this; - } - - @Override - public Band.Builder burstSize(long burstSize) { - this.burstSize = burstSize; - return this; - } - - @Override - public Band.Builder dropPrecedence(short prec) { - this.prec = prec; - return this; - } - - @Override - public Band.Builder ofType(Type type) { - this.type = type; - return this; - } - - @Override - public DefaultBand build() { - checkArgument(type != Type.REMARK && prec == null, - "Only REMARK bands can have a precendence."); - - return new DefaultBand(type, rate, burstSize, prec); - } - - - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultMeter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultMeter.java deleted file mode 100644 index f7d6210d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultMeter.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableSet; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; - -import java.util.Collection; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * A default implementation of a meter. - */ -public final class DefaultMeter implements Meter, MeterEntry { - - - private final MeterId id; - private final ApplicationId appId; - private final Unit unit; - private final boolean burst; - private final Collection bands; - private final DeviceId deviceId; - - private MeterState state; - private long life; - private long refCount; - private long packets; - private long bytes; - - private DefaultMeter(DeviceId deviceId, MeterId id, ApplicationId appId, - Unit unit, boolean burst, - Collection bands) { - this.deviceId = deviceId; - this.id = id; - this.appId = appId; - this.unit = unit; - this.burst = burst; - this.bands = bands; - } - - @Override - public DeviceId deviceId() { - return deviceId; - } - - @Override - public MeterId id() { - return id; - } - - @Override - public ApplicationId appId() { - return appId; - } - - @Override - public Unit unit() { - return unit; - } - - @Override - public boolean isBurst() { - return burst; - } - - @Override - public Collection bands() { - return bands; - } - - @Override - public MeterState state() { - return state; - } - - @Override - public long life() { - return life; - } - - @Override - public long referenceCount() { - return refCount; - } - - @Override - public long packetsSeen() { - return packets; - } - - @Override - public long bytesSeen() { - return bytes; - } - - public static Builder builder() { - return new Builder(); - } - - @Override - public void setState(MeterState state) { - this.state = state; - } - - @Override - public void setLife(long life) { - this.life = life; - } - - @Override - public void setReferenceCount(long count) { - this.refCount = count; - } - - @Override - public void setProcessedPackets(long packets) { - this.packets = packets; - } - - @Override - public void setProcessedBytes(long bytes) { - this.bytes = bytes; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("device", deviceId) - .add("id", id) - .add("appId", appId.name()) - .add("unit", unit) - .add("isBurst", burst) - .add("state", state) - .add("bands", bands).toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - DefaultMeter that = (DefaultMeter) o; - return Objects.equal(id, that.id) && - Objects.equal(appId, that.appId) && - Objects.equal(unit, that.unit) && - Objects.equal(deviceId, that.deviceId); - } - - @Override - public int hashCode() { - return Objects.hashCode(id, appId, unit, deviceId); - } - - public static final class Builder implements Meter.Builder { - - private MeterId id; - private ApplicationId appId; - private Unit unit = Unit.KB_PER_SEC; - private boolean burst = false; - private Collection bands; - private DeviceId deviceId; - - - @Override - public Meter.Builder forDevice(DeviceId deviceId) { - this.deviceId = deviceId; - return this; - } - - @Override - public Meter.Builder withId(MeterId id) { - this.id = id; - return this; - } - - @Override - public Meter.Builder fromApp(ApplicationId appId) { - this.appId = appId; - return this; - } - - @Override - public Meter.Builder withUnit(Unit unit) { - this.unit = unit; - return this; - } - - @Override - public Meter.Builder burst() { - this.burst = true; - return this; - } - - @Override - public Meter.Builder withBands(Collection bands) { - this.bands = ImmutableSet.copyOf(bands); - return this; - } - - @Override - public DefaultMeter build() { - checkNotNull(deviceId, "Must specify a device"); - checkNotNull(bands, "Must have bands."); - checkArgument(bands.size() > 0, "Must have at least one band."); - checkNotNull(appId, "Must have an application id"); - checkNotNull(id, "Must specify a meter id"); - return new DefaultMeter(deviceId, id, appId, unit, burst, bands); - } - - - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultMeterRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultMeterRequest.java deleted file mode 100644 index 51394c30..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/DefaultMeterRequest.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import com.google.common.collect.ImmutableSet; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; - -import java.util.Collection; -import java.util.Optional; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * A default implementation of a meter. - */ -public final class DefaultMeterRequest implements MeterRequest { - - - - private final ApplicationId appId; - private final Meter.Unit unit; - private final boolean burst; - private final Collection bands; - private final DeviceId deviceId; - private final Optional context; - private final Type op; - - private DefaultMeterRequest(DeviceId deviceId, ApplicationId appId, - Meter.Unit unit, boolean burst, - Collection bands, MeterContext context, - Type op) { - this.deviceId = deviceId; - this.appId = appId; - this.unit = unit; - this.burst = burst; - this.bands = bands; - this.context = Optional.ofNullable(context); - this.op = op; - } - - @Override - public DeviceId deviceId() { - return deviceId; - } - - - @Override - public ApplicationId appId() { - return appId; - } - - @Override - public Meter.Unit unit() { - return unit; - } - - @Override - public boolean isBurst() { - return burst; - } - - @Override - public Collection bands() { - return bands; - } - - @Override - public Optional context() { - return context; - } - - - - public static Builder builder() { - return new Builder(); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("device", deviceId) - .add("appId", appId.name()) - .add("unit", unit) - .add("isBurst", burst) - .add("bands", bands).toString(); - } - - public static final class Builder implements MeterRequest.Builder { - - private ApplicationId appId; - private Meter.Unit unit = Meter.Unit.KB_PER_SEC; - private boolean burst = false; - private Collection bands; - private DeviceId deviceId; - private MeterContext context; - private Optional desiredId = Optional.empty(); - - - @Override - public MeterRequest.Builder forDevice(DeviceId deviceId) { - this.deviceId = deviceId; - return this; - } - - @Override - public MeterRequest.Builder fromApp(ApplicationId appId) { - this.appId = appId; - return this; - } - - @Override - public MeterRequest.Builder withUnit(Meter.Unit unit) { - this.unit = unit; - return this; - } - - @Override - public MeterRequest.Builder burst() { - this.burst = true; - return this; - } - - @Override - public MeterRequest.Builder withBands(Collection bands) { - this.bands = ImmutableSet.copyOf(bands); - return this; - } - - @Override - public MeterRequest.Builder withContext(MeterContext context) { - this.context = context; - return this; - } - - @Override - public MeterRequest add() { - validate(); - return new DefaultMeterRequest(deviceId, appId, unit, burst, bands, - context, Type.ADD); - } - - @Override - public MeterRequest remove() { - validate(); - return new DefaultMeterRequest(deviceId, appId, unit, burst, bands, - context, Type.REMOVE); - } - - private void validate() { - checkNotNull(deviceId, "Must specify a device"); - checkNotNull(bands, "Must have bands."); - checkArgument(bands.size() > 0, "Must have at least one band."); - checkNotNull(appId, "Must have an application id"); - } - - - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/Meter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/Meter.java deleted file mode 100644 index 98ebc350..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/Meter.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; - -import java.util.Collection; - -/** - * Represents a generalized meter to be deployed on a device. - */ -public interface Meter { - - enum Unit { - /** - * Packets per second. - */ - PKTS_PER_SEC, - - /** - * Kilo bits per second. - */ - KB_PER_SEC - } - - /** - * The target device for this meter. - * - * @return a device id - */ - DeviceId deviceId(); - - /** - * This meters id. - * - * @return a meter id - */ - MeterId id(); - - /** - * The id of the application which created this meter. - * - * @return an application id - */ - ApplicationId appId(); - - /** - * The unit used within this meter. - * - * @return the unit - */ - Unit unit(); - - /** - * Signals whether this meter applies to bursts only. - * - * @return a boolean - */ - boolean isBurst(); - - /** - * The collection of bands to apply on the dataplane. - * - * @return a collection of bands. - */ - Collection bands(); - - /** - * Fetches the state of this meter. - * - * @return a meter state - */ - MeterState state(); - - /** - * The lifetime in seconds of this meter. - * - * @return number of seconds - */ - long life(); - - /** - * The number of flows pointing to this meter. - * - * @return a reference count - */ - long referenceCount(); - - /** - * Number of packets processed by this meter. - * - * @return a packet count - */ - long packetsSeen(); - - /** - * Number of bytes processed by this meter. - * - * @return a byte count - */ - long bytesSeen(); - - /** - * A meter builder. - */ - interface Builder { - - /** - * Assigns the target device for this meter. - * - * @param deviceId a device id - * @return this - */ - Builder forDevice(DeviceId deviceId); - - /** - * Assigns the id to this meter. - * - * @param id a e - * @return this - */ - Builder withId(MeterId id); - - /** - * Assigns the application that built this meter. - * - * @param appId an application id - * @return this - */ - Builder fromApp(ApplicationId appId); - - /** - * Assigns the @See Unit to use for this meter. - * Defaults to kb/s - * - * @param unit a unit - * @return this - */ - Builder withUnit(Unit unit); - - /** - * Sets this meter as applicable to burst traffic only. - * Defaults to false. - * - * @return this - */ - Builder burst(); - - /** - * Assigns bands to this meter. There must be at least one band. - * - * @param bands a collection of bands - * @return this - */ - Builder withBands(Collection bands); - - /** - * Builds the meter based on the specified parameters. - * - * @return a meter - */ - Meter build(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterContext.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterContext.java deleted file mode 100644 index 574bdca9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterContext.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -/** - * A context permitting the application to be notified when the - * meter installation has been successful. - */ -public interface MeterContext { - - /** - * Invoked on successful installation of the meter. - * - * @param op a meter - */ - default void onSuccess(MeterRequest op) {} - - /** - * Invoked when error is encountered while installing a meter. - * - * @param op a meter - * @param reason the reason why it failed - */ - default void onError(MeterRequest op, MeterFailReason reason) {} -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterEntry.java deleted file mode 100644 index 178a564c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterEntry.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -/** - * Represents a stored meter. - */ -public interface MeterEntry extends Meter { - - /** - * Updates the state of this meter. - * - * @param state a meter state - */ - void setState(MeterState state); - - /** - * Set the amount of time the meter has existed in seconds. - * - * @param life number of seconds - */ - void setLife(long life); - - /** - * Sets the number of flows which are using this meter. - * - * @param count a reference count. - */ - void setReferenceCount(long count); - - /** - * Updates the number of packets seen by this meter. - * - * @param packets a packet count. - */ - void setProcessedPackets(long packets); - - /** - * Updates the number of bytes seen by the meter. - * - * @param bytes a byte counter. - */ - void setProcessedBytes(long bytes); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterEvent.java deleted file mode 100644 index 72f0a53a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterEvent.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import org.onosproject.event.AbstractEvent; - -/** - * Entity that represents Meter events. - */ -public class MeterEvent extends AbstractEvent { - - - public enum Type { - /** - * A meter addition was requested. - */ - METER_ADD_REQ, - - /** - * A meter removal was requested. - */ - METER_REM_REQ - } - - - /** - * Creates an event of a given type and for the specified meter and the - * current time. - * - * @param type meter event type - * @param meter event subject - */ - public MeterEvent(Type type, Meter meter) { - super(type, meter); - } - - /** - * Creates an event of a given type and for the specified meter and time. - * - * @param type meter event type - * @param meter event subject - * @param time occurrence time - */ - public MeterEvent(Type type, Meter meter, long time) { - super(type, meter, time); - } - - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterFailReason.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterFailReason.java deleted file mode 100644 index 8683e2a2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterFailReason.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -/** - * Enum used to represent a meter failure condition. - */ -public enum MeterFailReason { - /** - * A meter with the same identifier already exists. - * Essentially a duplicate meter exists. - */ - EXISTING_METER, - - /** - * The device does not support any more meters. - */ - OUT_OF_METERS, - - /** - * The device does not support any more bands for this meter. - */ - OUT_OF_BANDS, - - /** - * The meter that was attempted to be modified is unknown. - */ - UNKNOWN, - - /** - * The operation for this meter installation timed out. - */ - TIMEOUT, - - /** - * Invalid meter definition. - */ - INVALID_METER, - - /** - * The target device is unknown. - */ - UNKNOWN_DEVICE, - - /** - * Unknown command. - */ - UNKNOWN_COMMAND, - - /** - * Unknown flags. - */ - UNKNOWN_FLAGS, - - /** - * Bad rate value. - */ - BAD_RATE, - - /** - * Bad burst size value. - */ - BAD_BURST, - - /** - * Bad band. - */ - BAD_BAND, - - /** - * Bad value value. - */ - BAD_BAND_VALUE - - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterId.java deleted file mode 100644 index 872de2d8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterId.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * A representation of a meter id. - * Uniquely identifies a meter system wide. - */ -public final class MeterId { - - static final long MAX = 0xFFFF0000; - - private final long id; - - public static final MeterId SLOWPATH = new MeterId(0xFFFFFFFD); - public static final MeterId CONTROLLER = new MeterId(0xFFFFFFFE); - public static final MeterId ALL = new MeterId(0xFFFFFFFF); - - private MeterId(long id) { - checkArgument(id >= MAX, "id cannot be larger than 0xFFFF0000"); - this.id = id; - } - - /** - * The integer representation of the meter id. - * - * @return a long - */ - public long id() { - return id; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - MeterId meterId = (MeterId) o; - - return id == meterId.id; - - } - - @Override - public int hashCode() { - return Long.hashCode(id); - } - - @Override - public String toString() { - return Long.toHexString(this.id); - } - - public static MeterId meterId(long id) { - return new MeterId(id); - - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterKey.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterKey.java deleted file mode 100644 index 5bc01b02..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterKey.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import com.google.common.base.Objects; -import org.onosproject.net.DeviceId; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * A meter key represents a meter uniquely. - */ -public final class MeterKey { - - private final DeviceId deviceId; - private final MeterId id; - - private MeterKey(DeviceId deviceId, MeterId id) { - this.deviceId = deviceId; - this.id = id; - } - - public DeviceId deviceId() { - return deviceId; - } - - public MeterId meterId() { - return id; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - MeterKey meterKey = (MeterKey) o; - return Objects.equal(deviceId, meterKey.deviceId) && - Objects.equal(id, meterKey.id); - } - - @Override - public int hashCode() { - return Objects.hashCode(deviceId, id); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("deviceId", deviceId) - .add("meterId", id).toString(); - } - - public static MeterKey key(DeviceId deviceId, MeterId id) { - return new MeterKey(deviceId, id); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterListener.java deleted file mode 100644 index 0a5e203f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving Meter related events. - */ -public interface MeterListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterOperation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterOperation.java deleted file mode 100644 index 437dd269..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterOperation.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of an operation on the meter table. - */ -public class MeterOperation { - - - /** - * Tyoe of meter operation. - */ - public enum Type { - ADD, - REMOVE, - MODIFY - } - - private final Meter meter; - private final Type type; - - - public MeterOperation(Meter meter, Type type) { - this.meter = meter; - this.type = type; - } - - /** - * Returns the type of operation. - * - * @return type - */ - public Type type() { - return type; - } - - /** - * Returns the meter. - * - * @return a meter - */ - public Meter meter() { - return meter; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("meter", meter) - .add("type", type) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - MeterOperation that = (MeterOperation) o; - return Objects.equal(meter, that.meter) && - Objects.equal(type, that.type); - } - - @Override - public int hashCode() { - return Objects.hashCode(meter, type); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterOperations.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterOperations.java deleted file mode 100644 index 92b0c3aa..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterOperations.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import com.google.common.collect.ImmutableList; - -import java.util.List; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable collection of meter operation to be used between - * core and provider layers of group subsystem. - * - */ -public final class MeterOperations { - private final List operations; - - /** - * Creates a immutable list of meter operation. - * - * @param operations list of meter operation - */ - public MeterOperations(List operations) { - this.operations = ImmutableList.copyOf(checkNotNull(operations)); - } - - /** - * Returns immutable list of Meter operation. - * - * @return list of Meter operation - */ - public List operations() { - return operations; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProvider.java deleted file mode 100644 index 4655e234..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProvider.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.provider.Provider; - -/** - * Abstraction of a Meter provider. - */ -public interface MeterProvider extends Provider { - - /** - * Performs a batch of meter operation on the specified device with the - * specified parameters. - * - * @param deviceId device identifier on which the batch of group - * operations to be executed - * @param meterOps immutable list of meter operation - */ - void performMeterOperation(DeviceId deviceId, - MeterOperations meterOps); - - - /** - * Performs a meter operation on the specified device with the - * specified parameters. - * - * @param deviceId device identifier on which the batch of group - * operations to be executed - * @param meterOp a meter operation - */ - void performMeterOperation(DeviceId deviceId, - MeterOperation meterOp); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProviderRegistry.java deleted file mode 100644 index 019ca19a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProviderRegistry.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - - -import org.onosproject.net.provider.ProviderRegistry; - -/** - * Abstraction for a meter provider registry. - */ -public interface MeterProviderRegistry - extends ProviderRegistry { -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProviderService.java deleted file mode 100644 index 85c0c43e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterProviderService.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.provider.ProviderService; - -import java.util.Collection; - -/** - * Service through which meter providers can inject information - * into the core. - */ -public interface MeterProviderService extends ProviderService { - - /** - * Notifies the core that a meter operaton failed for a - * specific reason. - * @param operation the failed operation - * @param reason the failure reason - */ - void meterOperationFailed(MeterOperation operation, - MeterFailReason reason); - - /** - * Pushes the collection of meters observed on the data plane as - * well as their associated statistics. - * - * @param deviceId a device id - * @param meterEntries a collection of meter entries - */ - void pushMeterMetrics(DeviceId deviceId, - Collection meterEntries); - - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterRequest.java deleted file mode 100644 index fd11ca41..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterRequest.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; - -import java.util.Collection; -import java.util.Optional; - -/** - * Represents a generalized meter request to be deployed on a device. - */ -public interface MeterRequest { - - enum Type { - ADD, - MODIFY, - REMOVE - } - - /** - * The target device for this meter. - * - * @return a device id - */ - DeviceId deviceId(); - - /** - * The id of the application which created this meter. - * - * @return an application id - */ - ApplicationId appId(); - - /** - * The unit used within this meter. - * - * @return the unit - */ - Meter.Unit unit(); - - /** - * Signals whether this meter applies to bursts only. - * - * @return a boolean - */ - boolean isBurst(); - - /** - * The collection of bands to apply on the dataplane. - * - * @return a collection of bands. - */ - Collection bands(); - - /** - * Returns the callback context for this meter. - * - * @return an optional meter context - */ - Optional context(); - - /** - * A meter builder. - */ - interface Builder { - - /** - * Assigns the target device for this meter. - * - * @param deviceId a device id - * @return this - */ - Builder forDevice(DeviceId deviceId); - - /** - * Assigns the application that built this meter. - * - * @param appId an application id - * @return this - */ - Builder fromApp(ApplicationId appId); - - /** - * Assigns the @See Unit to use for this meter. - * Defaults to kb/s - * - * @param unit a unit - * @return this - */ - Builder withUnit(Meter.Unit unit); - - /** - * Sets this meter as applicable to burst traffic only. - * Defaults to false. - * - * @return this - */ - Builder burst(); - - /** - * Assigns bands to this meter. There must be at least one band. - * - * @param bands a collection of bands - * @return this - */ - Builder withBands(Collection bands); - - /** - * Assigns an execution context for this meter request. - * - * @param context a meter context - * @return this - */ - Builder withContext(MeterContext context); - - /** - * Requests the addition of a meter. - * - * @return a meter request - */ - MeterRequest add(); - - /** - * Requests the removal of a meter. - * - * @return a meter request - */ - MeterRequest remove(); - - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterService.java deleted file mode 100644 index 2e07cb67..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterService.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import org.onosproject.event.ListenerService; -import org.onosproject.net.DeviceId; - -import java.util.Collection; - -/** - * Service for add/updating and removing meters. Meters are - * are assigned to flow to rate limit them and provide a certain - * quality of service. - */ -public interface MeterService - extends ListenerService { - - /** - * Adds a meter to the system and performs it installation. - * - * @param meter a meter - * @return a meter (with a meter id) - */ - Meter submit(MeterRequest meter); - - /** - * Remove a meter from the system and the dataplane. - * - * @param meter a meter to remove - * @param meterId the meter id of the meter to remove. - */ - void withdraw(MeterRequest meter, MeterId meterId); - - /** - * Fetch the meter by the meter id. - * - * @param deviceId a device id - * @param id a meter id - * @return a meter - */ - Meter getMeter(DeviceId deviceId, MeterId id); - - /** - * Fetches all the meters. - * - * @return a collection of meters - */ - Collection getAllMeters(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterState.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterState.java deleted file mode 100644 index 3b936099..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterState.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -/** - * Represents the state of the meter as seen by the store. - */ -public enum MeterState { - - /** - * The meter is in the process of being added. - */ - PENDING_ADD, - - /** - * THe meter has been added. - */ - ADDED, - - /** - * The meter is in the process of being removed. - */ - PENDING_REMOVE, - - /** - * The meter has been removed. - */ - REMOVED, - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java deleted file mode 100644 index f429e95a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import org.onosproject.store.Store; - -import java.util.Collection; -import java.util.concurrent.CompletableFuture; - -/** - * Entity that stores and distributed meter objects. - */ -public interface MeterStore extends Store { - - /** - * Adds a meter to the store. - * - * @param meter a meter - * @return a future indicating the result of the store operation - */ - CompletableFuture storeMeter(Meter meter); - - /** - * Deletes a meter from the store. - * - * @param meter a meter - * @return a future indicating the result of the store operation - */ - CompletableFuture deleteMeter(Meter meter); - - /** - * Updates a meter whose meter id is the same as the passed meter. - * - * @param meter a new meter - * @return a future indicating the result of the store operation - */ - CompletableFuture updateMeter(Meter meter); - - /** - * Updates a given meter's state with the provided state. - * - * @param meter a meter - */ - void updateMeterState(Meter meter); - - /** - * Obtains a meter matching the given meter key. - * - * @param key a meter key - * @return a meter - */ - Meter getMeter(MeterKey key); - - /** - * Returns all meters stored in the store. - * - * @return a collection of meters - */ - Collection getAllMeters(); - - /** - * Update the store by deleting the failed meter. - * Notifies the delegate that the meter failed to allow it - * to nofity the app. - * - * @param op a failed meter operation - * @param reason a failure reason - */ - void failedMeter(MeterOperation op, MeterFailReason reason); - - /** - * Delete this meter immediately. - * @param m a meter - */ - void deleteMeterNow(Meter m); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStoreDelegate.java deleted file mode 100644 index 9bfeb42f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import org.onosproject.store.StoreDelegate; - -/** - * Meter store delegate abstraction. - */ -public interface MeterStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStoreResult.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStoreResult.java deleted file mode 100644 index 7a26746f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/MeterStoreResult.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import java.util.Optional; - -/** - * An entity used to indicate whether the store operation passed. - */ -public final class MeterStoreResult { - - - private final Type type; - private final Optional reason; - - public enum Type { - SUCCESS, - FAIL - } - - private MeterStoreResult(Type type, MeterFailReason reason) { - this.type = type; - this.reason = Optional.ofNullable(reason); - } - - public Type type() { - return type; - } - - public Optional reason() { - return reason; - } - - /** - * A successful store opertion. - * - * @return a meter store result - */ - public static MeterStoreResult success() { - return new MeterStoreResult(Type.SUCCESS, null); - } - - /** - * A failed store operation. - * - * @param reason a failure reason - * @return a meter store result - */ - public static MeterStoreResult fail(MeterFailReason reason) { - return new MeterStoreResult(Type.FAIL, reason); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/package-info.java deleted file mode 100644 index 258634da..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/meter/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Flow meter model and related services. - */ -package org.onosproject.net.meter; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceAdminService.java deleted file mode 100644 index 28c429bd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceAdminService.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableList; - -import java.util.List; - -/** - * Service for administering resource service behavior. - */ -@Beta -public interface ResourceAdminService { - /** - * Registers the specified resources. - * - * @param resources resources to be registered - * @return true if registration is successfully done, false otherwise. Registration - * succeeds when each resource is not registered or unallocated. - */ - default boolean registerResources(ResourcePath... resources) { - return registerResources(ImmutableList.copyOf(resources)); - } - - /** - * Registers the specified resources. - * - * @param resources resources to be registered - * @return true if registration is successfully done, false otherwise. Registration - * succeeds when each resource is not registered or unallocated. - */ - boolean registerResources(List resources); - - /** - * Unregisters the specified resources. - * - * @param resources resources to be unregistered - * @return true if unregistration is successfully done, false otherwise. Unregistration - * succeeds when each resource is not registered or unallocated. - */ - default boolean unregisterResources(ResourcePath... resources) { - return unregisterResources(ImmutableList.copyOf(resources)); - } - - /** - * Unregisters the specified resources. - * - * @param resources resources to be unregistered - * @return true if unregistration is successfully done, false otherwise. Unregistration - * succeeds when each resource is not registered or unallocated. - */ - boolean unregisterResources(List resources); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceAllocation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceAllocation.java deleted file mode 100644 index e6980267..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceAllocation.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Represents allocation of resource which is identified by the specifier. - */ -@Beta -public class ResourceAllocation { - - private final ResourcePath resource; - private final ResourceConsumer consumer; - - /** - * Creates an instance with the specified subject, resource and consumer. - * - * @param resource resource of the subject - * @param consumer consumer ot this resource - */ - public ResourceAllocation(ResourcePath resource, ResourceConsumer consumer) { - this.resource = checkNotNull(resource); - this.consumer = consumer; - } - - // for serialization - private ResourceAllocation() { - this.resource = null; - this.consumer = null; - } - - /** - * Returns the specifier of the resource this allocation uses. - * - * @return the specifier of the resource this allocation uses - */ - public ResourcePath resource() { - return resource; - } - - /** - * Returns the consumer of this resource. - * - * @return the consumer of this resource - */ - public ResourceConsumer consumer() { - return consumer; - } - - @Override - public int hashCode() { - return Objects.hash(resource, consumer); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof ResourceAllocation)) { - return false; - } - final ResourceAllocation that = (ResourceAllocation) obj; - return Objects.equals(this.resource, that.resource) - && Objects.equals(this.consumer, that.consumer); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("resource", resource) - .add("consumer", consumer) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceConsumer.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceConsumer.java deleted file mode 100644 index 1f67e204..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceConsumer.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import com.google.common.annotations.Beta; - -/** - * Marker interface representing an entity using resource. - */ -@Beta -public interface ResourceConsumer { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceEvent.java deleted file mode 100644 index 98abf301..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceEvent.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import com.google.common.annotations.Beta; -import org.onosproject.event.AbstractEvent; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Describes an event related to a resource. - */ -@Beta -public final class ResourceEvent extends AbstractEvent { - - /** - * Type of resource events. - */ - @Beta - public enum Type { - /** - * Signifies that a new resource has been detected. - */ - RESOURCE_ADDED, - - /** - * Signifies that a resource has been removed. - */ - RESOURCE_REMOVED - } - - /** - * Create a resource event. - * - * @param type type of resource event - * @param subject subject of resource event - */ - public ResourceEvent(Type type, ResourcePath subject) { - super(checkNotNull(type), checkNotNull(subject)); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceListener.java deleted file mode 100644 index 3f871900..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import com.google.common.annotations.Beta; -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving resource related events. - */ -@Beta -public interface ResourceListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java deleted file mode 100644 index 72f8ac01..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourcePath.java +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; - -import java.util.LinkedList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; - -/** - * An object that is used to locate a resource in a network. - * A ResourcePath represents a path that is hierarchical and composed of a sequence - * of elementary resources that are not globally identifiable. A ResourcePath can be a globally - * unique resource identifier. - * - * Two types of resource are considered. One is discrete type and the other is continuous type. - * Discrete type resource is a resource whose amount is measured as a discrete unit. VLAN ID and - * MPLS label are examples of discrete type resource. Continuous type resource is a resource whose - * amount is measured as a continuous value. Bandwidth is an example of continuous type resource. - * A double value is associated with a continuous type value. - * - * Users of this class must keep the semantics of resources regarding the hierarchical structure. - * For example, resource path, Device:1/Port:1/VLAN ID:100, is valid, but resource path, - * VLAN ID:100/Device:1/Port:1 is not valid because a link is not a sub-component of a VLAN ID. - */ -@Beta -public abstract class ResourcePath { - - private final Discrete parent; - private final Object last; - - public static final Discrete ROOT = new Discrete(); - - public static ResourcePath discrete(DeviceId device) { - return new Discrete(ImmutableList.of(device)); - } - - /** - * Creates an resource path which represents a discrete-type resource from the specified components. - * - * @param device device ID which is the first component of the path - * @param components following components of the path. The order represents hierarchical structure of the resource. - * @return resource path instance - */ - public static ResourcePath discrete(DeviceId device, Object... components) { - return new Discrete(ImmutableList.builder() - .add(device) - .add(components) - .build()); - } - - /** - * Creates an resource path which represents a discrete-type resource from the specified components. - * - * @param device device ID which is the first component of the path - * @param port port number which is the second component of the path - * @param components following components of the path. The order represents hierarchical structure of the resource. - * @return resource path instance - */ - public static ResourcePath discrete(DeviceId device, PortNumber port, Object... components) { - return new Discrete(ImmutableList.builder() - .add(device) - .add(port) - .add(components) - .build()); - } - - /** - * Creates an resource path which represents a continuous-type resource from the specified components. - * - * @param value amount of the resource - * @param device device ID which is the first component of the path - * @param components following components of the path. The order represents hierarchical structure of the resource. - * @return resource path instance - */ - public static ResourcePath continuous(double value, DeviceId device, Object... components) { - checkArgument(components.length > 0, - "Length of components must be greater thant 0, but " + components.length); - - return new Continuous(ImmutableList.builder() - .add(device) - .add(components) - .build(), value); - } - - /** - * Creates an resource path which represents a continuous-type resource from the specified components. - * - * @param value amount of the resource - * @param device device ID which is the first component of the path. - * @param port port number which is the second component of the path. - * @param components following components of the path. The order represents hierarchical structure of the resource. - * @return resource path instance - */ - public static ResourcePath continuous(double value, DeviceId device, PortNumber port, Object... components) { - return new Continuous(ImmutableList.builder() - .add(device) - .add(port) - .add(components) - .build(), value); - } - - /** - * Creates an resource path from the specified components. - * - * @param components components of the path. The order represents hierarchical structure of the resource. - */ - protected ResourcePath(List components) { - checkNotNull(components); - checkArgument(!components.isEmpty()); - - LinkedList children = new LinkedList<>(components); - this.last = children.pollLast(); - if (children.isEmpty()) { - this.parent = ROOT; - } else { - this.parent = new Discrete(children); - } - } - - /** - * Creates an resource path from the specified parent and child. - * - * @param parent the parent of this resource - * @param last a child of the parent - */ - protected ResourcePath(Discrete parent, Object last) { - checkNotNull(parent); - checkNotNull(last); - - this.parent = parent; - this.last = last; - } - - // for serialization - private ResourcePath() { - this.parent = null; - this.last = null; - } - - /** - * Returns the components of this resource path. - * - * @return the components of this resource path - */ - public List components() { - LinkedList components = new LinkedList<>(); - - ResourcePath current = this; - while (current.parent().isPresent()) { - components.addFirst(current.last); - current = current.parent; - } - - return components; - } - - /** - * Returns the parent resource path of this instance. - * E.g. if this path is Link:1/VLAN ID:100, the return value is the resource path for Link:1. - * - * @return the parent resource path of this instance. - * If there is no parent, empty instance will be returned. - */ - public Optional parent() { - return Optional.ofNullable(parent); - } - - /** - * Returns a child resource path of this instance with specifying the child object. - * The child resource path is discrete-type. - * - * @param child child object - * @return a child resource path - */ - public ResourcePath child(Object child) { - checkState(this instanceof Discrete); - - return new Discrete((Discrete) this, child); - } - - /** - * Returns a child resource path of this instance with specifying a child object and - * value. The child resource path is continuous-type. - * - * @param child child object - * @param value value - * @return a child resource path - */ - public ResourcePath child(Object child, double value) { - checkState(this instanceof Discrete); - - return new Continuous((Discrete) this, child, value); - } - - /** - * Returns the last component of this instance. - * - * @return the last component of this instance. - * The return value is equal to the last object of {@code components()}. - */ - public Object last() { - return last; - } - - @Override - public int hashCode() { - return Objects.hash(this.parent, this.last); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof ResourcePath)) { - return false; - } - final ResourcePath that = (ResourcePath) obj; - return Objects.equals(this.parent, that.parent) - && Objects.equals(this.last, that.last); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("parent", parent) - .add("last", last) - .toString(); - } - - /** - * Represents a resource path which specifies a resource which can be measured - * as a discrete unit. A VLAN ID and a MPLS label of a link are examples of the resource. - *

- * Note: This class is exposed to the public, but intended to be used in the resource API - * implementation only. It is not for resource API user. - *

- */ - @Beta - public static final class Discrete extends ResourcePath { - private Discrete() { - super(); - } - - private Discrete(List components) { - super(components); - } - - private Discrete(Discrete parent, Object last) { - super(parent, last); - } - } - - /** - * Represents a resource path which specifies a resource which can be measured - * as continuous value. Bandwidth of a link is an example of the resource. - *

- * Note: This class is exposed to the public, but intended to be used in the resource API - * implementation only. It is not for resource API user. - */ - @Beta - public static final class Continuous extends ResourcePath { - // Note: value is not taken into account for equality - private final double value; - - private Continuous(List components, double value) { - super(components); - this.value = value; - } - - public Continuous(Discrete parent, Object last, double value) { - super(parent, last); - this.value = value; - } - - /** - * Returns the value of the resource amount. - * - * @return the value of the resource amount - */ - public double value() { - return value; - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceService.java deleted file mode 100644 index 966de500..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceService.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableList; -import org.onosproject.event.ListenerService; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Optional; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Service for allocating/releasing resource(s) and retrieving allocation(s) and availability. - */ -@Beta -public interface ResourceService extends ListenerService { - /** - * Allocates the specified resource to the specified user. - * - * @param consumer resource user which the resource is allocated to - * @param resource resource to be allocated - * @return allocation information enclosed by Optional. If the allocation fails, the return value is empty - */ - default Optional allocate(ResourceConsumer consumer, ResourcePath resource) { - checkNotNull(consumer); - checkNotNull(resource); - - List allocations = allocate(consumer, ImmutableList.of(resource)); - if (allocations.isEmpty()) { - return Optional.empty(); - } - - assert allocations.size() == 1; - - ResourceAllocation allocation = allocations.get(0); - - assert allocation.resource().equals(resource); - - // cast is ensured by the assertions above - return Optional.of(allocation); - } - - /** - * Transactionally allocates the specified resources to the specified user. - * All allocations are made when this method succeeds, or no allocation is made when this method fails. - * - * @param consumer resource user which the resources are allocated to - * @param resources resources to be allocated - * @return non-empty list of allocation information if succeeded, otherwise empty list - */ - List allocate(ResourceConsumer consumer, List resources); - - /** - * Transactionally allocates the specified resources to the specified user. - * All allocations are made when this method succeeds, or no allocation is made when this method fails. - * - * @param consumer resource user which the resources are allocated to - * @param resources resources to be allocated - * @return non-empty list of allocation information if succeeded, otherwise empty list - */ - default List allocate(ResourceConsumer consumer, ResourcePath... resources) { - checkNotNull(consumer); - checkNotNull(resources); - - return allocate(consumer, Arrays.asList(resources)); - } - - /** - * Releases the specified resource allocation. - * - * @param allocation resource allocation to be released - * @return true if succeeded, otherwise false - */ - default boolean release(ResourceAllocation allocation) { - checkNotNull(allocation); - - return release(ImmutableList.of(allocation)); - } - - /** - * Transactionally releases the specified resource allocations. - * All allocations are released when this method succeeded, or no allocation is released when this method fails. - * - * @param allocations resource allocations to be released - * @return true if succeeded, otherwise false - */ - boolean release(List allocations); - - /** - * Transactionally releases the specified resource allocations. - * All allocations are released when this method succeeded, or no allocation is released when this method fails. - * - * @param allocations resource allocations to be released - * @return true if succeeded, otherwise false - */ - default boolean release(ResourceAllocation... allocations) { - checkNotNull(allocations); - - return release(ImmutableList.copyOf(allocations)); - } - - /** - * Transactionally releases the resources allocated to the specified consumer. - * All allocations are released when this method succeeded, or no allocation is released when this method fails. - * - * @param consumer consumer whose allocated resources are to be released - * @return true if succeeded, otherwise false - */ - boolean release(ResourceConsumer consumer); - - /** - * Returns resource allocation of the specified resource. - * - * @param resource resource to check the allocation - * @return allocation information enclosed by Optional. - * If the resource is not allocated, the return value is empty. - */ - Optional getResourceAllocation(ResourcePath resource); - - /** - * Returns allocated resources being as children of the specified parent and being the specified resource type. - * - * @param parent parent resource path - * @param cls class to specify a type of resource - * @param type of the resource - * @return non-empty collection of resource allocations if resources are allocated with the subject and type, - * empty collection if no resource is allocated with the subject and type - */ - Collection getResourceAllocations(ResourcePath parent, Class cls); - - /** - * Returns resources allocated to the specified consumer. - * - * @param consumer consumer whose allocated resources are to be returned - * @return resources allocated to the consumer - */ - Collection getResourceAllocations(ResourceConsumer consumer); - - /** - * Returns resource paths that point available child resources under the specified resource path. - * - * @param parent parent resource path - * @return available resource paths under the specified resource path - */ - Collection getAvailableResources(ResourcePath parent); - - /** - * Returns the availability of the specified resource. - * - * @param resource resource to check the availability - * @return true if available, otherwise false - */ - boolean isAvailable(ResourcePath resource); - - // TODO: listener and event mechanism need to be considered -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceStore.java deleted file mode 100644 index 7c67430e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceStore.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import com.google.common.annotations.Beta; -import org.onosproject.store.Store; - -import java.util.Collection; -import java.util.List; -import java.util.Optional; - -/** - * Service for storing resource and consumer information. - */ -@Beta -public interface ResourceStore extends Store { - - /** - * Registers the resources in transactional way. - * Resource registration must be done before resource allocation. The state after completion - * of this method is all the resources are registered, or none of the given resources is registered. - * The whole registration fails when any one of the resource can't be registered. - * - * @param resources resources to be registered - * @return true if the registration succeeds, false otherwise - */ - boolean register(List resources); - - /** - * Unregisters the resources in transactional way. - * The state after completion of this method is all the resources are unregistered, - * or none of the given resources is unregistered. The whole unregistration fails when any one of the - * resource can't be unregistered. - * - * @param resources resources to be unregistered - * @return true if the registration succeeds, false otherwise - */ - boolean unregister(List resources); - - /** - * Allocates the specified resources to the specified consumer in transactional way. - * The state after completion of this method is all the resources are allocated to the consumer, - * or no resource is allocated to the consumer. The whole allocation fails when any one of - * the resource can't be allocated. - * - * @param resources resources to be allocated - * @param consumer resource consumer which the resources are allocated to - * @return true if the allocation succeeds, false otherwise. - */ - boolean allocate(List resources, ResourceConsumer consumer); - - /** - * Releases the specified resources allocated to the specified corresponding consumers - * in transactional way. The state after completion of this method is all the resources - * are released from the consumer, or no resource is released. The whole release fails - * when any one of the resource can't be released. The size of the list of resources and - * that of consumers must be equal. The resource and consumer with the same position from - * the head of each list correspond to each other. - * - * @param resources resources to be released - * @param consumers resource consumers to whom the resource allocated to - * @return true if succeeds, otherwise false - */ - boolean release(List resources, List consumers); - - /** - * Returns the resource consumer to whom the specified resource is allocated. - * - * @param resource resource whose allocated consumer to be returned - * @return resource consumer who are allocated the resource - */ - Optional getConsumer(ResourcePath resource); - - /** - * Returns a collection of the resources allocated to the specified consumer. - * - * @param consumer resource consumer whose allocated resource are searched for - * @return a collection of the resources allocated to the specified consumer - */ - Collection getResources(ResourceConsumer consumer); - - /** - * Returns a collection of the child resources of the specified parent. - * - * @param parent parent of the resource to be returned - * @return a collection of the child resources of the specified resource - */ - Collection getChildResources(ResourcePath parent); - - /** - * Returns a collection of the resources which are children of the specified parent and - * whose type is the specified class. - * - * @param parent parent of the resources to be returned - * @param cls class instance of the children - * @param type of the resource - * @return a collection of the resources which belongs to the specified subject and - * whose type is the specified class. - */ - Collection getAllocatedResources(ResourcePath parent, Class cls); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceStoreDelegate.java deleted file mode 100644 index a0b9bb25..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/ResourceStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import org.onosproject.store.StoreDelegate; - -/** - * Resource store delegate abstraction. - */ -public interface ResourceStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/package-info.java deleted file mode 100644 index 52bb8588..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/newresource/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Generic network resource model and services for resource allocation and - * resource tracking. - */ -package org.onosproject.net.newresource; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/package-info.java deleted file mode 100644 index 34b4de21..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Network model entities & service API definitions. - */ -package org.onosproject.net; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultInboundPacket.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultInboundPacket.java deleted file mode 100644 index 96f872f5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultInboundPacket.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.net.ConnectPoint; -import org.onlab.packet.Ethernet; - -import java.nio.ByteBuffer; -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Default implementation of an immutable inbound packet. - */ -public final class DefaultInboundPacket implements InboundPacket { - - private final ConnectPoint receivedFrom; - private final Ethernet parsed; - private final ByteBuffer unparsed; - - /** - * Creates an immutable inbound packet. - * - * @param receivedFrom connection point where received - * @param parsed parsed ethernet frame - * @param unparsed unparsed raw bytes - */ - public DefaultInboundPacket(ConnectPoint receivedFrom, Ethernet parsed, - ByteBuffer unparsed) { - this.receivedFrom = receivedFrom; - this.parsed = parsed; - this.unparsed = unparsed; - } - - @Override - public ConnectPoint receivedFrom() { - return receivedFrom; - } - - @Override - public Ethernet parsed() { - return parsed; - } - - @Override - public ByteBuffer unparsed() { - // FIXME: figure out immutability here - return unparsed; - } - - @Override - public int hashCode() { - return Objects.hash(receivedFrom, parsed, unparsed); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof InboundPacket) { - final DefaultInboundPacket other = (DefaultInboundPacket) obj; - return Objects.equals(this.receivedFrom, other.receivedFrom) && - Objects.equals(this.parsed, other.parsed) && - Objects.equals(this.unparsed, other.unparsed); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("receivedFrom", receivedFrom) - .add("parsed", parsed) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultOutboundPacket.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultOutboundPacket.java deleted file mode 100644 index 5bd4c986..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultOutboundPacket.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import java.nio.ByteBuffer; -import java.util.Objects; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.base.MoreObjects; - -/** - * Default implementation of an immutable outbound packet. - */ -public final class DefaultOutboundPacket implements OutboundPacket { - private final DeviceId sendThrough; - private final TrafficTreatment treatment; - private final ByteBuffer data; - - /** - * Creates an immutable outbound packet. - * - * @param sendThrough identifier through which to send the packet - * @param treatment list of packet treatments - * @param data raw packet data - */ - public DefaultOutboundPacket(DeviceId sendThrough, - TrafficTreatment treatment, ByteBuffer data) { - this.sendThrough = sendThrough; - this.treatment = treatment; - this.data = data; - } - - @Override - public DeviceId sendThrough() { - return sendThrough; - } - - @Override - public TrafficTreatment treatment() { - return treatment; - } - - @Override - public ByteBuffer data() { - // FIXME: figure out immutability here - return data; - } - - @Override - public int hashCode() { - return Objects.hash(sendThrough, treatment, data); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof OutboundPacket) { - final DefaultOutboundPacket other = (DefaultOutboundPacket) obj; - return Objects.equals(this.sendThrough, other.sendThrough) && - Objects.equals(this.treatment, other.treatment) && - Objects.equals(this.data, other.data); - } - return false; - } - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("sendThrough", sendThrough) - .add("treatment", treatment) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultPacketContext.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultPacketContext.java deleted file mode 100644 index 166269f9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultPacketContext.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.TrafficTreatment.Builder; - -import java.util.concurrent.atomic.AtomicBoolean; - -import static org.onosproject.security.AppGuard.checkPermission; -import static org.onosproject.security.AppPermission.Type.*; - -/** - * Default implementation of a packet context. - */ -public abstract class DefaultPacketContext implements PacketContext { - - private final long time; - private final InboundPacket inPkt; - private final OutboundPacket outPkt; - private final TrafficTreatment.Builder builder; - - private final AtomicBoolean block; - - /** - * Creates a new packet context. - * - * @param time creation time - * @param inPkt inbound packet - * @param outPkt outbound packet - * @param block whether the context is blocked or not - */ - protected DefaultPacketContext(long time, InboundPacket inPkt, - OutboundPacket outPkt, boolean block) { - super(); - this.time = time; - this.inPkt = inPkt; - this.outPkt = outPkt; - this.block = new AtomicBoolean(block); - this.builder = DefaultTrafficTreatment.builder(); - } - - @Override - public long time() { - checkPermission(PACKET_READ); - return time; - } - - @Override - public InboundPacket inPacket() { - checkPermission(PACKET_READ); - return inPkt; - } - - @Override - public OutboundPacket outPacket() { - checkPermission(PACKET_READ); - return outPkt; - } - - @Override - public Builder treatmentBuilder() { - checkPermission(PACKET_READ); - return builder; - } - - @Override - public abstract void send(); - - @Override - public boolean block() { - checkPermission(PACKET_WRITE); - return this.block.getAndSet(true); - } - - @Override - public boolean isHandled() { - checkPermission(PACKET_READ); - return this.block.get(); - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultPacketRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultPacketRequest.java deleted file mode 100644 index ce2eb118..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/DefaultPacketRequest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.packet; - -import com.google.common.base.MoreObjects; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.flow.TrafficSelector; - -import java.util.Objects; - -/** - * Default implementation of a packet request. - */ -public final class DefaultPacketRequest implements PacketRequest { - private final TrafficSelector selector; - private final PacketPriority priority; - private final ApplicationId appId; - - /** - * Creates a new packet request. - * - * @param selector traffic selector - * @param priority intercept priority - * @param appId application id - */ - public DefaultPacketRequest(TrafficSelector selector, PacketPriority priority, - ApplicationId appId) { - this.selector = selector; - this.priority = priority; - this.appId = appId; - } - - public TrafficSelector selector() { - return selector; - } - - public PacketPriority priority() { - return priority; - } - - public ApplicationId appId() { - return appId; - } - - @Override - public int hashCode() { - return Objects.hash(selector, priority, appId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final DefaultPacketRequest other = (DefaultPacketRequest) obj; - return Objects.equals(this.selector, other.selector) - && Objects.equals(this.priority, other.priority) - && Objects.equals(this.appId, other.appId); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this.getClass()) - .add("selector", selector) - .add("priority", priority) - .add("appId", appId).toString(); - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/InboundPacket.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/InboundPacket.java deleted file mode 100644 index 3fd58149..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/InboundPacket.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.net.ConnectPoint; -import org.onlab.packet.Ethernet; - -import java.nio.ByteBuffer; - -/** - * Represents a data packet intercepted from an infrastructure device. - */ -public interface InboundPacket { - - /** - * Returns the device and port from where the packet was received. - * - * @return connection point where received - */ - ConnectPoint receivedFrom(); - - /** - * Returns the parsed form of the packet. - * - * @return parsed Ethernet frame; null if the packet is not an Ethernet - * frame or one for which there is no parser - */ - Ethernet parsed(); - - /** - * Unparsed packet data. - * - * @return raw packet bytes - */ - ByteBuffer unparsed(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/OutboundPacket.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/OutboundPacket.java deleted file mode 100644 index 9e9329fa..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/OutboundPacket.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.flow.TrafficTreatment; - -import java.nio.ByteBuffer; - -/** - * Represents an outbound data packet that is to be emitted to network via - * an infrastructure device. - */ -public interface OutboundPacket { - - /** - * Returns the identity of a device through which this packet should be - * sent. - * - * @return device identity - */ - DeviceId sendThrough(); - - /** - * Returns how the outbound packet should be treated. - * - * @return output treatment - */ - TrafficTreatment treatment(); - - /** - * Returns immutable view of the raw data to be sent. - * - * @return data to emit - */ - ByteBuffer data(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketContext.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketContext.java deleted file mode 100644 index 004adc87..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketContext.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.net.flow.TrafficTreatment; - -/** - * Represents context for processing an inbound packet, and (optionally) - * emitting a corresponding outbound packet. - */ -public interface PacketContext { - - /** - * Returns the time when the packet was received. - * - * @return the time in millis since start of epoch - */ - long time(); - - /** - * Returns the inbound packet being processed. - * - * @return inbound packet - */ - InboundPacket inPacket(); - - /** - * Returns the view of the outbound packet. - * - * @return outbound packet - */ - OutboundPacket outPacket(); - - /** - * Returns a builder for constructing traffic treatment. - * - * @return traffic treatment builder - */ - TrafficTreatment.Builder treatmentBuilder(); - - /** - * Triggers the outbound packet to be sent. - */ - void send(); - - /** - * Blocks the outbound packet from being sent from this point onward. - * - * @return whether the outbound packet is blocked. - */ - boolean block(); - - /** - * Indicates whether the outbound packet is handled, i.e. sent or blocked. - * - * @return true uf the packed is handled - */ - boolean isHandled(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketEvent.java deleted file mode 100644 index 7b0a5ed7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketEvent.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.event.AbstractEvent; - -/** - * Describes a packet event. - */ -public class PacketEvent extends AbstractEvent { - - /** - * Type of packet events. - */ - public enum Type { - /** - * Signifies that the packet should be emitted out a local port. - */ - EMIT - } - - /** - * Creates an event of the given type for the specified packet. - * - * @param type the type of the event - * @param packet the packet the event is about - */ - public PacketEvent(Type type, OutboundPacket packet) { - super(type, packet); - } - - /** - * Creates an event of the given type for the specified packet at the given - * time. - * - * @param type the type of the event - * @param packet the packet the event is about - * @param time the time of the event - */ - public PacketEvent(Type type, OutboundPacket packet, long time) { - super(type, packet, time); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketPriority.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketPriority.java deleted file mode 100644 index 3eab9386..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketPriority.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.packet; - -/** - * Priorities available to applications for requests for packets from the data - * plane. - */ -public enum PacketPriority { - /** - * High priority for control traffic. This will result in all traffic - * matching the selector being sent to the controller. - */ - CONTROL(40000), - - /** - * Low priority for reactive applications. Packets are only sent to the - * controller if they fail to match any of the rules installed in the switch. - */ - REACTIVE(5); - - private final int priorityValue; - - PacketPriority(int priorityValue) { - this.priorityValue = priorityValue; - } - - /** - * Returns the integer value of the priority level. - * - * @return priority value - */ - public int priorityValue() { - return priorityValue; - } - - public String toString() { - return String.valueOf(priorityValue); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProcessor.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProcessor.java deleted file mode 100644 index 0eba1b4e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProcessor.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Abstraction of an inbound packet processor. - */ -public interface PacketProcessor { - - int ADVISOR_MAX = Integer.MAX_VALUE / 3; - int DIRECTOR_MAX = (Integer.MAX_VALUE / 3) * 2; - int OBSERVER_MAX = Integer.MAX_VALUE; - - /** - * Returns a priority in the ADVISOR range, where processors can take early action and - * influence the packet context. However, they cannot handle the packet (i.e. call send() or block()). - * The valid range is from 1 to ADVISOR_MAX. - * Processors in this range get to see the packet first. - * - * @param priority priority within ADVISOR range - * @return overall priority - */ - static int advisor(int priority) { - int overallPriority = priority + 1; - checkArgument(overallPriority > 0 && overallPriority <= ADVISOR_MAX, - "Priority not within ADVISOR range"); - return overallPriority; - } - - /** - * Returns a priority in the DIRECTOR range, where processors can handle the packet. - * The valid range is from ADVISOR_MAX+1 to DIRECTOR_MAX. - * Processors in this range get to see the packet second, after ADVISORS. - * - * @param priority priority within the DIRECTOR range - * @return overall priority - */ - static int director(int priority) { - int overallPriority = ADVISOR_MAX + priority + 1; - checkArgument(overallPriority > ADVISOR_MAX && overallPriority <= DIRECTOR_MAX, - "Priority not within DIRECTOR range"); - return overallPriority; - } - - /** - * Returns a priority in the OBSERVER range, where processors cannot take any action, - * but can observe what action has been taken until then. - * The valid range is from DIRECTOR_MAX+1 to OBSERVER_MAX. - * Processors in this range get to see the packet last, after ADVISORS and DIRECTORS. - * - * @param priority priority within the OBSERVER range - * @return overall priority - */ - static int observer(int priority) { - int overallPriority = DIRECTOR_MAX + priority + 1; - checkArgument(overallPriority > DIRECTOR_MAX, - "Priority not within OBSERVER range"); - return overallPriority; - } - - /** - * Processes the inbound packet as specified in the given context. - * - * @param context packet processing context - */ - void process(PacketContext context); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProcessorEntry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProcessorEntry.java deleted file mode 100644 index 40386fb7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProcessorEntry.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.packet; - -/** - * Packet processor entry tracking the processor, its priority and - * time consumption. - */ -public interface PacketProcessorEntry { - - /** - * Returns the packet processor. - * - * @return packet processor - */ - PacketProcessor processor(); - - /** - * Returns the packet processor priority. - * - * @return processor priority - */ - int priority(); - - /** - * Returns the number of invocations. - * - * @return number of invocations - */ - long invocations(); - - /** - * Returns the total time, in nanoseconds, spent processing packets. - * - * @return total time in nanos - */ - long totalNanos(); - - /** - * Returns the average time, in nanoseconds, spent processing packets. - * - * @return average time in nanos - */ - long averageNanos(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProvider.java deleted file mode 100644 index 8d55f0d1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProvider.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.net.provider.Provider; - -/** - * Abstraction of a packet provider capable of emitting packets. - */ -public interface PacketProvider extends Provider { - - /** - * Emits the specified outbound packet onto the network. - * - * @param packet outbound packet - */ - void emit(OutboundPacket packet); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProviderRegistry.java deleted file mode 100644 index 6e73253e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProviderRegistry.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.net.provider.ProviderRegistry; - -/** - * Abstraction of an infrastructure packet provider registry. - */ -public interface PacketProviderRegistry -extends ProviderRegistry { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProviderService.java deleted file mode 100644 index 1aaee65f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketProviderService.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.net.provider.ProviderService; - -/** - * Entity capable of processing inbound packets. - */ -public interface PacketProviderService extends ProviderService { - - /** - * Submits inbound packet context for processing. This processing will be - * done synchronously, i.e. run-to-completion. - * - * @param context inbound packet context - */ - void processPacket(PacketContext context); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketRequest.java deleted file mode 100644 index dc09219a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketRequest.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.flow.TrafficSelector; - -/** - * Represents a packet request made to devices. - */ -public interface PacketRequest { - - /** - * Obtain the traffic selector. - * - * @return a traffic selector - */ - TrafficSelector selector(); - - /** - * Obtain the priority. - * - * @return a PacketPriority - */ - PacketPriority priority(); - - /** - * Obtain the application id. - * - * @return an application id - */ - ApplicationId appId(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketService.java deleted file mode 100644 index 2e7a1b91..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketService.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.packet; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.flow.TrafficSelector; - -import java.util.List; - -/** - * Service for intercepting data plane packets and for emitting synthetic - * outbound packets. - */ -public interface PacketService { - - // TODO: ponder better ordering scheme that does not require absolute numbers - - /** - * Adds the specified processor to the list of packet processors. - * It will be added into the list in the order of priority. The higher - * numbers will be processing the packets after the lower numbers. - * - * @param processor processor to be added - * @param priority priority in the reverse natural order - * @throws java.lang.IllegalArgumentException if a processor with the - * given priority already exists - */ - void addProcessor(PacketProcessor processor, int priority); - - // TODO allow processors to register for particular types of packets - - /** - * Removes the specified processor from the processing pipeline. - * - * @param processor packet processor - */ - void removeProcessor(PacketProcessor processor); - - /** - * Returns priority bindings of all registered packet processor entries. - * - * @return list of existing packet processor entries - */ - @Beta - List getProcessors(); - - /** - * Requests that packets matching the given selector are punted from the - * dataplane to the controller. - * - * @param selector the traffic selector used to match packets - * @param priority the priority of the rule - * @param appId the application ID of the requester - */ - void requestPackets(TrafficSelector selector, PacketPriority priority, - ApplicationId appId); - - /** - * Cancels previous packet requests for packets matching the given - * selector to be punted from the dataplane to the controller. - * - * @param selector the traffic selector used to match packets - * @param priority the priority of the rule - * @param appId the application ID of the requester - */ - void cancelPackets(TrafficSelector selector, PacketPriority priority, - ApplicationId appId); - - /** - * Returns list of all existing requests ordered by priority. - * - * @return list of existing packet requests - */ - List getRequests(); - - /** - * Emits the specified outbound packet onto the network. - * - * @param packet outbound packet - */ - void emit(OutboundPacket packet); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketStore.java deleted file mode 100644 index d83fc9a2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketStore.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.store.Store; - -import java.util.List; - -/** - * Manages routing of outbound packets. - */ -public interface PacketStore extends Store { - - /** - * Decides which instance should emit the packet and forwards the packet to - * that instance. The relevant PacketManager is notified via the - * PacketStoreDelegate that it should emit the packet. - * - * @param packet the packet to emit - */ - void emit(OutboundPacket packet); - - /** - * Requests intercept of packets that match the given selector. - * - * @param request a packet request - */ - void requestPackets(PacketRequest request); - - /** - * Cancels intercept of packets that match the given selector. - * - * @param request a packet request - */ - void cancelPackets(PacketRequest request); - - /** - * Obtains all existing requests in the system. - * - * @return list of packet requests in order of priority - */ - List existingRequests(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketStoreDelegate.java deleted file mode 100644 index 2e59b19d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/PacketStoreDelegate.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.store.StoreDelegate; - -/** - * Packet store delegate abstraction. - */ -public interface PacketStoreDelegate extends StoreDelegate { - - /** - * Requests that packets matching to following request be collected - * from all switches. - * - * @param request packet request - */ - void requestPackets(PacketRequest request); - - /** - * Requests that packets matching to following request no longer be - * collected from any switches. - * - * @param request packet request - */ - void cancelPackets(PacketRequest request); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/package-info.java deleted file mode 100644 index 0b9ea377..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/packet/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Mechanism for processing inbound packets intercepted from the data plane and - * for emitting outbound packets onto the data plane. - */ -package org.onosproject.net.packet; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractListenerProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractListenerProviderRegistry.java deleted file mode 100644 index ff67c6da..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractListenerProviderRegistry.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.provider; - -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.onosproject.event.Event; -import org.onosproject.event.EventDeliveryService; -import org.onosproject.event.EventListener; -import org.onosproject.event.ListenerRegistry; -import org.onosproject.event.ListenerService; - -/** - * Basis for components which need to export listener mechanism. - */ -@Component(componentAbstract = true) -public abstract class AbstractListenerProviderRegistry, - P extends Provider, S extends ProviderService

> - extends AbstractProviderRegistry implements ListenerService { - - // If only Java supported mixins... - - protected final ListenerRegistry listenerRegistry = new ListenerRegistry<>(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected EventDeliveryService eventDispatcher; - - @Override - public void addListener(L listener) { - listenerRegistry.addListener(listener); - } - - @Override - public void removeListener(L listener) { - listenerRegistry.removeListener(listener); - } - - - /** - * Safely posts the specified event to the local event dispatcher. - * If there is no event dispatcher or if the event is null, this method - * is a noop. - * - * @param event event to be posted; may be null - */ - protected void post(E event) { - if (event != null && eventDispatcher != null) { - eventDispatcher.post(event); - } - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProvider.java deleted file mode 100644 index a4926dd3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProvider.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -/** - * Base provider implementation. - */ -public abstract class AbstractProvider implements Provider { - - private final ProviderId providerId; - - /** - * Creates a provider with the supplier identifier. - * - * @param id provider id - */ - protected AbstractProvider(ProviderId id) { - this.providerId = id; - } - - @Override - public ProviderId id() { - return providerId; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProviderRegistry.java deleted file mode 100644 index bcf5fae0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProviderRegistry.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -import com.google.common.collect.ImmutableSet; -import org.onosproject.net.DeviceId; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; - -/** - * Base implementation of provider registry. - * - * @param

type of the information provider - * @param type of the provider service - */ -public abstract class AbstractProviderRegistry

> - implements ProviderRegistry { - - private final Map providers = new HashMap<>(); - private final Map services = new HashMap<>(); - private final Map providersByScheme = new HashMap<>(); - - /** - * Creates a new provider service bound to the specified provider. - * - * @param provider provider - * @return provider service - */ - protected abstract S createProviderService(P provider); - - @Override - public synchronized S register(P provider) { - checkNotNull(provider, "Provider cannot be null"); - checkState(!services.containsKey(provider.id()), "Provider %s already registered", provider.id()); - - // If the provider is a primary one, check for a conflict. - ProviderId pid = provider.id(); - checkState(pid.isAncillary() || !providersByScheme.containsKey(pid.scheme()), - "A primary provider with id %s is already registered", - providersByScheme.get(pid.scheme())); - - S service = createProviderService(provider); - services.put(provider.id(), service); - providers.put(provider.id(), provider); - - // Register the provider by URI scheme only if it is not ancillary. - if (!pid.isAncillary()) { - providersByScheme.put(pid.scheme(), provider); - } - - return service; - } - - @Override - public synchronized void unregister(P provider) { - checkNotNull(provider, "Provider cannot be null"); - S service = services.get(provider.id()); - if (service != null && service instanceof AbstractProviderService) { - ((AbstractProviderService) service).invalidate(); - services.remove(provider.id()); - providers.remove(provider.id()); - if (!provider.id().isAncillary()) { - providersByScheme.remove(provider.id().scheme()); - } - } - } - - @Override - public synchronized Set getProviders() { - return ImmutableSet.copyOf(services.keySet()); - } - - /** - * Returns the provider registered with the specified provider ID. - * - * @param providerId provider identifier - * @return provider - */ - protected synchronized P getProvider(ProviderId providerId) { - return providers.get(providerId); - } - - /** - * Returns the provider for the specified device ID based on URI scheme. - * - * @param deviceId device identifier - * @return provider bound to the URI scheme - */ - protected synchronized P getProvider(DeviceId deviceId) { - return providersByScheme.get(deviceId.uri().getScheme()); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProviderService.java deleted file mode 100644 index 6c926d88..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/AbstractProviderService.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -import static com.google.common.base.Preconditions.checkState; - -/** - * Base implementation of a provider service, which tracks the provider to - * which it is issued and can be invalidated. - * - * @param

type of the information provider - */ -public abstract class AbstractProviderService

implements ProviderService

{ - - private boolean isValid = true; - private final P provider; - - /** - * Creates a provider service on behalf of the specified provider. - * - * @param provider provider to which this service is being issued - */ - protected AbstractProviderService(P provider) { - this.provider = provider; - } - - /** - * Invalidates this provider service. - */ - public void invalidate() { - isValid = false; - } - - /** - * Checks the validity of this provider service. - * - * @throws java.lang.IllegalStateException if the service is no longer valid - */ - public void checkValidity() { - checkState(isValid, "Provider service is no longer valid"); - } - - @Override - public P provider() { - return provider; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/Provider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/Provider.java deleted file mode 100644 index 84465ab7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/Provider.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -/** - * Abstraction of a provider of information about network environment. - */ -public interface Provider { - - /** - * Returns the provider identifier. - * - * @return provider identification - */ - ProviderId id(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderId.java deleted file mode 100644 index 2c959afd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderId.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * External identity of a {@link org.onosproject.net.provider.Provider} family. - * It also carriers two designations of external characteristics, the URI - * scheme and primary/ancillary indicator. - *

- * The device URI scheme is used to determine applicability of a provider to - * operations on a specific device. The ancillary indicator serves to designate - * a provider as a primary or ancillary. - *

- *

- * A {@link org.onosproject.net.provider.ProviderRegistry} uses this designation - * to permit only one primary provider per device URI scheme. Multiple - * ancillary providers can register with the same device URI scheme however. - *

- */ -public class ProviderId { - - /** - * Represents no provider ID. - */ - public static final ProviderId NONE = new ProviderId("none", "none"); - - private final String scheme; - private final String id; - private final boolean ancillary; - - // For serialization - private ProviderId() { - scheme = null; - id = null; - ancillary = false; - } - - /** - * Creates a new primary provider identifier from the specified string. - * The providers are expected to follow the reverse DNS convention, e.g. - * {@code org.onosproject.provider.of.device} - * - * @param scheme device URI scheme to which this provider is bound, e.g. "of", "snmp" - * @param id string identifier - */ - public ProviderId(String scheme, String id) { - this(scheme, id, false); - } - - /** - * Creates a new provider identifier from the specified string. - * The providers are expected to follow the reverse DNS convention, e.g. - * {@code org.onosproject.provider.of.device} - * - * @param scheme device URI scheme to which this provider is bound, e.g. "of", "snmp" - * @param id string identifier - * @param ancillary ancillary provider indicator - */ - public ProviderId(String scheme, String id, boolean ancillary) { - this.scheme = checkNotNull(scheme, "Scheme cannot be null"); - this.id = checkNotNull(id, "ID cannot be null"); - this.ancillary = ancillary; - } - - /** - * Returns the device URI scheme to which this provider is bound. - * - * @return device URI scheme - */ - public String scheme() { - return scheme; - } - - /** - * Returns the device URI scheme specific id portion. - * - * @return id - */ - public String id() { - return id; - } - - /** - * Indicates whether this identifier designates an ancillary providers. - * - * @return true if the provider is ancillary; false if primary - */ - public boolean isAncillary() { - return ancillary; - } - - @Override - public int hashCode() { - return Objects.hash(scheme, id); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ProviderId) { - final ProviderId other = (ProviderId) obj; - return Objects.equals(this.scheme, other.scheme) && - Objects.equals(this.id, other.id) && - this.ancillary == other.ancillary; - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("scheme", scheme).add("id", id) - .add("ancillary", ancillary).toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderRegistry.java deleted file mode 100644 index 3c2009ad..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderRegistry.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -import java.util.Set; - -/** - * Registry for tracking information providers with the core. - * - * @param

type of the information provider - * @param type of the provider service - */ -public interface ProviderRegistry

> { - - /** - * Registers the supplied provider with the core. - * - * @param provider provider to be registered - * @return provider service for injecting information into core - * @throws java.lang.IllegalArgumentException if the provider is registered already - */ - S register(P provider); - - /** - * Unregisters the supplied provider. As a result the previously issued - * provider service will be invalidated and any subsequent invocations - * of its methods may throw {@link java.lang.IllegalStateException}. - *

- * Unregistering a provider that has not been previously registered results - * in a no-op. - *

- * - * @param provider provider to be unregistered - */ - void unregister(P provider); - - /** - * Returns a set of currently registered provider identities. - * - * @return set of provider identifiers - */ - Set getProviders(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderService.java deleted file mode 100644 index 5c469276..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/ProviderService.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -/** - * Abstraction of a service through which providers can inject information - * about the network environment into the core. - * - * @param

type of the information provider - */ -public interface ProviderService

{ - - /** - * Returns the provider to which this service has been issued. - * - * @return provider to which this service has been assigned - */ - P provider(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/package-info.java deleted file mode 100644 index d279f56a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/provider/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Base abstractions related to network entity providers and their brokers. - */ -package org.onosproject.net.provider; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpService.java deleted file mode 100644 index 9b27f4f8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpService.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.proxyarp; - -import org.onlab.packet.Ethernet; -import org.onlab.packet.IpAddress; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.packet.PacketContext; - -/** - * Service for processing ARP or NDP requests on behalf of applications. - */ -// TODO: move to the peer host package -public interface ProxyArpService { - - /** - * Returns whether this particular IP address is known to the system. - * - * @param addr an IP address - * @return true if know, false otherwise - */ - boolean isKnown(IpAddress addr); - - /** - * Sends a reply for a given request. If the host is not known then the - * arp or neighbor solicitation will be flooded at all edge ports. - * - * @param eth an arp or neighbor solicitation request - * @param inPort the port the request was received on - */ - void reply(Ethernet eth, ConnectPoint inPort); - - /** - * Forwards an ARP or neighbor solicitation request to its destination. - * Floods at the edg the request if the destination is not known. - * - * @param eth an ethernet frame containing an ARP or neighbor solicitation - * request. - * @param inPort the port the request was received on - */ - void forward(Ethernet eth, ConnectPoint inPort); - - /** - * Handles a arp or neighbor solicitation packet. - * Replies to arp or neighbor solicitation requests and forwards request - * to the right place. - * @param context the packet context to handle - * @return true if handled, false otherwise. - */ - boolean handlePacket(PacketContext context); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStore.java deleted file mode 100644 index b6564212..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStore.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.proxyarp; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Host; - -import java.nio.ByteBuffer; - -/** - * State distribution mechanism for the proxy ARP service. - */ -public interface ProxyArpStore { - - /** - * Forwards an ARP or neighbor solicitation request to its destination. - * Floods at the edg the request if the destination is not known. - * - * @param outPort the port the request was received on - * @param subject subject host - * @param packet an ethernet frame containing an ARP or neighbor - * solicitation request - */ - void forward(ConnectPoint outPort, Host subject, ByteBuffer packet); - - /** - * Associates the specified delegate with the store. - * - * @param delegate store delegate - */ - void setDelegate(ProxyArpStoreDelegate delegate); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStoreDelegate.java deleted file mode 100644 index d0e273c8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStoreDelegate.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.proxyarp; - -import org.onosproject.net.ConnectPoint; - -import java.nio.ByteBuffer; - -/** - * Proxy ARP store delegate. - */ -public interface ProxyArpStoreDelegate { - - /** - * Emits ARP or neighbour discovery response packet. - * - * @param outPort output connection point - * @param packet packet to emit - */ - void emitResponse(ConnectPoint outPort, ByteBuffer packet); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/package-info.java deleted file mode 100644 index 6ddd4926..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Base abstractions related to the proxy arp service. - */ -package org.onosproject.net.proxyarp; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceAllocation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceAllocation.java deleted file mode 100644 index 01b69b2a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceAllocation.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource; - -import com.google.common.annotations.Beta; - -/** - * Abstraction of allocated resource. - */ -@Beta -public interface ResourceAllocation { - /** - * Returns the resource type. - * - * @return the resource type - */ - ResourceType type(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceAllocationException.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceAllocationException.java deleted file mode 100644 index c3d1fcc7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceAllocationException.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.resource; - -import com.google.common.annotations.Beta; - -/** - * Exception thrown for resource allocation errors. - */ -@Beta -public class ResourceAllocationException extends ResourceException { - public ResourceAllocationException() { - super(); - } - - public ResourceAllocationException(String message) { - super(message); - } - - public ResourceAllocationException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceException.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceException.java deleted file mode 100644 index 31e82d5d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceException.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.resource; - -import com.google.common.annotations.Beta; - -/** - * Represents a resource related error. - */ -@Beta -public class ResourceException extends RuntimeException { - - /** - * Constructs an exception with no message and no underlying cause. - */ - public ResourceException() { - } - - /** - * Constructs an exception with the specified message. - * - * @param message the message describing the specific nature of the error - */ - public ResourceException(String message) { - super(message); - } - - /** - * Constructs an exception with the specified message and the underlying cause. - * - * @param message the message describing the specific nature of the error - * @param cause the underlying cause of this error - */ - public ResourceException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceId.java deleted file mode 100644 index 722ec4d7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceId.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource; - -import com.google.common.annotations.Beta; - -/** - * Resource identifier. - */ -@Beta -public interface ResourceId { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceRequest.java deleted file mode 100644 index fb53f120..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceRequest.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource; - -import com.google.common.annotations.Beta; - -/** - * Abstraction of resource request. - */ -@Beta -public interface ResourceRequest { - /** - * Returns the resource type. - * - * @return the resource type - */ - ResourceType type(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceType.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceType.java deleted file mode 100644 index 75832134..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/ResourceType.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.resource; - -import com.google.common.annotations.Beta; - -/** - * Represents types for link resources. - */ -@Beta -public enum ResourceType { - /** - * Lambda resource type. - */ - LAMBDA, - - /** - * Bandwidth resource type. - */ - BANDWIDTH, - - /** - * MPLS label resource type. - */ - MPLS_LABEL, -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/device/IntentSetMultimap.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/device/IntentSetMultimap.java deleted file mode 100644 index f17bfb8e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/device/IntentSetMultimap.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.resource.device; - -import com.google.common.annotations.Beta; -import org.onosproject.net.intent.IntentId; - -import java.util.Set; - -@Beta -public interface IntentSetMultimap { - - /** - * Allocates the mapping between the given intents. - * - * @param keyIntentId key intent ID - * @param valIntentId value intent ID - * @return true if mapping was successful, false otherwise - */ - boolean allocateMapping(IntentId keyIntentId, IntentId valIntentId); - - /** - * Returns the set of intents mapped to a lower intent. - * - * @param intentId intent ID - * @return set of intent IDs - */ - Set getMapping(IntentId intentId); - - /** - * Releases the mapping of the given intent. - * - * @param intentId intent ID - */ - void releaseMapping(IntentId intentId); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/device/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/device/package-info.java deleted file mode 100644 index 3ced37dc..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/device/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Services for reserving devices as network resources. - */ -package org.onosproject.net.resource.device; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java deleted file mode 100644 index d3bd2d7b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.resource.link; - -import org.onlab.util.Bandwidth; -import org.onlab.util.DataRateUnit; -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Representation of bandwidth resource in bps. - * - * @deprecated in Emu Release - */ -@Deprecated -public final class BandwidthResource implements LinkResource { - - private final Bandwidth bandwidth; - - /** - * Creates a new instance with given bandwidth. - * - * @param bandwidth bandwidth value to be assigned - */ - public BandwidthResource(Bandwidth bandwidth) { - this.bandwidth = checkNotNull(bandwidth); - } - - // Constructor for serialization - private BandwidthResource() { - this.bandwidth = null; - } - - /** - * Creates a new bandwidth resource. - * - * @param v amount of bandwidth to request - * @param unit {@link DataRateUnit} of {@code v} - * @return {@link BandwidthResource} instance with given bandwidth - */ - public static BandwidthResource of(double v, DataRateUnit unit) { - return new BandwidthResource(Bandwidth.of(v, unit)); - } - - /** - * Returns bandwidth as a double value. - * - * @return bandwidth as a double value - */ - public double toDouble() { - return bandwidth.bps(); - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof BandwidthResource) { - BandwidthResource that = (BandwidthResource) obj; - return Objects.equals(this.bandwidth, that.bandwidth); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hashCode(this.bandwidth); - } - - @Override - public String toString() { - return String.valueOf(this.bandwidth); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceAllocation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceAllocation.java deleted file mode 100644 index 5f36d5f8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceAllocation.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.resource.ResourceAllocation; -import org.onosproject.net.resource.ResourceType; - -import java.util.Objects; - -/** - * Representation of allocated bandwidth resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public class BandwidthResourceAllocation implements ResourceAllocation { - private final BandwidthResource bandwidth; - - /** - * Creates a new {@link BandwidthResourceRequest} with {@link BandwidthResource} - * object. - * - * @param bandwidth {@link BandwidthResource} object to be requested - */ - public BandwidthResourceAllocation(BandwidthResource bandwidth) { - this.bandwidth = bandwidth; - } - - /** - * Returns the bandwidth resource. - * - * @return the bandwidth resource - */ - public BandwidthResource bandwidth() { - return bandwidth; - } - - @Override - public ResourceType type() { - return ResourceType.BANDWIDTH; - } - - @Override - public int hashCode() { - return bandwidth.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final BandwidthResourceAllocation other = (BandwidthResourceAllocation) obj; - return Objects.equals(this.bandwidth, other.bandwidth()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("bandwidth", bandwidth) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceRequest.java deleted file mode 100644 index ff26e81e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceRequest.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.resource.link; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.resource.ResourceRequest; -import org.onosproject.net.resource.ResourceType; - -/** - * Representation of a request for bandwidth resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public class BandwidthResourceRequest implements ResourceRequest { - private final BandwidthResource bandwidth; - - /** - * Creates a new {@link BandwidthResourceRequest} with {@link BandwidthResource} - * object. - * - * @param bandwidth {@link BandwidthResource} object to be requested - */ - public BandwidthResourceRequest(BandwidthResource bandwidth) { - this.bandwidth = bandwidth; - } - - /** - * Returns the bandwidth resource. - * - * @return the bandwidth resource - */ - public BandwidthResource bandwidth() { - return bandwidth; - } - - @Override - public ResourceType type() { - return ResourceType.BANDWIDTH; - } - - @Override - public int hashCode() { - return bandwidth.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final BandwidthResourceRequest other = (BandwidthResourceRequest) obj; - return Objects.equals(this.bandwidth, other.bandwidth()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("bandwidth", bandwidth) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceAllocations.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceAllocations.java deleted file mode 100644 index 2fa4fa6b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceAllocations.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; - -import org.onosproject.net.Link; -import org.onosproject.net.intent.IntentId; -import org.onosproject.net.resource.ResourceAllocation; -import org.onosproject.net.resource.ResourceRequest; -import org.onosproject.net.resource.ResourceType; - -import java.util.Collection; -import java.util.Collections; -import java.util.Map; -import java.util.Objects; -import java.util.Map.Entry; -import java.util.Set; - -/** - * Implementation of {@link LinkResourceAllocations}. - * - * @deprecated in Emu Release - */ -@Deprecated -public class DefaultLinkResourceAllocations implements LinkResourceAllocations { - private final LinkResourceRequest request; - // TODO: probably should be using LinkKey instead - private final Map> allocations; - - /** - * Creates a new link resource allocations. - * - * @param request requested resources - * @param allocations allocated resources - */ - public DefaultLinkResourceAllocations(LinkResourceRequest request, - Map> allocations) { - this.request = checkNotNull(request); - ImmutableMap.Builder> builder - = ImmutableMap.builder(); - for (Entry> e : allocations.entrySet()) { - builder.put(e.getKey(), ImmutableSet.copyOf(e.getValue())); - } - this.allocations = builder.build(); - } - - public IntentId intentId() { - return request.intentId(); - } - - public Collection links() { - return request.links(); - } - - public Set resources() { - return request.resources(); - } - - @Override - public ResourceType type() { - return null; - } - - @Override - public Set getResourceAllocation(Link link) { - Set result = allocations.get(link); - if (result == null) { - result = Collections.emptySet(); - } - return result; - } - - @Override - public int hashCode() { - return Objects.hash(request, allocations); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final DefaultLinkResourceAllocations other = (DefaultLinkResourceAllocations) obj; - return Objects.equals(this.request, other.request) - && Objects.equals(this.allocations, other.allocations); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("allocations", allocations) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceRequest.java deleted file mode 100644 index 583570f5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceRequest.java +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.resource.link; - -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.Objects; -import java.util.stream.Collectors; - -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableMap; -import org.onlab.util.Bandwidth; -import org.onosproject.net.Link; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.intent.IntentId; - -import org.onosproject.net.intent.constraint.BandwidthConstraint; -import org.onosproject.net.intent.constraint.LambdaConstraint; -import org.onosproject.net.resource.ResourceRequest; -import org.onosproject.net.resource.ResourceType; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Implementation of {@link LinkResourceRequest}. - * - * @deprecated in Emu Release - */ -@Deprecated -public final class DefaultLinkResourceRequest implements LinkResourceRequest { - - private final IntentId intentId; - protected final Map> requests; - - /** - * Creates a new link resource request with the specified Intent ID, - * and resource requests over links. - * - * @param intentId intent ID associated with this request - * @param requests resource requests over links - */ - private DefaultLinkResourceRequest(IntentId intentId, Map> requests) { - this.intentId = checkNotNull(intentId); - this.requests = checkNotNull(ImmutableMap.copyOf(requests)); - } - - @Override - public ResourceType type() { - return null; - } - - @Override - public IntentId intentId() { - return intentId; - } - - @Override - public Collection links() { - return requests.keySet(); - } - - @Override - public Set resources() { - return requests.values().stream() - .flatMap(Collection::stream) - .collect(Collectors.toSet()); - } - - @Override - public Set resources(Link link) { - return requests.get(link); - } - - /** - * Returns builder of link resource request. - * - * @param intentId intent ID related to this request - * @param links a set of links for the request - * @return builder of link resource request - */ - public static LinkResourceRequest.Builder builder( - IntentId intentId, Collection links) { - return new Builder(intentId, links); - } - - /** - * Builder of link resource request. - */ - public static final class Builder implements LinkResourceRequest.Builder { - private IntentId intentId; - private Map> requests; - - /** - * Creates a new link resource request. - * - * @param intentId intent ID related to this request - * @param links a set of links for the request - */ - private Builder(IntentId intentId, Collection links) { - this.intentId = intentId; - this.requests = new HashMap<>(); - for (Link link : links) { - requests.put(link, new HashSet<>()); - } - } - - /** - * Adds lambda request. - * - * @return self - * @deprecated in Emu Release - */ - @Deprecated - @Override - public Builder addLambdaRequest() { - for (Link link : requests.keySet()) { - requests.get(link).add(new LambdaResourceRequest()); - } - return this; - } - - @Beta - @Override - public LinkResourceRequest.Builder addLambdaRequest(LambdaResource lambda) { - for (Link link : requests.keySet()) { - requests.get(link).add(new LambdaResourceRequest(lambda)); - } - return this; - } - - /** - * Adds Mpls request. - * - * @return self - * @deprecated in Emu Release - */ - @Deprecated - @Override - public Builder addMplsRequest() { - for (Link link : requests.keySet()) { - requests.get(link).add(new MplsLabelResourceRequest()); - } - return this; - } - - @Beta - @Override - public Builder addMplsRequest(MplsLabel label) { - for (Link link : requests.keySet()) { - requests.get(link).add(new MplsLabelResourceRequest(label)); - } - return this; - } - - @Beta - @Override - public LinkResourceRequest.Builder addMplsRequest(Map labels) { - for (Link link : labels.keySet()) { - if (!requests.containsKey(link)) { - requests.put(link, new HashSet<>()); - } - requests.get(link).add(new MplsLabelResourceRequest(labels.get(link))); - } - - return this; - } - - /** - * Adds bandwidth request with bandwidth value. - * - * @param bandwidth bandwidth value in bits per second to be requested - * @return self - */ - @Override - public Builder addBandwidthRequest(double bandwidth) { - for (Link link : requests.keySet()) { - requests.get(link).add(new BandwidthResourceRequest(new BandwidthResource(Bandwidth.bps(bandwidth)))); - } - return this; - } - - @Override - public LinkResourceRequest.Builder addConstraint(Constraint constraint) { - if (constraint instanceof LambdaConstraint) { - return addLambdaRequest(); - } else if (constraint instanceof BandwidthConstraint) { - BandwidthConstraint bw = (BandwidthConstraint) constraint; - return addBandwidthRequest(bw.bandwidth().bps()); - } - return this; - } - - /** - * Returns link resource request. - * - * @return link resource request - */ - @Override - public LinkResourceRequest build() { - return new DefaultLinkResourceRequest(intentId, requests); - } - } - - @Override - public int hashCode() { - return Objects.hash(intentId, links()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final DefaultLinkResourceRequest other = (DefaultLinkResourceRequest) obj; - return Objects.equals(this.intentId, other.intentId) - && Objects.equals(this.links(), other.links()); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResource.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResource.java deleted file mode 100644 index 06582497..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResource.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import org.onosproject.net.IndexedLambda; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Representation of lambda resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public final class LambdaResource implements LinkResource { - - private final IndexedLambda lambda; - - /** - * Creates a new instance with given lambda. - * - * @param lambda lambda to be assigned - */ - private LambdaResource(IndexedLambda lambda) { - this.lambda = checkNotNull(lambda); - } - - // Constructor for serialization - private LambdaResource() { - this.lambda = null; - } - - /** - * Creates a new instance with the given index of lambda. - * - * @param lambda index value of lambda to be assigned - * @return {@link LambdaResource} instance with the given lambda - */ - public static LambdaResource valueOf(int lambda) { - return valueOf(new IndexedLambda(lambda)); - } - - /** - * Creates a new instance with the given lambda. - * - * @param lambda lambda to be assigned - * @return {@link LambdaResource} instance with the given lambda - */ - public static LambdaResource valueOf(IndexedLambda lambda) { - return new LambdaResource(lambda); - } - - /** - * Returns lambda as an int value. - * - * @return lambda as an int value - */ - public int toInt() { - return (int) lambda.index(); - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof LambdaResource) { - LambdaResource that = (LambdaResource) obj; - return Objects.equals(this.lambda, that.lambda); - } - return false; - } - - @Override - public int hashCode() { - return lambda.hashCode(); - } - - @Override - public String toString() { - return String.valueOf(this.lambda); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceAllocation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceAllocation.java deleted file mode 100644 index 930a6b27..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceAllocation.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.resource.ResourceAllocation; -import org.onosproject.net.resource.ResourceType; - -import java.util.Objects; - -/** - * Representation of allocated lambda resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public class LambdaResourceAllocation implements ResourceAllocation { - private final LambdaResource lambda; - - @Override - public ResourceType type() { - return ResourceType.LAMBDA; - } - - /** - * Creates a new {@link LambdaResourceAllocation} with {@link LambdaResource} - * object. - * - * @param lambda allocated lambda - */ - public LambdaResourceAllocation(LambdaResource lambda) { - this.lambda = lambda; - } - - /** - * Returns the lambda resource. - * - * @return the lambda resource - */ - public LambdaResource lambda() { - return lambda; - } - - @Override - public int hashCode() { - return Objects.hashCode(lambda); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final LambdaResourceAllocation other = (LambdaResourceAllocation) obj; - return Objects.equals(this.lambda, other.lambda); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("lambda", lambda) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceRequest.java deleted file mode 100644 index 24d3d78d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceRequest.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import org.onosproject.net.resource.ResourceRequest; -import org.onosproject.net.resource.ResourceType; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Representation of a request for lambda resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public class LambdaResourceRequest implements ResourceRequest { - - private final LambdaResource lambda; - - /** - * Constructs a request specifying the given lambda. - * - * @param lambda lambda to be requested - */ - @Beta - public LambdaResourceRequest(LambdaResource lambda) { - this.lambda = checkNotNull(lambda); - } - - /** - * Constructs a request asking an arbitrary available lambda. - * - * @deprecated in Emu Release - */ - @Deprecated - public LambdaResourceRequest() { - this.lambda = null; - } - - /** - * Returns the lambda this request expects. - * - * @return the lambda this request expects - */ - @Beta - public LambdaResource lambda() { - return lambda; - } - - @Override - public ResourceType type() { - return ResourceType.LAMBDA; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("lambda", lambda) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResource.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResource.java deleted file mode 100644 index b06f16bf..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResource.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -/** - * Abstraction of link resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public interface LinkResource { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceAllocations.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceAllocations.java deleted file mode 100644 index d0211e26..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceAllocations.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import java.util.Collection; -import java.util.Set; - -import org.onosproject.net.Link; -import org.onosproject.net.intent.IntentId; -import org.onosproject.net.resource.ResourceAllocation; -import org.onosproject.net.resource.ResourceRequest; - -/** - * Representation of allocated link resources. - * - * @deprecated - */ -@Deprecated -public interface LinkResourceAllocations extends ResourceAllocation { - - /** - * Returns the {@link IntentId} associated with the request. - * - * @return the {@link IntentId} associated with the request - */ - IntentId intentId(); - - /** - * Returns the set of target links. - * - * @return the set of target links - */ - Collection links(); - - /** - * Returns the set of resource requests. - * - * @return the set of resource requests - */ - Set resources(); - - /** - * Returns allocated resource for the given link. - * - * @param link the target link - * @return allocated resource for the link - */ - Set getResourceAllocation(Link link); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceEvent.java deleted file mode 100644 index a3702923..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceEvent.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import java.util.Collection; - -import org.onosproject.event.AbstractEvent; - -import com.google.common.collect.ImmutableList; - -/** - * Describes an event related to a Link Resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public final class LinkResourceEvent - extends AbstractEvent> { - - /** - * Type of resource this event is for. - */ - public enum Type { - /** Additional resources are now available. */ - ADDITIONAL_RESOURCES_AVAILABLE - } - - /** - * Constructs a link resource event. - * - * @param type type of resource event to create - * @param linkResourceAllocations allocations that are now available - */ - public LinkResourceEvent(Type type, - Collection linkResourceAllocations) { - super(type, ImmutableList.copyOf(linkResourceAllocations)); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceListener.java deleted file mode 100644 index bbb02e2f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceListener.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import org.onosproject.event.EventListener; - -/** - * Entity for receiving link resource events. - * - * @deprecated in Emu Release - */ -@Deprecated -public interface LinkResourceListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceRequest.java deleted file mode 100644 index 9774e8e7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceRequest.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.resource.link; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; - -import com.google.common.annotations.Beta; -import org.onosproject.net.Link; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.intent.IntentId; -import org.onosproject.net.resource.ResourceRequest; - -/** - * Representation of a request for link resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public interface LinkResourceRequest extends ResourceRequest { - - /** - * Returns the {@link IntentId} associated with the request. - * - * @return the {@link IntentId} associated with the request - */ - IntentId intentId(); - - /** - * Returns the set of target links. - * - * @return the set of target links - */ - Collection links(); - - /** - * Returns the set of resource requests. - * - * @return the set of resource requests - */ - Set resources(); - - /** - * Returns the set of resource request against the specified link. - * - * @param link link whose associated resource request is to be returned - * @return set of resource request against the specified link - */ - @Beta - Set resources(Link link); - - /** - * Builder of link resource request. - */ - interface Builder { - /** - * Adds lambda request. - * - * @return self - * @deprecated in Emu Release - */ - @Deprecated - Builder addLambdaRequest(); - - /** - * Adds lambda request. - * - * @param lambda lambda to be requested - * @return self - */ - @Beta - Builder addLambdaRequest(LambdaResource lambda); - - /** - * Adds MPLS request. - * - * @return self - * @deprecated in Emu Release - */ - @Deprecated - Builder addMplsRequest(); - - /** - * Adds MPLS request. - * - * @param label MPLS label to be requested - * @return self - */ - @Beta - Builder addMplsRequest(MplsLabel label); - - /** - * Adds MPLS request against the specified links. - * - * @param labels MPLS labels to be requested against links - * @return self - */ - @Beta - Builder addMplsRequest(Map labels); - - /** - * Adds bandwidth request with bandwidth value. - * - * @param bandwidth bandwidth value to be requested - * @return self - */ - Builder addBandwidthRequest(double bandwidth); - - /** - * Adds the resources required for a constraint. - * - * @param constraint the constraint - * @return self - */ - Builder addConstraint(Constraint constraint); - - /** - * Returns link resource request. - * - * @return link resource request - */ - LinkResourceRequest build(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceService.java deleted file mode 100644 index 71ea7e1a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceService.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import org.onosproject.event.ListenerService; -import org.onosproject.net.Link; -import org.onosproject.net.intent.IntentId; -import org.onosproject.net.resource.ResourceRequest; - -/** - * Service for providing link resource allocation. - * - * @deprecated in Emu Release - */ -@Deprecated -public interface LinkResourceService - extends ListenerService { - - /** - * Requests resources. - * - * @param req resources to be allocated - * @return allocated resources - * @deprecated in Emu Release - */ - @Deprecated - LinkResourceAllocations requestResources(LinkResourceRequest req); - - /** - * Releases resources. - * - * @param allocations resources to be released - * @deprecated in Emu Release - */ - @Deprecated - void releaseResources(LinkResourceAllocations allocations); - - /** - * Updates previously made allocations with a new resource request. - * - * @param req updated resource request - * @param oldAllocations old resource allocations - * @return new resource allocations - * @deprecated in Emu Release - */ - @Deprecated - LinkResourceAllocations updateResources(LinkResourceRequest req, - LinkResourceAllocations oldAllocations); - - /** - * Returns all allocated resources. - * - * @return allocated resources - * @deprecated in Emu Release - */ - @Deprecated - Iterable getAllocations(); - - /** - * Returns all allocated resources to given link. - * - * @param link a target link - * @return allocated resources - * @deprecated in Emu Release - */ - @Deprecated - Iterable getAllocations(Link link); - - /** - * Returns the resources allocated for an Intent. - * - * @param intentId the target Intent's id - * @return allocated resources for Intent - * @deprecated in Emu Release - */ - @Deprecated - LinkResourceAllocations getAllocations(IntentId intentId); - - /** - * Returns available resources for given link. - * - * @param link a target link - * @return available resources for the target link - * @deprecated in Emu Release - */ - @Deprecated - Iterable getAvailableResources(Link link); - - /** - * Returns available resources for given link. - * - * @param link a target link - * @param allocations allocations to be included as available - * @return available resources for the target link - * @deprecated in Emu Release - */ - @Deprecated - Iterable getAvailableResources(Link link, - LinkResourceAllocations allocations); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStore.java deleted file mode 100644 index e8a295c2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStore.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import java.util.Set; - -import org.onosproject.net.Link; -import org.onosproject.net.intent.IntentId; -import org.onosproject.net.resource.ResourceAllocation; - -/** - * Manages link resources. - * - * @deprecated in Emu Release. - */ -@Deprecated -public interface LinkResourceStore { - /** - * Returns free resources for given link. - * - * @param link a target link - * @return free resources for given link - */ - Set getFreeResources(Link link); - - /** - * Allocates resources. - * - * @param allocations resources to be allocated - */ - void allocateResources(LinkResourceAllocations allocations); - - /** - * Releases resources. - * - * @param allocations resources to be released - * @return the link resource event - */ - LinkResourceEvent releaseResources(LinkResourceAllocations allocations); - - /** - * Returns resources allocated for an Intent. - * - * @param intentId the target Intent's ID - * @return allocated resources or null if no resource is allocated - */ - LinkResourceAllocations getAllocations(IntentId intentId); - - /** - * Returns resources allocated for a link. - * - * @param link the target link - * @return allocated resources - */ - Iterable getAllocations(Link link); - - /** - * Returns all allocated resources. - * - * @return allocated resources - */ - Iterable getAllocations(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStoreDelegate.java deleted file mode 100644 index dbfb3b04..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStoreDelegate.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import org.onosproject.store.StoreDelegate; - -/** - * Link resource store delegate abstraction. - * - * @deprecated in Emu Release - */ -@Deprecated -public interface LinkResourceStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResources.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResources.java deleted file mode 100644 index 46450427..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/LinkResources.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.resource.link; - -import java.util.Set; - -/** - * Abstraction of a resources of a link. - * - * @deprecated in Emu Release - */ -@Deprecated -public interface LinkResources { - - /** - * Returns resources as a set of {@link LinkResource}s. - * - * @return a set of {@link LinkResource}s - */ - Set resources(); - - /** - * Builder of {@link LinkResources}. - * - * @deprecated in Emu Release - */ - @Deprecated - interface Builder { - - /** - * Adds bandwidth resource. - *

- * This operation adds given bandwidth to previous bandwidth and - * generates single bandwidth resource. - * - * @param bandwidth bandwidth value to be added - * @return self - */ - Builder addBandwidth(double bandwidth); - - /** - * Adds lambda resource. - * - * @param lambda lambda value to be added - * @return self - */ - Builder addLambda(int lambda); - - /** - * Builds an immutable link resources. - * - * @return link resources - */ - LinkResources build(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabel.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabel.java deleted file mode 100644 index 5138d02c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabel.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.resource.link; - -import java.util.Objects; - -/** - * Representation of MPLS label resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public final class MplsLabel implements LinkResource { - - private final org.onlab.packet.MplsLabel mplsLabel; - - - /** - * Creates a new instance with given MPLS label. - * - * @param mplsLabel MPLS Label value to be assigned - */ - public MplsLabel(int mplsLabel) { - this.mplsLabel = org.onlab.packet.MplsLabel.mplsLabel(mplsLabel); - } - - /** - * Creates a new instance with given MPLS label. - * - * @param mplsLabel mplsLabel value to be assigned - * @return {@link MplsLabel} instance with given bandwidth - */ - public static MplsLabel valueOf(int mplsLabel) { - return new MplsLabel(mplsLabel); - } - - /** - * Returns MPLS Label as an MPLS Label Object. - * - * @return MPLS label as an MPLS Label Object. - */ - public org.onlab.packet.MplsLabel label() { - return mplsLabel; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof MplsLabel) { - MplsLabel that = (MplsLabel) obj; - return Objects.equals(this.mplsLabel, that.mplsLabel); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hashCode(this.mplsLabel); - } - - @Override - public String toString() { - return String.valueOf(this.mplsLabel); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceAllocation.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceAllocation.java deleted file mode 100644 index 7441bee9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceAllocation.java +++ /dev/null @@ -1,81 +0,0 @@ - /* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.resource.link; - -import com.google.common.base.MoreObjects; -import org.onosproject.net.resource.ResourceAllocation; -import org.onosproject.net.resource.ResourceType; - -import java.util.Objects; - -/** - * Representation of allocated MPLS label resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public class MplsLabelResourceAllocation implements ResourceAllocation { - private final MplsLabel mplsLabel; - - @Override - public ResourceType type() { - return ResourceType.MPLS_LABEL; - } - - /** - * Creates a new {@link MplsLabelResourceAllocation} with {@link MplsLabel} - * object. - * - * @param mplsLabel allocated MPLS Label - */ - public MplsLabelResourceAllocation(MplsLabel mplsLabel) { - this.mplsLabel = mplsLabel; - } - - /** - * Returns the MPLS label resource. - * - * @return the MPLS label resource - */ - public MplsLabel mplsLabel() { - return mplsLabel; - } - - @Override - public int hashCode() { - return Objects.hashCode(mplsLabel); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final MplsLabelResourceAllocation other = (MplsLabelResourceAllocation) obj; - return Objects.equals(this.mplsLabel, other.mplsLabel); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("mplsLabel", mplsLabel) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceRequest.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceRequest.java deleted file mode 100644 index 5b9c4a0a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceRequest.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.resource.link; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import org.onosproject.net.resource.ResourceRequest; -import org.onosproject.net.resource.ResourceType; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Representation of a request for lambda resource. - * - * @deprecated in Emu Release - */ -@Deprecated -public class MplsLabelResourceRequest implements ResourceRequest { - - private final MplsLabel mplsLabel; - - /** - * Constructs a request specifying the given MPLS label. - * - * @param mplsLabel MPLS label to be requested - */ - @Beta - public MplsLabelResourceRequest(MplsLabel mplsLabel) { - this.mplsLabel = checkNotNull(mplsLabel); - } - - /** - * Constructs a request asking an arbitrary available MPLS label. - * - * @deprecated in Emu Release - */ - @Deprecated - public MplsLabelResourceRequest() { - this.mplsLabel = null; - } - - /** - * Returns the MPLS label this request expects. - * - * @return the MPLS label this request expects - */ - @Beta - public MplsLabel mplsLabel() { - return mplsLabel; - } - - @Override - public ResourceType type() { - return ResourceType.MPLS_LABEL; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("mplsLabel", mplsLabel) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/package-info.java deleted file mode 100644 index f374d778..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/link/package-info.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Services for reserving links and their capacity as network resources, - * e.g. bandwidth, lambdas. - *

- * Note: Classes under the package will be remove. - * Developers should not use the classes. - * This package is marked as deprecated in Emu Release. - *

- */ -@Deprecated -package org.onosproject.net.resource.link; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/package-info.java deleted file mode 100644 index a05dfda1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/resource/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Abstractions for reserving network resources. - *

- * Note: Classes under the package will be removed. - * Developers should not use the classes. - *

- */ -package org.onosproject.net.resource; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/DefaultLoad.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/DefaultLoad.java deleted file mode 100644 index 45e85372..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/DefaultLoad.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.statistic; - -import com.google.common.base.MoreObjects; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Implementation of a load. - */ -public class DefaultLoad implements Load { - - private final boolean isValid; - private final long current; - private final long previous; - private final long time; - private final long interval; - - /** - * Indicates the flow statistics poll interval in seconds. - */ - private static long pollInterval = 10; - - /** - * Creates an invalid load. - */ - public DefaultLoad() { - this.isValid = false; - this.time = System.currentTimeMillis(); - this.current = -1; - this.previous = -1; - this.interval = pollInterval; - } - - /** - * Creates a load value from the parameters. - * - * @param current the current value - * @param previous the previous value - */ - public DefaultLoad(long current, long previous) { - this(current, previous, pollInterval); - } - - /** - * Creates a load value from the parameters. - * - * @param current the current value - * @param previous the previous value - * @param interval poll interval for this load - */ - public DefaultLoad(long current, long previous, long interval) { - checkArgument(interval > 0, "Interval must be greater than 0"); - this.current = current; - this.previous = previous; - this.time = System.currentTimeMillis(); - this.isValid = true; - this.interval = interval; - } - - /** - * Sets the poll interval in seconds. Used solely for the purpose of - * computing the load. - * - * @param newPollInterval poll interval duration in seconds - */ - public static void setPollInterval(long newPollInterval) { - pollInterval = newPollInterval; - } - - @Override - public long rate() { - return (current - previous) / interval; - } - - @Override - public long latest() { - return current; - } - - @Override - public boolean isValid() { - return isValid; - } - - @Override - public long time() { - return time; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper("Load").add("rate", rate()) - .add("latest", latest()).toString(); - - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/FlowStatisticService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/FlowStatisticService.java deleted file mode 100644 index 5216839e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/FlowStatisticService.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.statistic; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Device; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.TypedStoredFlowEntry; -import org.onosproject.net.flow.instructions.Instruction; - -import java.util.List; -import java.util.Map; - -/** - * Service for obtaining individual flow statistic information about device and link in the system. - * Basic statistics are obtained from the StatisticService - */ -public interface FlowStatisticService { - - /** - * Obtain the summary load list for the device with the given link. - * - * @param device the Device to query. - * @return map of summary flow entry load - */ - Map loadSummary(Device device); - - /** - * Obtain the summary load for the device with the given link or port. - * - * @param device the Device to query. - * @param pNumber the port number to query. - * @return summary flow entry load - */ - SummaryFlowEntryWithLoad loadSummary(Device device, PortNumber pNumber); - - /** - * Obtain the set of the flow type and load list for the device with the given link. - * - * @param device the Device to query. - * @param liveType the FlowLiveType to filter, null means no filtering . - * @param instType the InstructionType to filter, null means no filtering. - * @return map of flow entry load - */ - Map> loadAllByType(Device device, - TypedStoredFlowEntry.FlowLiveType liveType, - Instruction.Type instType); - - /** - * Obtain the flow type and load list for the device with the given link or port. - * - * @param device the Device to query. - * @param pNumber the port number of the Device to query - * @param liveType the FlowLiveType to filter, null means no filtering . - * @param instType the InstructionType to filter, null means no filtering. - * @return list of flow entry load - */ - List loadAllByType(Device device, PortNumber pNumber, - TypedStoredFlowEntry.FlowLiveType liveType, - Instruction.Type instType); - - /** - * Obtain the set of the flow type and load topn list for the device with the given link. - * - * @param device the Device to query. - * @param liveType the FlowLiveType to filter, null means no filtering . - * @param instType the InstructionType to filter, null means no filtering. - * @param topn the top number to filter, null means no filtering. - * @return map of flow entry load - */ - Map> loadTopnByType(Device device, - TypedStoredFlowEntry.FlowLiveType liveType, - Instruction.Type instType, - int topn); - - /** - * Obtain the flow type and load topn list for the device with the given link or port. - * - * @param device the Device to query. - * @param pNumber the port number of the Device to query - * @param liveType the FlowLiveType to filter, null means no filtering . - * @param instType the InstructionType to filter, null means no filtering. - * @param topn topn //FIXME what? - * @return list of flow entry load - */ - List loadTopnByType(Device device, PortNumber pNumber, - TypedStoredFlowEntry.FlowLiveType liveType, - Instruction.Type instType, - int topn); -} - - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/FlowStatisticStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/FlowStatisticStore.java deleted file mode 100644 index 3c2aa89b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/FlowStatisticStore.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.statistic; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.flow.FlowEntry; -import org.onosproject.net.flow.FlowRule; - -import java.util.Set; - -/** - * Flow Store to house the computed statistics. - */ -public interface FlowStatisticStore { - /** - * Remove entries associated with this rule. - * - * @param rule {@link org.onosproject.net.flow.FlowRule} - */ - void removeFlowStatistic(FlowRule rule); - - /** - * Adds a flow stats observation for a flow rule. The previous flow will be removed. - * - * @param rule a {@link org.onosproject.net.flow.FlowEntry} - */ - void addFlowStatistic(FlowEntry rule); - - /** - * Updates a stats observation for a flow rule. The old flow stats will be moved to previous stats. - * - * @param rule a {@link org.onosproject.net.flow.FlowEntry} - */ - void updateFlowStatistic(FlowEntry rule); - - /** - * Fetches the current observed flow stats values. - * - * @param connectPoint the port to fetch information for - * @return set of current flow rules - */ - Set getCurrentFlowStatistic(ConnectPoint connectPoint); - - /** - * Fetches the current observed flow stats values. - * - * @param connectPoint the port to fetch information for - * @return set of current values - */ - Set getPreviousFlowStatistic(ConnectPoint connectPoint); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/Load.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/Load.java deleted file mode 100644 index 38fed04e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/Load.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.statistic; - -/** - * Simple data repository for link load information. - */ -public interface Load { - - /** - * Obtain the current observed rate (in bytes/s) on a link. - * - * @return long value - */ - long rate(); - - /** - * Obtain the latest bytes counter viewed on that link. - * - * @return long value - */ - long latest(); - - /** - * Indicates whether this load was built on valid values. - * - * @return boolean - */ - boolean isValid(); - - /** - * Returns when this value was seen. - * - * @return epoch time - */ - long time(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/StatisticService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/StatisticService.java deleted file mode 100644 index b9f7cc91..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/StatisticService.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.statistic; - -import org.onosproject.core.ApplicationId; -import org.onosproject.core.GroupId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.flow.FlowRule; - -import java.util.Optional; - -/** - * Service for obtaining statistic information about link in the system. - * Statistics are obtained from the FlowRuleService in order to minimize the - * amount of hammering occuring at the dataplane. - */ -public interface StatisticService { - - /** - * Obtain the load for a the ingress to the given link. - * - * @param link the link to query. - * @return a {@link org.onosproject.net.statistic.Load Load} - */ - Load load(Link link); - - /** - * Obtain the load for the given port. - * - * @param connectPoint the port to query - * @return a {@link org.onosproject.net.statistic.Load} - */ - Load load(ConnectPoint connectPoint); - - /** - * Find the most loaded link along a path. - * - * @param path the path to search in - * @return the most loaded {@link org.onosproject.net.Link}. - */ - Link max(Path path); - - /** - * Find the least loaded link along a path. - * - * @param path the path to search in - * @return the least loaded {@link org.onosproject.net.Link}. - */ - Link min(Path path); - - /** - * Returns the highest hitter (a flow rule) for a given port, ie. the - * flow rule which is generating the most load. - * - * @param connectPoint the port - * @return the flow rule - */ - FlowRule highestHitter(ConnectPoint connectPoint); - - /** - * Obtain the load for a the ingress to the given link used by - * the specified application ID and group ID. - * - * @param link link to query - * @param appId application ID to filter with - * @param groupId group ID to filter with - * @return {@link Load Load} - */ - Load load(Link link, ApplicationId appId, Optional groupId); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/StatisticStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/StatisticStore.java deleted file mode 100644 index 8566ef5b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/StatisticStore.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.statistic; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.flow.FlowEntry; -import org.onosproject.net.flow.FlowRule; - -import java.util.Set; - -/** - * Store to house the computed statistics. - */ -public interface StatisticStore { - - /** - * Lay the foundation for receiving flow stats for this rule. - * - * @param rule a {@link org.onosproject.net.flow.FlowRule} - */ - void prepareForStatistics(FlowRule rule); - - /** - * Remove entries associated with this rule. - * - * @param rule {@link org.onosproject.net.flow.FlowRule} - */ - void removeFromStatistics(FlowRule rule); - - /** - * Adds a stats observation for a flow rule. - * - * @param rule a {@link org.onosproject.net.flow.FlowEntry} - */ - void addOrUpdateStatistic(FlowEntry rule); - - /** - * Fetches the current observed stats values. - * - * @param connectPoint the port to fetch information for - * @return set of current flow rules - */ - Set getCurrentStatistic(ConnectPoint connectPoint); - - /** - * Fetches the current observed stats values. - * - * @param connectPoint the port to fetch information for - * @return set of current values - */ - Set getPreviousStatistic(ConnectPoint connectPoint); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/SummaryFlowEntryWithLoad.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/SummaryFlowEntryWithLoad.java deleted file mode 100644 index 1ec427c0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/SummaryFlowEntryWithLoad.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.statistic; - -import org.onosproject.net.ConnectPoint; - -/** - * Summary Load classified by flow live type. - */ -public class SummaryFlowEntryWithLoad { - private ConnectPoint cp; - private Load totalLoad; - private Load immediateLoad; - private Load shortLoad; - private Load midLoad; - private Load longLoad; - private Load unknownLoad; - - /** - * Creates a new summary flow entry having load for the given connect point and total load. - * - * @param cp connect point - * @param totalLoad total load - */ - public SummaryFlowEntryWithLoad(ConnectPoint cp, Load totalLoad) { - this.cp = cp; - this.totalLoad = totalLoad; - this.immediateLoad = new DefaultLoad(); - this.shortLoad = new DefaultLoad(); - this.midLoad = new DefaultLoad(); - this.longLoad = new DefaultLoad(); - this.unknownLoad = new DefaultLoad(); - } - - /** - * Creates a new summary flow entry having load for the given connect point - * and total, immediate, short, mid, and long load. - * - * @param cp connect point - * @param totalLoad total load - * @param immediateLoad immediate load - * @param shortLoad short load - * @param midLoad mid load - * @param longLoad long load - */ - public SummaryFlowEntryWithLoad(ConnectPoint cp, - Load totalLoad, Load immediateLoad, Load shortLoad, Load midLoad, Load longLoad) { - this.cp = cp; - this.totalLoad = totalLoad; - this.immediateLoad = immediateLoad; - this.shortLoad = shortLoad; - this.midLoad = midLoad; - this.longLoad = longLoad; - this.unknownLoad = new DefaultLoad(); - } - - /** - * Creates a new summary flow entry having load for the given connect point - * and total, immediate, short, mid, long, and unknown load. - * - * @param cp connect point - * @param totalLoad total load - * @param immediateLoad immediate load - * @param shortLoad short load - * @param midLoad mid load - * @param longLoad long load - * @param unknownLoad long load - */ - public SummaryFlowEntryWithLoad(ConnectPoint cp, - Load totalLoad, Load immediateLoad, - Load shortLoad, Load midLoad, Load longLoad, Load unknownLoad) { - this.cp = cp; - this.totalLoad = totalLoad; - this.immediateLoad = immediateLoad; - this.shortLoad = shortLoad; - this.midLoad = midLoad; - this.longLoad = longLoad; - this.unknownLoad = unknownLoad; - } - - /** - * Returns connect point. - * - * @return connect point - */ - public ConnectPoint connectPoint() { - return cp; - } - - /** - * Returns total load of connect point. - * - * @return total load - */ - public Load totalLoad() { - return totalLoad; - } - - /** - * Returns immediate load of connect point. - * - * @return immediate load - */ - public Load immediateLoad() { - return immediateLoad; - } - - /** - * Returns short load of connect point. - * - * @return short load - */ - public Load shortLoad() { - return shortLoad; - } - - /** - * Returns mid load of connect point. - * - * @return mid load - */ - public Load midLoad() { - return midLoad; - } - - /** - * Returns long load of connect point. - * - * @return long load - */ - public Load longLoad() { - return longLoad; - } - - /** - * Returns unknown load of connect point. - * - * @return unknown load - */ - public Load unknownLoad() { - return unknownLoad; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/TypedFlowEntryWithLoad.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/TypedFlowEntryWithLoad.java deleted file mode 100644 index a4cbd7d0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/TypedFlowEntryWithLoad.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.statistic; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.flow.FlowEntry; -import org.onosproject.net.flow.TypedStoredFlowEntry; -import org.onosproject.net.flow.DefaultTypedFlowEntry; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Load of flow entry of flow live type. - */ -public class TypedFlowEntryWithLoad { - private ConnectPoint cp; - private TypedStoredFlowEntry tfe; - private Load load; - - //TODO: make this variables class, and share with NewAdaptivceFlowStatsCollector class - private static final int CAL_AND_POLL_INTERVAL = 5; // means SHORT_POLL_INTERVAL - private static final int MID_POLL_INTERVAL = 10; - private static final int LONG_POLL_INTERVAL = 15; - - /** - * Creates a new typed flow entry with load. - * - * @param cp connect point - * @param tfe typed flow entry - * @param load load - */ - public TypedFlowEntryWithLoad(ConnectPoint cp, TypedStoredFlowEntry tfe, Load load) { - this.cp = cp; - this.tfe = tfe; - this.load = load; - } - - /** - * Creates a new typed flow entry with load. - * - * @param cp connect point - * @param tfe typed flow entry - */ - public TypedFlowEntryWithLoad(ConnectPoint cp, TypedStoredFlowEntry tfe) { - this.cp = cp; - this.tfe = tfe; - this.load = new DefaultLoad(tfe.bytes(), 0, typedPollInterval(tfe)); - } - - /** - * Creates a new typed flow entry with load. - * - * @param cp connect point - * @param fe flow entry - */ - public TypedFlowEntryWithLoad(ConnectPoint cp, FlowEntry fe) { - this.cp = cp; - this.tfe = newTypedStoredFlowEntry(fe); - this.load = new DefaultLoad(fe.bytes(), 0, typedPollInterval(this.tfe)); - } - - public ConnectPoint connectPoint() { - return cp; - } - public TypedStoredFlowEntry typedStoredFlowEntry() { - return tfe; - } - public Load load() { - return load; - } - public void setLoad(Load load) { - this.load = load; - } - - /** - * Returns short polling interval. - * - * @return short poll interval - */ - public static int shortPollInterval() { - return CAL_AND_POLL_INTERVAL; - } - - /** - * Returns mid polling interval. - * - * @return mid poll interval - */ - public static int midPollInterval() { - return MID_POLL_INTERVAL; - } - - /** - * Returns long polling interval. - * - * @return long poll interval - */ - public static int longPollInterval() { - return LONG_POLL_INTERVAL; - } - - /** - * Returns average polling interval. - * - * @return average poll interval - */ - public static int avgPollInterval() { - return (CAL_AND_POLL_INTERVAL + MID_POLL_INTERVAL + LONG_POLL_INTERVAL) / 3; - } - - /** - * Returns current typed flow entry's polling interval. - * - * @param tfe typed flow entry - * @return typed poll interval - */ - public static long typedPollInterval(TypedStoredFlowEntry tfe) { - checkNotNull(tfe, "TypedStoredFlowEntry cannot be null"); - - switch (tfe.flowLiveType()) { - case LONG_FLOW: - return LONG_POLL_INTERVAL; - case MID_FLOW: - return MID_POLL_INTERVAL; - case SHORT_FLOW: - case IMMEDIATE_FLOW: - default: - return CAL_AND_POLL_INTERVAL; - } - } - - /** - * Creates a new typed flow entry with the given flow entry fe. - * - * @param fe flow entry - * @return new typed flow entry - */ - public static TypedStoredFlowEntry newTypedStoredFlowEntry(FlowEntry fe) { - if (fe == null) { - return null; - } - - long life = fe.life(); - - if (life >= LONG_POLL_INTERVAL) { - return new DefaultTypedFlowEntry(fe, TypedStoredFlowEntry.FlowLiveType.LONG_FLOW); - } else if (life >= MID_POLL_INTERVAL) { - return new DefaultTypedFlowEntry(fe, TypedStoredFlowEntry.FlowLiveType.MID_FLOW); - } else if (life >= CAL_AND_POLL_INTERVAL) { - return new DefaultTypedFlowEntry(fe, TypedStoredFlowEntry.FlowLiveType.SHORT_FLOW); - } else if (life >= 0) { - return new DefaultTypedFlowEntry(fe, TypedStoredFlowEntry.FlowLiveType.IMMEDIATE_FLOW); - } else { // life < 0 - return new DefaultTypedFlowEntry(fe, TypedStoredFlowEntry.FlowLiveType.UNKNOWN_FLOW); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/package-info.java deleted file mode 100644 index 37889f3d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/statistic/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Service for looking up statistics on links. - */ -package org.onosproject.net.statistic; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/ClusterId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/ClusterId.java deleted file mode 100644 index 1e6780fa..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/ClusterId.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Representation of the topology cluster identity. - */ -public final class ClusterId { - - private final int id; - - // Public construction is prohibit - private ClusterId(int id) { - this.id = id; - } - - /** - * Returns the cluster identifier, represented by the specified integer - * serial number. - * - * @param id integer serial number - * @return cluster identifier - */ - public static ClusterId clusterId(int id) { - return new ClusterId(id); - } - - /** - * Returns the backing integer index. - * - * @return backing integer index - */ - public int index() { - return id; - } - - @Override - public int hashCode() { - return id; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ClusterId) { - final ClusterId other = (ClusterId) obj; - return Objects.equals(this.id, other.id); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id).toString(); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultGraphDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultGraphDescription.java deleted file mode 100644 index 965c05d4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultGraphDescription.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.topology; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Maps; -import org.onosproject.net.AbstractDescription; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.SparseAnnotations; -import org.slf4j.Logger; - -import java.util.Map; - -import static com.google.common.base.Preconditions.checkArgument; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Default implementation of an immutable topology graph data carrier. - */ -public class DefaultGraphDescription extends AbstractDescription - implements GraphDescription { - - private static final Logger log = getLogger(DefaultGraphDescription.class); - - private final long nanos; - private final long creationTime; - private final ImmutableSet vertexes; - private final ImmutableSet edges; - - private final Map vertexesById = Maps.newHashMap(); - - /** - * Creates a minimal topology graph description to allow core to construct - * and process the topology graph. - * - * @param nanos time in nanos of when the topology description was created - * @param millis time in millis of when the topology description was created - * @param devices collection of infrastructure devices - * @param links collection of infrastructure links - * @param annotations optional key/value annotations map - */ - public DefaultGraphDescription(long nanos, long millis, - Iterable devices, - Iterable links, - SparseAnnotations... annotations) { - super(annotations); - this.nanos = nanos; - this.creationTime = millis; - this.vertexes = buildVertexes(devices); - this.edges = buildEdges(links); - vertexesById.clear(); - } - - @Override - public long timestamp() { - return nanos; - } - - @Override - public long creationTime() { - return creationTime; - } - - @Override - public ImmutableSet vertexes() { - return vertexes; - } - - @Override - public ImmutableSet edges() { - return edges; - } - - // Builds a set of topology vertexes from the specified list of devices - private ImmutableSet buildVertexes(Iterable devices) { - ImmutableSet.Builder vertexes = ImmutableSet.builder(); - for (Device device : devices) { - TopologyVertex vertex = new DefaultTopologyVertex(device.id()); - vertexes.add(vertex); - vertexesById.put(vertex.deviceId(), vertex); - } - return vertexes.build(); - } - - // Builds a set of topology vertexes from the specified list of links - private ImmutableSet buildEdges(Iterable links) { - ImmutableSet.Builder edges = ImmutableSet.builder(); - for (Link link : links) { - try { - edges.add(new DefaultTopologyEdge(vertexOf(link.src()), - vertexOf(link.dst()), - link)); - } catch (IllegalArgumentException e) { - log.debug("Ignoring {}, missing vertex", link); - } - } - return edges.build(); - } - - // Fetches a vertex corresponding to the given connection point device. - private TopologyVertex vertexOf(ConnectPoint connectPoint) { - DeviceId id = connectPoint.deviceId(); - TopologyVertex vertex = vertexesById.get(id); - checkArgument(vertex != null, "Vertex missing for %s", id); - return vertex; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyCluster.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyCluster.java deleted file mode 100644 index ac32316c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyCluster.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.topology; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Default implementation of a network topology cluster. - */ -public class DefaultTopologyCluster implements TopologyCluster { - - private final ClusterId id; - private final int deviceCount; - private final int linkCount; - private final TopologyVertex root; - - /** - * Creates a new topology cluster descriptor with the specified attributes. - * - * @param id cluster id - * @param deviceCount number of devices in the cluster - * @param linkCount number of links in the cluster - * @param root cluster root node - */ - public DefaultTopologyCluster(ClusterId id, int deviceCount, int linkCount, - TopologyVertex root) { - this.id = id; - this.deviceCount = deviceCount; - this.linkCount = linkCount; - this.root = root; - } - - @Override - public ClusterId id() { - return id; - } - - @Override - public int deviceCount() { - return deviceCount; - } - - @Override - public int linkCount() { - return linkCount; - } - - @Override - public TopologyVertex root() { - return root; - } - - @Override - public int hashCode() { - return Objects.hash(id, deviceCount, linkCount, root); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultTopologyCluster) { - final DefaultTopologyCluster other = (DefaultTopologyCluster) obj; - return Objects.equals(this.id, other.id) && - Objects.equals(this.deviceCount, other.deviceCount) && - Objects.equals(this.linkCount, other.linkCount) && - Objects.equals(this.root, other.root); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("id", id) - .add("deviceCount", deviceCount) - .add("linkCount", linkCount) - .add("root", root) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyEdge.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyEdge.java deleted file mode 100644 index 99d700e1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyEdge.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.net.Link; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Implementation of the topology edge backed by a link. - */ -public class DefaultTopologyEdge implements TopologyEdge { - - private final Link link; - private final TopologyVertex src; - private final TopologyVertex dst; - - /** - * Creates a new topology edge. - * - * @param src source vertex - * @param dst destination vertex - * @param link infrastructure link - */ - public DefaultTopologyEdge(TopologyVertex src, TopologyVertex dst, Link link) { - this.src = src; - this.dst = dst; - this.link = checkNotNull(link); - } - - @Override - public Link link() { - return link; - } - - @Override - public TopologyVertex src() { - return src; - } - - @Override - public TopologyVertex dst() { - return dst; - } - - @Override - public int hashCode() { - return link.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultTopologyEdge) { - final DefaultTopologyEdge other = (DefaultTopologyEdge) obj; - return Objects.equals(this.link, other.link); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("src", src).add("dst", dst).toString(); - } - -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyVertex.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyVertex.java deleted file mode 100644 index 4782bc95..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/DefaultTopologyVertex.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.net.DeviceId; - -import java.util.Objects; - -/** - * Implementation of the topology vertex backed by a device id. - */ -public class DefaultTopologyVertex implements TopologyVertex { - - private final DeviceId deviceId; - - /** - * Creates a new topology vertex. - * - * @param deviceId backing infrastructure device identifier - */ - public DefaultTopologyVertex(DeviceId deviceId) { - this.deviceId = deviceId; - } - - @Override - public DeviceId deviceId() { - return deviceId; - } - - @Override - public int hashCode() { - return deviceId.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultTopologyVertex) { - final DefaultTopologyVertex other = (DefaultTopologyVertex) obj; - return Objects.equals(this.deviceId, other.deviceId); - } - return false; - } - - @Override - public String toString() { - return deviceId.toString(); - } - -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/GeoDistanceLinkWeight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/GeoDistanceLinkWeight.java deleted file mode 100644 index c966902e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/GeoDistanceLinkWeight.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.topology; - -import org.onlab.util.GeoLocation; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.net.Annotations; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.device.DeviceService; - -import static java.lang.Double.MAX_VALUE; - -/** - * Link weight for measuring link cost using the geo distance between link - * vertices as determined by the element longitude/latitude annotation. - */ -public class GeoDistanceLinkWeight implements LinkWeight { - - private static final double MAX_KM = 40_075 / 2.0; - - private final DeviceService deviceService; - - /** - * Creates a new link-weight with access to the specified device service. - * - * @param deviceService device service reference - */ - public GeoDistanceLinkWeight(DeviceService deviceService) { - this.deviceService = deviceService; - } - - @Override - public double weight(TopologyEdge edge) { - GeoLocation src = getLocation(edge.link().src().deviceId()); - GeoLocation dst = getLocation(edge.link().dst().deviceId()); - return src != null && dst != null ? src.kilometersTo(dst) : MAX_KM; - } - - private GeoLocation getLocation(DeviceId deviceId) { - Device d = deviceService.getDevice(deviceId); - Annotations a = d != null ? d.annotations() : null; - double latitude = getDouble(a, AnnotationKeys.LATITUDE); - double longitude = getDouble(a, AnnotationKeys.LONGITUDE); - return latitude == MAX_VALUE || longitude == MAX_VALUE ? null : - new GeoLocation(latitude, longitude); - } - - private double getDouble(Annotations a, String key) { - String value = a != null ? a.value(key) : null; - try { - return value != null ? Double.parseDouble(value) : MAX_VALUE; - } catch (NumberFormatException e) { - return MAX_VALUE; - } - } -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/GraphDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/GraphDescription.java deleted file mode 100644 index 806a5a45..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/GraphDescription.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.net.Description; - -import com.google.common.collect.ImmutableSet; - -/** - * Describes attribute(s) of a network graph. - */ -public interface GraphDescription extends Description { - - /** - * Returns the creation timestamp of the graph description. This is - * expressed in system nanos to allow proper sequencing. - * - * @return graph description creation timestamp - */ - long timestamp(); - - /** - * Returns the creation timestamp of the graph description. This is - * expressed in system millis to allow proper date and time formatting. - * - * @return graph description creation timestamp in millis - */ - long creationTime(); - - /** - * Returns the set of topology graph vertexes. - * - * @return set of graph vertexes - */ - ImmutableSet vertexes(); - - /** - * Returns the set of topology graph edges. - * - * @return set of graph edges - */ - ImmutableSet edges(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/HopCountLinkWeight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/HopCountLinkWeight.java deleted file mode 100644 index c557016b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/HopCountLinkWeight.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.onosproject.net.topology; - -import static org.onosproject.net.Link.State.ACTIVE; -import static org.onosproject.net.Link.Type.INDIRECT; - -/** - * Link weight for measuring link cost as hop count with indirect links - * being as expensive as traversing the entire graph to assume the worst. - */ -public class HopCountLinkWeight implements LinkWeight { - private final int indirectLinkCost; - - /** - * Creates a new hop-count weight. - */ - public HopCountLinkWeight() { - this.indirectLinkCost = Short.MAX_VALUE; - } - - /** - * Creates a new hop-count weight with the specified cost of indirect links. - */ - public HopCountLinkWeight(int indirectLinkCost) { - this.indirectLinkCost = indirectLinkCost; - } - - @Override - public double weight(TopologyEdge edge) { - // To force preference to use direct paths first, make indirect - // links as expensive as the linear vertex traversal. - return edge.link().state() == - ACTIVE ? (edge.link().type() == - INDIRECT ? indirectLinkCost : 1) : -1; - } -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/LinkWeight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/LinkWeight.java deleted file mode 100644 index a19abd40..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/LinkWeight.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onlab.graph.EdgeWeight; - -/** - * Entity capable of determining cost or weight of a specified topology - * graph edge. - */ -public interface LinkWeight extends EdgeWeight { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/MetricLinkWeight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/MetricLinkWeight.java deleted file mode 100644 index 8463e087..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/MetricLinkWeight.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.net.AnnotationKeys; - -/** - * Link weight for measuring link cost using the link metric annotation. - */ -public class MetricLinkWeight implements LinkWeight { - - @Override - public double weight(TopologyEdge edge) { - String v = edge.link().annotations().value(AnnotationKeys.METRIC); - try { - return v != null ? Double.parseDouble(v) : 1; - } catch (NumberFormatException e) { - return 1; - } - } -} - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/PathAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/PathAdminService.java deleted file mode 100644 index 9d077e1e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/PathAdminService.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.topology; - -import org.onlab.graph.GraphPathSearch; - -/** - * Provides administrative abilities to tailor the path service behaviours. - */ -public interface PathAdminService { - - /** - * Sets the specified link-weight function to be used as a default. - * If null is specified, the builtin default hop-count link-weight will be - * used. - * - * @param linkWeight default link-weight function - */ - void setDefaultLinkWeight(LinkWeight linkWeight); - - /** - * Sets the specified graph path search algorightm to be used as a default. - * If null is specified, the builtin default all-shortest-paths Dijkstra - * algorithm will be used. - * - * @param graphPathSearch default graph path search algorithm - */ - void setDefaultGraphPathSearch(GraphPathSearch graphPathSearch); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/PathService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/PathService.java deleted file mode 100644 index 38954079..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/PathService.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.net.DisjointPath; -import org.onosproject.net.ElementId; -import org.onosproject.net.Link; -import org.onosproject.net.Path; - -import java.util.Map; -import java.util.Set; - -/** - * Service for obtaining pre-computed paths or for requesting computation of - * paths using the current topology snapshot. - */ -public interface PathService { - - /** - * Returns the set of all shortest paths between the specified source and - * destination elements. The path is computed using the default edge-weight - * function, which by default is hop-count. - * - * @param src source element - * @param dst destination element - * @return set of all shortest paths between the two elements - */ - Set getPaths(ElementId src, ElementId dst); - - /** - * Returns the set of all shortest paths between the specified source and - * destination network elements. The path is computed using the supplied - * edge-weight function. - * - * @param src source element - * @param dst destination element - * @param weight edge-weight entity - * @return set of all shortest paths between the two element - */ - Set getPaths(ElementId src, ElementId dst, LinkWeight weight); - - /** - * Returns the set of all disjoint shortest path pairs between the - * specified source and destination elements. The path is computed using - * the default edge-weight function, which by default is hop-count. - * - * @param src source device - * @param dst destination device - * @return set of all shortest paths between the two devices - */ - Set getDisjointPaths(ElementId src, ElementId dst); - - /** - * Returns the set of all disjoint shortest path pairs between the - * specified source and destination elements. The path is computed using - * the supplied edge-weight function. - * - * @param src source device - * @param dst destination device - * @param weight edge-weight entity - * @return set of all shortest paths between the two devices - */ - Set getDisjointPaths(ElementId src, ElementId dst, - LinkWeight weight); - - /** - * Returns the set of all disjoint shortest path pairs between the - * specified source and destination elements and taking into consideration - * the provided risk profile. The path is computed using the default - * edge-weight function, which by default is hop-count. - * - * @param src source device - * @param dst destination device - * @param riskProfile map of edges to risk profiles - * @return set of all shortest paths between the two devices - */ - Set getDisjointPaths(ElementId src, ElementId dst, - Map riskProfile); - - /** - * Returns the set of all disjoint shortest path pairs between the - * specified source and destination elements and taking into consideration - * the provided risk profile. The path is computed using the supplied - * edge-weight function. - * - * @param src source device - * @param dst destination device - * @param weight edge-weight entity - * @param riskProfile map of edges to risk profiles - * @return set of all shortest paths between the two devices - */ - Set getDisjointPaths(ElementId src, ElementId dst, - LinkWeight weight, - Map riskProfile); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/Topology.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/Topology.java deleted file mode 100644 index 6337807c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/Topology.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.net.Provided; - -/** - * Represents a network topology computation snapshot. - */ -public interface Topology extends Provided { - - /** - * Returns the time, specified in system nanos of when the topology became - * available. - * - * @return time in system nanos - */ - long time(); - - /** - * Returns the time, specified in system millis of when the topology became - * available. - * - * @return time in system nanos - */ - long creationTime(); - - /** - * Returns the time, specified in system nanos of how long the topology took - * to compute. - * - * @return elapsed time in system nanos - */ - long computeCost(); - - /** - * Returns the number of SCCs (strongly connected components) in the - * topology. - * - * @return number of clusters - */ - int clusterCount(); - - /** - * Returns the number of infrastructure devices in the topology. - * - * @return number of devices - */ - int deviceCount(); - - /** - * Returns the number of infrastructure links in the topology. - * - * @return number of links - */ - int linkCount(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyCluster.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyCluster.java deleted file mode 100644 index 8e685534..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyCluster.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.topology; - -/** - * Representation of an SCC (strongly-connected component) in a network topology. - */ -public interface TopologyCluster { - - /** - * Returns the cluster id. - * - * @return cluster identifier - */ - ClusterId id(); - - /** - * Returns the number of devices in the cluster. - * - * @return number of cluster devices - */ - int deviceCount(); - - /** - * Returns the number of infrastructure links in the cluster. - * - * @return number of cluster links - */ - int linkCount(); - - /** - * Returns the cluster root vertex. - * - * @return cluster root vertex - */ - TopologyVertex root(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyEdge.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyEdge.java deleted file mode 100644 index 008c8c44..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyEdge.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onlab.graph.Edge; -import org.onosproject.net.Link; - -/** - * Represents an edge in the topology graph. - */ -public interface TopologyEdge extends Edge { - - /** - * Returns the associated infrastructure link. - * - * @return backing infrastructure link - */ - Link link(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyEvent.java deleted file mode 100644 index 10c8dfc3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyEvent.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.event.Event; - -import java.util.List; - -/** - * Describes network topology event. - */ -public class TopologyEvent extends AbstractEvent { - - private final List reasons; - - /** - * Type of topology events. - */ - public enum Type { - /** - * Signifies that topology has changed. - */ - TOPOLOGY_CHANGED - } - - /** - * Creates an event of a given type and for the specified topology and the - * current time. - * - * @param type topology event type - * @param topology event topology subject - * @param reasons list of events that triggered topology change - */ - public TopologyEvent(Type type, Topology topology, List reasons) { - super(type, topology); - this.reasons = reasons; - } - - /** - * Creates an event of a given type and for the specified topology and time. - * - * @param type link event type - * @param topology event topology subject - * @param reasons list of events that triggered topology change - * @param time occurrence time - */ - public TopologyEvent(Type type, Topology topology, List reasons, - long time) { - super(type, topology, time); - this.reasons = reasons; - } - - - /** - * Returns the list of events that triggered the topology change. - * - * @return list of events responsible for change in topology; null if - * initial topology computation - */ - public List reasons() { - return reasons; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyGraph.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyGraph.java deleted file mode 100644 index f3565fa4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyGraph.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onlab.graph.Graph; - -/** - * Represents an immutable topology graph. - */ -public interface TopologyGraph extends Graph { - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyListener.java deleted file mode 100644 index 625587b0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving network topology related events. - */ -public interface TopologyListener extends EventListener { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProvider.java deleted file mode 100644 index f52b798b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProvider.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.net.provider.Provider; - -/** - * Means for injecting topology information into the core. - */ -public interface TopologyProvider extends Provider { - - /** - * Triggers topology recomputation. - */ - void triggerRecompute(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProviderRegistry.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProviderRegistry.java deleted file mode 100644 index 15eeed45..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProviderRegistry.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.net.provider.ProviderRegistry; - -/** - * Abstraction of a network topology provider registry. - */ -public interface TopologyProviderRegistry extends - ProviderRegistry { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProviderService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProviderService.java deleted file mode 100644 index 742110a2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyProviderService.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.event.Event; -import org.onosproject.net.provider.ProviderService; - -import java.util.List; - -/** - * Means for injecting topology information into the core. - */ -public interface TopologyProviderService extends ProviderService { - - /** - * Signals the core that some aspect of the topology has changed. - * - * @param graphDescription information about the network graph - * @param reasons events that triggered topology change - */ - void topologyChanged(GraphDescription graphDescription, - List reasons); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyService.java deleted file mode 100644 index 466e4f9b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyService.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.event.ListenerService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.DisjointPath; -import org.onosproject.net.Link; -import org.onosproject.net.Path; - -import java.util.Map; -import java.util.Set; - -/** - * Service for providing network topology information. - */ -public interface TopologyService - extends ListenerService { - - /** - * Returns the current topology descriptor. - * - * @return current topology - */ - Topology currentTopology(); - - /** - * Indicates whether the specified topology is the latest or not. - * - * @param topology topology descriptor - * @return true if the topology is the most recent; false otherwise - */ - boolean isLatest(Topology topology); - - /** - * Returns the graph view of the specified topology. - * - * @param topology topology descriptor - * @return topology graph view - */ - TopologyGraph getGraph(Topology topology); - - /** - * Returns the set of clusters in the specified topology. - * - * @param topology topology descriptor - * @return set of topology clusters - */ - Set getClusters(Topology topology); - - /** - * Returns the cluster with the specified ID. - * - * @param topology topology descriptor - * @param clusterId cluster identifier - * @return topology cluster - */ - TopologyCluster getCluster(Topology topology, ClusterId clusterId); - - /** - * Returns the set of devices that belong to the specified cluster. - * - * @param topology topology descriptor - * @param cluster topology cluster - * @return set of cluster devices - */ - Set getClusterDevices(Topology topology, TopologyCluster cluster); - - /** - * Returns the set of links that form the specified cluster. - * - * @param topology topology descriptor - * @param cluster topology cluster - * @return set of cluster links - */ - Set getClusterLinks(Topology topology, TopologyCluster cluster); - - /** - * Returns the set of all shortest paths, precomputed in terms of hop-count, - * between the specified source and destination devices. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @return set of all shortest paths between the two devices - */ - Set getPaths(Topology topology, DeviceId src, DeviceId dst); - - /** - * Returns the set of all shortest paths, computed using the supplied - * edge-weight entity, between the specified source and destination devices. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @param weight edge-weight entity - * @return set of all shortest paths between the two devices - */ - Set getPaths(Topology topology, DeviceId src, DeviceId dst, - LinkWeight weight); - - /** - * Returns the set of all disjoint shortest path pairs, precomputed in terms of hop-count, - * between the specified source and destination devices. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @return set of all shortest paths between the two devices - */ - Set getDisjointPaths(Topology topology, DeviceId src, DeviceId dst); - - /** - * Returns the set of all disjoint shortest path pairs, computed using the supplied - * edge-weight entity, between the specified source and destination devices. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @param weight edge-weight entity - * @return set of all shortest paths between the two devices - */ - Set getDisjointPaths(Topology topology, DeviceId src, DeviceId dst, - LinkWeight weight); - - /** - * Returns the set of all disjoint shortest path pairs, precomputed in terms of hop-count, - * between the specified source and destination devices. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @param riskProfile map of edges to risk profiles - * @return set of all shortest paths between the two devices - */ - Set getDisjointPaths(Topology topology, DeviceId src, DeviceId dst, - Map riskProfile); - - /** - * Returns the set of all disjoint shortest path pairs, precomputed in terms of hop-count, - * between the specified source and destination devices. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @param weight edge-weight entity - * @param riskProfile map of edges to risk profiles - * @return set of all shortest paths between the two devices - */ - Set getDisjointPaths(Topology topology, DeviceId src, DeviceId dst, - LinkWeight weight, Map riskProfile); - - /** - * Indicates whether the specified connection point is part of the network - * infrastructure or part of network edge. - * - * @param topology topology descriptor - * @param connectPoint connection point - * @return true of connection point is in infrastructure; false if edge - */ - boolean isInfrastructure(Topology topology, ConnectPoint connectPoint); - - - /** - * Indicates whether broadcast is allowed for traffic received on the - * specified connection point. - * - * @param topology topology descriptor - * @param connectPoint connection point - * @return true if broadcast is permissible - */ - boolean isBroadcastPoint(Topology topology, ConnectPoint connectPoint); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyStore.java deleted file mode 100644 index 039a205c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyStore.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.event.Event; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.DisjointPath; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.store.Store; - -import java.util.List; -import java.util.Set; -import java.util.Map; - -/** - * Manages inventory of topology snapshots; not intended for direct use. - */ -public interface TopologyStore extends Store { - - /** - * Returns the current topology snapshot. - * - * @return current topology descriptor - */ - Topology currentTopology(); - - /** - * Indicates whether the topology is the latest. - * - * @param topology topology descriptor - * @return true if topology is the most recent one - */ - boolean isLatest(Topology topology); - - /** - * Returns the immutable graph view of the current topology. - * - * @param topology topology descriptor - * @return graph view - */ - TopologyGraph getGraph(Topology topology); - - /** - * Returns the set of topology SCC clusters. - * - * @param topology topology descriptor - * @return set of clusters - */ - Set getClusters(Topology topology); - - /** - * Returns the cluster of the specified topology. - * - * @param topology topology descriptor - * @param clusterId cluster identity - * @return topology cluster - */ - TopologyCluster getCluster(Topology topology, ClusterId clusterId); - - /** - * Returns the cluster of the specified topology. - * - * @param topology topology descriptor - * @param cluster topology cluster - * @return set of cluster links - */ - Set getClusterDevices(Topology topology, TopologyCluster cluster); - - /** - * Returns the cluster of the specified topology. - * - * @param topology topology descriptor - * @param cluster topology cluster - * @return set of cluster links - */ - Set getClusterLinks(Topology topology, TopologyCluster cluster); - - /** - * Returns the set of pre-computed shortest paths between src and dest. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @return set of shortest paths - */ - Set getPaths(Topology topology, DeviceId src, DeviceId dst); - - /** - * Computes and returns the set of shortest paths between src and dest. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @param weight link weight function - * @return set of shortest paths - */ - Set getPaths(Topology topology, DeviceId src, DeviceId dst, - LinkWeight weight); - - /** - * Computes and returns the set of disjoint shortest path pairs - * between src and dst. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @param weight link weight function - * @return set of shortest paths - */ - Set getDisjointPaths(Topology topology, DeviceId src, DeviceId dst, - LinkWeight weight); - - /** - * Computes and returns the set of disjoint shortest path pairs - * between src and dst. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @return set of shortest paths - */ - Set getDisjointPaths(Topology topology, DeviceId src, DeviceId dst); - - /** - * Computes and returns the set of SRLG disjoint shortest path pairs between source - * and dst, given a mapping of edges to SRLG risk groups. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @param weight link weight function - * @param riskProfile map of edges to objects. Edges that map to the same object will - * be treated as if they were in the same risk group. - * @return set of shortest paths - */ - Set getDisjointPaths(Topology topology, DeviceId src, DeviceId dst, - LinkWeight weight, Map riskProfile); - - /** - * Returns the set of pre-computed SRLG shortest paths between src and dest. - * - * @param topology topology descriptor - * @param src source device - * @param dst destination device - * @param riskProfile map of edges to objects. Edges that map to the same object will - * be treated as if they were in the same risk group. - * @return set of shortest paths - */ - Set getDisjointPaths(Topology topology, DeviceId src, DeviceId dst, - Map riskProfile); - - - /** - * Indicates whether the given connect point is part of the network fabric. - * - * @param topology topology descriptor - * @param connectPoint connection point - * @return true if infrastructure; false otherwise - */ - boolean isInfrastructure(Topology topology, ConnectPoint connectPoint); - - /** - * Indicates whether broadcast is allowed for traffic received on the - * given connection point. - * - * @param topology topology descriptor - * @param connectPoint connection point - * @return true if broadcast allowed; false otherwise - */ - boolean isBroadcastPoint(Topology topology, ConnectPoint connectPoint); - - /** - * Generates a new topology snapshot from the specified description. - * - * @param providerId provider identification - * @param graphDescription topology graph description - * @param reasons list of events that triggered the update - * @return topology update event or null if the description is old - */ - TopologyEvent updateTopology(ProviderId providerId, - GraphDescription graphDescription, - List reasons); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyStoreDelegate.java deleted file mode 100644 index c425970b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyStoreDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.store.StoreDelegate; - -/** - * Topology store delegate abstraction. - */ -public interface TopologyStoreDelegate extends StoreDelegate { -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyVertex.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyVertex.java deleted file mode 100644 index 9f37dcb4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/TopologyVertex.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onlab.graph.Vertex; -import org.onosproject.net.DeviceId; - -/** - * Represents a vertex in the topology graph. - */ -public interface TopologyVertex extends Vertex { - - /** - * Returns the associated infrastructure device identification. - * - * @return device identifier - */ - DeviceId deviceId(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/package-info.java deleted file mode 100644 index 3cd6ceb8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/topology/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Network topology model & related services API definitions. - */ -package org.onosproject.net.topology; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistenceService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistenceService.java deleted file mode 100644 index 09065dec..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistenceService.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.persistence; - -/** - * Service that allows for the creation of local disk backed map for instance specific values that persist across - * restarts. Empty maps and sets are deleted on shutdown. - */ -public interface PersistenceService { - /** - * A builder for the creation of local persistent maps backed by disk. - * - * @param the type of keys in this map - * @param the type of values in this map - * @return a persistent map builder - */ - PersistentMapBuilder persistentMapBuilder(); - - /** - * A builder for the creation of local persistent sets backed by disk. - * - * @param the type of the elements - * @return a persistent set builder - */ - PersistentSetBuilder persistentSetBuilder(); -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistentMapBuilder.java b/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistentMapBuilder.java deleted file mode 100644 index c3c855e1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistentMapBuilder.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.persistence; - - -import org.onosproject.store.service.Serializer; - -import java.util.Map; - -/** - * The interface for a persistent map builder for use with mapDB. - */ -public interface PersistentMapBuilder { - - /** - * Sets the name of this map. - * @param name the string name of this map - * @return a persistent map builder with the name option now set - */ - PersistentMapBuilder withName(String name); - - /** - * Sets the key serializer to be used to serialize this map, this is a required parameter. - * @param serializer the serializer to be used for keys - * @return a persistent map builder with the key serializer set - */ - PersistentMapBuilder withSerializer(Serializer serializer); - - /** - * Validates the map settings and then builds this map in the database. Throws an exception if invalid settings - * are found. - * @return The map that was created - */ - Map build(); -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistentSetBuilder.java b/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistentSetBuilder.java deleted file mode 100644 index 851872cf..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/PersistentSetBuilder.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.persistence; - -import org.onosproject.store.service.Serializer; - -import java.util.Set; - -/** - * The default interface for the persistent set builder for use with mapDB. - */ -public interface PersistentSetBuilder { - - /** - * Sets the name of this set. - * @param name the string name of this set - * @return a persistent set builder with the name option now set - */ - PersistentSetBuilder withName(String name); - - /** - * Sets the serializer to be used to serialize this set, this is a required parameter. - * @param serializer the serializer to be used - * @return a persistent set builder with the serializer set - */ - PersistentSetBuilder withSerializer(Serializer serializer); - - /** - * Validates the set settings and then builds this map in the database. Throws an exception if invalid settings - * are found. - * @return The set that was created - */ - Set build(); -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/package-info.java deleted file mode 100644 index 6e11a5e1..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/persistence/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Persistence service and builders. - */ -package org.onosproject.persistence; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractApiDocRegistrator.java b/framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractApiDocRegistrator.java deleted file mode 100644 index 7349c69e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractApiDocRegistrator.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.rest; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; - -/** - * Self-registering REST API provider. - */ -@Component(immediate = true, componentAbstract = true) -public abstract class AbstractApiDocRegistrator { - - protected final ApiDocProvider provider; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected ApiDocService service; - - /** - * Creates registrator for the specified REST API doc provider. - * - * @param provider REST API provider - */ - protected AbstractApiDocRegistrator(ApiDocProvider provider) { - this.provider = provider; - } - - @Activate - protected void activate() { - service.register(provider); - } - - @Deactivate - protected void deactivate() { - service.unregister(provider); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractInjectionResource.java b/framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractInjectionResource.java deleted file mode 100644 index de182f03..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractInjectionResource.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.rest; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Resource for serving semi-static resources. - */ -public class AbstractInjectionResource extends AbstractWebResource { - - /** - * Returns the index into the supplied string where the end of the - * specified pattern is located. - * - * @param string string to split - * @param start index where to start looking for pattern - * @param stopPattern optional pattern where to stop - * @return index where the split should occur - */ - protected int split(String string, int start, String stopPattern) { - int i = stopPattern != null ? string.indexOf(stopPattern, start) : string.length(); - checkArgument(i >= 0, "Unable to locate pattern %s", stopPattern); - return i + (stopPattern != null ? stopPattern.length() : 0); - } - - /** - * Produces an input stream from the bytes of the specified sub-string. - * - * @param string source string - * @param start index where to start stream - * @param end index where to end stream - * @return input stream - */ - protected InputStream stream(String string, int start, int end) { - return new ByteArrayInputStream(string.substring(start, end).getBytes()); - } - - /** - * Auxiliary enumeration to sequence input streams. - */ - protected class StreamEnumeration implements Enumeration { - private final Iterator iterator; - - public StreamEnumeration(List streams) { - this.iterator = streams.iterator(); - } - - @Override - public boolean hasMoreElements() { - return iterator.hasNext(); - } - - @Override - public InputStream nextElement() { - return iterator.next(); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractWebResource.java b/framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractWebResource.java deleted file mode 100644 index d3249ba5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/AbstractWebResource.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.rest; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.onlab.rest.BaseResource; -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.CodecService; -import org.onosproject.codec.JsonCodec; - -/** - * Abstract REST resource. - */ -public class AbstractWebResource extends BaseResource implements CodecContext { - - private final ObjectMapper mapper = new ObjectMapper(); - - @Override - public ObjectMapper mapper() { - return mapper; - } - - /** - * Returns the JSON codec for the specified entity class. - * - * @param entityClass entity class - * @param entity type - * @return JSON codec - */ - public JsonCodec codec(Class entityClass) { - return get(CodecService.class).getCodec(entityClass); - } - - /** - * Returns JSON object wrapping the array encoding of the specified - * collection of items. - * - * @param codecClass codec item class - * @param field field holding the array - * @param items collection of items to be encoded into array - * @param item type - * @return JSON object - */ - protected ObjectNode encodeArray(Class codecClass, String field, - Iterable items) { - ObjectNode result = mapper().createObjectNode(); - result.set(field, codec(codecClass).encode(items, this)); - return result; - } - - @Override - public T getService(Class serviceClass) { - return get(serviceClass); - } - - /** - * Creates and returns a new child object within the specified parent and - * bound to the given key. - * - * @param parent parent object - * @param key key for the new child object - * @return child object - */ - public ObjectNode newObject(ObjectNode parent, String key) { - ObjectNode node = mapper.createObjectNode(); - parent.set(key, node); - return node; - } - - /** - * Creates and returns a new child array within the specified parent and - * bound to the given key. - * - * @param parent parent object - * @param key key for the new child array - * @return child array - */ - public ArrayNode newArray(ObjectNode parent, String key) { - ArrayNode node = mapper.createArrayNode(); - parent.set(key, node); - return node; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/ApiDocProvider.java b/framework/src/onos/core/api/src/main/java/org/onosproject/rest/ApiDocProvider.java deleted file mode 100644 index 50cac4cd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/ApiDocProvider.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.rest; - -import com.google.common.annotations.Beta; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.InputStream; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Entity capable of providing REST API documentation resources. - */ -@Beta -public class ApiDocProvider { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private static final String DOCS = "/apidoc/swagger.json"; - private static final String MODEL = "/apidoc/model.json"; - - private final String key; - private final String name; - private final ClassLoader classLoader; - - /** - * Creates a new REST API documentation provider. - * - * @param key REST API key - * @param name REST API name - * @param classLoader class loader - */ - public ApiDocProvider(String key, String name, ClassLoader classLoader) { - this.key = checkNotNull(key, "Key cannot be null"); - this.name = checkNotNull(name, "Name cannot be null"); - this.classLoader = checkNotNull(classLoader, "Class loader cannot be null"); - } - - /** - * Returns the REST API key. - * - * @return REST API key - */ - public String key() { - return key; - } - - /** - * Returns the REST API name. - * - * @return REST API name - */ - public String name() { - return name; - } - - /** - * Returns input stream containing Swagger UI compatible JSON. - * - * @return input stream with Swagger JSON data - */ - public InputStream docs() { - return get(DOCS); - } - - /** - * Returns input stream containing JSON model schema. - * - * @return input stream with JSON model schema - */ - public InputStream model() { - return get(MODEL); - } - - private InputStream get(String resource) { - InputStream stream = classLoader.getResourceAsStream(resource); - if (stream == null) { - log.warn("Unable to find JSON resource {}", resource); - } - return stream; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/ApiDocService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/rest/ApiDocService.java deleted file mode 100644 index f7268532..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/ApiDocService.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.rest; - -import com.google.common.annotations.Beta; - -import java.util.Set; - -/** - * Service for registering REST API documentation resources. - */ -@Beta -public interface ApiDocService { - - /** - * Registers the specified REST API documentation provider. - * - * @param provider REST API documentation provider - */ - void register(ApiDocProvider provider); - - /** - * Unregisters the specified REST API documentation provider. - * - * @param provider REST API documentation provider - */ - void unregister(ApiDocProvider provider); - - /** - * Returns the set of all registered REST API documentation providers. - * - * @return set of registered documentation providers - */ - Set getDocProviders(); - - /** - * Returns the specified REST API documentation provider with the specified - * key. - * - * @param key REST API key - * @return documentation provider - */ - ApiDocProvider getDocProvider(String key); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/rest/package-info.java deleted file mode 100644 index 15e5d20d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/rest/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Base abstractions and utilities for developing REST APIs. - */ -package org.onosproject.rest; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/security/AppGuard.java b/framework/src/onos/core/api/src/main/java/org/onosproject/security/AppGuard.java deleted file mode 100644 index 4b80dfcd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/security/AppGuard.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.security; - - -import com.google.common.annotations.Beta; - -/** - * Aids SM-ONOS to perform API-level permission checking. - */ -@Beta -public final class AppGuard { - - private AppGuard() { - } - - /** - * Checks if the caller has the required permission only when security-mode is enabled. - * @param permission permission to be checked - */ - public static void checkPermission(AppPermission.Type permission) { - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - System.getSecurityManager().checkPermission(new AppPermission(permission)); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/security/AppPermission.java b/framework/src/onos/core/api/src/main/java/org/onosproject/security/AppPermission.java deleted file mode 100644 index 09fe17a8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/security/AppPermission.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.security; - -import com.google.common.annotations.Beta; - -import java.security.BasicPermission; - -/** - * Implementation of API access permission. - */ -@Beta -public class AppPermission extends BasicPermission { - - public enum Type { - APP_READ, - APP_EVENT, - CONFIG_READ, - CONFIG_WRITE, - CLUSTER_READ, - CLUSTER_WRITE, - CLUSTER_EVENT, - DEVICE_READ, - DEVICE_EVENT, - DRIVER_READ, - DRIVER_WRITE, - FLOWRULE_READ, - FLOWRULE_WRITE, - FLOWRULE_EVENT, - GROUP_READ, - GROUP_WRITE, - GROUP_EVENT, - HOST_READ, - HOST_WRITE, - HOST_EVENT, - INTENT_READ, - INTENT_WRITE, - INTENT_EVENT, - LINK_READ, - LINK_WRITE, - LINK_EVENT, - PACKET_READ, - PACKET_WRITE, - PACKET_EVENT, - STATISTIC_READ, - TOPOLOGY_READ, - TOPOLOGY_EVENT, - TUNNEL_READ, - TUNNEL_WRITE, - TUNNEL_EVENT, - STORAGE_WRITE - } - - protected Type type; - /** - * Creates new application permission using the supplied data. - * @param name permission name - */ - public AppPermission(String name) { - super(name.toUpperCase(), ""); - try { - type = Type.valueOf(name); - } catch (IllegalArgumentException e) { - type = null; - } - } - - /** - * Creates new application permission using the supplied data. - * @param name permission name - * @param actions permission action - */ - public AppPermission(String name, String actions) { - super(name.toUpperCase(), actions); - try { - type = Type.valueOf(name); - } catch (IllegalArgumentException e) { - type = null; - } - } - - /** - * Crates new application permission using the supplied data. - * @param type permission type - */ - public AppPermission(Type type) { - super(type.name(), ""); - this.type = type; - } - - /** - * Returns type of permission. - * @return application permission type - */ - public Type getType() { - return this.type; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/security/Permission.java b/framework/src/onos/core/api/src/main/java/org/onosproject/security/Permission.java deleted file mode 100644 index 0c874c9d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/security/Permission.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.security; - -import com.google.common.annotations.Beta; - -@Beta -public class Permission { - - protected String classname; - protected String name; - protected String actions; - - public Permission(String classname, String name, String actions) { - this.classname = classname; - this.name = name; - if (actions == null) { - this.actions = ""; - } else { - this.actions = actions; - } - } - - public Permission(String classname, String name) { - this.classname = classname; - this.name = name; - this.actions = ""; - } - - public String getClassName() { - return classname; - } - - public String getName() { - return name; - } - - public String getActions() { - return actions; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public boolean equals(Object thatPerm) { - if (this == thatPerm) { - return true; - } - - if (!(thatPerm instanceof Permission)) { - return false; - } - - Permission that = (Permission) thatPerm; - return (this.classname.equals(that.classname)) && (this.name.equals(that.name)) - && (this.actions.equals(that.actions)); - } - - @Override - public String toString() { - return String.format("(%s, %s, %s)", classname, name, actions); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/security/SecurityAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/security/SecurityAdminService.java deleted file mode 100644 index 30d143c0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/security/SecurityAdminService.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.security; - -import com.google.common.annotations.Beta; -import org.onosproject.core.ApplicationId; - -import java.security.Permission; -import java.util.List; -import java.util.Map; - -/** - * Security-Mode ONOS service. - */ -@Beta -public interface SecurityAdminService { - - /** - * Returns true if security policy has been enforced to specified application. - * @param appId application identifier - * @return true if secured. - */ - boolean isSecured(ApplicationId appId); - - /** - * Changes SecurityModeState of specified application to REVIEWED. - * @param appId application identifier - */ - void review(ApplicationId appId); - - /** - * Accepts and enforces security policy to specified application. - * @param appId application identifier - */ - void acceptPolicy(ApplicationId appId); - - /** - * Register application to SM-ONOS subsystem. - * @param appId application identifier - */ - void register(ApplicationId appId); - - /** - * Returns sorted developer specified permission Map. - * @param appId application identifier - * @return Map of list of permissions sorted by permission type - */ - Map> getPrintableSpecifiedPermissions(ApplicationId appId); - - /** - * Returns sorted granted permission Map. - * @param appId application identifier - * @return Map of list of permissions sorted by permission type - */ - Map> getPrintableGrantedPermissions(ApplicationId appId); - - /** - * Returns sorted requested permission Map. - * @param appId application identifier - * @return Map of list of permissions sorted by permission type - */ - Map> getPrintableRequestedPermissions(ApplicationId appId); - - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/security/SecurityUtil.java b/framework/src/onos/core/api/src/main/java/org/onosproject/security/SecurityUtil.java deleted file mode 100644 index 444b6bb5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/security/SecurityUtil.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.security; - -import com.google.common.annotations.Beta; -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.ServiceNotFoundException; -import org.onosproject.core.ApplicationId; - -/** - * Utility class to aid Security-Mode ONOS. - */ -@Beta -public final class SecurityUtil { - - protected static ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - - private SecurityUtil() { - } - - public static boolean isSecurityModeEnabled() { - if (System.getSecurityManager() != null) { - try { - SecurityAdminService securityService = serviceDirectory.get(SecurityAdminService.class); - if (securityService != null) { - return true; - } - } catch (ServiceNotFoundException e) { - return false; - } - } - return false; - } - - public static SecurityAdminService getSecurityService() { - if (System.getSecurityManager() != null) { - try { - SecurityAdminService securityService = serviceDirectory.get(SecurityAdminService.class); - if (securityService != null) { - return securityService; - } - } catch (ServiceNotFoundException e) { - return null; - } - } - return null; - } - - public static boolean isAppSecured(ApplicationId appId) { - SecurityAdminService service = getSecurityService(); - if (service != null) { - if (!service.isSecured(appId)) { - System.out.println("\n*******************************"); - System.out.println(" SM-ONOS APP WARNING "); - System.out.println("*******************************"); - System.out.println(appId.name() + " has not been secured."); - System.out.println("Please review before activating."); - return false; - } - } - return true; - } - public static void register(ApplicationId appId) { - SecurityAdminService service = getSecurityService(); - if (service != null) { - service.register(appId); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/security/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/security/package-info.java deleted file mode 100644 index 88c3529d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/security/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Application security constructs. - */ -package org.onosproject.security; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/AbstractStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/AbstractStore.java deleted file mode 100644 index a3005e45..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/AbstractStore.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.store; - -import java.util.List; - -import org.onosproject.event.Event; - -import static com.google.common.base.Preconditions.checkState; - -/** - * Base implementation of a store. - */ -public class AbstractStore> - implements Store { - - protected D delegate; - - @Override - public void setDelegate(D delegate) { - checkState(this.delegate == null || this.delegate == delegate, - "Store delegate already set"); - this.delegate = delegate; - } - - @Override - public void unsetDelegate(D delegate) { - if (this.delegate == delegate) { - this.delegate = null; - } - } - - @Override - public boolean hasDelegate() { - return delegate != null; - } - - /** - * Notifies the delegate with the specified event. - * - * @param event event to delegate - */ - protected void notifyDelegate(E event) { - if (delegate != null) { - delegate.notify(event); - } - } - - /** - * Notifies the delegate with the specified list of events. - * - * @param events list of events to delegate - */ - protected void notifyDelegate(List events) { - for (E event: events) { - notifyDelegate(event); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/Store.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/Store.java deleted file mode 100644 index 8d5b53c4..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/Store.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.store; - -import org.onosproject.event.Event; - -/** - * Abstraction of a entity capable of storing and/or distributing information - * across a cluster. - */ -public interface Store> { - - /** - * Sets the delegate on the store. - * - * @param delegate new store delegate - * @throws java.lang.IllegalStateException if a delegate is already - * currently set on the store and is a different one that - */ - void setDelegate(D delegate); - - /** - * Withdraws the delegate from the store. - * - * @param delegate store delegate to withdraw - * @throws java.lang.IllegalArgumentException if the delegate is not - * currently set on the store - */ - void unsetDelegate(D delegate); - - /** - * Indicates whether the store has a delegate. - * - * @return true if delegate is set - */ - boolean hasDelegate(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/StoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/StoreDelegate.java deleted file mode 100644 index 71ca8cc0..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/StoreDelegate.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.store; - -import org.onosproject.event.Event; - -/** - * Entity associated with a store and capable of receiving notifications of - * events within the store. - */ -public interface StoreDelegate { - - /** - * Notifies the delegate via the specified event. - * - * @param event store generated event - */ - void notify(E event); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/Timestamp.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/Timestamp.java deleted file mode 100644 index 44238ff2..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/Timestamp.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.store; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Opaque version structure. - *

- * Classes implementing this interface must also implement - * {@link #hashCode()} and {@link #equals(Object)}. - */ -public interface Timestamp extends Comparable { - - @Override - int hashCode(); - - @Override - boolean equals(Object obj); - - /** - * Tests if this timestamp is newer than the specified timestamp. - * - * @param other timestamp to compare against - * @return true if this instance is newer - */ - default boolean isNewerThan(Timestamp other) { - return this.compareTo(checkNotNull(other)) > 0; - } - - /** - * Tests if this timestamp is older than the specified timestamp. - * - * @param other timestamp to compare against - * @return true if this instance is older - */ - default boolean isOlderThan(Timestamp other) { - return this.compareTo(checkNotNull(other)) < 0; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterCommunicationService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterCommunicationService.java deleted file mode 100644 index 161a8528..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterCommunicationService.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.store.cluster.messaging; - -import java.util.Set; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.function.Consumer; -import java.util.function.Function; - -import org.onosproject.cluster.NodeId; - -/** - * Service for assisting communications between controller cluster nodes. - */ -public interface ClusterCommunicationService { - - /** - * Adds a new subscriber for the specified message subject. - * - * @param subject message subject - * @param subscriber message subscriber - * @param executor executor to use for running handler. - * @deprecated in Cardinal Release - */ - @Deprecated - void addSubscriber(MessageSubject subject, ClusterMessageHandler subscriber, ExecutorService executor); - - /** - * Broadcasts a message to all controller nodes. - * - * @param message message to send - * @param subject message subject - * @param encoder function for encoding message to byte[] - * @param message type - */ - void broadcast(M message, - MessageSubject subject, - Function encoder); - - /** - * Broadcasts a message to all controller nodes including self. - * - * @param message message to send - * @param subject message subject - * @param encoder function for encoding message to byte[] - * @param message type - */ - void broadcastIncludeSelf(M message, - MessageSubject subject, - Function encoder); - - /** - * Sends a message to the specified controller node. - * - * @param message message to send - * @param subject message subject - * @param encoder function for encoding message to byte[] - * @param toNodeId destination node identifier - * @param message type - * @return future that is completed when the message is sent - */ - CompletableFuture unicast(M message, - MessageSubject subject, - Function encoder, - NodeId toNodeId); - - /** - * Multicasts a message to a set of controller nodes. - * - * @param message message to send - * @param subject message subject - * @param encoder function for encoding message to byte[] - * @param nodeIds recipient node identifiers - * @param message type - */ - void multicast(M message, - MessageSubject subject, - Function encoder, - Set nodeIds); - - /** - * Sends a message and expects a reply. - * - * @param message message to send - * @param subject message subject - * @param encoder function for encoding request to byte[] - * @param decoder function for decoding response from byte[] - * @param toNodeId recipient node identifier - * @param request type - * @param reply type - * @return reply future - */ - CompletableFuture sendAndReceive(M message, - MessageSubject subject, - Function encoder, - Function decoder, - NodeId toNodeId); - - /** - * Adds a new subscriber for the specified message subject. - * - * @param subject message subject - * @param decoder decoder for resurrecting incoming message - * @param handler handler function that processes the incoming message and produces a reply - * @param encoder encoder for serializing reply - * @param executor executor to run this handler on - * @param incoming message type - * @param reply message type - */ - void addSubscriber(MessageSubject subject, - Function decoder, - Function handler, - Function encoder, - Executor executor); - - /** - * Adds a new subscriber for the specified message subject. - * - * @param subject message subject - * @param decoder decoder for resurrecting incoming message - * @param handler handler function that processes the incoming message and produces a reply - * @param encoder encoder for serializing reply - * @param incoming message type - * @param reply message type - */ - void addSubscriber(MessageSubject subject, - Function decoder, - Function> handler, - Function encoder); - - /** - * Adds a new subscriber for the specified message subject. - * - * @param subject message subject - * @param decoder decoder to resurrecting incoming message - * @param handler handler for handling message - * @param executor executor to run this handler on - * @param incoming message type - */ - void addSubscriber(MessageSubject subject, - Function decoder, - Consumer handler, - Executor executor); - - /** - * Removes a subscriber for the specified message subject. - * - * @param subject message subject - */ - void removeSubscriber(MessageSubject subject); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessage.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessage.java deleted file mode 100644 index 46560e4c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessage.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.store.cluster.messaging; - -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.Objects; - -import org.onlab.util.ByteArraySizeHashPrinter; -import org.onosproject.cluster.NodeId; - -import com.google.common.base.Charsets; -import com.google.common.base.MoreObjects; - -// TODO: Should payload type be ByteBuffer? -/** - * Base message for cluster-wide communications. - */ -public class ClusterMessage { - - private final NodeId sender; - private final MessageSubject subject; - private final byte[] payload; - private transient byte[] response; - - /** - * Creates a cluster message. - * - * @param sender message sender - * @param subject message subject - * @param payload message payload - */ - public ClusterMessage(NodeId sender, MessageSubject subject, byte[] payload) { - this.sender = sender; - this.subject = subject; - this.payload = payload; - } - - /** - * Returns the id of the controller sending this message. - * - * @return message sender id. - */ - public NodeId sender() { - return sender; - } - - /** - * Returns the message subject indicator. - * - * @return message subject - */ - public MessageSubject subject() { - return subject; - } - - /** - * Returns the message payload. - * - * @return message payload. - */ - public byte[] payload() { - return payload; - } - - /** - * Records the response to be sent to the sender. - * - * @param data response payload - */ - public void respond(byte[] data) { - response = data; - } - - /** - * Returns the response to be sent to the sender. - * - * @return response bytes - */ - public byte[] response() { - return response; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("sender", sender) - .add("subject", subject) - .add("payload", ByteArraySizeHashPrinter.of(payload)) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (!(o instanceof ClusterMessage)) { - return false; - } - - ClusterMessage that = (ClusterMessage) o; - - return Objects.equals(this.sender, that.sender) && - Objects.equals(this.subject, that.subject) && - Arrays.equals(this.payload, that.payload); - } - - /** - * Serializes this instance. - * @return bytes - */ - public byte[] getBytes() { - byte[] senderBytes = sender.toString().getBytes(Charsets.UTF_8); - byte[] subjectBytes = subject.value().getBytes(Charsets.UTF_8); - int capacity = 12 + senderBytes.length + subjectBytes.length + payload.length; - ByteBuffer buffer = ByteBuffer.allocate(capacity); - buffer.putInt(senderBytes.length); - buffer.put(senderBytes); - buffer.putInt(subjectBytes.length); - buffer.put(subjectBytes); - buffer.putInt(payload.length); - buffer.put(payload); - return buffer.array(); - } - - /** - * Decodes a new ClusterMessage from raw bytes. - * @param bytes raw bytes - * @return cluster message - */ - public static ClusterMessage fromBytes(byte[] bytes) { - ByteBuffer buffer = ByteBuffer.wrap(bytes); - byte[] senderBytes = new byte[buffer.getInt()]; - buffer.get(senderBytes); - byte[] subjectBytes = new byte[buffer.getInt()]; - buffer.get(subjectBytes); - byte[] payloadBytes = new byte[buffer.getInt()]; - buffer.get(payloadBytes); - - return new ClusterMessage(new NodeId(new String(senderBytes, Charsets.UTF_8)), - new MessageSubject(new String(subjectBytes, Charsets.UTF_8)), - payloadBytes); - } - - @Override - public int hashCode() { - return Objects.hash(sender, subject, payload); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessageHandler.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessageHandler.java deleted file mode 100644 index ce770a81..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/ClusterMessageHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.store.cluster.messaging; - -/** - * Interface for handling cluster messages. - */ -public interface ClusterMessageHandler { - - /** - * Handles/Processes the cluster message. - * @param message cluster message. - */ - void handle(ClusterMessage message); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/Endpoint.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/Endpoint.java deleted file mode 100644 index 2ac50dfd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/Endpoint.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.store.cluster.messaging; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onlab.packet.IpAddress; - -import com.google.common.base.MoreObjects; - -/** - * Representation of a TCP/UDP communication end point. - */ -public final class Endpoint { - - private final int port; - private final IpAddress ip; - - public Endpoint(IpAddress host, int port) { - this.ip = checkNotNull(host); - this.port = port; - } - - public IpAddress host() { - return ip; - } - - public int port() { - return port; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ip", ip) - .add("port", port) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(ip, port); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - Endpoint that = (Endpoint) obj; - return Objects.equals(this.port, that.port) && - Objects.equals(this.ip, that.ip); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessageSubject.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessageSubject.java deleted file mode 100644 index 8d5e313d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessageSubject.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.store.cluster.messaging; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * Representation of a message subject. - * Cluster messages have associated subjects that dictate how they get handled - * on the receiving side. - */ -public final class MessageSubject { - - private final String value; - - public MessageSubject(String value) { - this.value = checkNotNull(value); - } - - public String value() { - return value; - } - - @Override - public String toString() { - return value; - } - - @Override - public int hashCode() { - return value.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - MessageSubject that = (MessageSubject) obj; - return Objects.equals(this.value, that.value); - } - - // for serializer - protected MessageSubject() { - this.value = ""; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessagingService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessagingService.java deleted file mode 100644 index 6ccd4835..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessagingService.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.store.cluster.messaging; - -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; -import java.util.function.Consumer; -import java.util.function.Function; - -/** - * Interface for low level messaging primitives. - */ -public interface MessagingService { - - /** - * Sends a message asynchronously to the specified communication end point. - * The message is specified using the type and payload. - * @param ep end point to send the message to. - * @param type type of message. - * @param payload message payload bytes. - * @return future that is completed when the message is sent - */ - CompletableFuture sendAsync(Endpoint ep, String type, byte[] payload); - - /** - * Sends a message synchronously and waits for a response. - * @param ep end point to send the message to. - * @param type type of message. - * @param payload message payload. - * @return a response future - */ - CompletableFuture sendAndReceive(Endpoint ep, String type, byte[] payload); - - /** - * Registers a new message handler for message type. - * @param type message type. - * @param handler message handler - * @param executor executor to use for running message handler logic. - */ - void registerHandler(String type, Consumer handler, Executor executor); - - /** - * Registers a new message handler for message type. - * @param type message type. - * @param handler message handler - * @param executor executor to use for running message handler logic. - */ - void registerHandler(String type, Function handler, Executor executor); - - /** - * Registers a new message handler for message type. - * @param type message type. - * @param handler message handler - */ - void registerHandler(String type, Function> handler); - - /** - * Unregister current handler, if one exists for message type. - * @param type message type - */ - void unregisterHandler(String type); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/package-info.java deleted file mode 100644 index 582c50ed..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/cluster/messaging/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Cluster messaging APIs for the use by the various distributed stores. - */ -package org.onosproject.store.cluster.messaging; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/package-info.java deleted file mode 100644 index b6269ea5..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Abstractions for creating and interacting with distributed stores. - */ -package org.onosproject.store; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounter.java deleted file mode 100644 index cfaf314c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AsyncAtomicCounter.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.concurrent.CompletableFuture; - -/** - * An async atomic counter dispenses monotonically increasing values. - */ -public interface AsyncAtomicCounter { - - /** - * Atomically increment by one the current value. - * - * @return updated value - */ - CompletableFuture incrementAndGet(); - - /** - * Atomically increment by one the current value. - * - * @return previous value - */ - CompletableFuture getAndIncrement(); - - /** - * Atomically adds the given value to the current value. - * - * @param delta the value to add - * @return previous value - */ - CompletableFuture getAndAdd(long delta); - - /** - * Atomically adds the given value to the current value. - * - * @param delta the value to add - * @return updated value - */ - CompletableFuture addAndGet(long delta); - - /** - * Returns the current value of the counter without modifying it. - * - * @return current value - */ - CompletableFuture get(); - - - /** - * Atomically sets the given value to the current value. - * - * @param value new value - * @return future void - */ - CompletableFuture set(long value); - - /** - * Atomically sets the given counter to the updated value if the current value is the expected value, otherwise - * no change occurs. - * @param expectedValue the expected current value of the counter - * @param updateValue the new value to be set - * @return true if the update occurred and the expected value was equal to the current value, false otherwise - */ - CompletableFuture compareAndSet(long expectedValue, long updateValue); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMap.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMap.java deleted file mode 100644 index fee8cfa6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMap.java +++ /dev/null @@ -1,283 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Collection; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.CompletableFuture; -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.Predicate; - -/** - * A distributed, strongly consistent map whose methods are all executed asynchronously. - *

- * This map offers strong read-after-update (where update == create/update/delete) - * consistency. All operations to the map are serialized and applied in a consistent - * manner. - *

- * The stronger consistency comes at the expense of availability in - * the event of a network partition. A network partition can be either due to - * a temporary disruption in network connectivity between participating nodes - * or due to a node being temporarily down. - *

- * All values stored in this map are versioned and the API supports optimistic - * concurrency by allowing conditional updates that take into consideration - * the version or value that was previously read. - *

- * This map does not allow null values. All methods can throw a ConsistentMapException - * (which extends RuntimeException) to indicate failures. - * - */ -public interface AsyncConsistentMap { - - /** - * Returns the number of entries in the map. - * - * @return a future for map size. - */ - CompletableFuture size(); - - /** - * Returns true if the map is empty. - * - * @return a future whose value will be true if map has no entries, false otherwise. - */ - CompletableFuture isEmpty(); - - /** - * Returns true if this map contains a mapping for the specified key. - * - * @param key key - * @return a future whose value will be true if map contains key, false otherwise. - */ - CompletableFuture containsKey(K key); - - /** - * Returns true if this map contains the specified value. - * - * @param value value - * @return a future whose value will be true if map contains value, false otherwise. - */ - CompletableFuture containsValue(V value); - - /** - * Returns the value (and version) to which the specified key is mapped, or null if this - * map contains no mapping for the key. - * - * @param key the key whose associated value (and version) is to be returned - * @return a future value (and version) to which the specified key is mapped, or null if - * this map contains no mapping for the key - */ - CompletableFuture> get(K key); - - /** - * If the specified key is not already associated with a value (or is mapped to null), - * attempts to compute its value using the given mapping function and enters it into - * this map unless null. - * If a conflicting concurrent modification attempt is detected, the returned future - * will be completed exceptionally with ConsistentMapException.ConcurrentModification. - * @param key key with which the specified value is to be associated - * @param mappingFunction the function to compute a value - * @return the current (existing or computed) value associated with the specified key, - * or null if the computed value is null - */ - CompletableFuture> computeIfAbsent(K key, - Function mappingFunction); - - /** - * If the value for the specified key is present and non-null, attempts to compute a new - * mapping given the key and its current mapped value. - * If the computed value is null, the current mapping will be removed from the map. - * If a conflicting concurrent modification attempt is detected, the returned future - * will be completed exceptionally with ConsistentMapException.ConcurrentModification. - * @param key key with which the specified value is to be associated - * @param remappingFunction the function to compute a value - * @return the new value associated with the specified key, or null if computed value is null - */ - CompletableFuture> computeIfPresent(K key, - BiFunction remappingFunction); - - /** - * Attempts to compute a mapping for the specified key and its current mapped value (or - * null if there is no current mapping). - * If the computed value is null, the current mapping (if one exists) will be removed from the map. - * If a conflicting concurrent modification attempt is detected, the returned future - * will be completed exceptionally with ConsistentMapException.ConcurrentModification. - * @param key key with which the specified value is to be associated - * @param remappingFunction the function to compute a value - * @return the new value associated with the specified key, or null if computed value is null - */ - CompletableFuture> compute(K key, - BiFunction remappingFunction); - - /** - * If the value for the specified key satisfies a condition, attempts to compute a new - * mapping given the key and its current mapped value. - * If the computed value is null, the current mapping will be removed from the map. - * If a conflicting concurrent modification attempt is detected, the returned future - * will be completed exceptionally with ConsistentMapException.ConcurrentModification. - * @param key key with which the specified value is to be associated - * @param condition condition that should evaluate to true for the computation to proceed - * @param remappingFunction the function to compute a value - * @return the new value associated with the specified key, or the old value if condition evaluates to false - */ - CompletableFuture> computeIf(K key, - Predicate condition, - BiFunction remappingFunction); - - /** - * Associates the specified value with the specified key in this map (optional operation). - * If the map previously contained a mapping for the key, the old value is replaced by the - * specified value. - * - * @param key key with which the specified value is to be associated - * @param value value to be associated with the specified key - * @return the previous value (and version) associated with key, or null if there was - * no mapping for key. - */ - CompletableFuture> put(K key, V value); - - /** - * Associates the specified value with the specified key in this map (optional operation). - * If the map previously contained a mapping for the key, the old value is replaced by the - * specified value. - * - * @param key key with which the specified value is to be associated - * @param value value to be associated with the specified key - * @return new value. - */ - CompletableFuture> putAndGet(K key, V value); - - /** - * Removes the mapping for a key from this map if it is present (optional operation). - * - * @param key key whose value is to be removed from the map - * @return the value (and version) to which this map previously associated the key, - * or null if the map contained no mapping for the key. - */ - CompletableFuture> remove(K key); - - /** - * Removes all of the mappings from this map (optional operation). - * The map will be empty after this call returns. - * @return future that will be successfully completed when the map is cleared - */ - CompletableFuture clear(); - - /** - * Returns a Set view of the keys contained in this map. - * This method differs from the behavior of java.util.Map.keySet() in that - * what is returned is a unmodifiable snapshot view of the keys in the ConsistentMap. - * Attempts to modify the returned set, whether direct or via its iterator, - * result in an UnsupportedOperationException. - * - * @return a set of the keys contained in this map - */ - CompletableFuture> keySet(); - - /** - * Returns the collection of values (and associated versions) contained in this map. - * This method differs from the behavior of java.util.Map.values() in that - * what is returned is a unmodifiable snapshot view of the values in the ConsistentMap. - * Attempts to modify the returned collection, whether direct or via its iterator, - * result in an UnsupportedOperationException. - * - * @return a collection of the values (and associated versions) contained in this map - */ - CompletableFuture>> values(); - - /** - * Returns the set of entries contained in this map. - * This method differs from the behavior of java.util.Map.entrySet() in that - * what is returned is a unmodifiable snapshot view of the entries in the ConsistentMap. - * Attempts to modify the returned set, whether direct or via its iterator, - * result in an UnsupportedOperationException. - * - * @return set of entries contained in this map. - */ - CompletableFuture>>> entrySet(); - - /** - * If the specified key is not already associated with a value - * associates it with the given value and returns null, else returns the current value. - * - * @param key key with which the specified value is to be associated - * @param value value to be associated with the specified key - * @return the previous value associated with the specified key or null - * if key does not already mapped to a value. - */ - CompletableFuture> putIfAbsent(K key, V value); - - /** - * Removes the entry for the specified key only if it is currently - * mapped to the specified value. - * - * @param key key with which the specified value is associated - * @param value value expected to be associated with the specified key - * @return true if the value was removed - */ - CompletableFuture remove(K key, V value); - - /** - * Removes the entry for the specified key only if its current - * version in the map is equal to the specified version. - * - * @param key key with which the specified version is associated - * @param version version expected to be associated with the specified key - * @return true if the value was removed - */ - CompletableFuture remove(K key, long version); - - /** - * Replaces the entry for the specified key only if currently mapped - * to the specified value. - * - * @param key key with which the specified value is associated - * @param oldValue value expected to be associated with the specified key - * @param newValue value to be associated with the specified key - * @return true if the value was replaced - */ - CompletableFuture replace(K key, V oldValue, V newValue); - - /** - * Replaces the entry for the specified key only if it is currently mapped to the - * specified version. - * - * @param key key key with which the specified value is associated - * @param oldVersion version expected to be associated with the specified key - * @param newValue value to be associated with the specified key - * @return true if the value was replaced - */ - CompletableFuture replace(K key, long oldVersion, V newValue); - - /** - * Registers the specified listener to be notified whenever the map is updated. - * - * @param listener listener to notify about map events - */ - void addListener(MapEventListener listener); - - /** - * Unregisters the specified listener such that it will no longer - * receive map change notifications. - * - * @param listener listener to unregister - */ - void removeListener(MapEventListener listener); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicCounter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicCounter.java deleted file mode 100644 index 3c9e02c8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicCounter.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Distributed version of java.util.concurrent.atomic.AtomicLong. - */ -public interface AtomicCounter { - - /** - * Atomically increment by one the current value. - * - * @return updated value - */ - long incrementAndGet(); - - /** - * Atomically increment by one the current value. - * - * @return previous value - */ - long getAndIncrement(); - - /** - * Atomically adds the given value to the current value. - * - * @param delta the value to add - * @return previous value - */ - long getAndAdd(long delta); - - /** - * Atomically adds the given value to the current value. - * - * @param delta the value to add - * @return updated value - */ - long addAndGet(long delta); - - /** - * Atomically sets the given value to the current value. - * - * @param value the value to set - */ - void set(long value); - - /** - * Atomically sets the given counter to the updated value if the current value is the expected value, otherwise - * no change occurs. - * @param expectedValue the expected current value of the counter - * @param updateValue the new value to be set - * @return true if the update occurred and the expected value was equal to the current value, false otherwise - */ - boolean compareAndSet(long expectedValue, long updateValue); - - /** - * Returns the current value of the counter without modifying it. - * - * @return current value - */ - long get(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicCounterBuilder.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicCounterBuilder.java deleted file mode 100644 index 41a19f0d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicCounterBuilder.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Builder for AtomicCounter. - */ -public interface AtomicCounterBuilder { - - /** - * Sets the name for the atomic counter. - *

- * Each atomic counter is identified by a unique name. - *

- *

- * Note: This is a mandatory parameter. - *

- * - * @param name name of the atomic counter - * @return this AtomicCounterBuilder - */ - AtomicCounterBuilder withName(String name); - - /** - * Creates this counter on the partition that spans the entire cluster. - *

- * When partitioning is disabled, the counter state will be - * ephemeral and does not survive a full cluster restart. - *

- *

- * Note: By default partitions are enabled. - *

- * @return this AtomicCounterBuilder - */ - AtomicCounterBuilder withPartitionsDisabled(); - - /** - * Instantiates Metering service to gather usage and performance metrics. - * By default, usage data will be stored. - * - * @return this AtomicCounterBuilder - */ - AtomicCounterBuilder withMeteringDisabled(); - - /** - * Builds a AtomicCounter based on the configuration options - * supplied to this builder. - * - * @return new AtomicCounter - * @throws java.lang.RuntimeException if a mandatory parameter is missing - */ - AtomicCounter build(); - - /** - * Builds a AsyncAtomicCounter based on the configuration options - * supplied to this builder. - * - * @return new AsyncAtomicCounter - * @throws java.lang.RuntimeException if a mandatory parameter is missing - */ - AsyncAtomicCounter buildAsyncCounter(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValue.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValue.java deleted file mode 100644 index dfa0fb3c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValue.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Distributed version of java.util.concurrent.atomic.AtomicReference. - * - * @param value type - */ -public interface AtomicValue { - - /** - * Atomically sets the value to the given updated value if the current value is equal to the expected value. - *

- * IMPORTANT: Equality is based on the equality of the serialized byte[] representations. - *

- * @param expect the expected value - * @param update the new value - * @return true if successful. false return indicates that the actual value was not equal to the expected value. - */ - boolean compareAndSet(V expect, V update); - - /** - * Gets the current value. - * @return current value - */ - V get(); - - /** - * Atomically sets to the given value and returns the old value. - * @param value the new value - * @return previous value - */ - V getAndSet(V value); - - /** - * Sets to the given value. - * @param value new value - */ - void set(V value); - - /** - * Registers the specified listener to be notified whenever the atomic value is updated. - * - * @param listener listener to notify about events - */ - void addListener(AtomicValueEventListener listener); - - /** - * Unregisters the specified listener such that it will no longer - * receive atomic value update notifications. - * - * @param listener listener to unregister - */ - void removeListener(AtomicValueEventListener listener); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueBuilder.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueBuilder.java deleted file mode 100644 index 3478ce00..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueBuilder.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Builder for constructing new AtomicValue instances. - * - * @param atomic value type - */ -public interface AtomicValueBuilder { - /** - * Sets the name for the atomic value. - *

- * Each atomic value is identified by a unique name. - *

- *

- * Note: This is a mandatory parameter. - *

- * - * @param name name of the atomic value - * @return this AtomicValueBuilder for method chaining - */ - AtomicValueBuilder withName(String name); - - /** - * Sets a serializer that can be used to serialize the value. - *

- * Note: This is a mandatory parameter. - *

- * - * @param serializer serializer - * @return this AtomicValueBuilder for method chaining - */ - AtomicValueBuilder withSerializer(Serializer serializer); - - /** - * Creates this atomic value on the partition that spans the entire cluster. - *

- * When partitioning is disabled, the value state will be - * ephemeral and does not survive a full cluster restart. - *

- *

- * Note: By default partitions are enabled. - *

- * @return this AtomicValueBuilder for method chaining - */ - AtomicValueBuilder withPartitionsDisabled(); - - /** - * Instantiates Metering service to gather usage and performance metrics. - * By default, usage data will be stored. - * - * @return this AtomicValueBuilder for method chaining - */ - AtomicValueBuilder withMeteringDisabled(); - - /** - * Builds a AtomicValue based on the configuration options - * supplied to this builder. - * - * @return new AtomicValue - * @throws java.lang.RuntimeException if a mandatory parameter is missing - */ - AtomicValue build(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueEvent.java deleted file mode 100644 index 1bce1365..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueEvent.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -/** - * Representation of a AtomicValue update notification. - * - * @param atomic value type - */ -public final class AtomicValueEvent { - - /** - * AtomicValueEvent type. - */ - public enum Type { - - /** - * Value was updated. - */ - UPDATE, - } - - private final String name; - private final Type type; - private final V value; - - /** - * Creates a new event object. - * - * @param name AtomicValue name - * @param type the type of the event - * @param value the new value - */ - public AtomicValueEvent(String name, Type type, V value) { - this.name = name; - this.type = type; - this.value = value; - } - - /** - * Returns the AtomicValue name. - * - * @return name of atomic value - */ - public String name() { - return name; - } - - /** - * Returns the type of the event. - * - * @return the type of the event - */ - public Type type() { - return type; - } - - /** - * Returns the new updated value. - * - * @return the value - */ - public V value() { - return value; - } - - @Override - public boolean equals(Object o) { - if (!(o instanceof AtomicValueEvent)) { - return false; - } - - AtomicValueEvent that = (AtomicValueEvent) o; - return Objects.equals(this.name, that.name) && - Objects.equals(this.type, that.type) && - Objects.equals(this.value, that.value); - } - - @Override - public int hashCode() { - return Objects.hash(name, type, value); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("name", name) - .add("type", type) - .add("value", value) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueEventListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueEventListener.java deleted file mode 100644 index b29d903b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/AtomicValueEventListener.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Listener to be notified about updates to a AtomicValue. - */ -public interface AtomicValueEventListener { - /** - * Reacts to the specified event. - * - * @param event the event - */ - void event(AtomicValueEvent event); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java deleted file mode 100644 index 289da202..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Collection; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.Predicate; - -/** - * A distributed, strongly consistent key-value map. - *

- * This map offers strong read-after-update (where update == create/update/delete) - * consistency. All operations to the map are serialized and applied in a consistent - * manner. - *

- * The stronger consistency comes at the expense of availability in - * the event of a network partition. A network partition can be either due to - * a temporary disruption in network connectivity between participating nodes - * or due to a node being temporarily down. - *

- * All values stored in this map are versioned and the API supports optimistic - * concurrency by allowing conditional updates that take into consideration - * the version or value that was previously read. - *

- * This map does not allow null values. All methods can throw a ConsistentMapException - * (which extends RuntimeException) to indicate failures. - * - */ -public interface ConsistentMap { - - /** - * Returns the number of entries in the map. - * - * @return map size. - */ - int size(); - - /** - * Returns true if the map is empty. - * - * @return true if map has no entries, false otherwise - */ - boolean isEmpty(); - - /** - * Returns true if this map contains a mapping for the specified key. - * - * @param key key - * @return true if map contains key, false otherwise - */ - boolean containsKey(K key); - - /** - * Returns true if this map contains the specified value. - * - * @param value value - * @return true if map contains value, false otherwise. - */ - boolean containsValue(V value); - - /** - * Returns the value (and version) to which the specified key is mapped, or null if this - * map contains no mapping for the key. - * - * @param key the key whose associated value (and version) is to be returned - * @return the value (and version) to which the specified key is mapped, or null if - * this map contains no mapping for the key - */ - Versioned get(K key); - - /** - * If the specified key is not already associated with a value (or is mapped to null), - * attempts to compute its value using the given mapping function and enters it into - * this map unless null. - * - * @param key key with which the specified value is to be associated - * @param mappingFunction the function to compute a value - * @return the current (existing or computed) value associated with the specified key, - * or null if the computed value is null. Method throws {@code ConsistentMapException.ConcurrentModification} - * if a concurrent modification of map is detected - */ - Versioned computeIfAbsent(K key, - Function mappingFunction); - - /** - * Attempts to compute a mapping for the specified key and its current mapped value (or - * null if there is no current mapping). - * If the computed value is null, the current mapping will be removed from the map. - * - * @param key key with which the specified value is to be associated - * @param remappingFunction the function to compute a value - * @return the new value associated with the specified key, or null if none. - * This method throws {@code ConsistentMapException.ConcurrentModification} - * if a concurrent modification of map is detected - */ - Versioned compute(K key, - BiFunction remappingFunction); - - /** - * If the value for the specified key is present and non-null, attempts to compute a new - * mapping given the key and its current mapped value. - * If the computed value is null, the current mapping will be removed from the map. - * - * @param key key with which the specified value is to be associated - * @param remappingFunction the function to compute a value - * @return the new value associated with the specified key, or null if none. - * This method throws {@code ConsistentMapException.ConcurrentModification} - * if a concurrent modification of map is detected - */ - Versioned computeIfPresent(K key, - BiFunction remappingFunction); - - /** - * If the value for the specified key satisfies a condition, attempts to compute a new - * mapping given the key and its current mapped value. - * If the computed value is null, the current mapping will be removed from the map. - * - * @param key key with which the specified value is to be associated - * @param condition condition that should evaluate to true for the computation to proceed - * @param remappingFunction the function to compute a value - * @return the new value associated with the specified key, or the old value if condition evaluates to false. - * This method throws {@code ConsistentMapException.ConcurrentModification} if a concurrent - * modification of map is detected - */ - Versioned computeIf(K key, - Predicate condition, - BiFunction remappingFunction); - - /** - * Associates the specified value with the specified key in this map (optional operation). - * If the map previously contained a mapping for the key, the old value is replaced by the - * specified value. - * - * @param key key with which the specified value is to be associated - * @param value value to be associated with the specified key - * @return the previous value (and version) associated with key, or null if there was - * no mapping for key. - */ - Versioned put(K key, V value); - - /** - * Associates the specified value with the specified key in this map (optional operation). - * If the map previously contained a mapping for the key, the old value is replaced by the - * specified value. - * - * @param key key with which the specified value is to be associated - * @param value value to be associated with the specified key - * @return new value. - */ - Versioned putAndGet(K key, V value); - - /** - * Removes the mapping for a key from this map if it is present (optional operation). - * - * @param key key whose value is to be removed from the map - * @return the value (and version) to which this map previously associated the key, - * or null if the map contained no mapping for the key. - */ - Versioned remove(K key); - - /** - * Removes all of the mappings from this map (optional operation). - * The map will be empty after this call returns. - */ - void clear(); - - /** - * Returns a Set view of the keys contained in this map. - * This method differs from the behavior of java.util.Map.keySet() in that - * what is returned is a unmodifiable snapshot view of the keys in the ConsistentMap. - * Attempts to modify the returned set, whether direct or via its iterator, - * result in an UnsupportedOperationException. - * - * @return a set of the keys contained in this map - */ - Set keySet(); - - /** - * Returns the collection of values (and associated versions) contained in this map. - * This method differs from the behavior of java.util.Map.values() in that - * what is returned is a unmodifiable snapshot view of the values in the ConsistentMap. - * Attempts to modify the returned collection, whether direct or via its iterator, - * result in an UnsupportedOperationException. - * - * @return a collection of the values (and associated versions) contained in this map - */ - Collection> values(); - - /** - * Returns the set of entries contained in this map. - * This method differs from the behavior of java.util.Map.entrySet() in that - * what is returned is a unmodifiable snapshot view of the entries in the ConsistentMap. - * Attempts to modify the returned set, whether direct or via its iterator, - * result in an UnsupportedOperationException. - * - * @return set of entries contained in this map. - */ - Set>> entrySet(); - - /** - * If the specified key is not already associated with a value - * associates it with the given value and returns null, else returns the current value. - * - * @param key key with which the specified value is to be associated - * @param value value to be associated with the specified key - * @return the previous value associated with the specified key or null - * if key does not already mapped to a value. - */ - Versioned putIfAbsent(K key, V value); - - /** - * Removes the entry for the specified key only if it is currently - * mapped to the specified value. - * - * @param key key with which the specified value is associated - * @param value value expected to be associated with the specified key - * @return true if the value was removed - */ - boolean remove(K key, V value); - - /** - * Removes the entry for the specified key only if its current - * version in the map is equal to the specified version. - * - * @param key key with which the specified version is associated - * @param version version expected to be associated with the specified key - * @return true if the value was removed - */ - boolean remove(K key, long version); - - /** - * Replaces the entry for the specified key only if currently mapped - * to the specified value. - * - * @param key key with which the specified value is associated - * @param oldValue value expected to be associated with the specified key - * @param newValue value to be associated with the specified key - * @return true if the value was replaced - */ - boolean replace(K key, V oldValue, V newValue); - - /** - * Replaces the entry for the specified key only if it is currently mapped to the - * specified version. - * - * @param key key key with which the specified value is associated - * @param oldVersion version expected to be associated with the specified key - * @param newValue value to be associated with the specified key - * @return true if the value was replaced - */ - boolean replace(K key, long oldVersion, V newValue); - - /** - * Registers the specified listener to be notified whenever the map is updated. - * - * @param listener listener to notify about map events - */ - void addListener(MapEventListener listener); - - /** - * Unregisters the specified listener such that it will no longer - * receive map change notifications. - * - * @param listener listener to unregister - */ - void removeListener(MapEventListener listener); - - /** - * Returns a java.util.Map instance backed by this ConsistentMap. - * @return java.util.Map - */ - Map asJavaMap(); -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java deleted file mode 100644 index 847adaf6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import org.onosproject.core.ApplicationId; - -/** - * Builder for consistent maps. - * - * @param type for map key - * @param type for map value - */ -public interface ConsistentMapBuilder { - - /** - * Sets the name of the map. - *

- * Each consistent map is identified by a unique map name. - *

- *

- * Note: This is a mandatory parameter. - *

- * - * @param name name of the consistent map - * @return this ConsistentMapBuilder - */ - ConsistentMapBuilder withName(String name); - - /** - * Sets the owner applicationId for the map. - *

- * Note: If {@code purgeOnUninstall} option is enabled, applicationId - * must be specified. - *

- * - * @param id applicationId owning the consistent map - * @return this ConsistentMapBuilder - */ - ConsistentMapBuilder withApplicationId(ApplicationId id); - - /** - * Sets a serializer that can be used to serialize - * both the keys and values inserted into the map. The serializer - * builder should be pre-populated with any classes that will be - * put into the map. - *

- * Note: This is a mandatory parameter. - *

- * - * @param serializer serializer - * @return this ConsistentMapBuilder - */ - ConsistentMapBuilder withSerializer(Serializer serializer); - - /** - * Disables distribution of map entries across multiple database partitions. - *

- * When partitioning is disabled, the returned map will have a single partition - * that spans the entire cluster. Furthermore, the changes made to the map are - * ephemeral and do not survive a full cluster restart. - *

- *

- * Disabling partitions is more appropriate when the returned map is used for - * coordination activities such as leader election and not for long term data persistence. - *

- *

- * Note: By default partitions are enabled and entries in the map are durable. - *

- * @return this ConsistentMapBuilder - */ - ConsistentMapBuilder withPartitionsDisabled(); - - /** - * Disables map updates. - *

- * Attempt to update the built map will throw {@code UnsupportedOperationException}. - * - * @return this ConsistentMapBuilder - */ - ConsistentMapBuilder withUpdatesDisabled(); - - /** - * Purges map contents when the application owning the map is uninstalled. - *

- * When this option is enabled, the caller must provide a applicationId via - * the {@code withAppliationId} builder method. - *

- * By default map entries will NOT be purged when owning application is uninstalled. - * - * @return this ConsistentMapBuilder - */ - ConsistentMapBuilder withPurgeOnUninstall(); - - /** - * Instantiates Metering service to gather usage and performance metrics. - * By default, usage data will be stored. - * - * @return this ConsistentMapBuilder - */ - ConsistentMapBuilder withMeteringDisabled(); - - /** - * Provides weak consistency for map gets. - *

- * While this can lead to improved read performance, it can also make the behavior - * heard to reason. Only turn this on if you know what you are doing. By default - * reads are strongly consistent. - * - * @return this ConsistentMapBuilder - */ - ConsistentMapBuilder withRelaxedReadConsistency(); - - /** - * Builds an consistent map based on the configuration options - * supplied to this builder. - * - * @return new consistent map - * @throws java.lang.RuntimeException if a mandatory parameter is missing - */ - ConsistentMap build(); - - /** - * Builds an async consistent map based on the configuration options - * supplied to this builder. - * - * @return new async consistent map - * @throws java.lang.RuntimeException if a mandatory parameter is missing - */ - AsyncConsistentMap buildAsyncMap(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMapException.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMapException.java deleted file mode 100644 index 94ed649f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/ConsistentMapException.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Top level exception for ConsistentMap failures. - */ -@SuppressWarnings("serial") -public class ConsistentMapException extends StorageException { - public ConsistentMapException() { - } - - public ConsistentMapException(Throwable t) { - super(t); - } - - /** - * ConsistentMap operation timeout. - */ - public static class Timeout extends ConsistentMapException { - } - - /** - * ConsistentMap update conflicts with an in flight transaction. - */ - public static class ConcurrentModification extends ConsistentMapException { - } - - /** - * ConsistentMap operation interrupted. - */ - public static class Interrupted extends ConsistentMapException { - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DatabaseUpdate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DatabaseUpdate.java deleted file mode 100644 index a62d3823..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DatabaseUpdate.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; - -import com.google.common.base.MoreObjects; - -/** - * Database update operation. - * - */ -public final class DatabaseUpdate { - - /** - * Type of database update operation. - */ - public enum Type { - /** - * Insert/Update entry without any checks. - */ - PUT, - /** - * Insert an entry iff there is no existing entry for that key. - */ - PUT_IF_ABSENT, - - /** - * Update entry if the current version matches specified version. - */ - PUT_IF_VERSION_MATCH, - - /** - * Update entry if the current value matches specified value. - */ - PUT_IF_VALUE_MATCH, - - /** - * Remove entry without any checks. - */ - REMOVE, - - /** - * Remove entry if the current version matches specified version. - */ - REMOVE_IF_VERSION_MATCH, - - /** - * Remove entry if the current value matches specified value. - */ - REMOVE_IF_VALUE_MATCH, - } - - private Type type; - private String mapName; - private String key; - private byte[] value; - private byte[] currentValue; - private long currentVersion = -1; - - /** - * Returns the type of update operation. - * @return type of update. - */ - public Type type() { - return type; - } - - /** - * Returns the name of map being updated. - * @return map name. - */ - public String mapName() { - return mapName; - } - - /** - * Returns the item key being updated. - * @return item key - */ - public String key() { - return key; - } - - /** - * Returns the new value. - * @return item's target value. - */ - public byte[] value() { - return value; - } - - /** - * Returns the expected current value in the database value for the key. - * @return current value in database. - */ - public byte[] currentValue() { - return currentValue; - } - - /** - * Returns the expected current version in the database for the key. - * @return expected version. - */ - public long currentVersion() { - return currentVersion; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("type", type) - .add("mapName", mapName) - .add("key", key) - .add("value", value) - .add("currentValue", currentValue) - .add("currentVersion", currentVersion) - .toString(); - } - - /** - * Creates a new builder instance. - * - * @return builder. - */ - public static Builder newBuilder() { - return new Builder(); - } - - /** - * DatabaseUpdate builder. - * - */ - public static final class Builder { - - private DatabaseUpdate update = new DatabaseUpdate(); - - public DatabaseUpdate build() { - validateInputs(); - return update; - } - - public Builder withType(Type type) { - update.type = checkNotNull(type, "type cannot be null"); - return this; - } - - public Builder withMapName(String mapName) { - update.mapName = checkNotNull(mapName, "mapName cannot be null"); - return this; - } - - public Builder withKey(String key) { - update.key = checkNotNull(key, "key cannot be null"); - return this; - } - - public Builder withCurrentValue(byte[] value) { - update.currentValue = checkNotNull(value, "currentValue cannot be null"); - return this; - } - - public Builder withValue(byte[] value) { - update.value = checkNotNull(value, "value cannot be null"); - return this; - } - - public Builder withCurrentVersion(long version) { - checkArgument(version >= 0, "version cannot be negative"); - update.currentVersion = version; - return this; - } - - private void validateInputs() { - checkNotNull(update.type, "type must be specified"); - checkNotNull(update.mapName, "map name must be specified"); - checkNotNull(update.key, "key must be specified"); - switch (update.type) { - case PUT: - case PUT_IF_ABSENT: - checkNotNull(update.value, "value must be specified."); - break; - case PUT_IF_VERSION_MATCH: - checkNotNull(update.value, "value must be specified."); - checkState(update.currentVersion >= 0, "current version must be specified"); - break; - case PUT_IF_VALUE_MATCH: - checkNotNull(update.value, "value must be specified."); - checkNotNull(update.currentValue, "currentValue must be specified."); - break; - case REMOVE: - break; - case REMOVE_IF_VERSION_MATCH: - checkState(update.currentVersion >= 0, "current version must be specified"); - break; - case REMOVE_IF_VALUE_MATCH: - checkNotNull(update.currentValue, "currentValue must be specified."); - break; - default: - throw new IllegalStateException("Unknown operation type"); - } - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedQueue.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedQueue.java deleted file mode 100644 index cc0b00d3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedQueue.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.concurrent.CompletableFuture; - -/** - * A distributed collection designed for holding elements prior to processing. - * A queue provides insertion, extraction and inspection operations. The extraction operation - * is designed to be non-blocking. - * - * @param queue entry type - */ -public interface DistributedQueue { - - /** - * Returns total number of entries in the queue. - * @return queue size - */ - long size(); - - /** - * Returns true if queue has elements in it. - * @return true is queue has elements, false otherwise - */ - default boolean isEmpty() { - return size() == 0; - } - - /** - * Inserts an entry into the queue. - * @param entry entry to insert - */ - void push(E entry); - - /** - * If the queue is non-empty, an entry will be removed from the queue and the returned future - * will be immediately completed with it. If queue is empty when this call is made, the returned - * future will be eventually completed when an entry is added to the queue. - * @return queue entry - */ - CompletableFuture pop(); - - /** - * Returns an entry from the queue without removing it. If the queue is empty returns null. - * @return queue entry or null if queue is empty - */ - E peek(); -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedQueueBuilder.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedQueueBuilder.java deleted file mode 100644 index 646dc28c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedQueueBuilder.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Builder for distributed queue. - * - * @param type queue elements. - */ -public interface DistributedQueueBuilder { - - /** - * Sets the name of the queue. - *

- * Each queue is identified by a unique name. - *

- *

- * Note: This is a mandatory parameter. - *

- * - * @param name name of the queue - * @return this DistributedQueueBuilder for method chaining - */ - DistributedQueueBuilder withName(String name); - - /** - * Sets a serializer that can be used to serialize - * the elements pushed into the queue. The serializer - * builder should be pre-populated with any classes that will be - * put into the queue. - *

- * Note: This is a mandatory parameter. - *

- * - * @param serializer serializer - * @return this DistributedQueueBuilder for method chaining - */ - DistributedQueueBuilder withSerializer(Serializer serializer); - - /** - * - * - * @return this DistributedQueueBuilder for method chaining - */ - DistributedQueueBuilder withMeteringDisabled(); - - - /** - * Disables persistence of queues entries. - *

- * When persistence is disabled, a full cluster restart will wipe out all - * queue entries. - *

- * @return this DistributedQueueBuilder for method chaining - */ - DistributedQueueBuilder withPersistenceDisabled(); - - /** - * Builds a queue based on the configuration options - * supplied to this builder. - * - * @return new distributed queue - * @throws java.lang.RuntimeException if a mandatory parameter is missing - */ - DistributedQueue build(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedSet.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedSet.java deleted file mode 100644 index 460206ec..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedSet.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Set; - -/** - * A distributed collection designed for holding unique elements. - * - * @param set entry type - */ -public interface DistributedSet extends Set { - - /** - * Registers the specified listener to be notified whenever - * the set is updated. - * - * @param listener listener to notify about set update events - */ - void addListener(SetEventListener listener); - - /** - * Unregisters the specified listener. - * - * @param listener listener to unregister. - */ - void removeListener(SetEventListener listener); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedSetBuilder.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedSetBuilder.java deleted file mode 100644 index f5a44c93..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/DistributedSetBuilder.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import org.onosproject.core.ApplicationId; - -/** - * Builder for distributed set. - * - * @param type set elements. - */ -public interface DistributedSetBuilder { - - /** - * Sets the name of the set. - *

- * Each set is identified by a unique name. - *

- *

- * Note: This is a mandatory parameter. - *

- * - * @param name name of the set - * @return this DistributedSetBuilder - */ - DistributedSetBuilder withName(String name); - - /** - * Sets the owner applicationId for the set. - *

- * Note: If {@code purgeOnUninstall} option is enabled, applicationId - * must be specified. - *

- * - * @param id applicationId owning the set - * @return this DistributedSetBuilder - */ - DistributedSetBuilder withApplicationId(ApplicationId id); - - /** - * Sets a serializer that can be used to serialize - * the elements add to the set. The serializer - * builder should be pre-populated with any classes that will be - * put into the set. - *

- * Note: This is a mandatory parameter. - *

- * - * @param serializer serializer - * @return this DistributedSetBuilder - */ - DistributedSetBuilder withSerializer(Serializer serializer); - - /** - * Disables set updates. - *

- * Attempt to update the built set will throw {@code UnsupportedOperationException}. - * - * @return this DistributedSetBuilder - */ - DistributedSetBuilder withUpdatesDisabled(); - - /** - * Provides weak consistency for set reads. - *

- * While this can lead to improved read performance, it can also make the behavior - * heard to reason. Only turn this on if you know what you are doing. By default - * reads are strongly consistent. - * - * @return this DistributedSetBuilder - */ - DistributedSetBuilder withRelaxedReadConsistency(); - - /** - * Disables distribution of set entries across multiple database partitions. - *

- * When partitioning is disabled, the returned set will have a single partition - * that spans the entire cluster. Furthermore, the changes made to the set are - * ephemeral and do not survive a full cluster restart. - *

- *

- * Disabling partitions is more appropriate when the returned set is used for - * simple coordination activities and not for long term data persistence. - *

- *

- * Note: By default partitions are enabled and entries in the set are durable. - *

- * @return this DistributedSetBuilder - */ - DistributedSetBuilder withPartitionsDisabled(); - - /** - * Instantiate Metrics service to gather usage and performance metrics. - * By default usage information is enabled - * @return this DistributedSetBuilder - */ - DistributedSetBuilder withMeteringDisabled(); - - /** - * Purges set contents when the application owning the set is uninstalled. - *

- * When this option is enabled, the caller must provide a applicationId via - * the {@code withAppliationId} builder method. - *

- * By default set contents will NOT be purged when owning application is uninstalled. - * - * @return this DistributedSetBuilder - */ - DistributedSetBuilder withPurgeOnUninstall(); - - /** - * Builds an set based on the configuration options - * supplied to this builder. - * - * @return new set - * @throws java.lang.RuntimeException if a mandatory parameter is missing - */ - DistributedSet build(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMap.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMap.java deleted file mode 100644 index 06395b8e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMap.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; -import java.util.function.BiFunction; - -/** - * A distributed, eventually consistent map. - *

- * This map does not offer read after writes consistency. Operations are - * serialized via the timestamps issued by the clock service. If two updates - * are in conflict, the update with the more recent timestamp will endure. - *

- * The interface is mostly similar to {@link java.util.Map} with some minor - * semantic changes and the addition of a listener framework (because the map - * can be mutated by clients on other instances, not only through the local Java - * API). - *

- * Clients are expected to register an - * {@link EventuallyConsistentMapListener} if they - * are interested in receiving notifications of update to the map. - *

- * Null values are not allowed in this map. - *

- */ -public interface EventuallyConsistentMap { - - /** - * Returns the number of key-value mappings in this map. - * - * @return number of key-value mappings - */ - int size(); - - /** - * Returns true if this map is empty. - * - * @return true if this map is empty, otherwise false - */ - boolean isEmpty(); - - /** - * Returns true if the map contains a mapping for the specified key. - * - * @param key the key to check if this map contains - * @return true if this map has a mapping for the key, otherwise false - */ - boolean containsKey(K key); - - /** - * Returns true if the map contains a mapping from any key to the specified - * value. - * - * @param value the value to check if this map has a mapping for - * @return true if this map has a mapping to this value, otherwise false - */ - boolean containsValue(V value); - - /** - * Returns the value mapped to the specified key. - * - * @param key the key to look up in this map - * @return the value mapped to the key, or null if no mapping is found - */ - V get(K key); - - /** - * Associates the specified value to the specified key in this map. - *

- * Note: this differs from the specification of {@link java.util.Map} - * because it does not return the previous value associated with the key. - * Clients are expected to register an - * {@link EventuallyConsistentMapListener} if - * they are interested in receiving notification of updates to the map. - *

- * Null values are not allowed in the map. - *

- * - * @param key the key to add a mapping for in this map - * @param value the value to associate with the key in this map - */ - void put(K key, V value); - - /** - * Removes the mapping associated with the specified key from the map. - *

- * Clients are expected to register an {@link EventuallyConsistentMapListener} if - * they are interested in receiving notification of updates to the map. - *

- * - * @param key the key to remove the mapping for - * @return previous value associated with key, or null if there was no mapping for key. - */ - V remove(K key); - - /** - * Removes the given key-value mapping from the map, if it exists. - *

- * This actually means remove any values up to and including the timestamp - * given by the map's timestampProvider. - * Any mappings that produce an earlier timestamp than this given key-value - * pair will be removed, and any mappings that produce a later timestamp - * will supersede this remove. - *

- * Note: this differs from the specification of {@link java.util.Map} - * because it does not return a boolean indication whether a value was removed. - * Clients are expected to register an - * {@link EventuallyConsistentMapListener} if - * they are interested in receiving notification of updates to the map. - *

- * - * @param key the key to remove the mapping for - * @param value the value mapped to the key - */ - void remove(K key, V value); - - /** - * Attempts to compute a mapping for the specified key and its current mapped - * value (or null if there is no current mapping). - *

- * If the function returns null, the mapping is removed (or remains absent if initially absent). - * @param key map key - * @param recomputeFunction function to recompute a new value - * @return new value - */ - V compute(K key, BiFunction recomputeFunction); - - /** - * Adds mappings for all key-value pairs in the specified map to this map. - *

- * This will be more efficient in communication than calling individual put - * operations. - *

- * - * @param m a map of values to add to this map - */ - void putAll(Map m); - - /** - * Removes all mappings from this map. - */ - void clear(); - - /** - * Returns a set of the keys in this map. Changes to the set are not - * reflected back to the map. - * - * @return set of keys in the map - */ - Set keySet(); - - /** - * Returns a collections of values in this map. Changes to the collection - * are not reflected back to the map. - * - * @return collection of values in the map - */ - Collection values(); - - /** - * Returns a set of mappings contained in this map. Changes to the set are - * not reflected back to the map. - * - * @return set of key-value mappings in this map - */ - Set> entrySet(); - - /** - * Adds the specified listener to the map which will be notified whenever - * the mappings in the map are changed. - * - * @param listener listener to register for events - */ - void addListener(EventuallyConsistentMapListener listener); - - /** - * Removes the specified listener from the map such that it will no longer - * receive change notifications. - * - * @param listener listener to deregister for events - */ - void removeListener(EventuallyConsistentMapListener listener); - - /** - * Shuts down the map and breaks communication between different instances. - * This allows the map objects to be cleaned up and garbage collected. - * Calls to any methods on the map subsequent to calling destroy() will - * throw a {@link java.lang.RuntimeException}. - */ - void destroy(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapBuilder.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapBuilder.java deleted file mode 100644 index 9471321c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapBuilder.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import org.onlab.util.KryoNamespace; -import org.onosproject.cluster.NodeId; -import org.onosproject.store.Timestamp; - -import java.util.Collection; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.function.BiFunction; - -/** - * Builder for eventually consistent maps. - * - * @param type for map keys - * @param type for map values - */ -public interface EventuallyConsistentMapBuilder { - - /** - * Sets the name of the map. - *

- * Each map is identified by a string map name. EventuallyConsistentMapImpl - * objects in different JVMs that use the same map name will form a - * distributed map across JVMs (provided the cluster service is aware of - * both nodes). - *

- *

- * Note: This is a mandatory parameter. - *

- * - * @param name name of the map - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withName(String name); - - /** - * Sets a serializer builder that can be used to create a serializer that - * can serialize both the keys and values put into the map. The serializer - * builder should be pre-populated with any classes that will be put into - * the map. - *

- * Note: This is a mandatory parameter. - *

- * - * @param serializerBuilder serializer builder - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withSerializer( - KryoNamespace.Builder serializerBuilder); - - /** - * Sets the function to use for generating timestamps for map updates. - *

- * The client must provide an {@code BiFunction} - * which can generate timestamps for a given key. The function is free - * to generate timestamps however it wishes, however these timestamps will - * be used to serialize updates to the map so they must be strict enough - * to ensure updates are properly ordered for the use case (i.e. in some - * cases wallclock time will suffice, whereas in other cases logical time - * will be necessary). - *

- *

- * Note: This is a mandatory parameter. - *

- * - * @param timestampProvider provides a new timestamp - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withTimestampProvider( - BiFunction timestampProvider); - - /** - * Sets the executor to use for processing events coming in from peers. - * - * @param executor event executor - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withEventExecutor( - ExecutorService executor); - - /** - * Sets the executor to use for sending events to peers. - * - * @param executor event executor - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withCommunicationExecutor( - ExecutorService executor); - - /** - * Sets the executor to use for background anti-entropy tasks. - * - * @param executor event executor - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withBackgroundExecutor( - ScheduledExecutorService executor); - - /** - * Sets a function that can determine which peers to replicate updates to. - *

- * The default function replicates to all nodes. - *

- * - * @param peerUpdateFunction function that takes a K, V input and returns - * a collection of NodeIds to replicate the event - * to - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withPeerUpdateFunction( - BiFunction> peerUpdateFunction); - - /** - * Prevents this map from writing tombstones of items that have been - * removed. This may result in zombie items reappearing after they have - * been removed. - *

- * The default behavior is tombstones are enabled. - *

- * - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withTombstonesDisabled(); - - /** - * Configures how often to run the anti-entropy background task. - *

- * The default anti-entropy period is 5 seconds. - *

- * - * @param period anti-entropy period - * @param unit time unit for the period - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withAntiEntropyPeriod( - long period, TimeUnit unit); - - /** - * Configure anti-entropy to converge faster at the cost of doing more work - * for each anti-entropy cycle. Suited to maps with low update rate where - * convergence time is more important than throughput. - *

- * The default behavior is to do less anti-entropy work at the cost of - * slower convergence. - *

- * - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withFasterConvergence(); - - /** - * Configure the map to persist data to disk. - *

- * The default behavior is no persistence - *

- * - * @return this EventuallyConsistentMapBuilder - */ - EventuallyConsistentMapBuilder withPersistence(); - - /** - * Builds an eventually consistent map based on the configuration options - * supplied to this builder. - * - * @return new eventually consistent map - * @throws java.lang.RuntimeException if a mandatory parameter is missing - */ - EventuallyConsistentMap build(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapEvent.java deleted file mode 100644 index 5814534e..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapEvent.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import com.google.common.base.MoreObjects; - -import java.util.Objects; - -/** - * Representation of a EventuallyConsistentMap update notification. - */ -public final class EventuallyConsistentMapEvent { - - public enum Type { - /** - * Entry added to map or existing entry updated. - */ - PUT, - - /** - * Entry removed from map. - */ - REMOVE - } - - private final String name; - private final Type type; - private final K key; - private final V value; - - /** - * Creates a new event object. - * - * @param name map name - * @param type the type of the event - * @param key the key the event concerns - * @param value the value mapped to the key - */ - public EventuallyConsistentMapEvent(String name, Type type, K key, V value) { - this.name = name; - this.type = type; - this.key = key; - this.value = value; - } - - /** - * Returns the map name. - * - * @return name of map - */ - public String name() { - return name; - } - - /** - * Returns the type of the event. - * - * @return the type of the event - */ - public Type type() { - return type; - } - - /** - * Returns the key this event concerns. - * - * @return the key - */ - public K key() { - return key; - } - - /** - * Returns the value associated with this event. If type is REMOVE, - * this is the value that was removed. If type is PUT, this is - * the new value. - * - * @return the value - */ - public V value() { - return value; - } - - @Override - public boolean equals(Object o) { - if (!(o instanceof EventuallyConsistentMapEvent)) { - return false; - } - - EventuallyConsistentMapEvent that = (EventuallyConsistentMapEvent) o; - return Objects.equals(this.type, that.type) && - Objects.equals(this.key, that.key) && - Objects.equals(this.value, that.value) && - Objects.equals(this.name, that.name); - } - - @Override - public int hashCode() { - return Objects.hash(type, key, value); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("name", name) - .add("type", type) - .add("key", key) - .add("value", value) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapListener.java deleted file mode 100644 index b2399a48..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/EventuallyConsistentMapListener.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Listener to be notified about updates to a EventuallyConsistentMap. - */ -public interface EventuallyConsistentMapListener { - - /** - * Reacts to the specified event. - * - * @param event the event - */ - void event(EventuallyConsistentMapEvent event); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/LogicalClockService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/LogicalClockService.java deleted file mode 100644 index 7592b126..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/LogicalClockService.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import org.onosproject.store.Timestamp; - -/** - * Service that issues logical timestamps. - *

- * Logical timestamps are useful for establishing a total ordering of - * arbitrary cluster wide events without relying on a fully synchronized - * system clock (wall clock) - */ -public interface LogicalClockService { - - /** - * Generates a new logical timestamp. - * - * @return timestamp - */ - Timestamp getTimestamp(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapEvent.java deleted file mode 100644 index 6e671351..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapEvent.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -/** - * Representation of a ConsistentMap update notification. - * - * @param key type - * @param value type - */ -public class MapEvent { - - /** - * MapEvent type. - */ - public enum Type { - /** - * Entry inserted into the map. - */ - INSERT, - - /** - * Existing map entry updated. - */ - UPDATE, - - /** - * Entry removed from map. - */ - REMOVE - } - - private final String name; - private final Type type; - private final K key; - private final Versioned value; - - /** - * Creates a new event object. - * - * @param name map name - * @param type type of event - * @param key key the event concerns - * @param value value key is mapped to - */ - public MapEvent(String name, Type type, K key, Versioned value) { - this.name = name; - this.type = type; - this.key = key; - this.value = value; - } - - /** - * Returns the map name. - * - * @return name of map - */ - public String name() { - return name; - } - - /** - * Returns the type of the event. - * - * @return the type of event - */ - public Type type() { - return type; - } - - /** - * Returns the key this event concerns. - * - * @return the key - */ - public K key() { - return key; - } - - /** - * Returns the value associated with this event. If type is REMOVE, - * this is the value that was removed. If type is INSERT/UPDATE, this is - * the new value. - * - * @return the value - */ - public Versioned value() { - return value; - } - - @Override - public boolean equals(Object o) { - if (!(o instanceof MapEvent)) { - return false; - } - - MapEvent that = (MapEvent) o; - return Objects.equals(this.name, that.name) && - Objects.equals(this.type, that.type) && - Objects.equals(this.key, that.key) && - Objects.equals(this.value, that.value); - } - - @Override - public int hashCode() { - return Objects.hash(name, type, key, value); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("name", name) - .add("type", type) - .add("key", key) - .add("value", value) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapEventListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapEventListener.java deleted file mode 100644 index 359f4653..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapEventListener.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Listener to be notified about updates to a ConsistentMap. - */ -public interface MapEventListener { - /** - * Reacts to the specified event. - * - * @param event the event - */ - void event(MapEvent event); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapInfo.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapInfo.java deleted file mode 100644 index 5db17049..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MapInfo.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Metadata information for a consistent map. - */ -public class MapInfo { - private final String name; - private final int size; - - public MapInfo(String name, int size) { - this.name = name; - this.size = size; - } - - /** - * Returns the name of the map. - * - * @return map name - */ - public String name() { - return name; - } - - /** - * Returns the number of entries in the map. - * - * @return map size - */ - public int size() { - return size; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MultiValuedTimestamp.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MultiValuedTimestamp.java deleted file mode 100644 index e068b8e9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MultiValuedTimestamp.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ComparisonChain; -import org.onosproject.store.Timestamp; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * A logical timestamp that derives its value from two input values. The first - * value always takes precedence over the second value when comparing timestamps. - */ -public class MultiValuedTimestamp, U extends Comparable> - implements Timestamp { - - private final T value1; - private final U value2; - - /** - * Creates a new timestamp based on two values. The first value has higher - * precedence than the second when comparing timestamps. - * - * @param value1 first value - * @param value2 second value - */ - public MultiValuedTimestamp(T value1, U value2) { - this.value1 = checkNotNull(value1); - this.value2 = checkNotNull(value2); - } - - @Override - public int compareTo(Timestamp o) { - checkArgument(o instanceof MultiValuedTimestamp, - "Must be MultiValuedTimestamp", o); - MultiValuedTimestamp that = (MultiValuedTimestamp) o; - - return ComparisonChain.start() - .compare(this.value1, that.value1) - .compare(this.value2, that.value2) - .result(); - } - - @Override - public int hashCode() { - return Objects.hash(value1, value2); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof MultiValuedTimestamp)) { - return false; - } - MultiValuedTimestamp that = (MultiValuedTimestamp) obj; - return Objects.equals(this.value1, that.value1) && - Objects.equals(this.value2, that.value2); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("value1", value1) - .add("value2", value2) - .toString(); - } - - /** - * Returns the first value. - * - * @return first value - */ - public T value1() { - return value1; - } - - /** - * Returns the second value. - * - * @return second value - */ - public U value2() { - return value2; - } - - // Default constructor for serialization - @SuppressWarnings("unused") - private MultiValuedTimestamp() { - this.value1 = null; - this.value2 = null; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MutexExecutionService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MutexExecutionService.java deleted file mode 100644 index d05f3b91..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MutexExecutionService.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; - -/** - * Service for mutually exclusive job execution. - */ -public interface MutexExecutionService { - - /** - * Runs the specified task in a mutually exclusive fashion. - * @param task task to run - * @param exclusionPath path on which different instances synchronize - * @param executor executor to use for running the task - * @return future that is completed when the task execution completes. - */ - CompletableFuture execute(MutexTask task, String exclusionPath, Executor executor); -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MutexTask.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MutexTask.java deleted file mode 100644 index ba5ee47f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/MutexTask.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * The MutexTask interface should be implemented by any class whose - * instances distributed across controllers are intended to be executed - * in a mutually exclusive fashion. - */ -public interface MutexTask { - - /** - * Begins the execution of a mutually exclusive task. - * The start method will be called once the "lock" is acquired. - * After the start method returns the lock is released and some other - * instance can take over execution. - */ - void start(); - - /** - * This method will be called when exclusivity of task execution - * can no longer be guaranteed. The implementation should take necessary steps - * to halt task execution in order to ensure correctness. - */ - void stop(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/PartitionInfo.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/PartitionInfo.java deleted file mode 100644 index a0f06481..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/PartitionInfo.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import com.google.common.collect.ImmutableList; - -import java.util.List; - -/** - * Contains information about a database partition. - */ -public class PartitionInfo { - private final String name; - private final long term; - private final List members; - private final String leader; - - /** - * Class constructor. - * - * @param name partition name - * @param term term number - * @param members partition members - * @param leader leader name - */ - public PartitionInfo(String name, long term, List members, String leader) { - this.name = name; - this.term = term; - this.members = ImmutableList.copyOf(members); - this.leader = leader; - } - - /** - * Returns the name of the partition. - * - * @return partition name - */ - public String name() { - return name; - } - - /** - * Returns the term number. - * - * @return term number - */ - public long term() { - return term; - } - - /** - * Returns the list of partition members. - * - * @return partition members - */ - public List members() { - return members; - } - - /** - * Returns the partition leader. - * - * @return partition leader - */ - public String leader() { - return leader; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Serializer.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Serializer.java deleted file mode 100644 index 6245175f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Serializer.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Arrays; -import java.util.List; - -import org.onlab.util.KryoNamespace; - -import com.google.common.collect.Lists; - -/** - * Interface for serialization of store artifacts. - */ -public interface Serializer { - /** - * Serialize the specified object. - * @param object object to serialize. - * @return serialized bytes. - * @param encoded type - */ - byte[] encode(T object); - - /** - * Deserialize the specified bytes. - * @param bytes byte array to deserialize. - * @return deserialized object. - * @param decoded type - */ - T decode(byte[] bytes); - - /** - * Creates a new Serializer instance from a KryoNamespace. - * - * @param kryo kryo namespace - * @return Serializer instance - */ - static Serializer using(KryoNamespace kryo) { - return using(Arrays.asList(kryo)); - } - - static Serializer using(List namespaces, Class... classes) { - KryoNamespace.Builder builder = new KryoNamespace.Builder(); - namespaces.forEach(builder::register); - Lists.newArrayList(classes).forEach(builder::register); - builder.register(MapEvent.class, MapEvent.Type.class, Versioned.class); - KryoNamespace namespace = builder.build(); - return new Serializer() { - @Override - public byte[] encode(T object) { - return namespace.serialize(object); - } - - @Override - public T decode(byte[] bytes) { - return namespace.deserialize(bytes); - } - }; - } - - static Serializer forTypes(Class... classes) { - return using(KryoNamespace.newBuilder() - .register(classes) - .register(MapEvent.class, MapEvent.Type.class) - .build()); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/SetEvent.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/SetEvent.java deleted file mode 100644 index a869e722..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/SetEvent.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -/** - * Representation of a DistributedSet update notification. - * - * @param set element type - */ -public final class SetEvent { - - /** - * SetEvent type. - */ - public enum Type { - /** - * Entry added to the set. - */ - ADD, - - /** - * Entry removed from the set. - */ - REMOVE - } - - private final String name; - private final Type type; - private final E entry; - - /** - * Creates a new event object. - * - * @param name set name - * @param type type of the event - * @param entry entry the event concerns - */ - public SetEvent(String name, Type type, E entry) { - this.name = name; - this.type = type; - this.entry = entry; - } - - /** - * Returns the set name. - * - * @return name of set - */ - public String name() { - return name; - } - - /** - * Returns the type of the event. - * - * @return type of the event - */ - public Type type() { - return type; - } - - /** - * Returns the entry this event concerns. - * - * @return the entry - */ - public E entry() { - return entry; - } - - @Override - public boolean equals(Object o) { - if (!(o instanceof SetEvent)) { - return false; - } - - SetEvent that = (SetEvent) o; - return Objects.equals(this.name, that.name) && - Objects.equals(this.type, that.type) && - Objects.equals(this.entry, that.entry); - } - - @Override - public int hashCode() { - return Objects.hash(name, type, entry); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("name", name) - .add("type", type) - .add("entry", entry) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/SetEventListener.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/SetEventListener.java deleted file mode 100644 index a64994ef..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/SetEventListener.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Listener to be notified about updates to a DistributedSet. - */ -public interface SetEventListener { - /** - * Reacts to the specified event. - * - * @param event the event - */ - void event(SetEvent event); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageAdminService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageAdminService.java deleted file mode 100644 index 22591044..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageAdminService.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -/** - * Service for administering storage instances. - */ -public interface StorageAdminService { - - /** - * Returns information about all partitions in the system. - * - * @return list of partition information - */ - List getPartitionInfo(); - - /** - * Returns information about all the consistent maps in the system. - * - * @return list of map information - */ - List getMapInfo(); - - /** - * Returns information about all the atomic counters in the system. - * If 2 counters belonging to 2 different databases have the same name, - * then only one counter from one database is returned. - * - * @return mapping from counter name to that counter's next value - */ - Map getCounters(); - - /** - * Returns information about all the atomic partitioned database counters in the system. - * - * @return mapping from counter name to that counter's next value - */ - Map getPartitionedDatabaseCounters(); - - /** - * Returns information about all the atomic in-memory database counters in the system. - * - * @return mapping from counter name to that counter's next value - */ - Map getInMemoryDatabaseCounters(); - - /** - * Returns all the transactions in the system. - * - * @return collection of transactions - */ - Collection getTransactions(); - - /** - * Redrives stuck transactions while removing those that are done. - */ - void redriveTransactions(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageException.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageException.java deleted file mode 100644 index a66fc3ed..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageException.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Top level exception for Store failures. - */ -@SuppressWarnings("serial") -public class StorageException extends RuntimeException { - public StorageException() { - } - - public StorageException(Throwable t) { - super(t); - } - - /** - * Store operation timeout. - */ - public static class Timeout extends StorageException { - } - - /** - * Store update conflicts with an in flight transaction. - */ - public static class ConcurrentModification extends StorageException { - } - - /** - * Store operation interrupted. - */ - public static class Interrupted extends StorageException { - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageService.java deleted file mode 100644 index f6b411d3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/StorageService.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Storage service. - *

- * This service provides builders for various distributed primitives. - *

- * It is expected that services and applications will leverage the primitives indirectly provided by - * this service for their distributed state management and coordination. - */ -public interface StorageService { - - /** - * Creates a new EventuallyConsistentMapBuilder. - * - * @param key type - * @param value type - * @return builder for an eventually consistent map - */ - EventuallyConsistentMapBuilder eventuallyConsistentMapBuilder(); - - /** - * Creates a new ConsistentMapBuilder. - * - * @param key type - * @param value type - * @return builder for a consistent map - */ - ConsistentMapBuilder consistentMapBuilder(); - - /** - * Creates a new DistributedSetBuilder. - * - * @param set element type - * @return builder for an distributed set - */ - DistributedSetBuilder setBuilder(); - - /** - * Creates a new DistributedQueueBuilder. - * - * @param queue entry type - * @return builder for an distributed queue - */ - DistributedQueueBuilder queueBuilder(); - - /** - * Creates a new AtomicCounterBuilder. - * - * @return atomic counter builder - */ - AtomicCounterBuilder atomicCounterBuilder(); - - /** - * Creates a new AtomicValueBuilder. - * - * @param atomic value type - * @return atomic value builder - */ - AtomicValueBuilder atomicValueBuilder(); - - /** - * Creates a new transaction context builder. - * - * @return a builder for a transaction context. - */ - TransactionContextBuilder transactionContextBuilder(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Transaction.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Transaction.java deleted file mode 100644 index 330d8468..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Transaction.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.List; - -/** - * An immutable transaction object. - */ -public interface Transaction { - - enum State { - /** - * Indicates a new transaction that is about to be prepared. All transactions - * start their life in this state. - */ - PREPARING, - - /** - * Indicates a transaction that is successfully prepared i.e. all participants voted to commit - */ - PREPARED, - - /** - * Indicates a transaction that is about to be committed. - */ - COMMITTING, - - /** - * Indicates a transaction that has successfully committed. - */ - COMMITTED, - - /** - * Indicates a transaction that is about to be rolled back. - */ - ROLLINGBACK, - - /** - * Indicates a transaction that has been rolled back and all locks are released. - */ - ROLLEDBACK - } - - /** - * Returns the transaction Id. - * - * @return transaction id - */ - long id(); - - /** - * Returns the list of updates that are part of this transaction. - * - * @return list of database updates - */ - List updates(); - - /** - * Returns the current state of this transaction. - * - * @return transaction state - */ - State state(); - - /** - * Returns true if this transaction has completed execution. - * - * @return true is yes, false otherwise - */ - default boolean isDone() { - return state() == State.COMMITTED || state() == State.ROLLEDBACK; - } - - /** - * Returns a new transaction that is created by transitioning this one to the specified state. - * - * @param newState destination state - * @return a new transaction instance similar to the current one but its state set to specified state - */ - Transaction transition(State newState); - - /** - * Returns the system time when the transaction was last updated. - * - * @return last update time - */ - long lastUpdated(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java deleted file mode 100644 index ef972536..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Provides a context for transactional operations. - *

- * A transaction context is a vehicle for grouping operations into a unit with the - * properties of atomicity, isolation, and durability. Transactions also provide the - * ability to maintain an application's invariants or integrity constraints, - * supporting the property of consistency. Together these properties are known as ACID. - *

- * A transaction context provides a boundary within which transactions - * are run. It also is a place where all modifications made within a transaction - * are cached until the point when the transaction commits or aborts. It thus ensures - * isolation of work happening with in the transaction boundary. Within a transaction - * context isolation level is REPEATABLE_READS i.e. only data that is committed can be read. - * The only uncommitted data that can be read is the data modified by the current transaction. - */ -public interface TransactionContext { - - /** - * Returns the unique transactionId. - * - * @return transaction id - */ - long transactionId(); - - /** - * Returns if this transaction context is open. - * - * @return true if open, false otherwise - */ - boolean isOpen(); - - /** - * Starts a new transaction. - */ - void begin(); - - /** - * Commits a transaction that was previously started thereby making its changes permanent - * and externally visible. - * - * @return true if this transaction succeeded, otherwise false. - */ - boolean commit(); - - /** - * Aborts any changes made in this transaction context and discarding all locally cached updates. - */ - void abort(); - - /** - * Returns a transactional map data structure with the specified name. - * - * @param key type - * @param value type - * @param mapName name of the transactional map - * @param serializer serializer to use for encoding/decoding keys and values of the map - * @return Transactional Map - */ - TransactionalMap getTransactionalMap(String mapName, Serializer serializer); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java deleted file mode 100644 index e9f3a020..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionContextBuilder.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Interface definition for a transaction context builder. - */ -public interface TransactionContextBuilder { - - /** - * Disables distribution of map entries across multiple database partitions. - *

- * When partitioning is disabled, the returned map will have a single - * partition that spans the entire cluster. Furthermore, the changes made to - * the map are ephemeral and do not survive a full cluster restart. - *

- *

- * Note: By default, partitions are enabled. This feature is intended to - * simplify debugging. - *

- * - * @return this TransactionalContextBuilder - */ - TransactionContextBuilder withPartitionsDisabled(); - - /** - * Builds a TransactionContext based on configuration options supplied to this - * builder. - * - * @return a new TransactionalContext - * @throws java.lang.RuntimeException if a mandatory parameter is missing - */ - TransactionContext build(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionException.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionException.java deleted file mode 100644 index a3723ee7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionException.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Top level exception for Transaction failures. - */ -@SuppressWarnings("serial") -public class TransactionException extends StorageException { - public TransactionException() { - } - - public TransactionException(Throwable t) { - super(t); - } - - /** - * Transaction timeout. - */ - public static class Timeout extends TransactionException { - } - - /** - * Transaction interrupted. - */ - public static class Interrupted extends TransactionException { - } - - /** - * Transaction failure due to optimistic concurrency violation. - */ - public static class OptimisticConcurrencyFailure extends TransactionException { - } - - /** - * Transaction failure due to a conflicting transaction in progress. - */ - public static class ConcurrentModification extends TransactionException { - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionalMap.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionalMap.java deleted file mode 100644 index 657d9331..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/TransactionalMap.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Transactional Map data structure. - *

- * A TransactionalMap is created by invoking {@link TransactionContext#getTransactionalMap getTransactionalMap} - * method. All operations performed on this map within a transaction boundary are invisible externally - * until the point when the transaction commits. A commit usually succeeds in the absence of conflicts. - * - * @param type of key. - * @param type of value. - */ -public interface TransactionalMap { - - /** - * Returns the value to which the specified key is mapped, or null if this - * map contains no mapping for the key. - * - * @param key the key whose associated value is to be returned - * @return the value to which the specified key is mapped, or null if - * this map contains no mapping for the key - */ - V get(K key); - - /** - * Associates the specified value with the specified key in this map (optional operation). - * If the map previously contained a mapping for the key, the old value is replaced by the - * specified value. - * - * @param key key with which the specified value is to be associated - * @param value value to be associated with the specified key - * @return the previous value associated with key, or null if there was - * no mapping for key. - */ - V put(K key, V value); - - /** - * Removes the mapping for a key from this map if it is present (optional operation). - * - * @param key key whose value is to be removed from the map - * @return the value to which this map previously associated the key, - * or null if the map contained no mapping for the key. - */ - V remove(K key); - - /** - * If the specified key is not already associated with a value - * associates it with the given value and returns null, else returns the current value. - * - * @param key key with which the specified value is to be associated - * @param value value to be associated with the specified key - * @return the previous value associated with the specified key or null - * if key does not already mapped to a value. - */ - V putIfAbsent(K key, V value); - - /** - * Removes the entry for the specified key only if it is currently - * mapped to the specified value. - * - * @param key key with which the specified value is associated - * @param value value expected to be associated with the specified key - * @return true if the value was removed - */ - boolean remove(K key, V value); - - /** - * Replaces the entry for the specified key only if currently mapped - * to the specified value. - * - * @param key key with which the specified value is associated - * @param oldValue value expected to be associated with the specified key - * @param newValue value to be associated with the specified key - * @return true if the value was replaced - */ - boolean replace(K key, V oldValue, V newValue); -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Versioned.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Versioned.java deleted file mode 100644 index 89bd3029..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/Versioned.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.function.Function; - -import org.joda.time.DateTime; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Versioned value. - * - * @param value type. - */ -public class Versioned { - - private final V value; - private final long version; - private final long creationTime; - - /** - * Constructs a new versioned value. - * @param value value - * @param version version - * @param creationTime milliseconds of the creation event - * from the Java epoch of 1970-01-01T00:00:00Z - */ - public Versioned(V value, long version, long creationTime) { - this.value = value; - this.version = version; - this.creationTime = creationTime; - } - - /** - * Constructs a new versioned value. - * @param value value - * @param version version - */ - public Versioned(V value, long version) { - this(value, version, System.currentTimeMillis()); - } - - /** - * Returns the value. - * - * @return value. - */ - public V value() { - return value; - } - - /** - * Returns the version. - * - * @return version - */ - public long version() { - return version; - } - - /** - * Returns the system time when this version was created. - *

- * Care should be taken when relying on creationTime to - * implement any behavior in a distributed setting. Due - * to the possibility of clock skew it is likely that - * even creationTimes of causally related versions can be - * out or order. - * @return creation time - */ - public long creationTime() { - return creationTime; - } - - /** - * Maps this instance into another after transforming its - * value while retaining the same version and creationTime. - * @param transformer function for mapping the value - * @param value type of the returned instance - * @return mapped instance - */ - public Versioned map(Function transformer) { - return new Versioned<>(transformer.apply(value), version, creationTime); - } - - /** - * Returns the value of the specified Versioned object if non-null or else returns - * a default value. - * @param versioned versioned object - * @param defaultValue default value to return if versioned object is null - * @param type of the versioned value - * @return versioned value or default value if versioned object is null - */ - public static U valueOrElse(Versioned versioned, U defaultValue) { - return versioned == null ? defaultValue : versioned.value(); - } - - @Override - public int hashCode() { - return Objects.hashCode(value, version, creationTime); - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof Versioned)) { - return false; - } - Versioned that = (Versioned) other; - return Objects.equal(this.value, that.value) && - Objects.equal(this.version, that.version) && - Objects.equal(this.creationTime, that.creationTime); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("value", value) - .add("version", version) - .add("creationTime", new DateTime(creationTime)) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/WallClockTimestamp.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/WallClockTimestamp.java deleted file mode 100644 index 4be7ede7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/WallClockTimestamp.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.store.service; - -import static com.google.common.base.Preconditions.checkArgument; - -import java.util.Objects; - -import org.onosproject.store.Timestamp; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ComparisonChain; - -/** - * A Timestamp that derives its value from the prevailing - * wallclock time on the controller where it is generated. - */ -public class WallClockTimestamp implements Timestamp { - - private final long unixTimestamp; - - public WallClockTimestamp() { - unixTimestamp = System.currentTimeMillis(); - } - - public WallClockTimestamp(long timestamp) { - unixTimestamp = timestamp; - } - - @Override - public int compareTo(Timestamp o) { - checkArgument(o instanceof WallClockTimestamp, - "Must be WallClockTimestamp", o); - WallClockTimestamp that = (WallClockTimestamp) o; - - return ComparisonChain.start() - .compare(this.unixTimestamp, that.unixTimestamp) - .result(); - } - @Override - public int hashCode() { - return Long.hashCode(unixTimestamp); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof WallClockTimestamp)) { - return false; - } - WallClockTimestamp that = (WallClockTimestamp) obj; - return Objects.equals(this.unixTimestamp, that.unixTimestamp); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("unixTimestamp", unixTimestamp) - .toString(); - } - - /** - * Returns the unixTimestamp. - * - * @return unix timestamp - */ - public long unixTimestamp() { - return unixTimestamp; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/package-info.java deleted file mode 100644 index 3d86e351..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/store/service/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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. - */ - -/** - * Distributed core state management services. - */ -package org.onosproject.store.service; - diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/JsonUtils.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/JsonUtils.java deleted file mode 100644 index 2ebb5545..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/JsonUtils.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Provides convenience methods for dealing with JSON nodes, arrays etc. - */ -public final class JsonUtils { - - private static final ObjectMapper MAPPER = new ObjectMapper(); - - // non-instantiable - private JsonUtils() { } - - /** - * Wraps a message payload into an event structure for the given event - * type and sequence ID. Generally, the sequence ID should be a copy of - * the ID from the client request event. - * - * @param type event type - * @param sid sequence ID - * @param payload event payload - * @return the object node representation - */ - public static ObjectNode envelope(String type, long sid, ObjectNode payload) { - ObjectNode event = MAPPER.createObjectNode(); - event.put("event", type); - if (sid > 0) { - event.put("sid", sid); - } - event.set("payload", payload); - return event; - } - - /** - * Composes a message structure for the given message type and payload. - * - * @param type message type - * @param payload message payload - * @return the object node representation - */ - public static ObjectNode envelope(String type, ObjectNode payload) { - ObjectNode event = MAPPER.createObjectNode(); - event.put("event", type); - event.set("payload", payload); - return event; - } - - /** - * Returns the event type from the specified event. - * If the node does not have an "event" property, "unknown" is returned. - * - * @param event message event - * @return extracted event type - */ - public static String eventType(ObjectNode event) { - return string(event, "event", "unknown"); - } - - /** - * Returns the sequence identifier from the specified event, or 0 (zero) - * if the "sid" property does not exist. - * - * @param event message event - * @return extracted sequence identifier - */ - public static long sid(ObjectNode event) { - return number(event, "sid"); - } - - /** - * Returns the payload from the specified event. - * - * @param event message event - * @return extracted payload object - */ - public static ObjectNode payload(ObjectNode event) { - return (ObjectNode) event.path("payload"); - } - - /** - * Returns the specified node property as a number. - * - * @param node message event - * @param name property name - * @return property as number - */ - public static long number(ObjectNode node, String name) { - return node.path(name).asLong(); - } - - /** - * Returns the specified node property as a string. - * - * @param node message event - * @param name property name - * @return property as a string - */ - public static String string(ObjectNode node, String name) { - return node.path(name).asText(); - } - - /** - * Returns the specified node property as a string, with a default fallback. - * - * @param node object node - * @param name property name - * @param defaultValue fallback value if property is absent - * @return property as a string - */ - public static String string(ObjectNode node, String name, String defaultValue) { - return node.path(name).asText(defaultValue); - } - - /** - * Returns the specified node property as an object node. - * - * @param node object node - * @param name property name - * @return property as a node - */ - public static ObjectNode node(ObjectNode node, String name) { - return (ObjectNode) node.path(name); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/RequestHandler.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/RequestHandler.java deleted file mode 100644 index 1678923d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/RequestHandler.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Abstraction of an entity that handles a specific request from the - * user interface client. - * - * @see UiMessageHandler - */ -public abstract class RequestHandler { - - protected static final ObjectMapper MAPPER = new ObjectMapper(); - - private final String eventType; - private UiMessageHandler parent; - - - public RequestHandler(String eventType) { - this.eventType = eventType; - } - - // package private - void setParent(UiMessageHandler parent) { - this.parent = parent; - } - - /** - * Returns the event type that this handler handles. - * - * @return event type - */ - public String eventType() { - return eventType; - } - - /** - * Processes the incoming message payload from the client. - * - * @param sid message sequence identifier - * @param payload request message payload - */ - // TODO: remove sid from signature - public abstract void process(long sid, ObjectNode payload); - - - - // =================================================================== - // === Convenience methods... - - /** - * Returns implementation of the specified service class. - * - * @param serviceClass service class - * @param type of service - * @return implementation class - * @throws org.onlab.osgi.ServiceNotFoundException if no implementation found - */ - protected T get(Class serviceClass) { - return parent.directory().get(serviceClass); - } - - /** - * Sends a message back to the client. - * - * @param eventType message event type - * @param sid message sequence identifier - * @param payload message payload - */ - // TODO: remove sid from signature - protected void sendMessage(String eventType, long sid, ObjectNode payload) { - parent.connection().sendMessage(eventType, sid, payload); - } - - /** - * Sends a message back to the client. - * Here, the message is preformatted; the assumption is it has its - * eventType, sid and payload attributes already filled in. - * - * @param message the message to send - */ - protected void sendMessage(ObjectNode message) { - parent.connection().sendMessage(message); - } - - /** - * Allows one request handler to pass the event on to another for - * further processing. - * Note that the message handlers must be defined in the same parent. - * - * @param eventType event type - * @param sid sequence identifier - * @param payload message payload - */ - // TODO: remove sid from signature - protected void chain(String eventType, long sid, ObjectNode payload) { - parent.exec(eventType, sid, payload); - } - - // =================================================================== - - - /** - * Returns the specified node property as a string. - * - * @param node message event - * @param key property name - * @return property as a string - */ - protected String string(ObjectNode node, String key) { - return JsonUtils.string(node, key); - } - - /** - * Returns the specified node property as a string, with a default fallback. - * - * @param node object node - * @param key property name - * @param defValue fallback value if property is absent - * @return property as a string - */ - protected String string(ObjectNode node, String key, String defValue) { - return JsonUtils.string(node, key, defValue); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiConnection.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiConnection.java deleted file mode 100644 index ead7b0dc..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiConnection.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Abstraction of a user interface session connection. - */ -public interface UiConnection { - - /** - * Sends the specified JSON message to the user interface client. - * - * @param message message to send - */ - void sendMessage(ObjectNode message); - - /** - * Composes a message into JSON and sends it to the user interface client. - * - * @param type message type - * @param sid message sequence number - * @param payload message payload - */ - // TODO: remove sid parameter - void sendMessage(String type, long sid, ObjectNode payload); - -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiExtension.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiExtension.java deleted file mode 100644 index 1f5fbd48..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiExtension.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * User interface extension. - */ -public final class UiExtension { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private static final String VIEW_PREFIX = "app/view/"; - private static final String EMPTY = ""; - private static final String SLASH = "/"; - private static final String CSS_HTML = "css.html"; - private static final String JS_HTML = "js.html"; - - private final ClassLoader classLoader; - private final String resourcePath; - private final List views; - private final UiMessageHandlerFactory messageHandlerFactory; - private final UiTopoOverlayFactory topoOverlayFactory; - - - // private constructor - only the builder calls this - private UiExtension(ClassLoader cl, String path, List views, - UiMessageHandlerFactory mhFactory, - UiTopoOverlayFactory toFactory) { - this.classLoader = cl; - this.resourcePath = path; - this.views = views; - this.messageHandlerFactory = mhFactory; - this.topoOverlayFactory = toFactory; - } - - - /** - * Returns input stream containing CSS inclusion statements. - * - * @return CSS inclusion statements - */ - public InputStream css() { - return getStream(resourcePath + CSS_HTML); - } - - /** - * Returns input stream containing JavaScript inclusion statements. - * - * @return JavaScript inclusion statements - */ - public InputStream js() { - return getStream(resourcePath + JS_HTML); - } - - /** - * Returns list of user interface views contributed by this extension. - * - * @return contributed view descriptors - */ - public List views() { - return views; - } - - /** - * Returns input stream containing specified view-specific resource. - * - * @param viewId view identifier - * @param path resource path, relative to the view directory - * @return resource input stream - */ - public InputStream resource(String viewId, String path) { - return getStream(VIEW_PREFIX + viewId + SLASH + path); - } - - /** - * Returns message handler factory, if one was defined. - * - * @return message handler factory - */ - public UiMessageHandlerFactory messageHandlerFactory() { - return messageHandlerFactory; - } - - /** - * Returns the topology overlay factory, if one was defined. - * - * @return topology overlay factory - */ - public UiTopoOverlayFactory topoOverlayFactory() { - return topoOverlayFactory; - } - - - // Returns the resource input stream from the specified class-loader. - private InputStream getStream(String path) { - InputStream stream = classLoader.getResourceAsStream(path); - if (stream == null) { - log.warn("Unable to find resource {}", path); - } - return stream; - } - - - /** - * UI Extension Builder. - */ - public static class Builder { - private ClassLoader classLoader; - - private String resourcePath = EMPTY; - private List views = new ArrayList<>(); - private UiMessageHandlerFactory messageHandlerFactory = null; - private UiTopoOverlayFactory topoOverlayFactory = null; - - /** - * Create a builder with the given class loader. - * Resource path defaults to "". - * Views defaults to an empty list. - * Both Message and TopoOverlay factories default to null. - * - * @param cl the class loader - * @param views list of views contributed by this extension - */ - public Builder(ClassLoader cl, List views) { - checkNotNull(cl, "Must provide a class loader"); - checkArgument(views.size() > 0, "Must provide at least one view"); - this.classLoader = cl; - this.views = views; - } - - /** - * Set the resource path. That is, path to where the CSS and JS - * files are located. This value should - * - * @param path resource path - * @return self, for chaining - */ - public Builder resourcePath(String path) { - this.resourcePath = path == null ? EMPTY : path + SLASH; - return this; - } - - /** - * Sets the message handler factory for this extension. - * - * @param mhFactory message handler factory - * @return self, for chaining - */ - public Builder messageHandlerFactory(UiMessageHandlerFactory mhFactory) { - this.messageHandlerFactory = mhFactory; - return this; - } - - /** - * Sets the topology overlay factory for this extension. - * - * @param toFactory topology overlay factory - * @return self, for chaining - */ - public Builder topoOverlayFactory(UiTopoOverlayFactory toFactory) { - this.topoOverlayFactory = toFactory; - return this; - } - - /** - * Builds the UI extension. - * - * @return UI extension instance - */ - public UiExtension build() { - return new UiExtension(classLoader, resourcePath, views, - messageHandlerFactory, topoOverlayFactory); - } - - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiExtensionService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiExtensionService.java deleted file mode 100644 index 330fbb7a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiExtensionService.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import java.util.List; - -/** - * Service for registering user interface extensions. - */ -public interface UiExtensionService { - - /** - * Registers the specified user interface extension. - * - * @param extension GUI extension to register - */ - void register(UiExtension extension); - - /** - * Unregisters the specified user interface extension. - * - * @param extension GUI extension to unregister - */ - void unregister(UiExtension extension); - - /** - * Returns the list of user interface extensions. - * - * @return list of extensions - */ - List getExtensions(); - - /** - * Returns the user interface extension that contributed the specified view. - * - * @param viewId view identifier - * @return user interface extension - */ - UiExtension getViewExtension(String viewId); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiMessageHandler.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiMessageHandler.java deleted file mode 100644 index 9b9a406c..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiMessageHandler.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.onlab.osgi.ServiceDirectory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Abstraction of an entity capable of processing JSON messages from the user - * interface client. - *

- * The message structure is: - *

- *
- * {
- *     "type": "event-type",
- *     "payload": {
- *         arbitrary JSON object structure
- *     }
- * }
- * 
- * On {@link #init initialization} the handler will create and cache - * {@link RequestHandler} instances, each of which are bound to a particular - * event-type. On {@link #process arrival} of a new message, - * the event-type is determined, and the message dispatched to the - * corresponding RequestHandler's - * {@link RequestHandler#process process} method. - */ -public abstract class UiMessageHandler { - - private final Logger log = LoggerFactory.getLogger(getClass()); - private final Map handlerMap = new HashMap<>(); - private final ObjectMapper mapper = new ObjectMapper(); - - private UiConnection connection; - private ServiceDirectory directory; - - - /** - * Subclasses must create and return the collection of request handlers - * for the message types they handle. - *

- * Note that request handlers should be stateless. When we are - * {@link #destroy destroyed}, we will simply drop our references to them - * and allow them to be garbage collected. - * - * @return the message handler instances - */ - protected abstract Collection createRequestHandlers(); - - /** - * Returns the set of message types which this handler is capable of - * processing. - * - * @return set of message types - */ - public Set messageTypes() { - return Collections.unmodifiableSet(handlerMap.keySet()); - } - - /** - * Processes a JSON message from the user interface client. - * - * @param message JSON message - */ - public void process(ObjectNode message) { - String type = JsonUtils.eventType(message); - ObjectNode payload = JsonUtils.payload(message); - // TODO: remove sid - exec(type, 0, payload); - } - - /** - * Finds the appropriate handler and executes the process method. - * - * @param eventType event type - * @param sid sequence identifier - * @param payload message payload - */ - // TODO: remove sid from signature - void exec(String eventType, long sid, ObjectNode payload) { - RequestHandler requestHandler = handlerMap.get(eventType); - if (requestHandler != null) { - requestHandler.process(sid, payload); - } else { - log.warn("no request handler for event type {}", eventType); - } - } - - /** - * Initializes the handler with the user interface connection and - * service directory context. - * - * @param connection user interface connection - * @param directory service directory - */ - public void init(UiConnection connection, ServiceDirectory directory) { - this.connection = connection; - this.directory = directory; - - Collection handlers = createRequestHandlers(); - checkNotNull(handlers, "Handlers cannot be null"); - checkArgument(!handlers.isEmpty(), "Handlers cannot be empty"); - - for (RequestHandler h : handlers) { - h.setParent(this); - handlerMap.put(h.eventType(), h); - } - } - - /** - * Destroys the message handler context. - */ - public void destroy() { - this.connection = null; - this.directory = null; - handlerMap.clear(); - } - - /** - * Returns the user interface connection with which this handler was primed. - * - * @return user interface connection - */ - public UiConnection connection() { - return connection; - } - - /** - * Returns the user interface connection with which this handler was primed. - * - * @return user interface connection - */ - public ServiceDirectory directory() { - return directory; - } - - /** - * Returns implementation of the specified service class. - * - * @param serviceClass service class - * @param type of service - * @return implementation class - * @throws org.onlab.osgi.ServiceNotFoundException if no implementation found - */ - protected T get(Class serviceClass) { - return directory.get(serviceClass); - } - - /** - * Returns a freshly minted object node. - * - * @return new object node - */ - protected ObjectNode objectNode() { - return mapper.createObjectNode(); - } - - /** - * Returns a freshly minted array node. - * - * @return new array node - */ - protected ArrayNode arrayNode() { - return mapper.createArrayNode(); - } - - /** - * Sends the specified data to the client. - * It is expected that the data is in the prescribed JSON format for - * events to the client. - * - * @param data data to be sent - */ - protected synchronized void sendMessage(ObjectNode data) { - UiConnection connection = connection(); - if (connection != null) { - connection.sendMessage(data); - } - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiMessageHandlerFactory.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiMessageHandlerFactory.java deleted file mode 100644 index 522daa8f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiMessageHandlerFactory.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import java.util.Collection; - -/** - * Abstraction of an entity capable of producing a set of message handlers - * specific to the given user interface connection. - */ -public interface UiMessageHandlerFactory { - - /** - * Produces a collection of new message handlers. - * - * @return collection of new handlers - */ - Collection newHandlers(); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiTopoOverlay.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiTopoOverlay.java deleted file mode 100644 index 88796de7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiTopoOverlay.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.HostId; -import org.onosproject.ui.topo.PropertyPanel; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Represents user interface topology view overlay. - */ -public class UiTopoOverlay { - - /** - * Logger for this overlay. - */ - protected final Logger log = LoggerFactory.getLogger(getClass()); - - private final String id; - - private boolean isActive = false; - - /** - * Creates a new user interface topology view overlay descriptor. - * - * @param id overlay identifier - */ - public UiTopoOverlay(String id) { - this.id = id; - } - - /** - * Returns the identifier for this overlay. - * - * @return the identifier - */ - public String id() { - return id; - } - - /** - * Callback invoked to initialize this overlay, soon after creation. - * This default implementation does nothing. - */ - public void init() { - } - - /** - * Callback invoked when this overlay is activated. - */ - public void activate() { - isActive = true; - } - - /** - * Callback invoked when this overlay is deactivated. - */ - public void deactivate() { - isActive = false; - } - - /** - * Returns true if this overlay is currently active. - * - * @return true if overlay active - */ - public boolean isActive() { - return isActive; - } - - /** - * Callback invoked to destroy this instance by cleaning up any - * internal state ready for garbage collection. - * This default implementation holds no state and does nothing. - */ - public void destroy() { - } - - /** - * Callback to modify the contents of the summary panel. - * This default implementation does nothing. - * - * @param pp property panel model of summary data - */ - public void modifySummary(PropertyPanel pp) { - } - - /** - * Callback to modify the contents of the details panel for - * a selected device. - * This default implementation does nothing. - * - * @param pp property panel model of summary data - * @param deviceId device id - */ - public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) { - } - - /** - * Callback to modify the contents of the details panel for - * a selected host. - * This default implementation does nothing. - * - * @param pp property panel model of summary data - * @param hostId host id - */ - public void modifyHostDetails(PropertyPanel pp, HostId hostId) { - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiTopoOverlayFactory.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiTopoOverlayFactory.java deleted file mode 100644 index 61bc0c23..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiTopoOverlayFactory.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import java.util.Collection; - -/** - * Abstraction of an entity capable of producing one or more topology - * overlay handlers specific to a given user interface connection. - */ -public interface UiTopoOverlayFactory { - - /** - * Produces a collection of new overlay handlers. - * - * @return collection of new overlay handlers - */ - Collection newOverlays(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiView.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiView.java deleted file mode 100644 index c8671159..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiView.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import com.google.common.base.MoreObjects; - -import java.util.Objects; - -/** - * Represents user interface view addition. - */ -public class UiView { - - /** - * Designates navigation menu category. - */ - public enum Category { - /** - * Represents platform related views. - */ - PLATFORM("Platform"), - - /** - * Represents network-control related views. - */ - NETWORK("Network"), - - /** - * Represents miscellaneous views. - */ - OTHER("Other"), - - /** - * Represents views that do not show in the navigation menu. - * This category should not be specified directly; rather, use - * the {@link UiViewHidden} constructor instead of {@link UiView}. - */ - HIDDEN("(hidden)"); - - private final String label; - - Category(String label) { - this.label = label; - } - - /** - * Returns display label for the category. - * - * @return display label - */ - public String label() { - return label; - } - } - - private final Category category; - private final String id; - private final String label; - private final String iconId; - - /** - * Creates a new user interface view descriptor. The navigation item - * will appear in the navigation menu under the specified category. - * - * @param category view category - * @param id view identifier - * @param label view label - */ - public UiView(Category category, String id, String label) { - this(category, id, label, null); - } - - /** - * Creates a new user interface view descriptor. The navigation item - * will appear in the navigation menu under the specified category, - * with the specified icon adornment. - * - * @param category view category - * @param id view identifier - * @param label view label - * @param iconId icon id - */ - public UiView(Category category, String id, String label, String iconId) { - this.category = category; - this.id = id; - this.label = label; - this.iconId = iconId; - } - - /** - * Returns the navigation category. - * - * @return navigation category - */ - public Category category() { - return category; - } - - /** - * Returns the view identifier. - * - * @return view id - */ - public String id() { - return id; - } - - /** - * Returns the view label. - * - * @return view label - */ - public String label() { - return label; - } - - /** - * Returns the icon ID. - * - * @return icon ID - */ - public String iconId() { - return iconId; - } - - @Override - public int hashCode() { - return id.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final UiView other = (UiView) obj; - return Objects.equals(this.id, other.id); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("category", category) - .add("id", id) - .add("label", label) - .add("iconId", iconId) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiViewHidden.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiViewHidden.java deleted file mode 100644 index b7fea8fe..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/UiViewHidden.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import com.google.common.base.MoreObjects; - -/** - * Represents user interface view addition, except that this one should not - * have an entry in the navigation panel. - */ -public class UiViewHidden extends UiView { - - /** - * Creates a new user interface hidden view descriptor. - * - * @param id view identifier - */ - public UiViewHidden(String id) { - super(Category.HIDDEN, id, null); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("id", id()) - .toString(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/package-info.java deleted file mode 100644 index dd832a59..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Mechanism for managing dynamically registered user interface extensions. - */ -package org.onosproject.ui; diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/CellComparator.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/CellComparator.java deleted file mode 100644 index 1c42c97a..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/CellComparator.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table; - -/** - * Defines a comparator for cell values. - */ -public interface CellComparator { - - /** - * Compares its two arguments for order. Returns a negative integer, - * zero, or a positive integer as the first argument is less than, equal - * to, or greater than the second.

- * - * Note that nulls are permitted, and should be sorted to the beginning - * of an ascending sort; i.e. null is considered to be "smaller" than - * non-null values. - * - * @see java.util.Comparator#compare(Object, Object) - * - * @param o1 the first object to be compared. - * @param o2 the second object to be compared. - * @return a negative integer, zero, or a positive integer as the - * first argument is less than, equal to, or greater than the - * second. - * @throws ClassCastException if the arguments' types prevent them from - * being compared by this comparator. - */ - int compare(Object o1, Object o2); - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/CellFormatter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/CellFormatter.java deleted file mode 100644 index 895c9d93..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/CellFormatter.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table; - -/** - * Defines a formatter for cell values. - */ -public interface CellFormatter { - - /** - * Formats the specified value into a string appropriate for displaying - * in a table cell. Note that null values are acceptable, and will result - * in the empty string. - * - * @param value the value - * @return the formatted string - */ - String format(Object value); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableModel.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableModel.java deleted file mode 100644 index d0fccb65..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableModel.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table; - -import com.google.common.collect.Sets; -import org.onosproject.ui.table.cell.DefaultCellComparator; -import org.onosproject.ui.table.cell.DefaultCellFormatter; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * A simple model of table data. - *

- * Note that this is not a full MVC type model; the expected usage pattern - * is to create an empty table, add rows (by consulting the business model), - * sort rows (based on client request parameters), and finally produce the - * sorted list of rows. - *

- * The table also provides a mechanism for defining how cell values for a - * particular column should be formatted into strings, to help facilitate - * the encoding of the table data into a JSON structure. - *

- * Note that it is expected that all values for a particular column will - * be the same class. - */ -public class TableModel { - - private static final CellComparator DEF_CMP = DefaultCellComparator.INSTANCE; - private static final CellFormatter DEF_FMT = DefaultCellFormatter.INSTANCE; - - private final String[] columnIds; - private final Set idSet; - private final Map comparators = new HashMap<>(); - private final Map formatters = new HashMap<>(); - private final List rows = new ArrayList<>(); - - - /** - * Constructs a table (devoid of data) with the given column IDs. - * - * @param columnIds column identifiers - */ - public TableModel(String... columnIds) { - checkNotNull(columnIds, "columnIds cannot be null"); - checkArgument(columnIds.length > 0, "must be at least one column"); - - idSet = Sets.newHashSet(columnIds); - if (idSet.size() != columnIds.length) { - throw new IllegalArgumentException("duplicate column ID(s) detected"); - } - - this.columnIds = Arrays.copyOf(columnIds, columnIds.length); - } - - private void checkId(String id) { - checkNotNull(id, "must provide a column ID"); - if (!idSet.contains(id)) { - throw new IllegalArgumentException("unknown column id: " + id); - } - } - - /** - * Returns the number of rows in this table model. - * - * @return number of rows - */ - public int rowCount() { - return rows.size(); - } - - /** - * Returns the number of columns in this table model. - * - * @return number of columns - */ - public int columnCount() { - return columnIds.length; - } - - /** - * Returns the array of column IDs for this table model. - *

- * Implementation note: we are knowingly passing you a reference to - * our internal array to avoid copying. Don't mess with it. It's your - * table you'll break if you do! - * - * @return the column identifiers - */ - public String[] getColumnIds() { - return columnIds; - } - - /** - * Returns the raw {@link Row} representation of the rows in this table. - * - * @return raw table rows - */ - public Row[] getRows() { - return rows.toArray(new Row[rows.size()]); - } - - /** - * Sets a cell comparator for the specified column. - * - * @param columnId column identifier - * @param comparator comparator to use - */ - public void setComparator(String columnId, CellComparator comparator) { - checkNotNull(comparator, "must provide a comparator"); - checkId(columnId); - comparators.put(columnId, comparator); - } - - /** - * Returns the cell comparator to use on values in the specified column. - * - * @param columnId column identifier - * @return an appropriate cell comparator - */ - private CellComparator getComparator(String columnId) { - checkId(columnId); - CellComparator cmp = comparators.get(columnId); - return cmp == null ? DEF_CMP : cmp; - } - - /** - * Sets a cell formatter for the specified column. - * - * @param columnId column identifier - * @param formatter formatter to use - */ - public void setFormatter(String columnId, CellFormatter formatter) { - checkNotNull(formatter, "must provide a formatter"); - checkId(columnId); - formatters.put(columnId, formatter); - } - - /** - * Returns the cell formatter to use on values in the specified column. - * - * @param columnId column identifier - * @return an appropriate cell formatter - */ - public CellFormatter getFormatter(String columnId) { - checkId(columnId); - CellFormatter fmt = formatters.get(columnId); - return fmt == null ? DEF_FMT : fmt; - } - - /** - * Adds a row to the table model. - * - * @return the row, for chaining - */ - public Row addRow() { - Row r = new Row(); - rows.add(r); - return r; - } - - /** - * Sorts the table rows based on the specified column, in the - * specified direction. - * - * @param columnId column identifier - * @param dir sort direction - */ - public void sort(String columnId, SortDir dir) { - Collections.sort(rows, new RowComparator(columnId, dir)); - } - - - /** Designates sorting direction. */ - public enum SortDir { - /** Designates an ascending sort. */ - ASC, - /** Designates a descending sort. */ - DESC - } - - /** - * Row comparator. - */ - private class RowComparator implements Comparator { - private final String columnId; - private final SortDir dir; - private final CellComparator cellComparator; - - /** - * Constructs a row comparator based on the specified - * column identifier and sort direction. - * - * @param columnId column identifier - * @param dir sort direction - */ - public RowComparator(String columnId, SortDir dir) { - this.columnId = columnId; - this.dir = dir; - cellComparator = getComparator(columnId); - } - - @Override - public int compare(Row a, Row b) { - Object cellA = a.get(columnId); - Object cellB = b.get(columnId); - int result = cellComparator.compare(cellA, cellB); - return dir == SortDir.ASC ? result : -result; - } - } - - /** - * Model of a row. - */ - public class Row { - private final Map cells = new HashMap<>(); - - /** - * Sets the cell value for the given column of this row. - * - * @param columnId column identifier - * @param value value to set - * @return self, for chaining - */ - public Row cell(String columnId, Object value) { - checkId(columnId); - cells.put(columnId, value); - return this; - } - - /** - * Returns the value of the cell in the given column for this row. - * - * @param columnId column identifier - * @return cell value - */ - public Object get(String columnId) { - return cells.get(columnId); - } - - /** - * Returns the value of the cell as a string, using the - * formatter appropriate for the column. - * - * @param columnId column identifier - * @return formatted cell value - */ - String getAsString(String columnId) { - return getFormatter(columnId).format(get(columnId)); - } - - /** - * Returns the row as an array of formatted strings. - * - * @return the formatted row data - */ - public String[] getAsFormattedStrings() { - List formatted = new ArrayList<>(columnCount()); - for (String c : columnIds) { - formatted.add(getAsString(c)); - } - return formatted.toArray(new String[formatted.size()]); - } - } - - private static final String DESC = "desc"; - - /** - * Returns the appropriate sort direction for the given string. - *

- * The expected strings are "asc" for {@link SortDir#ASC ascending} and - * "desc" for {@link SortDir#DESC descending}. Any other value will - * default to ascending. - * - * @param s sort direction string encoding - * @return sort direction - */ - public static SortDir sortDir(String s) { - return !DESC.equals(s) ? SortDir.ASC : SortDir.DESC; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java deleted file mode 100644 index b8d48575..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.onosproject.ui.JsonUtils; -import org.onosproject.ui.RequestHandler; - -/** - * Message handler specifically for table views. - */ -public abstract class TableRequestHandler extends RequestHandler { - - private final String respType; - private final String nodeName; - - /** - * Constructs a table request handler for a specific table view. When - * table requests come in, the handler will generate the appropriate - * table rows, sort them according the the request sort parameters, and - * send back the response to the client. - * - * @param reqType type of the request event - * @param respType type of the response event - * @param nodeName name of JSON node holding row data - */ - public TableRequestHandler(String reqType, String respType, String nodeName) { - super(reqType); - this.respType = respType; - this.nodeName = nodeName; - } - - @Override - public void process(long sid, ObjectNode payload) { - TableModel tm = createTableModel(); - populateTable(tm, payload); - - String sortCol = JsonUtils.string(payload, "sortCol", defaultColumnId()); - String sortDir = JsonUtils.string(payload, "sortDir", "asc"); - tm.sort(sortCol, TableModel.sortDir(sortDir)); - - ObjectNode rootNode = MAPPER.createObjectNode(); - rootNode.set(nodeName, TableUtils.generateArrayNode(tm)); - sendMessage(respType, 0, rootNode); - } - - /** - * Creates the table model (devoid of data) using {@link #getColumnIds()} - * to initialize it, ready to be populated. - *

- * This default implementation returns a table model with default - * formatters and comparators for all columns. - * - * @return an empty table model - */ - protected TableModel createTableModel() { - return new TableModel(getColumnIds()); - } - - /** - * Returns the default column ID to be used when one is not supplied in - * the payload as the column on which to sort. - *

- * This default implementation returns "id". - * - * @return default sort column identifier - */ - protected String defaultColumnId() { - return "id"; - } - - /** - * Subclasses should return the array of column IDs with which - * to initialize their table model. - * - * @return the column IDs - */ - protected abstract String[] getColumnIds(); - - /** - * Subclasses should populate the table model by adding - * {@link TableModel.Row rows}. - *

-     *     tm.addRow()
-     *         .cell(COL_ONE, ...)
-     *         .cell(COL_TWO, ...)
-     *         ... ;
-     * 
- * The request payload is provided in case there are request filtering - * parameters (other than sort column and sort direction) that are required - * to generate the appropriate data. - * - * @param tm the table model - * @param payload request payload - */ - protected abstract void populateTable(TableModel tm, ObjectNode payload); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableUtils.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableUtils.java deleted file mode 100644 index eb2dff78..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/TableUtils.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Provides static utility methods for dealing with tables. - */ -public final class TableUtils { - - private static final ObjectMapper MAPPER = new ObjectMapper(); - - // non-instantiable - private TableUtils() { } - - /** - * Generates a JSON array node from a table model. - * - * @param tm the table model - * @return the array node representation - */ - public static ArrayNode generateArrayNode(TableModel tm) { - ArrayNode array = MAPPER.createArrayNode(); - for (TableModel.Row r : tm.getRows()) { - array.add(toJsonNode(r, tm)); - } - return array; - } - - private static JsonNode toJsonNode(TableModel.Row row, TableModel tm) { - ObjectNode result = MAPPER.createObjectNode(); - String[] keys = tm.getColumnIds(); - String[] cells = row.getAsFormattedStrings(); - int n = keys.length; - for (int i = 0; i < n; i++) { - result.put(keys[i], cells[i]); - } - return result; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AbstractCellComparator.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AbstractCellComparator.java deleted file mode 100644 index 31d9f634..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AbstractCellComparator.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.onosproject.ui.table.CellComparator; - -/** - * Base implementation of a {@link CellComparator}. This class takes care - * of dealing with null inputs; subclasses should implement their comparison - * knowing that both inputs are guaranteed to be non-null. - */ -public abstract class AbstractCellComparator implements CellComparator { - - @Override - public int compare(Object o1, Object o2) { - if (o1 == null && o2 == null) { - return 0; // o1 == o2 - } - if (o1 == null) { - return -1; // o1 < o2 - } - if (o2 == null) { - return 1; // o1 > o2 - } - return nonNullCompare(o1, o2); - } - - /** - * Compares its two arguments for order. Returns a negative integer, - * zero, or a positive integer as the first argument is less than, equal - * to, or greater than the second.

- * - * Note that both objects are guaranteed to be non-null. - * - * @see java.util.Comparator#compare(Object, Object) - * - * @param o1 the first object to be compared. - * @param o2 the second object to be compared. - * @return a negative integer, zero, or a positive integer as the - * first argument is less than, equal to, or greater than the - * second. - * @throws ClassCastException if the arguments' types prevent them from - * being compared by this comparator. - */ - protected abstract int nonNullCompare(Object o1, Object o2); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AbstractCellFormatter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AbstractCellFormatter.java deleted file mode 100644 index 08822b7b..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AbstractCellFormatter.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.onosproject.ui.table.CellFormatter; - -/** - * Base implementation of a {@link CellFormatter}. This class takes care of - * dealing with null inputs; subclasses should implement their format method - * knowing that the input is guaranteed to be non-null. - */ -public abstract class AbstractCellFormatter implements CellFormatter { - - @Override - public String format(Object value) { - return value == null ? "" : nonNullFormat(value); - } - - /** - * Formats the specified value into a string appropriate for displaying - * in a table cell. Note that value is guaranteed to be non-null. - * - * @param value the value - * @return the formatted string - */ - protected abstract String nonNullFormat(Object value); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AppIdFormatter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AppIdFormatter.java deleted file mode 100644 index f7947a75..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/AppIdFormatter.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.onosproject.core.ApplicationId; -import org.onosproject.ui.table.CellFormatter; - -/** - * Formats an application identifier as "(app-id) : (app-name)". - */ -public final class AppIdFormatter extends AbstractCellFormatter { - - // non-instantiable - private AppIdFormatter() { } - - // NOTE: do not change this format; we parse it on the client side. - @Override - protected String nonNullFormat(Object value) { - ApplicationId appId = (ApplicationId) value; - return appId.id() + " : " + appId.name(); - } - - /** - * An instance of this class. - */ - public static final CellFormatter INSTANCE = new AppIdFormatter(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/ConnectPointFormatter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/ConnectPointFormatter.java deleted file mode 100644 index 4af6fe2f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/ConnectPointFormatter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.ui.table.CellFormatter; - -/** - * Formats a connect point as "(element-id)/(port)". - */ -public final class ConnectPointFormatter extends AbstractCellFormatter { - - // non-instantiable - private ConnectPointFormatter() { } - - @Override - protected String nonNullFormat(Object value) { - ConnectPoint cp = (ConnectPoint) value; - return cp.elementId() + "/" + cp.port(); - } - - /** - * An instance of this class. - */ - public static final CellFormatter INSTANCE = new ConnectPointFormatter(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellComparator.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellComparator.java deleted file mode 100644 index 2386f8f3..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellComparator.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.onosproject.ui.table.CellComparator; - -/** - * A default cell comparator. - *

- * Verifies that the objects being compared are the same class. - * Looks to see if the objects being compared implement comparable and, if so, - * delegates to that; otherwise, implements a lexicographical compare function - * (i.e. string sorting). Uses the objects' toString() method and then - * compares the resulting strings. Note that null values are acceptable and - * are considered "smaller" than any non-null value. - */ -public final class DefaultCellComparator extends AbstractCellComparator { - - // non-instantiable - private DefaultCellComparator() { } - - @Override - @SuppressWarnings("unchecked") - protected int nonNullCompare(Object o1, Object o2) { - if (o1 instanceof Comparable) { - // if o2 is not the same class as o1, then compareTo will - // throw ClassCastException for us - return ((Comparable) o1).compareTo(o2); - } - return o1.toString().compareTo(o2.toString()); - } - - /** - * An instance of this class. - */ - public static final CellComparator INSTANCE = new DefaultCellComparator(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellFormatter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellFormatter.java deleted file mode 100644 index 8309c545..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/DefaultCellFormatter.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.onosproject.ui.table.CellFormatter; - -/** - * A default cell formatter. Uses the object's toString() method. - */ -public final class DefaultCellFormatter extends AbstractCellFormatter { - - // non-instantiable - private DefaultCellFormatter() { } - - @Override - public String nonNullFormat(Object value) { - return value.toString(); - } - - /** - * An instance of this class. - */ - public static final CellFormatter INSTANCE = new DefaultCellFormatter(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/EnumFormatter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/EnumFormatter.java deleted file mode 100644 index 5b89a0b7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/EnumFormatter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.onosproject.ui.table.CellFormatter; - -import static org.apache.commons.lang.WordUtils.capitalizeFully; - -/** - * Formats enum types to be readable strings. - */ -public final class EnumFormatter extends AbstractCellFormatter { - - // non-instantiable - private EnumFormatter() { } - - @Override - protected String nonNullFormat(Object value) { - return capitalizeFully(value.toString().replace("_", " ")); - } - - /** - * An instance of this class. - */ - public static final CellFormatter INSTANCE = new EnumFormatter(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/HexFormatter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/HexFormatter.java deleted file mode 100644 index 981a81bb..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/HexFormatter.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.onosproject.ui.table.CellFormatter; - -/** - * Formats integer values as hex strings with a "0x" prefix. - */ -public final class HexFormatter extends AbstractCellFormatter { - - // non-instantiable - private HexFormatter() { } - - @Override - protected String nonNullFormat(Object value) { - return "0x" + Integer.toHexString((Integer) value); - } - - /** - * An instance of this class. - */ - public static final CellFormatter INSTANCE = new HexFormatter(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/HostLocationFormatter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/HostLocationFormatter.java deleted file mode 100644 index 95a7cc23..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/HostLocationFormatter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.onosproject.net.HostLocation; -import org.onosproject.ui.table.CellFormatter; - -/** - * Formats a host location as "(device-id)/(port)". - */ -public final class HostLocationFormatter extends AbstractCellFormatter { - - // non-instantiable - private HostLocationFormatter() { } - - @Override - protected String nonNullFormat(Object value) { - HostLocation loc = (HostLocation) value; - return loc.deviceId() + "/" + loc.port(); - } - - /** - * An instance of this class. - */ - public static final CellFormatter INSTANCE = new HostLocationFormatter(); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/NumberFormatter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/NumberFormatter.java deleted file mode 100644 index 76f42466..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/NumberFormatter.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import java.text.DecimalFormat; -import java.text.NumberFormat; - -/** - * Formats number using the specified format string". - */ -public final class NumberFormatter extends AbstractCellFormatter { - - private final NumberFormat format; - - /** - * Creates a formatter using a default decimal format. - */ - public NumberFormatter() { - this(new DecimalFormat("#,##0.00000")); - } - - /** - * Creates a formatter using the specified format. - * - * @param format number format - */ - public NumberFormatter(NumberFormat format) { - this.format = format; - } - - @Override - protected String nonNullFormat(Object value) { - return format.format(value); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java deleted file mode 100644 index 58c70930..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; - -import java.util.Locale; - -/** - * Formats time values using {@link DateTimeFormatter}. - */ -public final class TimeFormatter extends AbstractCellFormatter { - - private DateTimeFormatter dtf; - - // NOTE: Unlike other formatters in this package, this one is not - // implemented as a Singleton, because instances may be - // decorated with alternate locale and/or timezone. - - /** - * Constructs a time formatter that uses the default locale and timezone. - */ - public TimeFormatter() { - dtf = DateTimeFormat.longTime(); - } - - /** - * Sets the locale to use for formatting the time. - * - * @param locale locale to use for formatting - * @return self, for chaining - */ - public TimeFormatter withLocale(Locale locale) { - dtf = dtf.withLocale(locale); - return this; - } - - /** - * Sets the time zone to use for formatting the time. - * - * @param zone time zone to use - * @return self, for chaining - */ - public TimeFormatter withZone(DateTimeZone zone) { - dtf = dtf.withZone(zone); - return this; - } - - @Override - protected String nonNullFormat(Object value) { - return dtf.print((DateTime) value); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/package-info.java deleted file mode 100644 index c25bcb06..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/cell/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Set of table cell renderers and comparators for use by GUI apps. - */ -package org.onosproject.ui.table.cell; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/package-info.java deleted file mode 100644 index ee975d11..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/table/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Facilities for creating tabular models of data for the GUI. - */ -package org.onosproject.ui.table; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/AbstractHighlight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/AbstractHighlight.java deleted file mode 100644 index d30ba2f6..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/AbstractHighlight.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Partial implementation of the highlighting to apply to topology - * view elements. - */ -public abstract class AbstractHighlight { - private final TopoElementType type; - private final String elementId; - private boolean keepSubdued = false; - - /** - * Constructs the highlight. - * - * @param type highlight element type - * @param elementId element identifier - */ - public AbstractHighlight(TopoElementType type, String elementId) { - this.type = checkNotNull(type); - this.elementId = checkNotNull(elementId); - } - - /** - * Sets a flag to tell the renderer to keep this element subdued. - */ - public void keepSubdued() { - keepSubdued = true; - } - - /** - * Returns the element type. - * - * @return element type - */ - public TopoElementType type() { - return type; - } - - /** - * Returns the element identifier. - * - * @return element identifier - */ - public String elementId() { - return elementId; - } - - /** - * Returns the subdued flag. - * - * @return subdued flag - */ - public boolean subdued() { - return keepSubdued; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BaseLink.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BaseLink.java deleted file mode 100644 index a40383b8..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BaseLink.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; - -/** - * A simple concrete implementation of a {@link BiLink}. - * Note that this implementation does not generate any link highlights. - */ -public class BaseLink extends BiLink { - - /** - * Constructs a base link for the given key and initial link. - * - * @param key canonical key for this base link - * @param link first link - */ - public BaseLink(LinkKey key, Link link) { - super(key, link); - } - - @Override - public LinkHighlight highlight(Enum type) { - return null; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BaseLinkMap.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BaseLinkMap.java deleted file mode 100644 index cc2cf4af..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BaseLinkMap.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; - -/** - * Collection of {@link BaseLink}s. - */ -public class BaseLinkMap extends BiLinkMap { - @Override - public BaseLink create(LinkKey key, Link link) { - return new BaseLink(key, link); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BiLink.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BiLink.java deleted file mode 100644 index 1217faae..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BiLink.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Representation of a link and its inverse, as a partial implementation. - *

- * Subclasses will decide how to generate the link highlighting (coloring - * and labeling) for the topology view. - */ -public abstract class BiLink { - - private final LinkKey key; - private final Link one; - private Link two; - - /** - * Constructs a bi-link for the given key and initial link. It is expected - * that the caller will have used {@link TopoUtils#canonicalLinkKey(Link)} - * to generate the key. - * - * @param key canonical key for this bi-link - * @param link first link - */ - public BiLink(LinkKey key, Link link) { - this.key = checkNotNull(key); - this.one = checkNotNull(link); - } - - /** - * Sets the second link for this bi-link. - * - * @param link second link - */ - public void setOther(Link link) { - this.two = checkNotNull(link); - } - - /** - * Returns the link identifier in the form expected on the Topology View - * in the web client. - * - * @return link identifier - */ - public String linkId() { - return TopoUtils.compactLinkString(one); - } - - /** - * Returns the key for this bi-link. - * - * @return the key - */ - public LinkKey key() { - return key; - } - - /** - * Returns the first link in this bi-link. - * - * @return the first link - */ - public Link one() { - return one; - } - - /** - * Returns the second link in this bi-link. - * - * @return the second link - */ - public Link two() { - return two; - } - - /** - * Returns the link highlighting to use, based on this bi-link's current - * state. - * - * @param type optional highlighting type parameter - * @return link highlighting model - */ - public abstract LinkHighlight highlight(Enum type); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BiLinkMap.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BiLinkMap.java deleted file mode 100644 index 9a42e107..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/BiLinkMap.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Represents a collection of {@link BiLink} concrete classes. These maps - * are used to collate a set of unidirectional {@link Link}s into a smaller - * set of bi-directional {@link BiLink} derivatives. - *

- * @param the type of bi-link subclass - */ -public abstract class BiLinkMap { - - private final Map map = new HashMap<>(); - - /** - * Creates a new instance of a bi-link. Concrete subclasses should - * instantiate and return the appropriate bi-link subclass. - * - * @param key the link key - * @param link the initial link - * @return a new instance - */ - protected abstract B create(LinkKey key, Link link); - - /** - * Adds the given link to our collection, returning the corresponding - * bi-link (creating one if needed necessary). - * - * @param link the link to add to the collection - * @return the corresponding bi-link wrapper - */ - public B add(Link link) { - LinkKey key = TopoUtils.canonicalLinkKey(checkNotNull(link)); - B blink = map.get(key); - if (blink == null) { - // no bi-link yet exists for this link - blink = create(key, link); - map.put(key, blink); - } else { - // we have a bi-link for this link. - if (!blink.one().equals(link)) { - blink.setOther(link); - } - } - return blink; - } - - /** - * Returns the bi-link instances in the collection. - * - * @return the bi-links in this map - */ - public Collection biLinks() { - return map.values(); - } - - /** - * Returns the number of bi-links in the collection. - * - * @return number of bi-links - */ - public int size() { - return map.size(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/ButtonId.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/ButtonId.java deleted file mode 100644 index 05b7317d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/ButtonId.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import com.google.common.base.MoreObjects; - -/** - * Designates the identity of a button on the topology view panels. - */ -public class ButtonId { - - private final String id; - - /** - * Creates a button ID with the given identifier. - * - * @param id identifier for the button - */ - public ButtonId(String id) { - this.id = id; - } - - /** - * Returns the identifier for this button. - * - * @return identifier - */ - public String id() { - return id; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()).toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - ButtonId that = (ButtonId) o; - return id.equals(that.id); - } - - @Override - public int hashCode() { - return id.hashCode(); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/DeviceHighlight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/DeviceHighlight.java deleted file mode 100644 index 0cc15475..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/DeviceHighlight.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -/** - * Denotes the highlighting to be applied to a device. - */ -public class DeviceHighlight extends NodeHighlight { - - /** - * Constructs a device highlight entity. - * - * @param deviceId the device identifier - */ - public DeviceHighlight(String deviceId) { - super(TopoElementType.DEVICE, deviceId); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/Highlights.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/Highlights.java deleted file mode 100644 index 12d3b629..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/Highlights.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Encapsulates highlights to be applied to the topology view, such as - * highlighting links, displaying link labels, perhaps even decorating - * nodes with badges, etc. - */ -public class Highlights { - - private static final String EMPTY = ""; - private static final String MIN = "min"; - private static final String MAX = "max"; - - /** - * A notion of amount. - */ - public enum Amount { - ZERO(EMPTY), - MINIMALLY(MIN), - MAXIMALLY(MAX); - - private final String s; - Amount(String str) { - s = str; - } - - @Override - public String toString() { - return s; - } - } - - private final Map devices = new HashMap<>(); - private final Map hosts = new HashMap<>(); - private final Map links = new HashMap<>(); - - private Amount subdueLevel = Amount.ZERO; - - - /** - * Adds highlighting information for a device. - * - * @param dh device highlight - * @return self, for chaining - */ - public Highlights add(DeviceHighlight dh) { - devices.put(dh.elementId(), dh); - return this; - } - - /** - * Adds highlighting information for a host. - * - * @param hh host highlight - * @return self, for chaining - */ - public Highlights add(HostHighlight hh) { - hosts.put(hh.elementId(), hh); - return this; - } - - /** - * Adds highlighting information for a link. - * - * @param lh link highlight - * @return self, for chaining - */ - public Highlights add(LinkHighlight lh) { - links.put(lh.elementId(), lh); - return this; - } - - /** - * Marks the amount by which all other elements (devices, hosts, links) - * not explicitly referenced here will be "subdued" visually. - * - * @param amount amount to subdue other elements - * @return self, for chaining - */ - public Highlights subdueAllElse(Amount amount) { - subdueLevel = checkNotNull(amount); - return this; - } - - /** - * Returns the collection of device highlights. - * - * @return device highlights - */ - public Collection devices() { - return Collections.unmodifiableCollection(devices.values()); - } - - /** - * Returns the collection of host highlights. - * - * @return host highlights - */ - public Collection hosts() { - return Collections.unmodifiableCollection(hosts.values()); - } - - /** - * Returns the collection of link highlights. - * - * @return link highlights - */ - public Collection links() { - return Collections.unmodifiableCollection(links.values()); - } - - /** - * Returns the amount by which all other elements not explicitly - * referenced here should be "subdued". - * - * @return amount to subdue other elements - */ - public Amount subdueLevel() { - return subdueLevel; - } - - /** - * Returns the node highlight (device or host) for the given element - * identifier, or null if no match. - * - * @param id element identifier - * @return corresponding node highlight - */ - public NodeHighlight getNode(String id) { - NodeHighlight nh = devices.get(id); - return nh != null ? nh : hosts.get(id); - } - - /** - * Returns the device highlight for the given device identifier, - * or null if no match. - * - * @param id device identifier - * @return corresponding device highlight - */ - public DeviceHighlight getDevice(String id) { - return devices.get(id); - } - - /** - * Returns the host highlight for the given host identifier, - * or null if no match. - * - * @param id host identifier - * @return corresponding host highlight - */ - public HostHighlight getHost(String id) { - return hosts.get(id); - } - - /** - * Returns the link highlight for the given link identifier, - * or null if no match. - * - * @param id link identifier - * @return corresponding link highlight - */ - public LinkHighlight getLink(String id) { - return links.get(id); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/HostHighlight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/HostHighlight.java deleted file mode 100644 index 48959496..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/HostHighlight.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -/** - * Denotes the highlighting to apply to a host. - */ -public class HostHighlight extends NodeHighlight { - - public HostHighlight(String hostId) { - super(TopoElementType.HOST, hostId); - } - - // TODO: implement host highlighting: - // - visual highlight - // - badging - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/LinkHighlight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/LinkHighlight.java deleted file mode 100644 index a734c6b7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/LinkHighlight.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import java.util.Collections; -import java.util.Set; -import java.util.TreeSet; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Denotes the highlighting to be applied to a link. - * {@link Flavor} is a closed set of NO-, PRIMARY-, or SECONDARY- highlighting. - * {@link Mod} is an open ended set of additional modifications (CSS classes) - * that may also be applied. - * Note that {@link #MOD_OPTICAL} and {@link #MOD_ANIMATED} are pre-defined mods. - * Label text may be set, which will also be displayed on the link. - */ -public class LinkHighlight extends AbstractHighlight { - - private static final String PLAIN = "plain"; - private static final String PRIMARY = "primary"; - private static final String SECONDARY = "secondary"; - private static final String EMPTY = ""; - private static final String SPACE = " "; - - private final Flavor flavor; - private final Set mods = new TreeSet<>(); - private String label = EMPTY; - - /** - * Constructs a link highlight entity. - * - * @param linkId the link identifier - * @param flavor the highlight flavor - */ - public LinkHighlight(String linkId, Flavor flavor) { - super(TopoElementType.LINK, linkId); - this.flavor = checkNotNull(flavor); - } - - /** - * Adds a highlighting modification to this link highlight. - * - * @param mod mod to be added - * @return self, for chaining - */ - public LinkHighlight addMod(Mod mod) { - mods.add(checkNotNull(mod)); - return this; - } - - /** - * Adds a label to be displayed on the link. - * - * @param label the label text - * @return self, for chaining - */ - public LinkHighlight setLabel(String label) { - this.label = label == null ? EMPTY : label; - return this; - } - - /** - * Returns the highlight flavor. - * - * @return highlight flavor - */ - public Flavor flavor() { - return flavor; - } - - /** - * Returns the highlight modifications. - * - * @return highlight modifications - */ - public Set mods() { - return Collections.unmodifiableSet(mods); - } - - /** - * Generates the CSS classes string from the {@link #flavor} and - * any optional {@link #mods}. - * - * @return CSS classes string - */ - public String cssClasses() { - StringBuilder sb = new StringBuilder(flavor.toString()); - mods.forEach(m -> sb.append(SPACE).append(m)); - return sb.toString(); - } - - /** - * Returns the label text. - * - * @return label text - */ - public String label() { - return label; - } - - /** - * Link highlighting flavor. - */ - public enum Flavor { - NO_HIGHLIGHT(PLAIN), - PRIMARY_HIGHLIGHT(PRIMARY), - SECONDARY_HIGHLIGHT(SECONDARY); - - private String cssName; - - Flavor(String s) { - cssName = s; - } - - @Override - public String toString() { - return cssName; - } - } - - /** - * Denotes a link to be tagged as an optical link. - */ - public static final Mod MOD_OPTICAL = new Mod("optical"); - - /** - * Denotes a link to be tagged with animated traffic ("marching ants"). - */ - public static final Mod MOD_ANIMATED = new Mod("animated"); -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/Mod.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/Mod.java deleted file mode 100644 index b11ddecd..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/Mod.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Highlighting modification. - *

- * Note that (for link highlights) this translates to a CSS class name - * that is applied to the link in the Topology UI. - */ -public final class Mod implements Comparable { - private final String modId; - - /** - * Constructs a mod with the given identifier. - * - * @param modId modification identifier - */ - public Mod(String modId) { - this.modId = checkNotNull(modId); - } - - @Override - public String toString() { - return modId; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Mod mod = (Mod) o; - return modId.equals(mod.modId); - } - - @Override - public int hashCode() { - return modId.hashCode(); - } - - @Override - public int compareTo(Mod o) { - return this.modId.compareTo(o.modId); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeBadge.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeBadge.java deleted file mode 100644 index 4edb6712..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeBadge.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -/** - * Designates a badge to be applied to a node in the topology view. - */ -public final class NodeBadge { - - private static final String EMPTY = ""; - - /** Designates the badge status. */ - public enum Status { - INFO("i"), - WARN("w"), - ERROR("e"); - - private String code; - - Status(String code) { - this.code = code; - } - - @Override - public String toString() { - return "{" + code + "}"; - } - - /* Returns the status code in string form. */ - public String code() { - return code; - } - } - - private final Status status; - private final boolean isGlyph; - private final String text; - private final String message; - - // only instantiated through static methods. - private NodeBadge(Status status, boolean isGlyph, String text, String message) { - this.status = status == null ? Status.INFO : status; - this.isGlyph = isGlyph; - this.text = text; - this.message = message; - } - - @Override - public String toString() { - return "{Badge " + status + - " (" + text + ")" + - (isGlyph ? "*G " : " ") + - "\"" + message + "\"}"; - } - - /** - * Returns the badge status. - * - * @return badge status - */ - public Status status() { - return status; - } - - /** - * Returns true if the text for this badge designates a glyph ID. - * - * @return true if badge uses glyph - */ - public boolean isGlyph() { - return isGlyph; - } - - /** - * Returns the text for the badge. - * Note that if {@link #isGlyph} is true, the text is a glyph ID, otherwise - * the text is displayed verbatim in the badge. - * - * @return text for badge - */ - public String text() { - return text; - } - - /** - * Returns the message associated with the badge. - * - * @return associated message - */ - public String message() { - return message; - } - - private static String nonNull(String s) { - return s == null ? EMPTY : s; - } - - /** - * Returns an arbitrary text badge, with default status. - * - * @param txt the text - * @return node badge to display text - */ - public static NodeBadge text(String txt) { - // TODO: consider length constraint on txt (3 chars?) - return new NodeBadge(Status.INFO, false, nonNull(txt), null); - } - - /** - * Returns a glyph badge, with default status. - * - * @param gid the glyph ID - * @return node badge to display glyph - */ - public static NodeBadge glyph(String gid) { - return new NodeBadge(Status.INFO, true, nonNull(gid), null); - } - - /** - * Returns a numeric badge, with default status. - * - * @param n the number - * @return node badge to display a number - */ - public static NodeBadge number(int n) { - // TODO: consider constraints, e.g. 1 <= n <= 999 - return new NodeBadge(Status.INFO, false, Integer.toString(n), null); - } - - /** - * Returns an arbitrary text badge, with the given status. - * - * @param s the status - * @param txt the text - * @return node badge to display text - */ - public static NodeBadge text(Status s, String txt) { - // TODO: consider length constraint on txt (3 chars?) - return new NodeBadge(s, false, nonNull(txt), null); - } - - /** - * Returns a glyph badge, with the given status. - * - * @param s the status - * @param gid the glyph ID - * @return node badge to display glyph - */ - public static NodeBadge glyph(Status s, String gid) { - return new NodeBadge(s, true, nonNull(gid), null); - } - - - /** - * Returns a numeric badge, with the given status and optional message. - * - * @param s the status - * @param n the number - * @return node badge to display a number - */ - public static NodeBadge number(Status s, int n) { - // TODO: consider constraints, e.g. 1 <= n <= 999 - return new NodeBadge(s, false, Integer.toString(n), null); - } - - /** - * Returns an arbitrary text badge, with the given status and optional - * message. - * - * @param s the status - * @param txt the text - * @param msg the optional message - * @return node badge to display text - */ - public static NodeBadge text(Status s, String txt, String msg) { - // TODO: consider length constraint on txt (3 chars?) - return new NodeBadge(s, false, nonNull(txt), msg); - } - - /** - * Returns a glyph badge, with the given status and optional message. - * - * @param s the status - * @param gid the glyph ID - * @param msg the optional message - * @return node badge to display glyph - */ - public static NodeBadge glyph(Status s, String gid, String msg) { - return new NodeBadge(s, true, nonNull(gid), msg); - } - - - /** - * Returns a numeric badge, with the given status and optional message. - * - * @param s the status - * @param n the number - * @param msg the optional message - * @return node badge to display a number - */ - public static NodeBadge number(Status s, int n, String msg) { - // TODO: consider constraints, e.g. 1 <= n <= 999 - return new NodeBadge(s, false, Integer.toString(n), msg); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeHighlight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeHighlight.java deleted file mode 100644 index 69235089..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeHighlight.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -/** - * Parent class of {@link DeviceHighlight} and {@link HostHighlight}. - */ -public abstract class NodeHighlight extends AbstractHighlight { - - private NodeBadge badge; - - /** - * Constructs a node highlight entity. - * - * @param type element type - * @param elementId element identifier - */ - public NodeHighlight(TopoElementType type, String elementId) { - super(type, elementId); - } - - /** - * Sets the badge for this node. - * - * @param badge badge to apply - */ - public void setBadge(NodeBadge badge) { - this.badge = badge; - } - - /** - * Returns the badge for this node, if any. - * - * @return badge, or null - */ - public NodeBadge badge() { - return badge; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeSelection.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeSelection.java deleted file mode 100644 index 4aed9038..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/NodeSelection.java +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.onosproject.net.Device; -import org.onosproject.net.Element; -import org.onosproject.net.Host; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.host.HostService; -import org.onosproject.ui.JsonUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.HostId.hostId; - -/** - * Encapsulates a selection of devices and/or hosts from the topology view. - */ -public class NodeSelection { - - private static final Logger log = - LoggerFactory.getLogger(NodeSelection.class); - - private static final String IDS = "ids"; - private static final String HOVER = "hover"; - - private final DeviceService deviceService; - private final HostService hostService; - - private final Set ids; - private final String hover; - - private final Set devices = new HashSet<>(); - private final Set hosts = new HashSet<>(); - private Element hovered; - - /** - * Creates a node selection entity, from the given payload, using the - * supplied device and host services. Note that if a device or host was - * hovered over by the mouse, it is available via {@link #hovered()}. - * - * @param payload message payload - * @param deviceService device service - * @param hostService host service - */ - public NodeSelection(ObjectNode payload, - DeviceService deviceService, - HostService hostService) { - this.deviceService = deviceService; - this.hostService = hostService; - - ids = extractIds(payload); - hover = extractHover(payload); - - // start by extracting the hovered element if any - if (isNullOrEmpty(hover)) { - hovered = null; - } else { - setHoveredElement(); - } - - // now go find the devices and hosts that are in the selection list - Set unmatched = findDevices(ids); - unmatched = findHosts(unmatched); - if (unmatched.size() > 0) { - log.debug("Skipping unmatched IDs {}", unmatched); - } - - } - - /** - * Returns a view of the selected devices (hover not included). - * - * @return selected devices - */ - public Set devices() { - return Collections.unmodifiableSet(devices); - } - - /** - * Returns a view of the selected devices, including the hovered device - * if there was one. - * - * @return selected (plus hovered) devices - */ - public Set devicesWithHover() { - Set withHover; - if (hovered != null && hovered instanceof Device) { - withHover = new HashSet<>(devices); - withHover.add((Device) hovered); - } else { - withHover = devices; - } - return Collections.unmodifiableSet(withHover); - } - - /** - * Returns a view of the selected hosts (hover not included). - * - * @return selected hosts - */ - public Set hosts() { - return Collections.unmodifiableSet(hosts); - } - - /** - * Returns a view of the selected hosts, including the hovered host - * if thee was one. - * - * @return selected (plus hovered) hosts - */ - public Set hostsWithHover() { - Set withHover; - if (hovered != null && hovered instanceof Host) { - withHover = new HashSet<>(hosts); - withHover.add((Host) hovered); - } else { - withHover = hosts; - } - return Collections.unmodifiableSet(withHover); - } - - /** - * Returns the element (host or device) over which the mouse was hovering, - * or null. - * - * @return element hovered over - */ - public Element hovered() { - return hovered; - } - - /** - * Returns true if nothing is selected. - * - * @return true if nothing selected - */ - public boolean none() { - return devices().size() == 0 && hosts().size() == 0; - } - - @Override - public String toString() { - return "NodeSelection{" + - "ids=" + ids + - ", hover='" + hover + '\'' + - ", #devices=" + devices.size() + - ", #hosts=" + hosts.size() + - '}'; - } - - // == helper methods - - private Set extractIds(ObjectNode payload) { - ArrayNode array = (ArrayNode) payload.path(IDS); - if (array == null || array.size() == 0) { - return Collections.emptySet(); - } - - Set ids = new HashSet<>(); - for (JsonNode node : array) { - ids.add(node.asText()); - } - return ids; - } - - private String extractHover(ObjectNode payload) { - return JsonUtils.string(payload, HOVER); - } - - private void setHoveredElement() { - Set unmatched; - unmatched = new HashSet<>(); - unmatched.add(hover); - unmatched = findDevices(unmatched); - if (devices.size() == 1) { - hovered = devices.iterator().next(); - devices.clear(); - } else { - unmatched = findHosts(unmatched); - if (hosts.size() == 1) { - hovered = hosts.iterator().next(); - hosts.clear(); - } else { - hovered = null; - log.debug("Skipping unmatched HOVER {}", unmatched); - } - } - } - - private Set findDevices(Set ids) { - Set unmatched = new HashSet<>(); - Device device; - - for (String id : ids) { - try { - device = deviceService.getDevice(deviceId(id)); - if (device != null) { - devices.add(device); - } else { - unmatched.add(id); - } - } catch (Exception e) { - unmatched.add(id); - } - } - return unmatched; - } - - private Set findHosts(Set ids) { - Set unmatched = new HashSet<>(); - Host host; - - for (String id : ids) { - try { - host = hostService.getHost(hostId(id)); - if (host != null) { - hosts.add(host); - } else { - unmatched.add(id); - } - } catch (Exception e) { - unmatched.add(id); - } - } - return unmatched; - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/PropertyPanel.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/PropertyPanel.java deleted file mode 100644 index c75eccf9..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/PropertyPanel.java +++ /dev/null @@ -1,370 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import com.google.common.collect.Sets; - -import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -/** - * Models a panel displayed on the Topology View. - */ -public class PropertyPanel { - - private static final NumberFormat NF = NumberFormat.getInstance(); - - private String title; - private String typeId; - private String id; - private List properties = new ArrayList<>(); - private List buttons = new ArrayList<>(); - - /** - * Constructs a property panel model with the given title and - * type identifier (icon to display). - * - * @param title title text - * @param typeId type (icon) ID - */ - public PropertyPanel(String title, String typeId) { - this.title = title; - this.typeId = typeId; - } - - /** - * Returns a number formatter to use for formatting integer and long - * property values. - *

- * This default implementation uses a formatter for the default - * locale. For example: - *

-     *     Locale.ENGLISH  :  1000 -> "1,000"
-     *     Locale.FRENCH   :  1000 -> "1 000"
-     *     Locale.GERMAN   :  1000 -> "1.000"
-     * 
- * - * @return the number formatter - */ - protected NumberFormat formatter() { - return NF; - } - - /** - * Adds an ID field to the panel data, to be included in - * the returned JSON data to the client. - * - * @param id the identifier - * @return self, for chaining - */ - public PropertyPanel id(String id) { - this.id = id; - return this; - } - - /** - * Adds a property to the panel data. - * - * @param key property key - * @param value property value - * @return self, for chaining - */ - public PropertyPanel addProp(String key, String value) { - properties.add(new Prop(key, value)); - return this; - } - - /** - * Adds a property to the panel data, using a decimal formatter. - * - * @param key property key - * @param value property value - * @return self, for chaining - */ - public PropertyPanel addProp(String key, int value) { - properties.add(new Prop(key, formatter().format(value))); - return this; - } - - /** - * Adds a property to the panel data, using a decimal formatter. - * - * @param key property key - * @param value property value - * @return self, for chaining - */ - public PropertyPanel addProp(String key, long value) { - properties.add(new Prop(key, formatter().format(value))); - return this; - } - - /** - * Adds a property to the panel data. Note that the value's - * {@link Object#toString toString()} method is used to convert the - * value to a string. - * - * @param key property key - * @param value property value - * @return self, for chaining - */ - public PropertyPanel addProp(String key, Object value) { - properties.add(new Prop(key, value.toString())); - return this; - } - - /** - * Adds a property to the panel data. Note that the value's - * {@link Object#toString toString()} method is used to convert the - * value to a string, from which the characters defined in the given - * regular expression string are stripped. - * - * @param key property key - * @param value property value - * @param reStrip regexp characters to strip from value string - * @return self, for chaining - */ - public PropertyPanel addProp(String key, Object value, String reStrip) { - String val = value.toString().replaceAll(reStrip, ""); - properties.add(new Prop(key, val)); - return this; - } - - /** - * Adds a separator to the panel data. - * - * @return self, for chaining - */ - public PropertyPanel addSeparator() { - properties.add(new Separator()); - return this; - } - - /** - * Returns the title text. - * - * @return title text - */ - public String title() { - return title; - } - - /** - * Returns the type identifier. - * - * @return type identifier - */ - public String typeId() { - return typeId; - } - - /** - * Returns the internal ID. - * - * @return the ID - */ - public String id() { - return id; - } - - /** - * Returns the list of properties to be displayed. - * - * @return the property list - */ - // TODO: consider protecting this? - public List properties() { - return properties; - } - - /** - * Returns the list of button descriptors. - * - * @return the button list - */ - // TODO: consider protecting this? - public List buttons() { - return buttons; - } - - // == MUTATORS - - /** - * Sets the title text. - * - * @param title title text - * @return self, for chaining - */ - public PropertyPanel title(String title) { - this.title = title; - return this; - } - - /** - * Sets the type identifier (icon ID). - * - * @param typeId type identifier - * @return self, for chaining - */ - public PropertyPanel typeId(String typeId) { - this.typeId = typeId; - return this; - } - - /** - * Removes properties with the given keys from the list. - * - * @param keys keys of properties to remove - * @return self, for chaining - */ - public PropertyPanel removeProps(String... keys) { - Set forRemoval = Sets.newHashSet(keys); - List toKeep = new ArrayList<>(); - for (Prop p: properties) { - if (!forRemoval.contains(p.key())) { - toKeep.add(p); - } - } - properties = toKeep; - return this; - } - - /** - * Removes all currently defined properties. - * - * @return self, for chaining - */ - public PropertyPanel removeAllProps() { - properties.clear(); - return this; - } - - /** - * Adds the given button descriptor to the panel data. - * - * @param button button descriptor - * @return self, for chaining - */ - public PropertyPanel addButton(ButtonId button) { - buttons.add(button); - return this; - } - - /** - * Removes buttons with the given descriptors from the list. - * - * @param descriptors descriptors to remove - * @return self, for chaining - */ - public PropertyPanel removeButtons(ButtonId... descriptors) { - Set forRemoval = Sets.newHashSet(descriptors); - List toKeep = new ArrayList<>(); - for (ButtonId bd: buttons) { - if (!forRemoval.contains(bd)) { - toKeep.add(bd); - } - } - buttons = toKeep; - return this; - } - - /** - * Removes all currently defined buttons. - * - * @return self, for chaining - */ - public PropertyPanel removeAllButtons() { - buttons.clear(); - return this; - } - - // ==================== - - - /** - * Simple data carrier for a property, composed of a key/value pair. - */ - public static class Prop { - private final String key; - private final String value; - - /** - * Constructs a property data value. - * - * @param key property key - * @param value property value - */ - public Prop(String key, String value) { - this.key = key; - this.value = value; - } - - /** - * Returns the property's key. - * - * @return the key - */ - public String key() { - return key; - } - - /** - * Returns the property's value. - * - * @return the value - */ - public String value() { - return value; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - Prop prop = (Prop) o; - return key.equals(prop.key) && value.equals(prop.value); - } - - @Override - public int hashCode() { - int result = key.hashCode(); - result = 31 * result + value.hashCode(); - return result; - } - - @Override - public String toString() { - return "{" + key + " -> " + value + "}"; - } - } - - /** - * Auxiliary class representing a separator property. - */ - public static class Separator extends Prop { - public Separator() { - super("-", ""); - } - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoConstants.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoConstants.java deleted file mode 100644 index e2034fa7..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoConstants.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -/** - * Defines string constants used in the Topology View of the ONOS GUI. - *

- * See also: - *

    - *
  • https://wiki.onosproject.org/display/ONOS/UI+Service+-+GlyphService
  • - *
- */ -public final class TopoConstants { - - /** - * Defines constants for standard glyph identifiers. - */ - public static final class Glyphs { - public static final String UNKNOWN = "unknown"; - public static final String BIRD = "bird"; - public static final String QUERY = "query"; - public static final String NODE = "node"; - public static final String SWITCH = "switch"; - public static final String ROADM = "roadm"; - public static final String ENDSTATION = "endstation"; - public static final String ROUTER = "router"; - public static final String BGP_SPEAKER = "bgpSpeaker"; - public static final String MICROWAVE = "microwave"; - public static final String CHAIN = "chain"; - public static final String CROWN = "crown"; - public static final String LOCK = "lock"; - public static final String TOPO = "topo"; - public static final String REFRESH = "refresh"; - public static final String GARBAGE = "garbage"; - public static final String FLOW_TABLE = "flowTable"; - public static final String PORT_TABLE = "portTable"; - public static final String GROUP_TABLE = "groupTable"; - public static final String SUMMARY = "summary"; - public static final String DETAILS = "details"; - public static final String PORTS = "ports"; - public static final String MAP = "map"; - public static final String CYCLE_LABELS = "cycleLabels"; - public static final String OBLIQUE = "oblique"; - public static final String FILTERS = "filters"; - public static final String RESET_ZOOM = "resetZoom"; - public static final String RELATED_INTENTS = "relatedIntents"; - public static final String NEXT_INTENT = "nextIntent"; - public static final String PREV_INTENT = "prevIntent"; - public static final String INTENT_TRAFFIC = "intentTraffic"; - public static final String ALL_TRAFFIC = "allTraffic"; - public static final String FLOWS = "flows"; - public static final String EQ_MASTER = "eqMaster"; - public static final String UI_ATTACHED = "uiAttached"; - public static final String CHECK_MARK = "checkMark"; - public static final String X_MARK = "xMark"; - public static final String TRIANGLE_UP = "triangleUp"; - public static final String TRIANGLE_DOWN = "triangleDown"; - public static final String PLUS = "plus"; - public static final String MINUS = "minus"; - public static final String PLAY = "play"; - public static final String STOP = "stop"; - public static final String CLOUD = "cloud"; - } - - /** - * Defines constants for property names on the default summary and - * details panels. - */ - public static final class Properties { - public static final String SEPARATOR = "-"; - - // summary panel - public static final String DEVICES = "Devices"; - public static final String LINKS = "Links"; - public static final String HOSTS = "Hosts"; - public static final String TOPOLOGY_SSCS = "Topology SCCs"; - public static final String INTENTS = "Intents"; - public static final String TUNNELS = "Tunnels"; - public static final String FLOWS = "Flows"; - public static final String VERSION = "Version"; - - // device details - public static final String URI = "URI"; - public static final String VENDOR = "Vendor"; - public static final String HW_VERSION = "H/W Version"; - public static final String SW_VERSION = "S/W Version"; - public static final String SERIAL_NUMBER = "Serial Number"; - public static final String PROTOCOL = "Protocol"; - public static final String LATITUDE = "Latitude"; - public static final String LONGITUDE = "Longitude"; - public static final String PORTS = "Ports"; - - // host details - public static final String MAC = "MAC"; - public static final String IP = "IP"; - public static final String VLAN = "VLAN"; - } - - /** - * Defines identities of core buttons that appear on the topology - * details panel. - */ - public static final class CoreButtons { - public static final ButtonId SHOW_DEVICE_VIEW = - new ButtonId("showDeviceView"); - - public static final ButtonId SHOW_FLOW_VIEW = - new ButtonId("showFlowView"); - - public static final ButtonId SHOW_PORT_VIEW = - new ButtonId("showPortView"); - - public static final ButtonId SHOW_GROUP_VIEW = - new ButtonId("showGroupView"); - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoElementType.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoElementType.java deleted file mode 100644 index 39947440..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoElementType.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -/** - * The topology element types to which a highlight can be applied. - */ -public enum TopoElementType { - DEVICE, HOST, LINK -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoJson.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoJson.java deleted file mode 100644 index efe69f5f..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoJson.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import static org.onosproject.ui.JsonUtils.envelope; - -/** - * JSON utilities for the Topology View. - */ -public final class TopoJson { - // package-private for unit test access - static final String SHOW_HIGHLIGHTS = "showHighlights"; - - static final String DEVICES = "devices"; - static final String HOSTS = "hosts"; - static final String LINKS = "links"; - static final String SUBDUE = "subdue"; - - static final String ID = "id"; - static final String LABEL = "label"; - static final String CSS = "css"; - static final String BADGE = "badge"; - static final String STATUS = "status"; - static final String TXT = "txt"; - static final String GID = "gid"; - static final String MSG = "msg"; - - static final String TITLE = "title"; - static final String TYPE = "type"; - static final String PROP_ORDER = "propOrder"; - static final String PROPS = "props"; - static final String BUTTONS = "buttons"; - - - private static final ObjectMapper MAPPER = new ObjectMapper(); - - private static ObjectNode objectNode() { - return MAPPER.createObjectNode(); - } - - private static ArrayNode arrayNode() { - return MAPPER.createArrayNode(); - } - - // non-instantiable - private TopoJson() { } - - /** - * Returns a formatted message ready to send to the topology view - * to render highlights. - * - * @param highlights highlights model to transform - * @return fully formatted "show highlights" message - */ - public static ObjectNode highlightsMessage(Highlights highlights) { - return envelope(SHOW_HIGHLIGHTS, json(highlights)); - } - - /** - * Transforms the given highlights model into a JSON message payload. - * - * @param highlights the model to transform - * @return JSON payload - */ - public static ObjectNode json(Highlights highlights) { - ObjectNode payload = objectNode(); - - ArrayNode devices = arrayNode(); - ArrayNode hosts = arrayNode(); - ArrayNode links = arrayNode(); - - payload.set(DEVICES, devices); - payload.set(HOSTS, hosts); - payload.set(LINKS, links); - - highlights.devices().forEach(dh -> devices.add(json(dh))); - highlights.hosts().forEach(hh -> hosts.add(json(hh))); - highlights.links().forEach(lh -> links.add(json(lh))); - - Highlights.Amount toSubdue = highlights.subdueLevel(); - if (!toSubdue.equals(Highlights.Amount.ZERO)) { - payload.put(SUBDUE, toSubdue.toString()); - } - return payload; - } - - private static ObjectNode json(NodeBadge b) { - ObjectNode n = objectNode() - .put(STATUS, b.status().code()) - .put(b.isGlyph() ? GID : TXT, b.text()); - if (b.message() != null) { - n.put(MSG, b.message()); - } - return n; - } - - private static ObjectNode json(DeviceHighlight dh) { - ObjectNode n = objectNode() - .put(ID, dh.elementId()); - if (dh.subdued()) { - n.put(SUBDUE, true); - } - NodeBadge badge = dh.badge(); - if (badge != null) { - n.set(BADGE, json(badge)); - } - return n; - } - - private static ObjectNode json(HostHighlight hh) { - ObjectNode n = objectNode() - .put(ID, hh.elementId()); - if (hh.subdued()) { - n.put(SUBDUE, true); - } - NodeBadge badge = hh.badge(); - if (badge != null) { - n.set(BADGE, json(badge)); - } - return n; - } - - private static ObjectNode json(LinkHighlight lh) { - ObjectNode n = objectNode() - .put(ID, lh.elementId()) - .put(LABEL, lh.label()) - .put(CSS, lh.cssClasses()); - if (lh.subdued()) { - n.put(SUBDUE, true); - } - return n; - } - - /** - * Translates the given property panel into JSON, for returning - * to the client. - * - * @param pp the property panel model - * @return JSON payload - */ - public static ObjectNode json(PropertyPanel pp) { - ObjectNode result = objectNode() - .put(TITLE, pp.title()) - .put(TYPE, pp.typeId()) - .put(ID, pp.id()); - - ObjectNode pnode = objectNode(); - ArrayNode porder = arrayNode(); - for (PropertyPanel.Prop p : pp.properties()) { - porder.add(p.key()); - pnode.put(p.key(), p.value()); - } - result.set(PROP_ORDER, porder); - result.set(PROPS, pnode); - - ArrayNode buttons = arrayNode(); - for (ButtonId b : pp.buttons()) { - buttons.add(b.id()); - } - result.set(BUTTONS, buttons); - return result; - } - -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoUtils.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoUtils.java deleted file mode 100644 index b38a7f7d..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/TopoUtils.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; - -import java.text.DecimalFormat; - -import static org.onosproject.net.LinkKey.linkKey; - -/** - * Utility methods for helping out with formatting data for the Topology View - * in the web client. - */ -public final class TopoUtils { - - // explicit decision made to not 'javadoc' these self explanatory constants - public static final double KILO = 1024; - public static final double MEGA = 1024 * KILO; - public static final double GIGA = 1024 * MEGA; - - public static final String GBITS_UNIT = "Gb"; - public static final String MBITS_UNIT = "Mb"; - public static final String KBITS_UNIT = "Kb"; - public static final String BITS_UNIT = "b"; - public static final String GBYTES_UNIT = "GB"; - public static final String MBYTES_UNIT = "MB"; - public static final String KBYTES_UNIT = "KB"; - public static final String BYTES_UNIT = "B"; - - - private static final DecimalFormat DF2 = new DecimalFormat("#,###.##"); - - private static final String COMPACT = "%s/%s-%s/%s"; - private static final String EMPTY = ""; - private static final String SPACE = " "; - private static final String PER_SEC = "ps"; - private static final String FLOW = "flow"; - private static final String FLOWS = "flows"; - - // non-instantiable - private TopoUtils() { } - - /** - * Returns a compact identity for the given link, in the form - * used to identify links in the Topology View on the client. - * - * @param link link - * @return compact link identity - */ - public static String compactLinkString(Link link) { - return String.format(COMPACT, link.src().elementId(), link.src().port(), - link.dst().elementId(), link.dst().port()); - } - - /** - * Produces a canonical link key, that is, one that will match both a link - * and its inverse. - * - * @param link the link - * @return canonical key - */ - public static LinkKey canonicalLinkKey(Link link) { - String sn = link.src().elementId().toString(); - String dn = link.dst().elementId().toString(); - return sn.compareTo(dn) < 0 ? - linkKey(link.src(), link.dst()) : linkKey(link.dst(), link.src()); - } - - /** - * Returns human readable count of bytes, to be displayed as a label. - * - * @param bytes number of bytes - * @return formatted byte count - */ - public static String formatBytes(long bytes) { - String unit; - double value; - if (bytes > GIGA) { - value = bytes / GIGA; - unit = GBYTES_UNIT; - } else if (bytes > MEGA) { - value = bytes / MEGA; - unit = MBYTES_UNIT; - } else if (bytes > KILO) { - value = bytes / KILO; - unit = KBYTES_UNIT; - } else { - value = bytes; - unit = BYTES_UNIT; - } - return DF2.format(value) + SPACE + unit; - } - - /** - * Returns human readable bit rate, to be displayed as a label. - * - * @param bytes bytes per second - * @return formatted bits per second - */ - public static String formatBitRate(long bytes) { - String unit; - double value; - - //Convert to bits - long bits = bytes * 8; - if (bits > GIGA) { - value = bits / GIGA; - unit = GBITS_UNIT; - - // NOTE: temporary hack to clip rate at 10.0 Gbps - // Added for the CORD Fabric demo at ONS 2015 - // TODO: provide a more elegant solution to this issue - if (value > 10.0) { - value = 10.0; - } - - } else if (bits > MEGA) { - value = bits / MEGA; - unit = MBITS_UNIT; - } else if (bits > KILO) { - value = bits / KILO; - unit = KBITS_UNIT; - } else { - value = bits; - unit = BITS_UNIT; - } - return DF2.format(value) + SPACE + unit + PER_SEC; - } - - /** - * Returns human readable flow count, to be displayed as a label. - * - * @param flows number of flows - * @return formatted flow count - */ - public static String formatFlows(long flows) { - if (flows < 1) { - return EMPTY; - } - return String.valueOf(flows) + SPACE + (flows > 1 ? FLOWS : FLOW); - } -} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/package-info.java deleted file mode 100644 index 85ac7fea..00000000 --- a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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. - */ - -/** - * Mechanism for dynamically extending topology view with information and - * behaviour overlays. - */ -package org.onosproject.ui.topo; \ No newline at end of file diff --git a/framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/flow/doc-files/flow-design.png b/framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/flow/doc-files/flow-design.png deleted file mode 100644 index e08745d1..00000000 Binary files a/framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/flow/doc-files/flow-design.png and /dev/null differ diff --git a/framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/intent/doc-files/intent-design.png b/framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/intent/doc-files/intent-design.png deleted file mode 100644 index 4392ad45..00000000 Binary files a/framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/intent/doc-files/intent-design.png and /dev/null differ diff --git a/framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/intent/doc-files/intent-states.png b/framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/intent/doc-files/intent-states.png deleted file mode 100644 index 32804191..00000000 Binary files a/framework/src/onos/core/api/src/main/javadoc/org/onosproject/net/intent/doc-files/intent-states.png and /dev/null differ diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/TestApplicationId.java b/framework/src/onos/core/api/src/test/java/org/onosproject/TestApplicationId.java deleted file mode 100644 index a57d5e8a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/TestApplicationId.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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; - -import org.onosproject.core.ApplicationId; - -import java.util.Objects; - -/** - * Test application ID. - */ -public class TestApplicationId implements ApplicationId { - - private final String name; - private final short id; - - public TestApplicationId(String name) { - this.name = name; - this.id = (short) Objects.hash(name); - } - - public static ApplicationId create(String name) { - return new TestApplicationId(name); - } - - @Override - public short id() { - return id; - } - - @Override - public String name() { - return name; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/VersionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/VersionTest.java deleted file mode 100644 index ecf5f34e..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/VersionTest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.core.Version; - -import static org.junit.Assert.*; -import static org.onosproject.core.Version.version; - -/** - * Tests of the version descriptor. - */ -public class VersionTest { - - @Test - public void fromParts() { - Version v = version(1, 2, "3", "4321"); - assertEquals("wrong major", 1, v.major()); - assertEquals("wrong minor", 2, v.minor()); - assertEquals("wrong patch", "3", v.patch()); - assertEquals("wrong build", "4321", v.build()); - } - - @Test - public void fromString() { - Version v = version("1.2.3.4321"); - assertEquals("wrong major", 1, v.major()); - assertEquals("wrong minor", 2, v.minor()); - assertEquals("wrong patch", "3", v.patch()); - assertEquals("wrong build", "4321", v.build()); - } - - @Test - public void snapshot() { - Version v = version("1.2.3-SNAPSHOT"); - assertEquals("wrong major", 1, v.major()); - assertEquals("wrong minor", 2, v.minor()); - assertEquals("wrong patch", "3", v.patch()); - assertEquals("wrong build", "SNAPSHOT", v.build()); - } - - @Test - public void shortNumber() { - Version v = version("1.2.3"); - assertEquals("wrong major", 1, v.major()); - assertEquals("wrong minor", 2, v.minor()); - assertEquals("wrong patch", "3", v.patch()); - assertEquals("wrong build", null, v.build()); - } - - @Test - public void minimal() { - Version v = version("1.4"); - assertEquals("wrong major", 1, v.major()); - assertEquals("wrong minor", 4, v.minor()); - assertEquals("wrong patch", null, v.patch()); - assertEquals("wrong build", null, v.build()); - } - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(version("1.2.3.4321"), version(1, 2, "3", "4321")) - .addEqualityGroup(version("1.9.3.4321"), version(1, 9, "3", "4321")) - .addEqualityGroup(version("1.2.8.4321"), version(1, 2, "8", "4321")) - .addEqualityGroup(version("1.2.3.x"), version(1, 2, "3", "x")) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationAdminServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationAdminServiceAdapter.java deleted file mode 100644 index edcc2094..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationAdminServiceAdapter.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.core.Application; -import org.onosproject.core.ApplicationId; -import org.onosproject.security.Permission; - -import java.io.InputStream; -import java.util.Set; - -/** - * Adapter for testing against application admin service. - */ -public class ApplicationAdminServiceAdapter extends ApplicationServiceAdapter - implements ApplicationAdminService { - @Override - public Set getApplications() { - return null; - } - - @Override - public Application getApplication(ApplicationId appId) { - return null; - } - - @Override - public ApplicationState getState(ApplicationId appId) { - return null; - } - - @Override - public Set getPermissions(ApplicationId appId) { - return null; - } - - @Override - public void addListener(ApplicationListener listener) { - } - - @Override - public void removeListener(ApplicationListener listener) { - } - - @Override - public Application install(InputStream appDescStream) { - return null; - } - - @Override - public void uninstall(ApplicationId appId) { - } - - @Override - public void activate(ApplicationId appId) { - } - - @Override - public void deactivate(ApplicationId appId) { - } - - @Override - public void setPermissions(ApplicationId appId, Set permissions) { - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationEventTest.java deleted file mode 100644 index 34c593c4..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationEventTest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.junit.Test; -import org.onosproject.core.Application; -import org.onosproject.core.DefaultApplication; -import org.onosproject.event.AbstractEventTest; - -import java.util.Optional; - -import static org.onosproject.app.ApplicationEvent.Type.APP_ACTIVATED; -import static org.onosproject.app.DefaultApplicationDescriptionTest.*; -import static org.onosproject.core.DefaultApplicationTest.APP_ID; - -/** - * Test of the application event. - */ -public class ApplicationEventTest extends AbstractEventTest { - - private Application createApp() { - return new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE, - PERMS, Optional.of(FURL), FEATURES, APPS); - } - - @Test - public void withoutTime() { - Application app = createApp(); - ApplicationEvent event = new ApplicationEvent(APP_ACTIVATED, app, 123L); - validateEvent(event, APP_ACTIVATED, app, 123L); - } - - @Test - public void withTime() { - Application app = createApp(); - long before = System.currentTimeMillis(); - ApplicationEvent event = new ApplicationEvent(APP_ACTIVATED, app); - long after = System.currentTimeMillis(); - validateEvent(event, APP_ACTIVATED, app, before, after); - } - -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationExceptionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationExceptionTest.java deleted file mode 100644 index a0c7ef1c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationExceptionTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onlab.junit.ExceptionTest; - -public class ApplicationExceptionTest extends ExceptionTest { - - @Override - protected Exception getDefault() { - return new ApplicationException(); - } - - @Override - protected Exception getWithMessage() { - return new ApplicationException(MESSAGE); - } - - @Override - protected Exception getWithMessageAndCause() { - return new ApplicationException(MESSAGE, CAUSE); - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationServiceAdapter.java deleted file mode 100644 index 96324a91..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationServiceAdapter.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.core.Application; -import org.onosproject.core.ApplicationId; -import org.onosproject.security.Permission; - -import java.util.Set; - -/** - * Adapter for testing against application service. - */ -public class ApplicationServiceAdapter implements ApplicationService { - @Override - public Set getApplications() { - return null; - } - - @Override - public ApplicationId getId(String name) { - return null; - } - - @Override - public Application getApplication(ApplicationId appId) { - return null; - } - - @Override - public ApplicationState getState(ApplicationId appId) { - return null; - } - - @Override - public Set getPermissions(ApplicationId appId) { - return null; - } - - @Override - public void registerDeactivateHook(ApplicationId appId, Runnable hook) { - } - - @Override - public void addListener(ApplicationListener listener) { - } - - @Override - public void removeListener(ApplicationListener listener) { - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationStoreAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationStoreAdapter.java deleted file mode 100644 index 1a9ad8d2..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/app/ApplicationStoreAdapter.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import org.onosproject.core.Application; -import org.onosproject.core.ApplicationId; -import org.onosproject.security.Permission; -import org.onosproject.store.AbstractStore; - -import java.io.InputStream; -import java.util.Set; - -/** - * Adapter for application testing against application store. - */ -public class ApplicationStoreAdapter - extends AbstractStore - implements ApplicationStore { - @Override - public Set getApplications() { - return null; - } - - @Override - public ApplicationId getId(String name) { - return null; - } - - @Override - public Application getApplication(ApplicationId appId) { - return null; - } - - @Override - public ApplicationState getState(ApplicationId appId) { - return null; - } - - @Override - public Application create(InputStream appDescStream) { - return null; - } - - @Override - public void remove(ApplicationId appId) { - } - - @Override - public void activate(ApplicationId appId) { - } - - @Override - public void deactivate(ApplicationId appId) { - } - - @Override - public Set getPermissions(ApplicationId appId) { - return null; - } - - @Override - public void setPermissions(ApplicationId appId, Set permissions) { - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java deleted file mode 100644 index 0e93c1fe..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.app; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import org.junit.Test; -import org.onosproject.core.ApplicationRole; -import org.onosproject.core.Version; -import org.onosproject.security.AppPermission; -import org.onosproject.security.Permission; - -import java.net.URI; -import java.util.List; -import java.util.Set; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - - -/** - * Basic tests of the default app description. - */ -public class DefaultApplicationDescriptionTest { - - public static final String APP_NAME = "org.foo.app"; - public static final Version VER = Version.version(1, 2, "a", null); - public static final String DESC = "Awesome application from Circus, Inc."; - public static final String ORIGIN = "Circus"; - public static final ApplicationRole ROLE = ApplicationRole.ADMIN; - public static final Set PERMS = ImmutableSet.of( - new Permission(AppPermission.class.getName(), "FLOWRULE_WRITE"), - new Permission(AppPermission.class.getName(), "FLOWRULE_READ")); - public static final URI FURL = URI.create("mvn:org.foo-features/1.2a/xml/features"); - public static final List FEATURES = ImmutableList.of("foo", "bar"); - public static final List APPS = ImmutableList.of("fifi"); - - @Test - public void basics() { - ApplicationDescription app = - new DefaultApplicationDescription(APP_NAME, VER, DESC, ORIGIN, - ROLE, PERMS, FURL, FEATURES, APPS); - assertEquals("incorrect id", APP_NAME, app.name()); - assertEquals("incorrect version", VER, app.version()); - assertEquals("incorrect description", DESC, app.description()); - assertEquals("incorrect origin", ORIGIN, app.origin()); - assertEquals("incorect role", ROLE, app.role()); - assertEquals("incorrect permissions", PERMS, app.permissions()); - assertEquals("incorrect features repo", FURL, app.featuresRepo().get()); - assertEquals("incorrect features", FEATURES, app.features()); - assertEquals("incorrect apps", APPS, app.requiredApps()); - assertTrue("incorrect toString", app.toString().contains(APP_NAME)); - } - -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/cfg/ComponentConfigAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/cfg/ComponentConfigAdapter.java deleted file mode 100644 index 0fccef81..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/cfg/ComponentConfigAdapter.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cfg; - -import java.util.Set; - -import com.google.common.collect.ImmutableSet; - -/** - * Adapter for testing against component configuration service. - */ -public class ComponentConfigAdapter implements ComponentConfigService { - - @Override - public Set getComponentNames() { - return null; - } - - @Override - public void registerProperties(Class componentClass) { - - } - - @Override - public void unregisterProperties(Class componentClass, boolean clear) { - - } - - @Override - public Set getProperties(String componentName) { - return ImmutableSet.of(); - } - - @Override - public void setProperty(String componentName, String name, String value) { - - } - - @Override - public void preSetProperty(String componentName, String name, String value) { - } - - @Override - public void unsetProperty(String componentName, String name) { - - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/cfg/ConfigPropertyTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/cfg/ConfigPropertyTest.java deleted file mode 100644 index b4ba8634..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/cfg/ConfigPropertyTest.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cfg; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.cfg.ConfigProperty.Type; - -import static org.junit.Assert.*; -import static org.onosproject.cfg.ConfigProperty.Type.*; -import static org.onosproject.cfg.ConfigProperty.defineProperty; -import static org.onosproject.cfg.ConfigProperty.resetProperty; -import static org.onosproject.cfg.ConfigProperty.setProperty; - -/** - * Set of tests of the configuration property class. - */ -public class ConfigPropertyTest { - - @Test - public void basics() { - ConfigProperty p = defineProperty("foo", STRING, "bar", "Foo Prop"); - validate(p, "foo", STRING, "bar", "bar"); - p = setProperty(p, "BAR"); - validate(p, "foo", STRING, "BAR", "bar"); - p = resetProperty(p); - validate(p, "foo", STRING, "bar", "bar"); - } - - @Test - public void equality() { - new EqualsTester() - .addEqualityGroup(defineProperty("foo", STRING, "bar", "Desc"), - defineProperty("foo", STRING, "goo", "Desc")) - .addEqualityGroup(defineProperty("bar", STRING, "bar", "Desc"), - defineProperty("bar", STRING, "goo", "Desc")) - .testEquals(); - } - - private void validate(ConfigProperty p, String name, Type type, String v, String dv) { - assertEquals("incorrect name", name, p.name()); - assertEquals("incorrect type", type, p.type()); - assertEquals("incorrect value", v, p.value()); - assertEquals("incorrect default", dv, p.defaultValue()); - assertEquals("incorrect description", "Foo Prop", p.description()); - } - - @Test - public void asInteger() { - ConfigProperty p = defineProperty("foo", INTEGER, "123", "Foo Prop"); - validate(p, "foo", INTEGER, "123", "123"); - assertEquals("incorrect value", 123, p.asInteger()); - assertEquals("incorrect value", 123L, p.asLong()); - } - - @Test - public void asLong() { - ConfigProperty p = defineProperty("foo", LONG, "123", "Foo Prop"); - validate(p, "foo", LONG, "123", "123"); - assertEquals("incorrect value", 123L, p.asLong()); - } - - @Test - public void asFloat() { - ConfigProperty p = defineProperty("foo", FLOAT, "123.0", "Foo Prop"); - validate(p, "foo", FLOAT, "123.0", "123.0"); - assertEquals("incorrect value", 123.0, p.asFloat(), 0.01); - assertEquals("incorrect value", 123.0, p.asDouble(), 0.01); - } - - @Test - public void asDouble() { - ConfigProperty p = defineProperty("foo", DOUBLE, "123.0", "Foo Prop"); - validate(p, "foo", DOUBLE, "123.0", "123.0"); - assertEquals("incorrect value", 123.0, p.asDouble(), 0.01); - } - - @Test - public void asBoolean() { - ConfigProperty p = defineProperty("foo", BOOLEAN, "true", "Foo Prop"); - validate(p, "foo", BOOLEAN, "true", "true"); - assertEquals("incorrect value", true, p.asBoolean()); - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/ClusterServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/ClusterServiceAdapter.java deleted file mode 100644 index b88b5ff6..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/ClusterServiceAdapter.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.cluster; - -import java.util.Set; - -import org.joda.time.DateTime; -import org.onlab.packet.IpAddress; - -import com.google.common.collect.ImmutableSet; - -/** - * Test adapter for the cluster service. - */ -public class ClusterServiceAdapter implements ClusterService { - ControllerNode local = new DefaultControllerNode(new NodeId("local"), - IpAddress.valueOf("127.0.0.1")); - - @Override - public ControllerNode getLocalNode() { - return local; - } - - @Override - public Set getNodes() { - return ImmutableSet.of(local); - } - - @Override - public ControllerNode getNode(NodeId nodeId) { - return null; - } - - @Override - public ControllerNode.State getState(NodeId nodeId) { - return null; - } - - @Override - public DateTime getLastUpdated(NodeId nodeId) { - return null; - } - - @Override - public void addListener(ClusterEventListener listener) { - } - - @Override - public void removeListener(ClusterEventListener listener) { - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/ControllerNodeToNodeIdTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/ControllerNodeToNodeIdTest.java deleted file mode 100644 index 0b4d1ef6..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/ControllerNodeToNodeIdTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.cluster; - -import static com.google.common.base.Predicates.notNull; -import static org.junit.Assert.*; -import static org.onosproject.cluster.ControllerNodeToNodeId.toNodeId; - -import java.util.Arrays; -import java.util.List; - -import org.junit.Test; -import org.onlab.packet.IpAddress; - -import com.google.common.collect.FluentIterable; - - -public class ControllerNodeToNodeIdTest { - - private static final NodeId NID1 = new NodeId("foo"); - private static final NodeId NID2 = new NodeId("bar"); - private static final NodeId NID3 = new NodeId("buz"); - - private static final IpAddress IP1 = IpAddress.valueOf("127.0.0.1"); - private static final IpAddress IP2 = IpAddress.valueOf("127.0.0.2"); - private static final IpAddress IP3 = IpAddress.valueOf("127.0.0.3"); - - private static final ControllerNode CN1 = new DefaultControllerNode(NID1, IP1); - private static final ControllerNode CN2 = new DefaultControllerNode(NID2, IP2); - private static final ControllerNode CN3 = new DefaultControllerNode(NID3, IP3); - - - @Test - public final void testToNodeId() { - - final Iterable nodes = Arrays.asList(CN1, CN2, CN3, null); - final List nodeIds = Arrays.asList(NID1, NID2, NID3); - - assertEquals(nodeIds, - FluentIterable.from(nodes) - .transform(toNodeId()) - .filter(notNull()) - .toList()); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java deleted file mode 100644 index be0321bf..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cluster; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit tests for the leadership event test. - */ -public class LeadershipEventTest { - private final NodeId node1 = new NodeId("1"); - private final NodeId node2 = new NodeId("2"); - private final Leadership lead1 = new Leadership("topic1", node1, 1L, 2L); - private final Leadership lead2 = new Leadership("topic1", node2, 1L, 2L); - private final LeadershipEvent event1 = - new LeadershipEvent(LeadershipEvent.Type.LEADER_ELECTED, lead1); - private final long time = System.currentTimeMillis(); - private final LeadershipEvent event2 = - new LeadershipEvent(LeadershipEvent.Type.CANDIDATES_CHANGED, - lead2, time); - private final LeadershipEvent sameAsEvent2 = - new LeadershipEvent(LeadershipEvent.Type.CANDIDATES_CHANGED, - lead2, time); - private final LeadershipEvent event3 = - new LeadershipEvent(LeadershipEvent.Type.LEADER_BOOTED, lead1); - private final LeadershipEvent event4 = - new LeadershipEvent(LeadershipEvent.Type.LEADER_REELECTED, lead1); - private final LeadershipEvent event5 = - new LeadershipEvent(LeadershipEvent.Type.LEADER_REELECTED, lead2); - - /** - * Tests for proper operation of equals(), hashCode() and toString() methods. - */ - @Test - public void checkEquals() { - new EqualsTester() - .addEqualityGroup(event1) - .addEqualityGroup(event2, sameAsEvent2) - .addEqualityGroup(event3) - .addEqualityGroup(event4) - .addEqualityGroup(event5) - .testEquals(); - } - - /** - * Tests that objects are created properly. - */ - @Test - public void checkConstruction() { - assertThat(event1.type(), is(LeadershipEvent.Type.LEADER_ELECTED)); - assertThat(event1.subject(), is(lead1)); - - assertThat(event2.time(), is(time)); - assertThat(event2.type(), is(LeadershipEvent.Type.CANDIDATES_CHANGED)); - assertThat(event2.subject(), is(lead2)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java deleted file mode 100644 index e1d421d0..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cluster; - -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.CompletableFuture; - -/** - * Test adapter for leadership service. - */ -public class LeadershipServiceAdapter implements LeadershipService { - - @Override - public NodeId getLeader(String path) { - return null; - } - - @Override - public Leadership getLeadership(String path) { - return null; - } - - @Override - public Set ownedTopics(NodeId nodeId) { - return null; - } - - @Override - public CompletableFuture runForLeadership(String path) { - return null; - } - - @Override - public CompletableFuture withdraw(String path) { - return null; - } - - @Override - public Map getLeaderBoard() { - return null; - } - - @Override - public void addListener(LeadershipEventListener listener) { - - } - - @Override - public void removeListener(LeadershipEventListener listener) { - - } - - @Override - public Map> getCandidates() { - return null; - } - - @Override - public List getCandidates(String path) { - return null; - } - - @Override - public boolean stepdown(String path) { - return false; - } - - @Override - public boolean makeTopCandidate(String path, NodeId nodeId) { - return false; - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java deleted file mode 100644 index e2a86587..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.cluster; - -import org.junit.Test; - -import com.google.common.collect.ImmutableList; -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit tests for the Leadership class. - */ -public class LeadershipTest { - private final NodeId node1 = new NodeId("1"); - private final NodeId node2 = new NodeId("2"); - private final Leadership lead1 = new Leadership("topic1", node1, 1L, 2L); - private final Leadership sameAsLead1 = new Leadership("topic1", node1, 1L, 2L); - private final Leadership lead2 = new Leadership("topic2", node1, 1L, 2L); - private final Leadership lead3 = new Leadership("topic1", node1, 2L, 2L); - private final Leadership lead4 = new Leadership("topic1", node1, 3L, 2L); - private final Leadership lead5 = new Leadership("topic1", node1, 3L, 3L); - private final Leadership lead6 = new Leadership("topic1", node1, - ImmutableList.of(node2), 1L, 2L); - private final Leadership lead7 = new Leadership("topic1", - ImmutableList.of(node2), 1L, 2L); - - /** - * Tests for proper operation of equals(), hashCode() and toString() methods. - */ - @Test - public void checkEquals() { - new EqualsTester() - .addEqualityGroup(lead1, sameAsLead1) - .addEqualityGroup(lead2) - .addEqualityGroup(lead3) - .addEqualityGroup(lead4) - .addEqualityGroup(lead5) - .addEqualityGroup(lead6) - .addEqualityGroup(lead7) - .testEquals(); - } - - /** - * Tests that objects are created properly and accessor methods return - * the correct vsalues. - */ - @Test - public void checkConstruction() { - assertThat(lead6.electedTime(), is(2L)); - assertThat(lead6.epoch(), is(1L)); - assertThat(lead6.leader(), is(node1)); - assertThat(lead6.topic(), is("topic1")); - assertThat(lead6.candidates(), hasSize(1)); - assertThat(lead6.candidates(), contains(node2)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/RoleInfoTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/RoleInfoTest.java deleted file mode 100644 index 4998bf5a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/cluster/RoleInfoTest.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.cluster; - -import java.util.List; - -import org.junit.Test; - -import com.google.common.collect.Lists; -import com.google.common.testing.EqualsTester; - -import static org.junit.Assert.assertEquals; - -/** - * Test to check behavioral correctness of the RoleInfo structure. - */ -public class RoleInfoTest { - private static final NodeId N1 = new NodeId("n1"); - private static final NodeId N2 = new NodeId("n2"); - private static final NodeId N3 = new NodeId("n3"); - private static final NodeId N4 = new NodeId("n4"); - - private static final List BKUP1 = Lists.newArrayList(N2, N3); - private static final List BKUP2 = Lists.newArrayList(N3, N4); - - private static final RoleInfo RI1 = new RoleInfo(N1, BKUP1); - private static final RoleInfo RI2 = new RoleInfo(N1, BKUP2); - private static final RoleInfo RI3 = new RoleInfo(N2, BKUP1); - private static final RoleInfo RI4 = new RoleInfo(null, BKUP2); - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(RI1, new RoleInfo(new NodeId("n1"), Lists.newArrayList(N2, N3))) - .addEqualityGroup(RI3); - } - - @Test - public void basics() { - assertEquals("wrong master", new NodeId("n1"), RI1.master()); - assertEquals("wrong Backups", RI1.backups(), Lists.newArrayList(N2, N3)); - assertEquals("wrong empty master", RI4.master(), null); - - List bkup3 = Lists.newArrayList(N3, new NodeId("n4")); - assertEquals("equals() broken", new RoleInfo(N1, bkup3), RI2); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/codec/JsonCodecTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/codec/JsonCodecTest.java deleted file mode 100644 index eb04d9a5..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/codec/JsonCodecTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.codec; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.ImmutableList; -import org.junit.Test; - -import java.util.List; -import java.util.Objects; - -import static org.junit.Assert.assertEquals; - -/** - * Test of the base JSON codec abstraction. - */ -public class JsonCodecTest { - - private static class Foo { - final String name; - - Foo(String name) { - this.name = name; - } - - @Override - public int hashCode() { - return Objects.hash(name); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final Foo other = (Foo) obj; - return Objects.equals(this.name, other.name); - } - } - - private static class FooCodec extends JsonCodec { - @Override - public ObjectNode encode(Foo entity, CodecContext context) { - return context.mapper().createObjectNode().put("name", entity.name); - } - - @Override - public Foo decode(ObjectNode json, CodecContext context) { - return new Foo(json.get("name").asText()); - } - } - - @Test - public void encode() { - Foo f1 = new Foo("foo"); - Foo f2 = new Foo("bar"); - FooCodec codec = new FooCodec(); - ImmutableList entities = ImmutableList.of(f1, f2); - ArrayNode json = codec.encode(entities, new TestContext()); - List foos = codec.decode(json, new TestContext()); - assertEquals("incorrect encode/decode", entities, foos); - } - - private class TestContext implements CodecContext { - private ObjectMapper mapper = new ObjectMapper(); - @Override - public ObjectMapper mapper() { - return mapper; - } - - @Override - public JsonCodec codec(Class entityClass) { - return null; - } - - @Override - public T getService(Class serviceClass) { - return null; - } - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/core/ApplicationIdStoreAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/core/ApplicationIdStoreAdapter.java deleted file mode 100644 index c3d0f237..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/core/ApplicationIdStoreAdapter.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.core; - -import java.util.Set; - -/** - * Adapter for testing against app id store. - */ -public class ApplicationIdStoreAdapter implements ApplicationIdStore { - @Override - public Set getAppIds() { - return null; - } - - @Override - public ApplicationId getAppId(Short id) { - return null; - } - - @Override - public ApplicationId getAppId(String name) { - return null; - } - - @Override - public ApplicationId registerApplication(String identifier) { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/core/CoreServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/core/CoreServiceAdapter.java deleted file mode 100644 index 6d45e8c5..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/core/CoreServiceAdapter.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.core; - -import java.util.Set; - -/** - * Test adapter for core service. - */ -public class CoreServiceAdapter implements CoreService { - @Override - public Version version() { - return null; - } - - @Override - public Set getAppIds() { - return null; - } - - @Override - public ApplicationId getAppId(Short id) { - return null; - } - - @Override - public ApplicationId getAppId(String name) { - return null; - } - - @Override - public ApplicationId registerApplication(String name) { - return null; - } - - @Override - public ApplicationId registerApplication(String name, Runnable preDeactivate) { - return null; - } - - @Override - public IdGenerator getIdGenerator(String topic) { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java deleted file mode 100644 index 77b3812b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.core; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import java.util.Optional; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.onosproject.app.DefaultApplicationDescriptionTest.*; - -/** - * Basic tests of the default app descriptor. - */ -public class DefaultApplicationTest { - - public static final ApplicationId APP_ID = new DefaultApplicationId(2, APP_NAME); - - @Test - public void basics() { - Application app = new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE, - PERMS, Optional.of(FURL), FEATURES, APPS); - assertEquals("incorrect id", APP_ID, app.id()); - assertEquals("incorrect version", VER, app.version()); - assertEquals("incorrect description", DESC, app.description()); - assertEquals("incorrect origin", ORIGIN, app.origin()); - assertEquals("incorrect role", ROLE, app.role()); - assertEquals("incorrect permissions", PERMS, app.permissions()); - assertEquals("incorrect features repo", FURL, app.featuresRepo().get()); - assertEquals("incorrect features", FEATURES, app.features()); - assertEquals("incorrect apps", APPS, app.requiredApps()); - assertTrue("incorrect toString", app.toString().contains(APP_NAME)); - } - - @Test - public void testEquality() { - Application a1 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE, - PERMS, Optional.of(FURL), FEATURES, APPS); - Application a2 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE, - PERMS, Optional.of(FURL), FEATURES, APPS); - Application a3 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE, - PERMS, Optional.empty(), FEATURES, APPS); - Application a4 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN + "asd", ROLE, - PERMS, Optional.of(FURL), FEATURES, APPS); - new EqualsTester().addEqualityGroup(a1, a2) - .addEqualityGroup(a3).addEqualityGroup(a4).testEquals(); - } - -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/core/DefaultGroupIdTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/core/DefaultGroupIdTest.java deleted file mode 100644 index 21dea86b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/core/DefaultGroupIdTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.core; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test for DefaultGroupId. - */ -public class DefaultGroupIdTest { - - /** - * Tests the equality of the instances. - */ - @Test - public void testEquality() { - DefaultGroupId id1 = new DefaultGroupId((short) 1); - DefaultGroupId id2 = new DefaultGroupId((short) 1); - DefaultGroupId id3 = new DefaultGroupId((short) 2); - - new EqualsTester() - .addEqualityGroup(id1, id2) - .addEqualityGroup(id3) - .testEquals(); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/core/UnavailableIdExceptionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/core/UnavailableIdExceptionTest.java deleted file mode 100644 index ac565d80..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/core/UnavailableIdExceptionTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.core; - -import org.onlab.junit.ExceptionTest; - -public class UnavailableIdExceptionTest extends ExceptionTest { - - @Override - protected Exception getDefault() { - return new UnavailableIdException(); - } - - @Override - protected Exception getWithMessage() { - return new UnavailableIdException(MESSAGE); - } - - @Override - protected Exception getWithMessageAndCause() { - return new UnavailableIdException(MESSAGE, CAUSE); - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/event/AbstractEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/event/AbstractEventTest.java deleted file mode 100644 index c66c4b84..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/event/AbstractEventTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.onosproject.event.TestEvent.Type.FOO; - -/** - * Tests of the base event abstraction. - */ -public class AbstractEventTest { - - /** - * Validates the base attributes of an event. - * - * @param event event to validate - * @param type event type - * @param subject event subject - * @param time event time - * @param type of event - * @param type of subject - */ - protected static - void validateEvent(Event event, T type, S subject, long time) { - assertEquals("incorrect type", type, event.type()); - assertEquals("incorrect subject", subject, event.subject()); - assertEquals("incorrect time", time, event.time()); - } - - /** - * Validates the base attributes of an event. - * - * @param event event to validate - * @param type event type - * @param subject event subject - * @param minTime minimum event time inclusive - * @param maxTime maximum event time inclusive - * @param type of event - * @param type of subject - */ - protected static - void validateEvent(Event event, T type, S subject, - long minTime, long maxTime) { - assertEquals("incorrect type", type, event.type()); - assertEquals("incorrect subject", subject, event.subject()); - assertTrue("incorrect time", minTime <= event.time() && event.time() <= maxTime); - } - - @Test - public void withTime() { - TestEvent event = new TestEvent(FOO, "foo", 123L); - validateEvent(event, FOO, "foo", 123L); - } - - @Test - public void withoutTime() { - long before = System.currentTimeMillis(); - TestEvent event = new TestEvent(FOO, "foo"); - long after = System.currentTimeMillis(); - validateEvent(event, FOO, "foo", before, after); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/event/BrokenListener.java b/framework/src/onos/core/api/src/test/java/org/onosproject/event/BrokenListener.java deleted file mode 100644 index 1a013ada..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/event/BrokenListener.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -/** - * Test event listener fixture. - */ -public class BrokenListener extends TestListener { - - public void event(TestEvent event) { - throw new IllegalStateException("boom"); - } - -} - diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/event/DefaultEventSinkRegistryTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/event/DefaultEventSinkRegistryTest.java deleted file mode 100644 index 2e24228a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/event/DefaultEventSinkRegistryTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Tests of the default event sink registry. - */ -public class DefaultEventSinkRegistryTest { - - private DefaultEventSinkRegistry registry; - - private static class FooEvent extends TestEvent { - public FooEvent(String subject) { - super(Type.FOO, subject); - } - } - - private static class BarEvent extends TestEvent { - public BarEvent(String subject) { - super(Type.BAR, subject); - } - } - - private static class FooSink implements EventSink { - @Override public void process(FooEvent event) {} - } - - private static class BarSink implements EventSink { - @Override public void process(BarEvent event) {} - } - - @Before - public void setUp() { - registry = new DefaultEventSinkRegistry(); - } - - @Test - public void basics() { - FooSink fooSink = new FooSink(); - BarSink barSink = new BarSink(); - registry.addSink(FooEvent.class, fooSink); - registry.addSink(BarEvent.class, barSink); - - assertEquals("incorrect sink count", 2, registry.getSinks().size()); - assertEquals("incorrect sink", fooSink, registry.getSink(FooEvent.class)); - assertEquals("incorrect sink", barSink, registry.getSink(BarEvent.class)); - - registry.removeSink(FooEvent.class); - assertNull("incorrect sink", registry.getSink(FooEvent.class)); - assertEquals("incorrect sink", barSink, registry.getSink(BarEvent.class)); - - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/event/EventDeliveryServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/event/EventDeliveryServiceAdapter.java deleted file mode 100644 index b81155e6..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/event/EventDeliveryServiceAdapter.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.event; - -import java.util.Set; - -/** - * Testing adapter for the event delivery service. - */ -public class EventDeliveryServiceAdapter implements EventDeliveryService { - @Override - public void setDispatchTimeLimit(long millis) { - - } - - @Override - public long getDispatchTimeLimit() { - return 0; - } - - @Override - public void post(Event event) { - - } - - @Override - public void addSink(Class eventClass, EventSink sink) { - - } - - @Override - public void removeSink(Class eventClass) { - - } - - @Override - public EventSink getSink(Class eventClass) { - return null; - } - - @Override - public Set> getSinks() { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/event/ListenerRegistryTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/event/ListenerRegistryTest.java deleted file mode 100644 index 8cce6417..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/event/ListenerRegistryTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -/** - * Unit tests for {@link ListenerRegistry}. - */ -public class ListenerRegistryTest { - - private static final TestEvent FOO_EVENT = - new TestEvent(TestEvent.Type.FOO, "foo"); - private static final TestEvent BAR_EVENT = - new TestEvent(TestEvent.Type.BAR, "bar"); - - private TestListener listener; - private TestListener secondListener; - private TestListenerRegistry manager; - - @Before - public void setUp() { - listener = new TestListener(); - secondListener = new TestListener(); - manager = new TestListenerRegistry(); - } - - @Test - public void basics() { - manager.addListener(listener); - manager.addListener(secondListener); - - manager.process(BAR_EVENT); - assertTrue("BAR not processed", listener.events.contains(BAR_EVENT)); - assertTrue("BAR not processed", secondListener.events.contains(BAR_EVENT)); - - manager.removeListener(listener); - - manager.process(FOO_EVENT); - assertFalse("FOO processed", listener.events.contains(FOO_EVENT)); - assertTrue("FOO not processed", secondListener.events.contains(FOO_EVENT)); - } - - @Test - public void badListener() { - listener = new BrokenListener(); - - manager.addListener(listener); - manager.addListener(secondListener); - - manager.process(BAR_EVENT); - assertFalse("BAR processed", listener.events.contains(BAR_EVENT)); - assertFalse("error not reported", manager.errors.isEmpty()); - assertTrue("BAR not processed", secondListener.events.contains(BAR_EVENT)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/event/TestEvent.java b/framework/src/onos/core/api/src/test/java/org/onosproject/event/TestEvent.java deleted file mode 100644 index 8a507151..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/event/TestEvent.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -/** - * Test event fixture. - */ -public class TestEvent extends AbstractEvent { - - public enum Type { FOO, BAR } - - public TestEvent(Type type, String subject) { - super(type, subject); - } - - public TestEvent(Type type, String subject, long timestamp) { - super(type, subject, timestamp); - } - -} - diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/event/TestListener.java b/framework/src/onos/core/api/src/test/java/org/onosproject/event/TestListener.java deleted file mode 100644 index 213f8c59..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/event/TestListener.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -import java.util.ArrayList; -import java.util.List; - -/** - * Test event listener fixture. - */ -public class TestListener implements EventListener { - - public final List events = new ArrayList<>(); - - @Override - public void event(TestEvent event) { - events.add(event); - } - -} - diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/event/TestListenerRegistry.java b/framework/src/onos/core/api/src/test/java/org/onosproject/event/TestListenerRegistry.java deleted file mode 100644 index fd9b6d08..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/event/TestListenerRegistry.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.event; - -import java.util.ArrayList; -import java.util.List; - -/** - * Test event listener manager fixture. - */ -public class TestListenerRegistry - extends ListenerRegistry { - - public final List errors = new ArrayList<>(); - - @Override - protected void reportProblem(TestEvent event, Throwable error) { - super.reportProblem(event, error); - errors.add(error); - } - -} - diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/mastership/MastershipServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/mastership/MastershipServiceAdapter.java deleted file mode 100644 index 7db9b38b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/mastership/MastershipServiceAdapter.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.mastership; - -import org.onosproject.cluster.NodeId; -import org.onosproject.cluster.RoleInfo; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; - -import java.util.Set; -import java.util.concurrent.CompletableFuture; - -/** - * Test adapter for mastership service. - */ -public class MastershipServiceAdapter implements MastershipService { - @Override - public MastershipRole getLocalRole(DeviceId deviceId) { - return null; - } - - @Override - public CompletableFuture requestRoleFor(DeviceId deviceId) { - return null; - } - - @Override - public CompletableFuture relinquishMastership(DeviceId deviceId) { - return null; - } - - @Override - public NodeId getMasterFor(DeviceId deviceId) { - return null; - } - - @Override - public Set getDevicesOf(NodeId nodeId) { - return null; - } - - @Override - public void addListener(MastershipListener listener) { - } - - @Override - public void removeListener(MastershipListener listener) { - } - - @Override - public RoleInfo getNodesFor(DeviceId deviceId) { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/mastership/MastershipTermTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/mastership/MastershipTermTest.java deleted file mode 100644 index 0ca9436b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/mastership/MastershipTermTest.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.mastership; - -import static org.junit.Assert.assertEquals; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.cluster.NodeId; - -import com.google.common.testing.EqualsTester; - -public class MastershipTermTest { - - private static final NodeId N1 = new NodeId("foo"); - private static final NodeId N2 = new NodeId("bar"); - - private static final MastershipTerm TERM1 = MastershipTerm.of(N1, 0); - private static final MastershipTerm TERM2 = MastershipTerm.of(N2, 1); - private static final MastershipTerm TERM3 = MastershipTerm.of(N2, 1); - private static final MastershipTerm TERM4 = MastershipTerm.of(N1, 1); - - @Test - public void basics() { - assertEquals("incorrect term number", 0, TERM1.termNumber()); - assertEquals("incorrect master", new NodeId("foo"), TERM1.master()); - } - - @Test - public void testEquality() { - new EqualsTester().addEqualityGroup(MastershipTerm.of(N1, 0), TERM1) - .addEqualityGroup(TERM2, TERM3) - .addEqualityGroup(TERM4) - .testEquals(); - } - - /** - * Checks that the MembershipTerm class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(MastershipTerm.class); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/ConnectPointTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/ConnectPointTest.java deleted file mode 100644 index 2aecabd4..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/ConnectPointTest.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import static junit.framework.TestCase.fail; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.PortNumber.portNumber; - -/** - * Test of the connection point entity. - */ -public class ConnectPointTest { - - private static final DeviceId DID1 = deviceId("1"); - private static final DeviceId DID2 = deviceId("2"); - private static final PortNumber P1 = portNumber(1); - private static final PortNumber P2 = portNumber(2); - - @Test - public void basics() { - ConnectPoint p = new ConnectPoint(DID1, P2); - assertEquals("incorrect element id", DID1, p.deviceId()); - assertEquals("incorrect element id", P2, p.port()); - } - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(new ConnectPoint(DID1, P1), new ConnectPoint(DID1, P1)) - .addEqualityGroup(new ConnectPoint(DID1, P2), new ConnectPoint(DID1, P2)) - .addEqualityGroup(new ConnectPoint(DID2, P1), new ConnectPoint(DID2, P1)) - .testEquals(); - } - - @Test - public void testParseDeviceConnectPoint() { - String cp = "of:0011223344556677/1"; - - ConnectPoint connectPoint = ConnectPoint.deviceConnectPoint(cp); - assertEquals("of:0011223344556677", connectPoint.deviceId().toString()); - assertEquals("1", connectPoint.port().toString()); - - expectDeviceParseException(""); - expectDeviceParseException("1/"); - expectDeviceParseException("1/1/1"); - expectDeviceParseException("of:0011223344556677/word"); - } - - /** - * Parse a device connect point and expect an exception to be thrown. - * - * @param string string to parse - */ - private static void expectDeviceParseException(String string) { - try { - ConnectPoint.deviceConnectPoint(string); - fail("Expected exception was not thrown"); - } catch (Exception e) { - assertTrue(true); - } - } - - @Test - public void testParseHostConnectPoint() { - String cp = "16:3A:BD:6E:31:E4/-1/1"; - - ConnectPoint connectPoint = ConnectPoint.hostConnectPoint(cp); - assertEquals("16:3A:BD:6E:31:E4/-1", connectPoint.hostId().toString()); - assertEquals("1", connectPoint.port().toString()); - - expectHostParseException(""); - expectHostParseException("1/"); - expectHostParseException("1/1"); - expectHostParseException("1/1/1/1"); - expectHostParseException("16:3A:BD:6E:31:E4/word/1"); - expectHostParseException("16:3A:BD:6E:31:E4/1/word"); - } - - /** - * Parse a host connect point and expect an exception to be thrown. - * - * @param string string to parse - */ - private static void expectHostParseException(String string) { - try { - ConnectPoint.hostConnectPoint(string); - fail("Expected exception was not thrown"); - } catch (Exception e) { - assertTrue(true); - } - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultAnnotationsTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultAnnotationsTest.java deleted file mode 100644 index 1bac285d..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultAnnotationsTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import org.junit.Test; - -import static com.google.common.collect.ImmutableSet.of; -import static org.junit.Assert.*; -import static org.onosproject.net.DefaultAnnotations.builder; - -/** - * Tests of the default annotations. - */ -public class DefaultAnnotationsTest { - - private DefaultAnnotations annotations; - - @Test - public void basics() { - annotations = builder().set("foo", "1").set("bar", "2").build(); - assertEquals("incorrect keys", of("foo", "bar"), annotations.keys()); - assertEquals("incorrect value", "1", annotations.value("foo")); - assertEquals("incorrect value", "2", annotations.value("bar")); - } - - @Test - public void empty() { - annotations = builder().build(); - assertTrue("incorrect keys", annotations.keys().isEmpty()); - } - - @Test - public void remove() { - annotations = builder().remove("foo").set("bar", "2").build(); - assertEquals("incorrect keys", of("foo", "bar"), annotations.keys()); - assertNull("incorrect value", annotations.value("foo")); - assertEquals("incorrect value", "2", annotations.value("bar")); - } - - @Test - public void union() { - annotations = builder().set("foo", "1").set("bar", "2").remove("buz").build(); - assertEquals("incorrect keys", of("foo", "bar", "buz"), annotations.keys()); - - SparseAnnotations updates = builder().remove("foo").set("bar", "3").set("goo", "4").remove("fuzz").build(); - - SparseAnnotations result = DefaultAnnotations.union(annotations, updates); - - assertTrue("remove instruction in original remains", result.isRemoved("buz")); - assertTrue("remove instruction in update remains", result.isRemoved("fuzz")); - assertEquals("incorrect keys", of("buz", "goo", "bar", "fuzz"), result.keys()); - assertNull("incorrect value", result.value("foo")); - assertEquals("incorrect value", "3", result.value("bar")); - assertEquals("incorrect value", "4", result.value("goo")); - } - - @Test - public void merge() { - annotations = builder().set("foo", "1").set("bar", "2").build(); - assertEquals("incorrect keys", of("foo", "bar"), annotations.keys()); - - SparseAnnotations updates = builder().remove("foo").set("bar", "3").set("goo", "4").build(); - - annotations = DefaultAnnotations.merge(annotations, updates); - assertEquals("incorrect keys", of("goo", "bar"), annotations.keys()); - assertNull("incorrect value", annotations.value("foo")); - assertEquals("incorrect value", "3", annotations.value("bar")); - } - - @Test - public void noopMerge() { - annotations = builder().set("foo", "1").set("bar", "2").build(); - assertEquals("incorrect keys", of("foo", "bar"), annotations.keys()); - - SparseAnnotations updates = builder().build(); - assertSame("same annotations expected", annotations, - DefaultAnnotations.merge(annotations, updates)); - assertSame("same annotations expected", annotations, - DefaultAnnotations.merge(annotations, null)); - } - - @Test(expected = NullPointerException.class) - public void badMerge() { - DefaultAnnotations.merge(null, null); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultDeviceTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultDeviceTest.java deleted file mode 100644 index 1b0319a5..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultDeviceTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.net.provider.ProviderId; -import org.onlab.packet.ChassisId; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.Device.Type.SWITCH; -import static org.onosproject.net.DeviceId.deviceId; - -/** - * Test of the default device model entity. - */ -public class DefaultDeviceTest { - - static final ProviderId PID = new ProviderId("of", "foo"); - static final DeviceId DID1 = deviceId("of:foo"); - static final DeviceId DID2 = deviceId("of:bar"); - static final String MFR = "whitebox"; - static final String HW = "1.1.x"; - static final String SW = "3.9.1"; - static final String SN1 = "43311-12345"; - static final String SN2 = "42346-43512"; - static final ChassisId CID = new ChassisId(); - - @Test - public void testEquality() { - Device d1 = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1, CID); - Device d2 = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1, CID); - Device d3 = new DefaultDevice(PID, DID2, SWITCH, MFR, HW, SW, SN2, CID); - Device d4 = new DefaultDevice(PID, DID2, SWITCH, MFR, HW, SW, SN2, CID); - Device d5 = new DefaultDevice(PID, DID2, SWITCH, MFR, HW, SW, SN1, CID); - - new EqualsTester().addEqualityGroup(d1, d2) - .addEqualityGroup(d3, d4) - .addEqualityGroup(d5) - .testEquals(); - } - - @Test - public void basics() { - Device device = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1, CID); - validate(device); - } - - @Test - public void annotations() { - Device device = new DefaultDevice(PID, DID1, SWITCH, MFR, HW, SW, SN1, CID, - DefaultAnnotations.builder().set("foo", "bar").build()); - validate(device); - assertEquals("incorrect provider", "bar", device.annotations().value("foo")); - } - - private void validate(Device device) { - assertEquals("incorrect provider", PID, device.providerId()); - assertEquals("incorrect id", DID1, device.id()); - assertEquals("incorrect type", SWITCH, device.type()); - assertEquals("incorrect manufacturer", MFR, device.manufacturer()); - assertEquals("incorrect hw", HW, device.hwVersion()); - assertEquals("incorrect sw", SW, device.swVersion()); - assertEquals("incorrect serial", SN1, device.serialNumber()); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultEdgeLinkTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultEdgeLinkTest.java deleted file mode 100644 index ee5b0e32..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultEdgeLinkTest.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.net.provider.ProviderId; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.DefaultEdgeLink.createEdgeLink; -import static org.onosproject.net.DefaultLinkTest.cp; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.HostId.hostId; -import static org.onosproject.net.PortNumber.portNumber; - -/** - * Test of the default edge link model entity. - */ -public class DefaultEdgeLinkTest { - - private static final ProviderId PID = new ProviderId("of", "foo"); - private static final DeviceId DID1 = deviceId("of:foo"); - private static final HostId HID1 = hostId("00:00:00:00:00:01/-1"); - private static final HostId HID2 = hostId("00:00:00:00:00:01/-1"); - private static final PortNumber P0 = portNumber(0); - private static final PortNumber P1 = portNumber(1); - - @Test - public void testEquality() { - EdgeLink l1 = new DefaultEdgeLink(PID, cp(HID1, P0), - new HostLocation(DID1, P1, 123L), true); - EdgeLink l2 = new DefaultEdgeLink(PID, cp(HID1, P0), - new HostLocation(DID1, P1, 123L), true); - - EdgeLink l3 = new DefaultEdgeLink(PID, cp(HID2, P0), - new HostLocation(DID1, P1, 123L), false); - EdgeLink l4 = new DefaultEdgeLink(PID, cp(HID2, P0), - new HostLocation(DID1, P1, 123L), false); - - new EqualsTester().addEqualityGroup(l1, l2) - .addEqualityGroup(l3, l4) - .testEquals(); - } - - @Test - public void basics() { - HostLocation hostLocation = new HostLocation(DID1, P1, 123L); - EdgeLink link = new DefaultEdgeLink(PID, cp(HID1, P0), hostLocation, false); - assertEquals("incorrect src", cp(HID1, P0), link.dst()); - assertEquals("incorrect dst", hostLocation, link.src()); - assertEquals("incorrect type", Link.Type.EDGE, link.type()); - assertEquals("incorrect hostId", HID1, link.hostId()); - assertEquals("incorrect connect point", hostLocation, link.hostLocation()); - assertEquals("incorrect time", 123L, link.hostLocation().time()); - } - - @Test - public void phantomIngress() { - HostLocation hostLocation = new HostLocation(DID1, P1, 123L); - EdgeLink link = createEdgeLink(hostLocation, true); - assertEquals("incorrect dst", hostLocation, link.dst()); - assertEquals("incorrect type", Link.Type.EDGE, link.type()); - assertEquals("incorrect connect point", hostLocation, link.hostLocation()); - assertEquals("incorrect time", 123L, link.hostLocation().time()); - } - - @Test - public void phantomEgress() { - ConnectPoint hostLocation = new ConnectPoint(DID1, P1); - EdgeLink link = createEdgeLink(hostLocation, false); - assertEquals("incorrect src", hostLocation, link.src()); - assertEquals("incorrect type", Link.Type.EDGE, link.type()); - assertEquals("incorrect connect point", hostLocation, link.hostLocation()); - assertEquals("incorrect time", 0L, link.hostLocation().time()); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultHostTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultHostTest.java deleted file mode 100644 index 1fb6da5a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultHostTest.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -public class DefaultHostTest extends TestDeviceParams { - - @Test - public void testEquality() { - Host h1 = new DefaultHost(PID, HID1, MAC1, VLAN1, LOC1, IPSET1); - Host h2 = new DefaultHost(PID, HID1, MAC1, VLAN1, LOC1, IPSET1); - Host h3 = new DefaultHost(PID, HID2, MAC2, VLAN2, LOC2, IPSET2); - Host h4 = new DefaultHost(PID, HID2, MAC2, VLAN2, LOC2, IPSET2); - Host h5 = new DefaultHost(PID, HID2, MAC2, VLAN1, LOC2, IPSET1); - - new EqualsTester().addEqualityGroup(h1, h2) - .addEqualityGroup(h3, h4) - .addEqualityGroup(h5) - .testEquals(); - } - - @Test - public void basics() { - Host host = new DefaultHost(PID, HID1, MAC1, VLAN1, LOC1, IPSET1); - assertEquals("incorrect provider", PID, host.providerId()); - assertEquals("incorrect id", HID1, host.id()); - assertEquals("incorrect type", MAC1, host.mac()); - assertEquals("incorrect VLAN", VLAN1, host.vlan()); - assertEquals("incorrect location", LOC1, host.location()); - assertEquals("incorrect IP's", IPSET1, host.ipAddresses()); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultLinkTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultLinkTest.java deleted file mode 100644 index bd5821bb..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultLinkTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.net.provider.ProviderId; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.Link.Type.DIRECT; -import static org.onosproject.net.Link.Type.INDIRECT; -import static org.onosproject.net.PortNumber.portNumber; - -/** - * Test of the default link model entity. - */ -public class DefaultLinkTest { - - private static final ProviderId PID = new ProviderId("of", "foo"); - private static final DeviceId DID1 = deviceId("of:foo"); - private static final DeviceId DID2 = deviceId("of:bar"); - private static final PortNumber P1 = portNumber(1); - private static final PortNumber P2 = portNumber(2); - - public static ConnectPoint cp(ElementId id, PortNumber pn) { - return new ConnectPoint(id, pn); - } - - @Test - public void testEquality() { - Link l1 = new DefaultLink(PID, cp(DID1, P1), cp(DID2, P2), DIRECT); - Link l2 = new DefaultLink(PID, cp(DID1, P1), cp(DID2, P2), DIRECT); - Link l3 = new DefaultLink(PID, cp(DID1, P2), cp(DID2, P2), DIRECT); - Link l4 = new DefaultLink(PID, cp(DID1, P2), cp(DID2, P2), DIRECT); - Link l5 = new DefaultLink(PID, cp(DID1, P2), cp(DID2, P2), INDIRECT); - - new EqualsTester().addEqualityGroup(l1, l2) - .addEqualityGroup(l3, l4) - .addEqualityGroup(l5) - .testEquals(); - } - - @Test - public void basics() { - Link link = new DefaultLink(PID, cp(DID1, P1), cp(DID2, P2), DIRECT); - assertEquals("incorrect src", cp(DID1, P1), link.src()); - assertEquals("incorrect dst", cp(DID2, P2), link.dst()); - assertEquals("incorrect type", DIRECT, link.type()); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultPortTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultPortTest.java deleted file mode 100644 index 592115d7..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DefaultPortTest.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.net.provider.ProviderId; -import org.onlab.packet.ChassisId; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.Device.Type.SWITCH; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.Port.Type.COPPER; -import static org.onosproject.net.Port.Type.FIBER; -import static org.onosproject.net.PortNumber.portNumber; - -/** - * Test of the default port model entity. - */ -public class DefaultPortTest { - - private static final ProviderId PID = new ProviderId("of", "foo"); - private static final DeviceId DID1 = deviceId("of:foo"); - private static final DeviceId DID2 = deviceId("of:bar"); - private static final PortNumber P1 = portNumber(1); - private static final PortNumber P2 = portNumber(2); - private static final long SP1 = 1_000_000; - - @Test - public void testEquality() { - Device device = new DefaultDevice(PID, DID1, SWITCH, "m", "h", "s", "n", - new ChassisId()); - Port p1 = new DefaultPort(device, portNumber(1), true, COPPER, SP1); - Port p2 = new DefaultPort(device, portNumber(1), true, COPPER, SP1); - Port p3 = new DefaultPort(device, portNumber(2), true, FIBER, SP1); - Port p4 = new DefaultPort(device, portNumber(2), true, FIBER, SP1); - Port p5 = new DefaultPort(device, portNumber(1), false); - - new EqualsTester().addEqualityGroup(p1, p2) - .addEqualityGroup(p3, p4) - .addEqualityGroup(p5) - .testEquals(); - } - - @Test - public void basics() { - Device device = new DefaultDevice(PID, DID1, SWITCH, "m", "h", "s", "n", - new ChassisId()); - Port port = new DefaultPort(device, portNumber(1), true, FIBER, SP1); - assertEquals("incorrect element", device, port.element()); - assertEquals("incorrect number", portNumber(1), port.number()); - assertEquals("incorrect state", true, port.isEnabled()); - assertEquals("incorrect speed", SP1, port.portSpeed()); - assertEquals("incorrect type", FIBER, port.type()); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DeviceIdTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/DeviceIdTest.java deleted file mode 100644 index ab5373f8..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/DeviceIdTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import static org.onosproject.net.DeviceId.deviceId; - -/** - * Test of the device identifier. - */ -public class DeviceIdTest { - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(deviceId("of:foo"), - deviceId("of:foo")) - .addEqualityGroup(deviceId("of:bar")) - .testEquals(); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/HostIdTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/HostIdTest.java deleted file mode 100644 index 43425e21..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/HostIdTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import com.google.common.testing.EqualsTester; - -import org.junit.Test; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; - -import static org.onosproject.net.HostId.hostId; - -/** - * Test for the host identifier. - */ -public class HostIdTest { - - private static final MacAddress MAC1 = MacAddress.valueOf("00:11:00:00:00:01"); - private static final MacAddress MAC2 = MacAddress.valueOf("00:22:00:00:00:02"); - private static final VlanId VLAN1 = VlanId.vlanId((short) 11); - private static final VlanId VLAN2 = VlanId.vlanId((short) 22); - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(hostId(MAC1, VLAN1), hostId(MAC1, VLAN1)) - .addEqualityGroup(hostId(MAC2, VLAN2), hostId(MAC2, VLAN2)) - .testEquals(); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/IndexedLambdaTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/IndexedLambdaTest.java deleted file mode 100644 index 8cbe8232..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/IndexedLambdaTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test for IndexedLambda. - */ -public class IndexedLambdaTest { - /** - * Tests equality of IndexedLambda instances. - */ - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(Lambda.indexedLambda(10), Lambda.indexedLambda(10)) - .addEqualityGroup(Lambda.indexedLambda(11), Lambda.indexedLambda(11), Lambda.indexedLambda(11)) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/LinkKeyTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/LinkKeyTest.java deleted file mode 100644 index 4dfc1399..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/LinkKeyTest.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.allOf; -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.PortNumber.portNumber; - -/** - * Unit tests for the LinkKey class. - */ -public class LinkKeyTest { - - static final DeviceId D1 = deviceId("1"); - static final DeviceId D2 = deviceId("2"); - static final PortNumber P1 = portNumber(1); - static final PortNumber P2 = portNumber(2); - - static final ConnectPoint SRC1 = new ConnectPoint(D1, P1); - static final ConnectPoint DST1 = new ConnectPoint(D2, P1); - static final ConnectPoint DST2 = new ConnectPoint(D2, P2); - - - /** - * Checks that the LinkKey class is immutable. - */ - @Test - public void testLinkKeyImmutability() { - assertThatClassIsImmutable(LinkKey.class); - } - - /** - * Check null source connection. - */ - @Test(expected = NullPointerException.class) - public void testNullSrc() { - LinkKey key = LinkKey.linkKey(null, DST1); - } - - /** - * Check null destination connection. - */ - @Test(expected = NullPointerException.class) - public void testNullDst() { - LinkKey key = LinkKey.linkKey(SRC1, null); - } - - /** - * Check that two LinkKeys based on the same source/destination pair compare - * equal. - */ - @Test - public void testCompareEquals() { - LinkKey k1 = LinkKey.linkKey(SRC1, DST2); - LinkKey k2 = LinkKey.linkKey(SRC1, DST2); - - assertThat(k1, is(equalTo(k2))); - } - - /** - * Check that two LinkKeys based on different source/destination pairs compare - * not equal. - */ - @Test - public void testCompareNotEquals() { - LinkKey k1 = LinkKey.linkKey(SRC1, DST1); - LinkKey k2 = LinkKey.linkKey(SRC1, DST2); - - assertThat(k1, is(not(equalTo(k2)))); - assertThat(k1, is(not(equalTo(new Object())))); - } - - /** - * Check that two LinkKeys based on the same source/destination pair compare - * equal. - */ - @Test - public void testHashCodeEquals() { - LinkKey k1 = LinkKey.linkKey(SRC1, DST2); - LinkKey k2 = LinkKey.linkKey(SRC1, DST2); - - assertThat(k1.hashCode(), is(equalTo(k2.hashCode()))); - } - - /** - * Check that two LinkKeys based on different source/destination pairs compare - * not equal. - */ - @Test - public void testHashCodeNotEquals() { - LinkKey k1 = LinkKey.linkKey(SRC1, DST1); - LinkKey k2 = LinkKey.linkKey(SRC1, DST2); - - assertThat(k1.hashCode(), is(not(equalTo(k2.hashCode())))); - } - - /** - * Check the toString() method of LinkKey. - */ - @Test - public void testToString() { - LinkKey k1 = LinkKey.linkKey(SRC1, DST1); - String k1String = k1.toString(); - assertThat(k1String, allOf(containsString("LinkKey{"), - containsString("src=ConnectPoint{elementId=1, portNumber=1}"), - containsString("dst=ConnectPoint{elementId=2, portNumber=1}"))); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/NetTestTools.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/NetTestTools.java deleted file mode 100644 index 176fe40c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/NetTestTools.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net; - -import org.onlab.junit.TestUtils; -import org.onlab.packet.ChassisId; -import org.onosproject.TestApplicationId; -import org.onosproject.core.ApplicationId; -import org.onosproject.event.EventDeliveryService; -import org.onosproject.net.provider.ProviderId; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.onlab.packet.MacAddress.valueOf; -import static org.onlab.packet.VlanId.vlanId; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.HostId.hostId; -import static org.onosproject.net.PortNumber.portNumber; - -/** - * Miscellaneous tools for testing core related to the network model. - */ -public final class NetTestTools { - - private NetTestTools() { - } - - public static final ProviderId PID = new ProviderId("of", "foo"); - public static final ApplicationId APP_ID = new TestApplicationId("foo"); - - // Short-hand for producing a device id from a string - public static DeviceId did(String id) { - return deviceId("of:" + id); - } - - - // Short-hand for producing a host id from a string - public static HostId hid(String id) { - return hostId(id); - } - - // Crates a new device with the specified id - public static Device device(String id) { - return new DefaultDevice(PID, did(id), Device.Type.SWITCH, - "mfg", "1.0", "1.1", "1234", new ChassisId()); - } - - // Crates a new host with the specified id - public static Host host(String id, String did) { - return new DefaultHost(PID, hid(id), valueOf(1234), vlanId((short) 2), - new HostLocation(did(did), portNumber(1), 321), - new HashSet<>()); - } - - // Short-hand for creating a connection point. - public static ConnectPoint connectPoint(String id, int port) { - return new ConnectPoint(did(id), portNumber(port)); - } - - // Short-hand for creating a link. - public static Link link(String src, int sp, String dst, int dp) { - return new DefaultLink(PID, - connectPoint(src, sp), - connectPoint(dst, dp), - Link.Type.DIRECT); - } - - // Creates a path that leads through the given devices. - public static Path createPath(String... ids) { - List links = new ArrayList<>(); - for (int i = 0; i < ids.length - 1; i++) { - links.add(link(ids[i], i, ids[i + 1], i)); - } - return new DefaultPath(PID, links, ids.length); - } - - // Creates OCh signal - public static OchSignal createLambda() { - return new OchSignal(GridType.DWDM, ChannelSpacing.CHL_6P25GHZ, 8, 4); - } - - /** - * Verifies that Annotations created by merging {@code annotations} is - * equal to actual Annotations. - * - * @param actual annotations to check - * @param annotations expected annotations - */ - public static void assertAnnotationsEquals(Annotations actual, SparseAnnotations... annotations) { - DefaultAnnotations expected = DefaultAnnotations.builder().build(); - for (SparseAnnotations a : annotations) { - expected = DefaultAnnotations.merge(expected, a); - } - assertEquals(expected.keys(), actual.keys()); - for (String key : expected.keys()) { - assertEquals(expected.value(key), actual.value(key)); - } - } - - /** - * Injects the given event delivery service into the specified manager - * component. - * - * @param manager manager component - * @param svc service reference to be injected - */ - public static void injectEventDispatcher(Object manager, EventDeliveryService svc) { - Class mc = manager.getClass(); - for (Field f : mc.getSuperclass().getDeclaredFields()) { - if (f.getType().equals(EventDeliveryService.class)) { - try { - TestUtils.setField(manager, f.getName(), svc); - } catch (TestUtils.TestUtilsException e) { - throw new IllegalArgumentException("Unable to inject reference", e); - } - break; - } - } - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/OchSignalTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/OchSignalTest.java deleted file mode 100644 index 1ab17293..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/OchSignalTest.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test for OchSignal. - */ -public class OchSignalTest { - - private final Lambda och1 = Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_100GHZ, 1, 1); - private final Lambda sameOch1 = Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_100GHZ, 1, 1); - private final Lambda och2 = Lambda.ochSignal(GridType.CWDM, ChannelSpacing.CHL_6P25GHZ, 4, 1); - private final Lambda sameOch2 = Lambda.ochSignal(GridType.CWDM, ChannelSpacing.CHL_6P25GHZ, 4, 1); - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(och1, sameOch1) - .addEqualityGroup(och2, sameOch2) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/OduSignalIdTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/OduSignalIdTest.java deleted file mode 100644 index 2ed15ff9..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/OduSignalIdTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import static org.onosproject.net.OduSignalId.oduSignalId; - -/** - * Test for OduSignalId. - */ -public class OduSignalIdTest { - - private final OduSignalId odu1 = oduSignalId(7, 80, new byte[] {16, 16, 16, 16, 16, 16, 16, 16, 16, 16}); - private final OduSignalId sameOdu1 = oduSignalId(7, 80, new byte[] {16, 16, 16, 16, 16, 16, 16, 16, 16, 16}); - private final OduSignalId odu2 = oduSignalId(21, 80, new byte[] {10, 5, 10, 5, 10, 5, 10, 5, 10, 5}); - private final OduSignalId sameOdu2 = oduSignalId(21, 80, new byte[] {10, 5, 10, 5, 10, 5, 10, 5, 10, 5}); - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(odu1, sameOdu1) - .addEqualityGroup(odu2, sameOdu2) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/PortNumberTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/PortNumberTest.java deleted file mode 100644 index de153dc2..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/PortNumberTest.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net; - -import com.google.common.collect.ImmutableList; -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.net.PortNumber.Logical; - -import static java.util.stream.Collectors.toList; -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.PortNumber.portNumber; - -import java.util.List; - -/** - * Test of the port number. - */ -public class PortNumberTest { - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(portNumber(123), portNumber("123")) - .addEqualityGroup(portNumber(321), portNumber(321, "LIM-3-2-1")) - .testEquals(); - } - - @Test - public void number() { - assertEquals("incorrect long value", 12345, portNumber(12345).toLong()); - } - - @Test - public void decimalPortNumberIsReconstructableFromString() { - List ps = ImmutableList.builder() - .add(portNumber(0)) - .add(portNumber(1)) - .add(portNumber(6653)) - .add(portNumber(PortNumber.MAX_NUMBER)) - .build(); - ps.forEach(p -> assertEquals(p, PortNumber.fromString(p.toString()))); - } - - @Test - public void logicalPortNumberIsReconstructableFromString() { - List ps = ImmutableList.copyOf(Logical.values()) - .stream().map(Logical::instance).collect(toList()); - - ps.forEach(p -> assertEquals(p, PortNumber.fromString(p.toString()))); - - PortNumber unknown = portNumber(-42); - assertEquals(unknown, PortNumber.fromString(unknown.toString())); - } - - @Test - public void namedPortNumberIsReconstructableFromString() { - List ps = ImmutableList.builder() - .add(portNumber(0, "Zero")) - .add(portNumber(1, "[ONE]")) - .add(portNumber(6653, "OpenFlow (1.3+)")) - .add(portNumber(PortNumber.MAX_NUMBER, "(大)")) - .build(); - ps.forEach(p -> assertEquals(p, PortNumber.fromString(p.toString()))); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/TestDeviceParams.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/TestDeviceParams.java deleted file mode 100644 index 2d8aae3c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/TestDeviceParams.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net; - -import static org.onosproject.net.DeviceId.deviceId; - -import java.util.Set; - -import org.onosproject.net.provider.ProviderId; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; - -import com.google.common.collect.Sets; - -/** - * Provides a set of test DefaultDevice parameters for use with Host- - * related tests. - */ -public abstract class TestDeviceParams { - - protected static final ProviderId PID = new ProviderId("of", "foo"); - protected static final DeviceId DID1 = deviceId("of:foo"); - protected static final DeviceId DID2 = deviceId("of:bar"); - protected static final MacAddress MAC1 = MacAddress.valueOf("00:11:00:00:00:01"); - protected static final MacAddress MAC2 = MacAddress.valueOf("00:22:00:00:00:02"); - protected static final VlanId VLAN1 = VlanId.vlanId((short) 11); - protected static final VlanId VLAN2 = VlanId.vlanId((short) 22); - protected static final IpAddress IP1 = IpAddress.valueOf("10.0.0.1"); - protected static final IpAddress IP2 = IpAddress.valueOf("10.0.0.2"); - protected static final IpAddress IP3 = IpAddress.valueOf("10.0.0.3"); - - protected static final PortNumber P1 = PortNumber.portNumber(100); - protected static final PortNumber P2 = PortNumber.portNumber(200); - protected static final HostId HID1 = HostId.hostId(MAC1, VLAN1); - protected static final HostId HID2 = HostId.hostId(MAC2, VLAN2); - protected static final HostLocation LOC1 = new HostLocation(DID1, P1, 123L); - protected static final HostLocation LOC2 = new HostLocation(DID2, P2, 123L); - protected static final Set IPSET1 = Sets.newHashSet(IP1, IP2); - protected static final Set IPSET2 = Sets.newHashSet(IP1, IP3); - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/behaviour/ControllerInfoTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/behaviour/ControllerInfoTest.java deleted file mode 100644 index ece7f199..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/behaviour/ControllerInfoTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.behaviour; - - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.onlab.packet.IpAddress; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import static org.junit.Assert.*; - -/** - * Test for ControllerInfo class. - */ -public class ControllerInfoTest { - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Test - public void tcpSslFormat() { - String target = "tcp:192.168.1.1:6653"; - ControllerInfo controllerInfo = new ControllerInfo(target); - assertEquals("wrong type", controllerInfo.type(), "tcp"); - assertEquals("wrong ip", controllerInfo.ip(), IpAddress.valueOf("192.168.1.1")); - assertEquals("wrong port", controllerInfo.port(), 6653); - - } - - @Test - public void ptcpPsslFormat() { - String target = "ptcp:6653:192.168.1.1"; - ControllerInfo controllerInfo = new ControllerInfo(target); - assertEquals("wrong type", controllerInfo.type(), "ptcp"); - assertEquals("wrong ip", controllerInfo.ip(), IpAddress.valueOf("192.168.1.1")); - assertEquals("wrong port", controllerInfo.port(), 6653); - - } - - @Test - public void unixFormat() { - String target = "unix:file"; - thrown.expect(IllegalArgumentException.class); - ControllerInfo controllerInfo = new ControllerInfo(target); - assertTrue("wrong type", controllerInfo.type().contains("unix")); - assertNull("wrong ip", controllerInfo.ip()); - assertEquals("wrong port", controllerInfo.port(), -1); - - } - - @Test - public void defaultValues() { - String target = "tcp:192.168.1.1"; - ControllerInfo controllerInfo = new ControllerInfo(target); - assertEquals("wrong type", controllerInfo.type(), "tcp"); - assertEquals("wrong ip", controllerInfo.ip(), IpAddress.valueOf("192.168.1.1")); - assertEquals("wrong port", controllerInfo.port(), 6653); - String target1 = "ptcp:5000:"; - ControllerInfo controllerInfo2 = new ControllerInfo(target1); - assertEquals("wrong type", controllerInfo2.type(), "ptcp"); - assertEquals("wrong ip", controllerInfo2.ip(), IpAddress.valueOf("0.0.0.0")); - assertEquals("wrong port", controllerInfo2.port(), 5000); - String target2 = "ptcp:"; - ControllerInfo controllerInfo3 = new ControllerInfo(target2); - assertEquals("wrong type", controllerInfo3.type(), "ptcp"); - assertEquals("wrong ip", controllerInfo3.ip(), IpAddress.valueOf("0.0.0.0")); - assertEquals("wrong port", controllerInfo3.port(), 6653); - } - - - @Test - public void testEquals() { - String target1 = "ptcp:6653:192.168.1.1"; - ControllerInfo controllerInfo1 = new ControllerInfo(target1); - String target2 = "ptcp:6653:192.168.1.1"; - ControllerInfo controllerInfo2 = new ControllerInfo(target2); - assertTrue("wrong equals method", controllerInfo1.equals(controllerInfo2)); - } - - @Test - public void testListEquals() { - String target1 = "ptcp:6653:192.168.1.1"; - ControllerInfo controllerInfo1 = new ControllerInfo(target1); - String target2 = "ptcp:6653:192.168.1.1"; - ControllerInfo controllerInfo2 = new ControllerInfo(target2); - String target3 = "tcp:192.168.1.1:6653"; - ControllerInfo controllerInfo3 = new ControllerInfo(target3); - String target4 = "tcp:192.168.1.1:6653"; - ControllerInfo controllerInfo4 = new ControllerInfo(target4); - List list1 = new ArrayList<>(Arrays.asList(controllerInfo1, controllerInfo3)); - List list2 = new ArrayList<>(Arrays.asList(controllerInfo2, controllerInfo4)); - assertTrue("wrong equals list method", list1.equals(list2)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/ConfigTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/ConfigTest.java deleted file mode 100644 index 34b0fe7b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/ConfigTest.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.config; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.onosproject.net.config.Config.FieldPresence.MANDATORY; -import static org.onosproject.net.config.Config.FieldPresence.OPTIONAL; - -/** - * Test of the base network config class. - */ -public class ConfigTest { - - private static final String SUBJECT = "subject"; - private static final String KEY = "key"; - - private static final String TEXT = "text"; - private static final String LONG = "long"; - private static final String DOUBLE = "double"; - private static final String MAC = "mac"; - private static final String IP = "ip"; - - private final ObjectMapper mapper = new ObjectMapper(); - private final ConfigApplyDelegate delegate = new TestDelegate(); - - private Config cfg; - private JsonNode json; - - @Before - public void setUp() { - json = new ObjectMapper().createObjectNode() - .put(TEXT, "foo").put(LONG, 5).put(DOUBLE, 0.5) - .put(MAC, "ab:cd:ef:ca:fe:ed").put(IP, "12.34.56.78"); - cfg = new TestConfig(); - cfg.init(SUBJECT, KEY, json, mapper, delegate); - } - - @Test - public void hasOnlyFields() { - assertTrue("has unexpected fields", cfg.hasOnlyFields(TEXT, LONG, DOUBLE, MAC, IP)); - assertFalse("did not detect unexpected fields", cfg.hasOnlyFields(TEXT, LONG, DOUBLE, MAC)); - assertTrue("is not proper text", cfg.isString(TEXT, MANDATORY)); - } - - @Test - public void isString() { - assertTrue("is not proper text", cfg.isString(TEXT, MANDATORY)); - assertTrue("is not proper text", cfg.isString(TEXT, MANDATORY, "^f.*")); - assertTrue("is not proper text", cfg.isString(TEXT, OPTIONAL, "^f.*")); - assertTrue("is not proper text", cfg.isString(TEXT, OPTIONAL)); - assertTrue("is not proper text", cfg.isString("none", OPTIONAL)); - assertFalse("did not detect missing field", cfg.isString("none", MANDATORY)); - } - - @Test - public void isNumber() { - assertTrue("is not proper number", cfg.isNumber(LONG, MANDATORY)); - assertTrue("is not proper number", cfg.isNumber(LONG, MANDATORY, 0)); - assertTrue("is not proper number", cfg.isNumber(LONG, MANDATORY, 0, 10)); - assertTrue("is not proper number", cfg.isNumber(LONG, MANDATORY, 5, 6)); - assertFalse("is not in range", cfg.isNumber(LONG, MANDATORY, 6, 10)); - assertFalse("is not in range", cfg.isNumber(LONG, MANDATORY, 4, 5)); - assertTrue("is not proper number", cfg.isNumber(LONG, OPTIONAL, 0, 10)); - assertTrue("is not proper number", cfg.isNumber(LONG, OPTIONAL)); - assertTrue("is not proper number", cfg.isNumber("none", OPTIONAL)); - assertFalse("did not detect missing field", cfg.isNumber("none", MANDATORY)); - } - - @Test - public void isDecimal() { - assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, MANDATORY)); - assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, MANDATORY, 0.0)); - assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, MANDATORY, 0.0, 1.0)); - assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, MANDATORY, 0.5, 0.6)); - assertFalse("is not in range", cfg.isDecimal(DOUBLE, MANDATORY, 0.6, 1.0)); - assertFalse("is not in range", cfg.isDecimal(DOUBLE, MANDATORY, 0.4, 0.5)); - assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, OPTIONAL, 0.0, 1.0)); - assertTrue("is not proper decimal", cfg.isDecimal(DOUBLE, OPTIONAL)); - assertTrue("is not proper decimal", cfg.isDecimal("none", OPTIONAL)); - assertFalse("did not detect missing field", cfg.isDecimal("none", MANDATORY)); - } - - @Test - public void isMacAddress() { - assertTrue("is not proper mac", cfg.isMacAddress(MAC, MANDATORY)); - assertTrue("is not proper mac", cfg.isMacAddress(MAC, OPTIONAL)); - assertTrue("is not proper mac", cfg.isMacAddress("none", OPTIONAL)); - assertFalse("did not detect missing field", cfg.isMacAddress("none", MANDATORY)); - } - - @Test(expected = IllegalArgumentException.class) - public void badMacAddress() { - assertTrue("is not proper mac", cfg.isMacAddress(TEXT, MANDATORY)); - } - - - @Test - public void isIpAddress() { - assertTrue("is not proper ip", cfg.isIpAddress(IP, MANDATORY)); - assertTrue("is not proper ip", cfg.isIpAddress(IP, OPTIONAL)); - assertTrue("is not proper ip", cfg.isIpAddress("none", OPTIONAL)); - assertFalse("did not detect missing field", cfg.isMacAddress("none", MANDATORY)); - } - - @Test(expected = IllegalArgumentException.class) - public void badIpAddress() { - assertTrue("is not proper ip", cfg.isIpAddress(TEXT, MANDATORY)); - } - - - // TODO: Add tests for other helper methods - - private class TestConfig extends Config { - } - - private class TestDelegate implements ConfigApplyDelegate { - @Override - public void onApply(Config config) { - } - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/NetworkConfigRegistryAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/NetworkConfigRegistryAdapter.java deleted file mode 100644 index 6201c0b6..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/NetworkConfigRegistryAdapter.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.config; - -import java.util.Set; - -/** - * Test adapter for network configuration service registry. - */ -public class NetworkConfigRegistryAdapter extends NetworkConfigServiceAdapter implements NetworkConfigRegistry { - - public void registerConfigFactory(ConfigFactory configFactory) { - } - - public void unregisterConfigFactory(ConfigFactory configFactory) { - } - - public Set getConfigFactories() { - return null; - } - - public > Set> getConfigFactories(Class subjectClass) { - return null; - } - - public > ConfigFactory getConfigFactory(Class configClass) { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/NetworkConfigServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/NetworkConfigServiceAdapter.java deleted file mode 100644 index 73072583..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/config/NetworkConfigServiceAdapter.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.config; - -import com.fasterxml.jackson.databind.JsonNode; - -import java.util.Set; - -/** - * Test adapter for network configuration service. - */ -public class NetworkConfigServiceAdapter implements NetworkConfigService { - @Override - public Set getSubjectClasses() { - return null; - } - - @Override - public SubjectFactory getSubjectFactory(String subjectClassKey) { - return null; - } - - @Override - public SubjectFactory getSubjectFactory(Class subjectClass) { - return null; - } - - @Override - public Class getConfigClass(String subjectClassKey, String configKey) { - return null; - } - - @Override - public Set getSubjects(Class subjectClass) { - return null; - } - - @Override - public > Set getSubjects(Class subjectClass, Class configClass) { - return null; - } - - @Override - public Set> getConfigs(S subject) { - return null; - } - - @Override - public > C getConfig(S subject, Class configClass) { - return null; - } - - @Override - public > C addConfig(S subject, Class configClass) { - return null; - } - - @Override - public > C applyConfig(S subject, Class configClass, JsonNode json) { - return null; - } - - @Override - public > void removeConfig(S subject, Class configClass) { - - } - - @Override - public void addListener(NetworkConfigListener listener) { - - } - - @Override - public void removeListener(NetworkConfigListener listener) { - - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java deleted file mode 100644 index c00a6de0..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DefaultDeviceDescriptionTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.device; - -import org.junit.Test; -import org.onlab.packet.ChassisId; - -import java.net.URI; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.onosproject.net.Device.Type.SWITCH; - -/** - * Test of the default device description. - */ -public class DefaultDeviceDescriptionTest { - - private static final URI DURI = URI.create("of:foo"); - private static final String MFR = "whitebox"; - private static final String HW = "1.1.x"; - private static final String SW = "3.9.1"; - private static final String SN = "43311-12345"; - private static final ChassisId CID = new ChassisId(); - - - @Test - public void basics() { - DeviceDescription device = - new DefaultDeviceDescription(DURI, SWITCH, MFR, HW, SW, SN, CID); - assertEquals("incorrect uri", DURI, device.deviceUri()); - assertEquals("incorrect type", SWITCH, device.type()); - assertEquals("incorrect manufacturer", MFR, device.manufacturer()); - assertEquals("incorrect hw", HW, device.hwVersion()); - assertEquals("incorrect sw", SW, device.swVersion()); - assertEquals("incorrect serial", SN, device.serialNumber()); - assertTrue("incorrect toString", device.toString().contains("uri=of:foo")); - assertTrue("Incorrect chassis", device.chassisId().value() == 0); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java deleted file mode 100644 index b691ebc3..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.device; - -import java.lang.reflect.Constructor; -import java.util.Arrays; - -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.net.NetTestTools; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * DefaultPortStatistics unit tests. - */ -public class DefaultPortStatisticsTest { - - private final PortStatistics stats1 = DefaultPortStatistics.builder() - .setBytesReceived(1) - .setBytesSent(2) - .setDurationNano(3) - .setDurationSec(4) - .setPacketsReceived(5) - .setPacketsSent(6) - .setPacketsRxDropped(7) - .setPacketsRxErrors(8) - .setPacketsTxDropped(9) - .setPacketsTxErrors(10) - .setPort(80) - .setDeviceId(NetTestTools.did("1")) - .build(); - - private final PortStatistics stats2 = DefaultPortStatistics.builder() - .setBytesReceived(1) - .setBytesSent(2) - .setDurationNano(3) - .setDurationSec(4) - .setPacketsReceived(5) - .setPacketsSent(6) - .setPacketsRxDropped(7) - .setPacketsRxErrors(8) - .setPacketsTxDropped(9) - .setPacketsTxErrors(11) - .setPort(80) - .setDeviceId(NetTestTools.did("1")) - .build(); - - /** - * Checks that the GroupOperation class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPortStatistics.class); - } - - @Test - public void testConstruction() { - assertThat(stats1.bytesReceived(), is(1L)); - assertThat(stats1.bytesSent(), is(2L)); - assertThat(stats1.durationNano(), is(3L)); - assertThat(stats1.durationSec(), is(4L)); - assertThat(stats1.packetsReceived(), is(5L)); - assertThat(stats1.packetsSent(), is(6L)); - assertThat(stats1.packetsRxDropped(), is(7L)); - assertThat(stats1.packetsRxErrors(), is(8L)); - assertThat(stats1.packetsTxDropped(), is(9L)); - assertThat(stats1.packetsTxErrors(), is(10L)); - assertThat(stats1.port(), is(80)); - } - - /** - * Tests the equals, hashCode and toString methods using Guava EqualsTester. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(stats1, stats1) - .addEqualityGroup(stats2) - .testEquals(); - } - - /** - * Tests that the empty argument list constructor for serialization - * is present and creates a proper object. - */ - @Test - public void testSerializerConstructor() { - try { - Constructor[] constructors = DefaultPortStatistics.class.getDeclaredConstructors(); - assertThat(constructors, notNullValue()); - Arrays.stream(constructors).filter(ctor -> - ctor.getParameterTypes().length == 0) - .forEach(noParamsCtor -> { - try { - noParamsCtor.setAccessible(true); - DefaultPortStatistics stats = - (DefaultPortStatistics) noParamsCtor.newInstance(); - assertThat(stats, notNullValue()); - } catch (Exception e) { - Assert.fail("Exception instantiating no parameters constructor"); - } - }); - } catch (Exception e) { - Assert.fail("Exception looking up constructors"); - } - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceClockServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceClockServiceAdapter.java deleted file mode 100644 index 7b43da6a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceClockServiceAdapter.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.device; - -import org.onosproject.net.DeviceId; -import org.onosproject.store.Timestamp; - -/** - * Test adapter for device clock service. - */ -public class DeviceClockServiceAdapter implements DeviceClockService { - - @Override - public boolean isTimestampAvailable(DeviceId deviceId) { - return false; - } - - @Override - public Timestamp getTimestamp(DeviceId deviceId) { - return null; - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceEventTest.java deleted file mode 100644 index a0fb9358..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceEventTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.device; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.DeviceId.deviceId; - -import org.junit.Test; -import org.onosproject.event.AbstractEventTest; -import org.onosproject.net.DefaultDevice; -import org.onosproject.net.DefaultPort; -import org.onosproject.net.Device; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; -import org.onlab.packet.ChassisId; - -/** - * Tests of the device event. - */ -public class DeviceEventTest extends AbstractEventTest { - - private Device createDevice() { - return new DefaultDevice(new ProviderId("of", "foo"), deviceId("of:foo"), - Device.Type.SWITCH, "box", "hw", "sw", "sn", new ChassisId()); - } - - @Override - @Test - public void withTime() { - Device device = createDevice(); - Port port = new DefaultPort(device, PortNumber.portNumber(123), true); - DeviceEvent event = new DeviceEvent(DeviceEvent.Type.DEVICE_ADDED, - device, port, 123L); - validateEvent(event, DeviceEvent.Type.DEVICE_ADDED, device, 123L); - assertEquals("incorrect port", port, event.port()); - } - - @Override - @Test - public void withoutTime() { - Device device = createDevice(); - Port port = new DefaultPort(device, PortNumber.portNumber(123), true); - long before = System.currentTimeMillis(); - DeviceEvent event = new DeviceEvent(DeviceEvent.Type.DEVICE_ADDED, device, port); - long after = System.currentTimeMillis(); - validateEvent(event, DeviceEvent.Type.DEVICE_ADDED, device, before, after); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceServiceAdapter.java deleted file mode 100644 index 5f52f6db..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/device/DeviceServiceAdapter.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.device; - -import com.google.common.collect.FluentIterable; - -import org.onosproject.net.Device; -import org.onosproject.net.Device.Type; -import org.onosproject.net.DeviceId; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; - -import java.util.Collections; -import java.util.List; - -/** - * Test adapter for device service. - */ -public class DeviceServiceAdapter implements DeviceService { - @Override - public int getDeviceCount() { - return 0; - } - - @Override - public Iterable getDevices() { - return Collections.emptyList(); - } - - @Override - public Iterable getAvailableDevices() { - return FluentIterable.from(getDevices()) - .filter(input -> isAvailable(input.id())); - } - - @Override - public Device getDevice(DeviceId deviceId) { - return null; - } - - @Override - public MastershipRole getRole(DeviceId deviceId) { - return MastershipRole.NONE; - } - - @Override - public List getPorts(DeviceId deviceId) { - return Collections.emptyList(); - } - - @Override - public List getPortStatistics(DeviceId deviceId) { - return null; - } - - @Override - public List getPortDeltaStatistics(DeviceId deviceId) { - return null; - } - - @Override - public Port getPort(DeviceId deviceId, PortNumber portNumber) { - return null; - } - - @Override - public boolean isAvailable(DeviceId deviceId) { - return false; - } - - @Override - public void addListener(DeviceListener listener) { - } - - @Override - public void removeListener(DeviceListener listener) { - } - - @Override - public Iterable getDevices(Type type) { - return Collections.emptyList(); - } - - @Override - public Iterable getAvailableDevices(Type type) { - return Collections.emptyList(); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverDataTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverDataTest.java deleted file mode 100644 index e3d69109..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverDataTest.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import com.google.common.collect.ImmutableMap; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.net.DeviceId; - -import static org.junit.Assert.*; -import static org.onosproject.net.DeviceId.deviceId; - -public class DefaultDriverDataTest { - - public static final DeviceId DEVICE_ID = deviceId("of:0011223344556677"); - - DefaultDriver ddc; - DefaultDriverData data; - - @Before - public void setUp() { - ddc = new DefaultDriver("foo.bar", null, "Circus", "lux", "1.2a", - ImmutableMap.of(TestBehaviour.class, - TestBehaviourImpl.class), - ImmutableMap.of("foo", "bar")); - data = new DefaultDriverData(ddc, DEVICE_ID); - } - - @Test - public void basics() { - assertSame("incorrect driver", ddc, data.driver()); - assertEquals("incorrect device id", DEVICE_ID, data.deviceId()); - assertTrue("incorrect toString", data.toString().contains("foo.bar")); - } - - @Test - public void behaviour() { - TestBehaviour behaviour = data.behaviour(TestBehaviour.class); - assertTrue("incorrect behaviour", behaviour instanceof TestBehaviourImpl); - } - - @Test - public void setAndClearAnnotations() { - data.set("croc", "aqua"); - data.set("roo", "mars"); - data.set("dingo", "bat"); - assertEquals("incorrect property", "bat", data.value("dingo")); - data.clear("dingo", "roo"); - assertNull("incorrect property", data.value("dingo")); - assertNull("incorrect property", data.value("root")); - assertEquals("incorrect property", "aqua", data.value("croc")); - assertEquals("incorrect properties", 1, data.keys().size()); - } - - @Test - public void clearAllAnnotations() { - data.set("croc", "aqua"); - data.set("roo", "mars"); - data.set("dingo", "bat"); - assertEquals("incorrect property", "bat", data.value("dingo")); - data.clear(); - assertEquals("incorrect properties", 0, data.keys().size()); - } - -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverHandlerTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverHandlerTest.java deleted file mode 100644 index 717cda2e..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverHandlerTest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import com.google.common.collect.ImmutableMap; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; - -public class DefaultDriverHandlerTest { - - DefaultDriver ddc; - DefaultDriverData data; - DefaultDriverHandler handler; - - @Before - public void setUp() { - ddc = new DefaultDriver("foo.bar", null, "Circus", "lux", "1.2a", - ImmutableMap.of(TestBehaviour.class, - TestBehaviourImpl.class, - TestBehaviourTwo.class, - TestBehaviourTwoImpl.class), - ImmutableMap.of("foo", "bar")); - data = new DefaultDriverData(ddc, DefaultDriverDataTest.DEVICE_ID); - handler = new DefaultDriverHandler(data); - } - - @Test - public void basics() { - assertSame("incorrect data", data, handler.data()); - assertTrue("incorrect toString", handler.toString().contains("1.2a")); - } - - @Test - public void behaviour() { - TestBehaviourTwo behaviour = handler.behaviour(TestBehaviourTwo.class); - assertTrue("incorrect behaviour", behaviour instanceof TestBehaviourTwoImpl); - } - -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverProviderTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverProviderTest.java deleted file mode 100644 index 4568fd92..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverProviderTest.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import com.google.common.collect.ImmutableMap; -import org.junit.Test; - -import java.util.Set; - -import static com.google.common.collect.ImmutableSet.of; -import static org.junit.Assert.assertEquals; - -public class DefaultDriverProviderTest { - - @Test - public void basics() { - DefaultDriverProvider ddp = new DefaultDriverProvider(); - DefaultDriver one = new DefaultDriver("foo.bar", null, "Circus", "lux", "1.2a", - ImmutableMap.of(TestBehaviour.class, - TestBehaviourImpl.class), - ImmutableMap.of("foo", "bar")); - DefaultDriver two = new DefaultDriver("foo.bar", null, "", "", "", - ImmutableMap.of(TestBehaviourTwo.class, - TestBehaviourTwoImpl.class), - ImmutableMap.of("goo", "wee")); - DefaultDriver three = new DefaultDriver("goo.foo", null, "BigTop", "better", "2.2", - ImmutableMap.of(TestBehaviourTwo.class, - TestBehaviourTwoImpl.class), - ImmutableMap.of("goo", "gee")); - - ddp.addDrivers(of(one, two, three)); - - Set drivers = ddp.getDrivers(); - assertEquals("incorrect types", 2, drivers.size()); - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverTest.java deleted file mode 100644 index 01cc7a16..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/DefaultDriverTest.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import com.google.common.collect.ImmutableMap; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.onosproject.net.driver.DefaultDriverDataTest.DEVICE_ID; - -public class DefaultDriverTest { - - @Test - public void basics() { - DefaultDriver ddp = new DefaultDriver("foo.base", null, "Circus", "lux", "1.2a", - ImmutableMap.of(TestBehaviour.class, - TestBehaviourImpl.class, - TestBehaviourTwo.class, - TestBehaviourTwoImpl.class), - ImmutableMap.of("foo", "bar")); - - DefaultDriver ddc = new DefaultDriver("foo.bar", ddp, "Circus", "lux", "1.2a", - ImmutableMap.of(), - ImmutableMap.of("foo", "bar")); - assertEquals("incorrect name", "foo.bar", ddc.name()); - assertEquals("incorrect parent", ddp, ddc.parent()); - assertEquals("incorrect mfr", "Circus", ddc.manufacturer()); - assertEquals("incorrect hw", "lux", ddc.hwVersion()); - assertEquals("incorrect sw", "1.2a", ddc.swVersion()); - - assertEquals("incorrect behaviour count", 2, ddp.behaviours().size()); - assertEquals("incorrect behaviour count", 0, ddc.behaviours().size()); - assertTrue("incorrect behaviour", ddc.hasBehaviour(TestBehaviour.class)); - - Behaviour b1 = ddc.createBehaviour(new DefaultDriverData(ddc, DEVICE_ID), TestBehaviour.class); - assertTrue("incorrect behaviour class", b1 instanceof TestBehaviourImpl); - - Behaviour b2 = ddc.createBehaviour(new DefaultDriverHandler(new DefaultDriverData(ddc, DEVICE_ID)), - TestBehaviourTwo.class); - assertTrue("incorrect behaviour class", b2 instanceof TestBehaviourTwoImpl); - - assertEquals("incorrect property count", 1, ddc.properties().size()); - assertEquals("incorrect key count", 1, ddc.keys().size()); - assertEquals("incorrect property", "bar", ddc.value("foo")); - - assertTrue("incorrect toString", ddc.toString().contains("lux")); - } - - @Test - public void merge() { - DefaultDriver one = new DefaultDriver("foo.bar", null, "Circus", "lux", "1.2a", - ImmutableMap.of(TestBehaviour.class, - TestBehaviourImpl.class), - ImmutableMap.of("foo", "bar")); - Driver ddc = - one.merge(new DefaultDriver("foo.bar", null, "", "", "", - ImmutableMap.of(TestBehaviourTwo.class, - TestBehaviourTwoImpl.class), - ImmutableMap.of("goo", "wee"))); - - assertEquals("incorrect name", "foo.bar", ddc.name()); - assertEquals("incorrect mfr", "Circus", ddc.manufacturer()); - assertEquals("incorrect hw", "lux", ddc.hwVersion()); - assertEquals("incorrect sw", "1.2a", ddc.swVersion()); - - assertEquals("incorrect behaviour count", 2, ddc.behaviours().size()); - assertTrue("incorrect behaviour", ddc.hasBehaviour(TestBehaviourTwo.class)); - - assertEquals("incorrect property count", 2, ddc.properties().size()); - assertEquals("incorrect key count", 2, ddc.keys().size()); - assertEquals("incorrect property", "wee", ddc.value("goo")); - - assertTrue("incorrect toString", ddc.toString().contains("Circus")); - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviour.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviour.java deleted file mode 100644 index 632fae15..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviour.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Test behaviour. - */ -public interface TestBehaviour extends Behaviour { -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourImpl.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourImpl.java deleted file mode 100644 index ec5c66bc..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Test behaviour. - */ -public class TestBehaviourImpl extends AbstractBehaviour implements TestBehaviour { -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourNoConstructorImpl.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourNoConstructorImpl.java deleted file mode 100644 index 20452368..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourNoConstructorImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Bad test behaviour. - */ -public final class TestBehaviourNoConstructorImpl - extends AbstractBehaviour implements TestBehaviour { - private TestBehaviourNoConstructorImpl() { - - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourTwo.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourTwo.java deleted file mode 100644 index 3399f00c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourTwo.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Test behaviour. - */ -public interface TestBehaviourTwo extends HandlerBehaviour { -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourTwoImpl.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourTwoImpl.java deleted file mode 100644 index 746bcc87..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/TestBehaviourTwoImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -/** - * Test behaviour. - */ -public class TestBehaviourTwoImpl extends AbstractHandlerBehaviour implements TestBehaviourTwo { -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/XmlDriverLoaderTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/XmlDriverLoaderTest.java deleted file mode 100644 index 15abc2bf..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/driver/XmlDriverLoaderTest.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.driver; - -import org.junit.Test; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Iterator; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.onosproject.net.driver.DefaultDriverDataTest.DEVICE_ID; - -/** - * Tests of the XML driver loader implementation. - */ -public class XmlDriverLoaderTest { - - @Test - public void basics() throws IOException { - XmlDriverLoader loader = new XmlDriverLoader(getClass().getClassLoader()); - InputStream stream = getClass().getResourceAsStream("drivers.1.xml"); - DriverProvider provider = loader.loadDrivers(stream, null); - System.out.println(provider); - assertEquals("incorrect driver count", 2, provider.getDrivers().size()); - - Iterator iterator = provider.getDrivers().iterator(); - Driver driver = iterator.next(); - if (!driver.name().equals("foo.1")) { - driver = iterator.next(); - } - - assertEquals("incorrect driver name", "foo.1", driver.name()); - assertEquals("incorrect driver mfg", "Circus", driver.manufacturer()); - assertEquals("incorrect driver hw", "1.2a", driver.hwVersion()); - assertEquals("incorrect driver sw", "2.2", driver.swVersion()); - - assertEquals("incorrect driver behaviours", 1, driver.behaviours().size()); - assertTrue("incorrect driver behaviour", driver.hasBehaviour(TestBehaviour.class)); - - assertEquals("incorrect driver properties", 2, driver.properties().size()); - assertTrue("incorrect driver property", driver.properties().containsKey("p1")); - } - - @Test(expected = IOException.class) - public void badXml() throws IOException { - XmlDriverLoader loader = new XmlDriverLoader(getClass().getClassLoader()); - loader.loadDrivers(getClass().getResourceAsStream("drivers.bad.xml"), null); - } - - @Test(expected = IllegalArgumentException.class) - public void noClass() throws IOException { - XmlDriverLoader loader = new XmlDriverLoader(getClass().getClassLoader()); - loader.loadDrivers(getClass().getResourceAsStream("drivers.noclass.xml"), null); - } - - @Test(expected = IllegalArgumentException.class) - public void noConstructor() throws IOException { - XmlDriverLoader loader = new XmlDriverLoader(getClass().getClassLoader()); - InputStream stream = getClass().getResourceAsStream("drivers.noconstructor.xml"); - DriverProvider provider = loader.loadDrivers(stream, null); - Driver driver = provider.getDrivers().iterator().next(); - driver.createBehaviour(new DefaultDriverData(driver, DEVICE_ID), TestBehaviour.class); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/BatchOperationTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/BatchOperationTest.java deleted file mode 100644 index 9e142e59..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/BatchOperationTest.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.Collection; -import java.util.LinkedList; -import java.util.List; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass; - -/** - * Unit tests for the BatchOperationTest object. - */ -public class BatchOperationTest { - - private enum TestType { - OP1, - OP2, - OP3 - } - - final TestEntry entry1 = new TestEntry(TestType.OP1, new TestTarget(1)); - final TestEntry entry2 = new TestEntry(TestType.OP2, new TestTarget(2)); - - - private static final class TestTarget { - private int id; - - private TestTarget(int id) { - this.id = id; - } - - @Override - public int hashCode() { - return id; - } - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - - if (o == null) { - return false; - } - - if (getClass() != o.getClass()) { - return false; - } - TestTarget that = (TestTarget) o; - return this.id == that.id; - } - - } - - private static final class TestEntry extends BatchOperationEntry { - public TestEntry(TestType operator, TestTarget target) { - super(operator, target); - } - } - - private static final class TestOperation extends BatchOperation { - private TestOperation() { - super(); - } - - private TestOperation(Collection batchOperations) { - super(batchOperations); - } - } - - /** - * Checks that the DefaultFlowRule class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutableBaseClass(BatchOperation.class); - } - - /** - * Tests the equals(), hashCode() and toString() operations. - */ - @Test - public void testEquals() { - final List ops1 = new LinkedList<>(); - ops1.add(entry1); - final List ops2 = new LinkedList<>(); - ops2.add(entry2); - - final TestOperation op1 = new TestOperation(ops1); - final TestOperation sameAsOp1 = new TestOperation(ops1); - final TestOperation op2 = new TestOperation(ops2); - - new EqualsTester() - .addEqualityGroup(op1, sameAsOp1) - .addEqualityGroup(op2) - .testEquals(); - } - - /** - * Tests the constructors for a BatchOperation. - */ - @Test - public void testConstruction() { - final List ops = new LinkedList<>(); - ops.add(entry2); - - final TestOperation op1 = new TestOperation(); - assertThat(op1.size(), is(0)); - assertThat(op1.getOperations(), hasSize(0)); - - final TestOperation op2 = new TestOperation(ops); - op1.addOperation(entry1); - op1.addAll(op2); - assertThat(op1.size(), is(2)); - assertThat(op1.getOperations(), hasSize(2)); - - op2.clear(); - assertThat(op2.size(), is(0)); - assertThat(op2.getOperations(), hasSize(0)); - } - - /** - * Tests the constructor for BatchOperationEntries. - */ - @Test - public void testEntryConstruction() { - final TestEntry entry = new TestEntry(TestType.OP3, new TestTarget(3)); - - assertThat(entry.operator(), is(TestType.OP3)); - assertThat(entry.target().id, is(3)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultFlowEntryTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultFlowEntryTest.java deleted file mode 100644 index 412acb62..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultFlowEntryTest.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.concurrent.TimeUnit; - -import org.junit.Test; -import org.onosproject.net.intent.IntentTestsMocks; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.greaterThan; -import static org.hamcrest.Matchers.is; -import static org.onosproject.net.NetTestTools.did; - -/** - * Unit tests for the DefaultFlowEntry class. - */ -public class DefaultFlowEntryTest { - private static final IntentTestsMocks.MockSelector SELECTOR = - new IntentTestsMocks.MockSelector(); - private static final IntentTestsMocks.MockTreatment TREATMENT = - new IntentTestsMocks.MockTreatment(); - - private static DefaultFlowEntry makeFlowEntry(int uniqueValue) { - FlowRule rule = DefaultFlowRule.builder() - .forDevice(did("id" + Integer.toString(uniqueValue))) - .withSelector(SELECTOR) - .withTreatment(TREATMENT) - .withPriority(uniqueValue) - .withCookie(uniqueValue) - .makeTemporary(uniqueValue) - .build(); - - return new DefaultFlowEntry(rule, FlowEntry.FlowEntryState.ADDED, - uniqueValue, uniqueValue, uniqueValue); - } - - final DefaultFlowEntry defaultFlowEntry1 = makeFlowEntry(1); - final DefaultFlowEntry sameAsDefaultFlowEntry1 = makeFlowEntry(1); - final DefaultFlowEntry defaultFlowEntry2 = makeFlowEntry(2); - - /** - * Tests the equals, hashCode and toString methods using Guava EqualsTester. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(defaultFlowEntry1, sameAsDefaultFlowEntry1) - .addEqualityGroup(defaultFlowEntry2) - .testEquals(); - } - - /** - * Tests the construction of a default flow entry from a device id. - */ - @Test - public void testDeviceBasedObject() { - assertThat(defaultFlowEntry1.deviceId(), is(did("id1"))); - assertThat(defaultFlowEntry1.selector(), is(SELECTOR)); - assertThat(defaultFlowEntry1.treatment(), is(TREATMENT)); - assertThat(defaultFlowEntry1.timeout(), is(1)); - assertThat(defaultFlowEntry1.life(), is(1L)); - assertThat(defaultFlowEntry1.packets(), is(1L)); - assertThat(defaultFlowEntry1.bytes(), is(1L)); - assertThat(defaultFlowEntry1.state(), is(FlowEntry.FlowEntryState.ADDED)); - assertThat(defaultFlowEntry1.lastSeen(), - greaterThan(System.currentTimeMillis() - - TimeUnit.MILLISECONDS.convert(1, TimeUnit.SECONDS))); - } - - /** - * Tests the setters on a default flow entry object. - */ - @Test - public void testSetters() { - final DefaultFlowEntry entry = makeFlowEntry(1); - - entry.setLastSeen(); - entry.setState(FlowEntry.FlowEntryState.PENDING_REMOVE); - entry.setPackets(11); - entry.setBytes(22); - entry.setLife(33); - - assertThat(entry.deviceId(), is(did("id1"))); - assertThat(entry.selector(), is(SELECTOR)); - assertThat(entry.treatment(), is(TREATMENT)); - assertThat(entry.timeout(), is(1)); - assertThat(entry.life(), is(33L)); - assertThat(entry.packets(), is(11L)); - assertThat(entry.bytes(), is(22L)); - assertThat(entry.state(), is(FlowEntry.FlowEntryState.PENDING_REMOVE)); - assertThat(entry.lastSeen(), - greaterThan(System.currentTimeMillis() - - TimeUnit.MILLISECONDS.convert(1, TimeUnit.SECONDS))); - } - - /** - * Tests a default flow rule built for an error. - */ - @Test - public void testErrorObject() { - final DefaultFlowEntry errorEntry = - new DefaultFlowEntry(new IntentTestsMocks.MockFlowRule(1), - 111, - 222); - assertThat(errorEntry.errType(), is(111)); - assertThat(errorEntry.errCode(), is(222)); - assertThat(errorEntry.state(), is(FlowEntry.FlowEntryState.FAILED)); - assertThat(errorEntry.lastSeen(), - greaterThan(System.currentTimeMillis() - - TimeUnit.MILLISECONDS.convert(1, TimeUnit.SECONDS))); - } - - /** - * Tests a default flow entry constructed from a flow rule. - */ - @Test - public void testFlowBasedObject() { - final DefaultFlowEntry entry = - new DefaultFlowEntry(new IntentTestsMocks.MockFlowRule(1)); - assertThat(entry.priority(), is(1)); - assertThat(entry.appId(), is((short) 0)); - assertThat(entry.lastSeen(), - greaterThan(System.currentTimeMillis() - - TimeUnit.MILLISECONDS.convert(1, TimeUnit.SECONDS))); - } - - /** - * Tests a default flow entry constructed from a flow rule plus extra - * parameters. - */ - @Test - public void testFlowBasedObjectWithParameters() { - final DefaultFlowEntry entry = - new DefaultFlowEntry(new IntentTestsMocks.MockFlowRule(33), - FlowEntry.FlowEntryState.REMOVED, - 101, 102, 103); - assertThat(entry.state(), is(FlowEntry.FlowEntryState.REMOVED)); - assertThat(entry.life(), is(101L)); - assertThat(entry.packets(), is(102L)); - assertThat(entry.bytes(), is(103L)); - assertThat(entry.lastSeen(), - greaterThan(System.currentTimeMillis() - - TimeUnit.MILLISECONDS.convert(1, TimeUnit.SECONDS))); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultFlowRuleTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultFlowRuleTest.java deleted file mode 100644 index 62acd16a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultFlowRuleTest.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import org.junit.Test; -import org.onosproject.core.DefaultGroupId; -import org.onosproject.net.intent.IntentTestsMocks; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass; -import static org.onosproject.net.NetTestTools.APP_ID; -import static org.onosproject.net.NetTestTools.did; - -/** - * Unit tests for the default flow rule class. - */ -public class DefaultFlowRuleTest { - private static final IntentTestsMocks.MockSelector SELECTOR = - new IntentTestsMocks.MockSelector(); - private static final IntentTestsMocks.MockTreatment TREATMENT = - new IntentTestsMocks.MockTreatment(); - - private static byte [] b = new byte[3]; - private static FlowRuleExtPayLoad payLoad = FlowRuleExtPayLoad.flowRuleExtPayLoad(b); - final FlowRule flowRule1 = new IntentTestsMocks.MockFlowRule(1, payLoad); - final FlowRule sameAsFlowRule1 = new IntentTestsMocks.MockFlowRule(1, payLoad); - final DefaultFlowRule defaultFlowRule1 = new DefaultFlowRule(flowRule1); - final DefaultFlowRule sameAsDefaultFlowRule1 = new DefaultFlowRule(sameAsFlowRule1); - - /** - * Checks that the DefaultFlowRule class is immutable but can be inherited - * from. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutableBaseClass(DefaultFlowRule.class); - } - - /** - * Tests the equals, hashCode and toString methods using Guava EqualsTester. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(defaultFlowRule1, sameAsDefaultFlowRule1) - .testEquals(); - } - - /** - * Tests creation of a DefaultFlowRule using a FlowRule constructor. - */ - @Test - public void testCreationFromFlowRule() { - assertThat(defaultFlowRule1.deviceId(), is(flowRule1.deviceId())); - assertThat(defaultFlowRule1.appId(), is(flowRule1.appId())); - assertThat(defaultFlowRule1.id(), is(flowRule1.id())); - assertThat(defaultFlowRule1.isPermanent(), is(flowRule1.isPermanent())); - assertThat(defaultFlowRule1.priority(), is(flowRule1.priority())); - assertThat(defaultFlowRule1.selector(), is(flowRule1.selector())); - assertThat(defaultFlowRule1.treatment(), is(flowRule1.treatment())); - assertThat(defaultFlowRule1.timeout(), is(flowRule1.timeout())); - assertThat(defaultFlowRule1.payLoad(), is(flowRule1.payLoad())); - } - - /** - * Tests creation of a DefaultFlowRule using a FlowId constructor. - */ - - @Test - public void testCreationWithFlowId() { - final FlowRule rule = - DefaultFlowRule.builder() - .forDevice(did("1")) - .withSelector(SELECTOR) - .withTreatment(TREATMENT) - .withPriority(22) - .makeTemporary(44) - .fromApp(APP_ID) - .build(); - - assertThat(rule.deviceId(), is(did("1"))); - assertThat(rule.isPermanent(), is(false)); - assertThat(rule.priority(), is(22)); - assertThat(rule.selector(), is(SELECTOR)); - assertThat(rule.treatment(), is(TREATMENT)); - assertThat(rule.timeout(), is(44)); - } - - - /** - * Tests creation of a DefaultFlowRule using a PayLoad constructor. - */ - @Test - public void testCreationWithPayLoadByFlowTable() { - final DefaultFlowRule rule = - new DefaultFlowRule(did("1"), null, - null, 22, APP_ID, - 44, false, payLoad); - assertThat(rule.deviceId(), is(did("1"))); - assertThat(rule.isPermanent(), is(false)); - assertThat(rule.priority(), is(22)); - assertThat(rule.timeout(), is(44)); - assertThat(defaultFlowRule1.payLoad(), is(payLoad)); - } - - /** - * Tests creation of a DefaultFlowRule using a PayLoad constructor. - */ - @Test - public void testCreationWithPayLoadByGroupTable() { - final DefaultFlowRule rule = - new DefaultFlowRule(did("1"), null, - null, 22, APP_ID, new DefaultGroupId(0), - 44, false, payLoad); - assertThat(rule.deviceId(), is(did("1"))); - assertThat(rule.isPermanent(), is(false)); - assertThat(rule.priority(), is(22)); - assertThat(rule.timeout(), is(44)); - assertThat(rule.groupId(), is(new DefaultGroupId(0))); - assertThat(defaultFlowRule1.payLoad(), is(payLoad)); - } - /** - * Tests the creation of a DefaultFlowRule using an AppId constructor. - */ - @Test - public void testCreationWithAppId() { - final FlowRule rule = - DefaultFlowRule.builder() - .forDevice(did("1")) - .withSelector(SELECTOR) - .withTreatment(TREATMENT) - .withPriority(22) - .fromApp(APP_ID) - .makeTemporary(44) - .build(); - - assertThat(rule.deviceId(), is(did("1"))); - assertThat(rule.isPermanent(), is(false)); - assertThat(rule.priority(), is(22)); - assertThat(rule.selector(), is(SELECTOR)); - assertThat(rule.treatment(), is(TREATMENT)); - assertThat(rule.timeout(), is(44)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficSelectorTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficSelectorTest.java deleted file mode 100644 index 10c5a637..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficSelectorTest.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.Set; - -import org.hamcrest.Description; -import org.hamcrest.Factory; -import org.hamcrest.Matcher; -import org.hamcrest.TypeSafeMatcher; -import org.junit.Test; -import org.onlab.packet.Ip6Address; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onlab.packet.TpPort; -import org.onlab.packet.VlanId; -import org.onosproject.net.IndexedLambda; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.criteria.Criteria; -import org.onosproject.net.flow.criteria.Criterion; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.flow.criteria.Criterion.Type; - -/** - * Unit tests for default traffic selector class. - */ -public class DefaultTrafficSelectorTest { - - /** - * Checks that the DefaultFlowRule class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultTrafficSelector.class); - } - - /** - * Tests equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - final short one = 1; - final short two = 2; - - final TrafficSelector selector1 = DefaultTrafficSelector.builder() - .add(Criteria.matchLambda(new IndexedLambda(one))) - .build(); - final TrafficSelector sameAsSelector1 = DefaultTrafficSelector.builder() - .add(Criteria.matchLambda(new IndexedLambda(one))) - .build(); - final TrafficSelector selector2 = DefaultTrafficSelector.builder() - .add(Criteria.matchLambda(new IndexedLambda(two))) - .build(); - - new EqualsTester() - .addEqualityGroup(selector1, sameAsSelector1) - .addEqualityGroup(selector2) - .testEquals(); - } - - /** - * Hamcrest matcher to check that a selector contains a - * Criterion with the specified type. - */ - public static final class CriterionExistsMatcher - extends TypeSafeMatcher { - private final Criterion.Type type; - - /** - * Constructs a matcher for the given criterion type. - * - * @param typeValue criterion type to match - */ - public CriterionExistsMatcher(Criterion.Type typeValue) { - type = typeValue; - } - - @Override - public boolean matchesSafely(TrafficSelector selector) { - final Set criteria = selector.criteria(); - - return notNullValue().matches(criteria) && - hasSize(1).matches(criteria) && - notNullValue().matches(selector.getCriterion(type)); - } - - @Override - public void describeTo(Description description) { - description.appendText("a criterion with type \" "). - appendText(type.toString()). - appendText("\""); - } - } - - - /** - * Creates a criterion type matcher. Returns a matcher - * for a criterion with the given type. - * - * @param type type of Criterion to match - * @return Matcher object - */ - @Factory - public static Matcher hasCriterionWithType(Criterion.Type type) { - return new CriterionExistsMatcher(type); - } - - - /** - * Tests the builder functions that add specific criteria. - */ - @Test - public void testCriteriaCreation() { - TrafficSelector selector; - - final long longValue = 0x12345678; - final int intValue = 22; - final short shortValue = 33; - final byte byteValue = 44; - final byte dscpValue = 0xf; - final byte ecnValue = 3; - final MacAddress macValue = MacAddress.valueOf("11:22:33:44:55:66"); - final IpPrefix ipPrefixValue = IpPrefix.valueOf("192.168.1.0/24"); - final IpPrefix ipv6PrefixValue = IpPrefix.valueOf("fe80::1/64"); - final Ip6Address ipv6AddressValue = Ip6Address.valueOf("fe80::1"); - - selector = DefaultTrafficSelector.builder() - .matchInPort(PortNumber.portNumber(11)).build(); - assertThat(selector, hasCriterionWithType(Type.IN_PORT)); - - selector = DefaultTrafficSelector.builder() - .matchInPhyPort(PortNumber.portNumber(11)).build(); - assertThat(selector, hasCriterionWithType(Type.IN_PHY_PORT)); - - selector = DefaultTrafficSelector.builder() - .matchMetadata(longValue).build(); - assertThat(selector, hasCriterionWithType(Type.METADATA)); - - selector = DefaultTrafficSelector.builder() - .matchEthDst(macValue).build(); - assertThat(selector, hasCriterionWithType(Type.ETH_DST)); - - selector = DefaultTrafficSelector.builder() - .matchEthSrc(macValue).build(); - assertThat(selector, hasCriterionWithType(Type.ETH_SRC)); - - selector = DefaultTrafficSelector.builder() - .matchEthType(shortValue).build(); - assertThat(selector, hasCriterionWithType(Type.ETH_TYPE)); - - selector = DefaultTrafficSelector.builder() - .matchVlanId(VlanId.vlanId(shortValue)).build(); - assertThat(selector, hasCriterionWithType(Type.VLAN_VID)); - - selector = DefaultTrafficSelector.builder() - .matchVlanPcp(byteValue).build(); - assertThat(selector, hasCriterionWithType(Type.VLAN_PCP)); - - selector = DefaultTrafficSelector.builder() - .matchIPDscp(dscpValue).build(); - assertThat(selector, hasCriterionWithType(Type.IP_DSCP)); - - selector = DefaultTrafficSelector.builder() - .matchIPEcn(ecnValue).build(); - assertThat(selector, hasCriterionWithType(Type.IP_ECN)); - - selector = DefaultTrafficSelector.builder() - .matchIPProtocol(byteValue).build(); - assertThat(selector, hasCriterionWithType(Type.IP_PROTO)); - - selector = DefaultTrafficSelector.builder() - .matchIPSrc(ipPrefixValue).build(); - assertThat(selector, hasCriterionWithType(Type.IPV4_SRC)); - - selector = DefaultTrafficSelector.builder() - .matchIPDst(ipPrefixValue).build(); - assertThat(selector, hasCriterionWithType(Type.IPV4_DST)); - - selector = DefaultTrafficSelector.builder() - .matchTcpSrc(TpPort.tpPort(intValue)).build(); - assertThat(selector, hasCriterionWithType(Type.TCP_SRC)); - - selector = DefaultTrafficSelector.builder() - .matchTcpDst(TpPort.tpPort(intValue)).build(); - assertThat(selector, hasCriterionWithType(Type.TCP_DST)); - - selector = DefaultTrafficSelector.builder() - .matchUdpSrc(TpPort.tpPort(intValue)).build(); - assertThat(selector, hasCriterionWithType(Type.UDP_SRC)); - - selector = DefaultTrafficSelector.builder() - .matchUdpDst(TpPort.tpPort(intValue)).build(); - assertThat(selector, hasCriterionWithType(Type.UDP_DST)); - - selector = DefaultTrafficSelector.builder() - .matchSctpSrc(TpPort.tpPort(intValue)).build(); - assertThat(selector, hasCriterionWithType(Type.SCTP_SRC)); - - selector = DefaultTrafficSelector.builder() - .matchSctpDst(TpPort.tpPort(intValue)).build(); - assertThat(selector, hasCriterionWithType(Type.SCTP_DST)); - - selector = DefaultTrafficSelector.builder() - .matchIcmpType(byteValue).build(); - assertThat(selector, hasCriterionWithType(Type.ICMPV4_TYPE)); - - selector = DefaultTrafficSelector.builder() - .matchIcmpCode(byteValue).build(); - assertThat(selector, hasCriterionWithType(Type.ICMPV4_CODE)); - - selector = DefaultTrafficSelector.builder() - .matchIPv6Src(ipv6PrefixValue).build(); - assertThat(selector, hasCriterionWithType(Type.IPV6_SRC)); - - selector = DefaultTrafficSelector.builder() - .matchIPv6Dst(ipv6PrefixValue).build(); - assertThat(selector, hasCriterionWithType(Type.IPV6_DST)); - - selector = DefaultTrafficSelector.builder() - .matchIPv6FlowLabel(intValue).build(); - assertThat(selector, hasCriterionWithType(Type.IPV6_FLABEL)); - - selector = DefaultTrafficSelector.builder() - .matchIcmpv6Type(byteValue).build(); - assertThat(selector, hasCriterionWithType(Type.ICMPV6_TYPE)); - - selector = DefaultTrafficSelector.builder() - .matchIPv6NDTargetAddress(ipv6AddressValue).build(); - assertThat(selector, hasCriterionWithType(Type.IPV6_ND_TARGET)); - - selector = DefaultTrafficSelector.builder() - .matchIPv6NDSourceLinkLayerAddress(macValue).build(); - assertThat(selector, hasCriterionWithType(Type.IPV6_ND_SLL)); - - selector = DefaultTrafficSelector.builder() - .matchIPv6NDTargetLinkLayerAddress(macValue).build(); - assertThat(selector, hasCriterionWithType(Type.IPV6_ND_TLL)); - - selector = DefaultTrafficSelector.builder() - .matchMplsLabel(MplsLabel.mplsLabel(3)).build(); - assertThat(selector, hasCriterionWithType(Type.MPLS_LABEL)); - - selector = DefaultTrafficSelector.builder() - .matchIPv6ExthdrFlags(Criterion.IPv6ExthdrFlags.NONEXT.getValue()).build(); - assertThat(selector, hasCriterionWithType(Type.IPV6_EXTHDR)); - - selector = DefaultTrafficSelector.builder() - .add(Criteria.matchLambda(new IndexedLambda(shortValue))).build(); - assertThat(selector, hasCriterionWithType(Type.OCH_SIGID)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficTreatmentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficTreatmentTest.java deleted file mode 100644 index 288f5f2f..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficTreatmentTest.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; -import org.onosproject.net.IndexedLambda; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.instructions.Instruction; -import org.onosproject.net.flow.instructions.Instructions; - -import java.util.List; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; - -/** - * Unit tests for the DefaultTrafficTreatment class. - */ -public class DefaultTrafficTreatmentTest { - - // Tests for the nested Builder class - - /** - * Tests that the Builder constructors return equivalent objects - * when given the same data. - */ - @Test - public void testTreatmentBuilderConstructors() { - final TrafficTreatment treatment1 = - DefaultTrafficTreatment.builder() - .add(Instructions.modL0Lambda(new IndexedLambda(4))) - .build(); - final TrafficTreatment treatment2 = - DefaultTrafficTreatment.builder(treatment1).build(); - assertThat(treatment1, is(equalTo(treatment2))); - } - - /** - * Tests methods defined on the Builder. - */ - @Test - public void testBuilderMethods() { - final Instruction instruction1 = - Instructions.modL0Lambda(new IndexedLambda(4)); - - final TrafficTreatment.Builder builder1 = - DefaultTrafficTreatment.builder() - .add(instruction1) - .setEthDst(MacAddress.BROADCAST) - .setEthSrc(MacAddress.BROADCAST) - .setIpDst(IpAddress.valueOf("1.1.1.1")) - .setIpSrc(IpAddress.valueOf("2.2.2.2")) - .add(Instructions.modL0Lambda(new IndexedLambda(4))) - .setOutput(PortNumber.portNumber(2)) - .setVlanId(VlanId.vlanId((short) 4)) - .setVlanPcp((byte) 3); - - final TrafficTreatment treatment1 = builder1.build(); - - final List instructions1 = treatment1.immediate(); - assertThat(instructions1, hasSize(9)); - - builder1.drop(); - builder1.add(instruction1); - - final List instructions2 = builder1.build().immediate(); - assertThat(instructions2, hasSize(11)); - - builder1.deferred() - .popVlan() - .pushVlan() - .setVlanId(VlanId.vlanId((short) 5)); - - final List instructions3 = builder1.build().immediate(); - assertThat(instructions3, hasSize(11)); - final List instructions4 = builder1.build().deferred(); - assertThat(instructions4, hasSize(3)); - } - - /** - * Tests equals(), hashCode() and toString() methods of - * DefaultTrafficTreatment. - */ - @Test - public void testEquals() { - final IndexedLambda lambda1 = new IndexedLambda(4); - final IndexedLambda lambda2 = new IndexedLambda(5); - final TrafficTreatment treatment1 = - DefaultTrafficTreatment.builder() - .add(Instructions.modL0Lambda(lambda1)) - .build(); - final TrafficTreatment sameAsTreatment1 = - DefaultTrafficTreatment.builder() - .add(Instructions.modL0Lambda(lambda1)) - .build(); - final TrafficTreatment treatment2 = - DefaultTrafficTreatment.builder() - .add(Instructions.modL0Lambda(lambda2)) - .build(); - new EqualsTester() - .addEqualityGroup(treatment1, sameAsTreatment1) - .addEqualityGroup(treatment2) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowIdTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowIdTest.java deleted file mode 100644 index 263d4031..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowIdTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for flow id class. - */ -public class FlowIdTest { - - final FlowId flowId1 = FlowId.valueOf(1); - final FlowId sameAsFlowId1 = FlowId.valueOf(1); - final FlowId flowId2 = FlowId.valueOf(2); - - /** - * Checks that the FlowId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(FlowId.class); - } - - /** - * Checks the operation of equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(flowId1, sameAsFlowId1) - .addEqualityGroup(flowId2) - .testEquals(); - } - - /** - * Checks the construction of a FlowId object. - */ - @Test - public void testConstruction() { - final long flowIdValue = 7777L; - final FlowId flowId = FlowId.valueOf(flowIdValue); - assertThat(flowId, is(notNullValue())); - assertThat(flowId.value(), is(flowIdValue)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleBatchOperationTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleBatchOperationTest.java deleted file mode 100644 index 4fa3492a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleBatchOperationTest.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.LinkedList; - -import org.junit.Test; -import org.onosproject.net.intent.IntentTestsMocks; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for flow rule batch classes. - */ -public class FlowRuleBatchOperationTest { - - /** - * Tests the equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - final FlowRule rule = new IntentTestsMocks.MockFlowRule(1); - final FlowRuleBatchEntry entry1 = new FlowRuleBatchEntry( - FlowRuleBatchEntry.FlowRuleOperation.ADD, rule); - final FlowRuleBatchEntry entry2 = new FlowRuleBatchEntry( - FlowRuleBatchEntry.FlowRuleOperation.MODIFY, rule); - final FlowRuleBatchEntry entry3 = new FlowRuleBatchEntry( - FlowRuleBatchEntry.FlowRuleOperation.REMOVE, rule); - final LinkedList ops1 = new LinkedList<>(); - ops1.add(entry1); - final LinkedList ops2 = new LinkedList<>(); - ops1.add(entry2); - final LinkedList ops3 = new LinkedList<>(); - ops3.add(entry3); - - final FlowRuleBatchOperation operation1 = new FlowRuleBatchOperation(ops1, null, 0); - final FlowRuleBatchOperation sameAsOperation1 = new FlowRuleBatchOperation(ops1, null, 0); - final FlowRuleBatchOperation operation2 = new FlowRuleBatchOperation(ops2, null, 0); - final FlowRuleBatchOperation operation3 = new FlowRuleBatchOperation(ops3, null, 0); - - new EqualsTester() - .addEqualityGroup(operation1, sameAsOperation1) - .addEqualityGroup(operation2) - .addEqualityGroup(operation3) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleBatchRequestTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleBatchRequestTest.java deleted file mode 100644 index b379a6ec..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleBatchRequestTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.junit.Test; -import org.onosproject.net.intent.IntentTestsMocks; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.onosproject.net.flow.FlowRuleBatchEntry.FlowRuleOperation.ADD; -import static org.onosproject.net.flow.FlowRuleBatchEntry.FlowRuleOperation.REMOVE; - -/** - * Unit tests for the FlowRuleBatchRequest class. - */ -public class FlowRuleBatchRequestTest { - - /** - * Tests that construction of FlowRuleBatchRequest objects returns the - * correct objects. - */ - @Test - public void testConstruction() { - final FlowRule rule1 = new IntentTestsMocks.MockFlowRule(1); - final FlowRule rule2 = new IntentTestsMocks.MockFlowRule(2); - final Set batch = new HashSet<>(); - batch.add(new FlowRuleBatchEntry(ADD, rule1)); - - batch.add(new FlowRuleBatchEntry(REMOVE, rule2)); - - - final FlowRuleBatchRequest request = - new FlowRuleBatchRequest(1, batch); - - assertThat(request.ops(), hasSize(2)); - assertThat(request.batchId(), is(1L)); - - final FlowRuleBatchOperation op = request.asBatchOperation(rule1.deviceId()); - assertThat(op.size(), is(2)); - - final List ops = op.getOperations(); - assertThat(ops, hasSize(2)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleEventTest.java deleted file mode 100644 index 2d79c893..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleEventTest.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.flow; - -import java.util.concurrent.TimeUnit; - -import org.junit.Test; -import org.onosproject.event.AbstractEventTest; -import org.onosproject.net.intent.IntentTestsMocks; - -import com.google.common.testing.EqualsTester; - -/** - * Unit Tests for the FlowRuleEvent class. - */ -public class FlowRuleEventTest extends AbstractEventTest { - - @Test - public void testEquals() { - final FlowRule flowRule1 = new IntentTestsMocks.MockFlowRule(1); - final FlowRule flowRule2 = new IntentTestsMocks.MockFlowRule(2); - final long time = 123L; - final FlowRuleEvent event1 = - new FlowRuleEvent(FlowRuleEvent.Type.RULE_ADDED, flowRule1, time); - final FlowRuleEvent sameAsEvent1 = - new FlowRuleEvent(FlowRuleEvent.Type.RULE_ADDED, flowRule1, time); - final FlowRuleEvent event2 = - new FlowRuleEvent(FlowRuleEvent.Type.RULE_ADD_REQUESTED, - flowRule2, time); - - // Equality for events is based on Object, these should all compare - // as different. - new EqualsTester() - .addEqualityGroup(event1) - .addEqualityGroup(sameAsEvent1) - .addEqualityGroup(event2) - .testEquals(); - } - - /** - * Tests the constructor where a time is passed in. - */ - @Test - public void testTimeConstructor() { - final long time = 123L; - final FlowRule flowRule = new IntentTestsMocks.MockFlowRule(1); - final FlowRuleEvent event = - new FlowRuleEvent(FlowRuleEvent.Type.RULE_REMOVE_REQUESTED, flowRule, time); - validateEvent(event, FlowRuleEvent.Type.RULE_REMOVE_REQUESTED, flowRule, time); - } - - /** - * Tests the constructor with the default time value. - */ - @Test - public void testConstructor() { - final long time = System.currentTimeMillis(); - final FlowRule flowRule = new IntentTestsMocks.MockFlowRule(1); - final FlowRuleEvent event = - new FlowRuleEvent(FlowRuleEvent.Type.RULE_UPDATED, flowRule); - validateEvent(event, FlowRuleEvent.Type.RULE_UPDATED, flowRule, time, - time + TimeUnit.SECONDS.toMillis(30)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleExtPayLoadTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleExtPayLoadTest.java deleted file mode 100644 index 7a61f823..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleExtPayLoadTest.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; -/** - * Test for FlowRuleExtPayLoad. - */ -public class FlowRuleExtPayLoadTest { - final byte[] b = new byte[3]; - final byte[] b1 = new byte[5]; - final FlowRuleExtPayLoad payLoad1 = FlowRuleExtPayLoad.flowRuleExtPayLoad(b); - final FlowRuleExtPayLoad sameAsPayLoad1 = FlowRuleExtPayLoad.flowRuleExtPayLoad(b); - final FlowRuleExtPayLoad payLoad2 = FlowRuleExtPayLoad.flowRuleExtPayLoad(b1); - - /** - * Checks that the FlowRuleExtPayLoad class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(FlowRuleExtPayLoad.class); - } - - /** - * Checks the operation of equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(payLoad1, sameAsPayLoad1) - .addEqualityGroup(payLoad2) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleServiceAdapter.java deleted file mode 100644 index 56e59118..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/FlowRuleServiceAdapter.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flow; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; - -/** - * Test adapter for flow rule service. - */ -public class FlowRuleServiceAdapter implements FlowRuleService { - @Override - public int getFlowRuleCount() { - return 0; - } - - @Override - public Iterable getFlowEntries(DeviceId deviceId) { - return null; - } - - @Override - public void applyFlowRules(FlowRule... flowRules) { - } - - @Override - public void removeFlowRules(FlowRule... flowRules) { - } - - @Override - public void removeFlowRulesById(ApplicationId appId) { - } - - @Override - public Iterable getFlowRulesById(ApplicationId id) { - return null; - } - - @Override - public Iterable getFlowRulesByGroupId(ApplicationId appId, short groupId) { - return null; - } - - @Override - public void apply(FlowRuleOperations ops) { - } - - @Override - public void addListener(FlowRuleListener listener) { - } - - @Override - public void removeListener(FlowRuleListener listener) { - } - - @Override - public Iterable getFlowTableStatistics(DeviceId deviceId) { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/criteria/CriteriaTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/criteria/CriteriaTest.java deleted file mode 100644 index d113fb98..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/criteria/CriteriaTest.java +++ /dev/null @@ -1,1254 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.criteria; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility; -import static org.onosproject.net.OduSignalId.oduSignalId; -import static org.onosproject.net.PortNumber.portNumber; - -import org.junit.Test; -import org.onlab.packet.EthType; -import org.onlab.packet.Ip6Address; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onlab.packet.TpPort; -import org.onlab.packet.VlanId; -import org.onosproject.net.ChannelSpacing; -import org.onosproject.net.GridType; -import org.onosproject.net.Lambda; -import org.onosproject.net.OchSignalType; -import org.onosproject.net.OduSignalId; -import org.onosproject.net.OduSignalType; -import org.onosproject.net.PortNumber; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for the Criteria class and its subclasses. - */ -public class CriteriaTest { - - final PortNumber port1 = portNumber(1); - final PortNumber port2 = portNumber(2); - - Criterion matchInPort1 = Criteria.matchInPort(port1); - Criterion sameAsMatchInPort1 = Criteria.matchInPort(port1); - Criterion matchInPort2 = Criteria.matchInPort(port2); - - Criterion matchInPhyPort1 = Criteria.matchInPhyPort(port1); - Criterion sameAsMatchInPhyPort1 = Criteria.matchInPhyPort(port1); - Criterion matchInPhyPort2 = Criteria.matchInPhyPort(port2); - - long metadata1 = 1; - long metadata2 = 2; - Criterion matchMetadata1 = Criteria.matchMetadata(metadata1); - Criterion sameAsMatchMetadata1 = Criteria.matchMetadata(metadata1); - Criterion matchMetadata2 = Criteria.matchMetadata(metadata2); - - private static final String MAC1 = "00:00:00:00:00:01"; - private static final String MAC2 = "00:00:00:00:00:02"; - private MacAddress mac1 = MacAddress.valueOf(MAC1); - private MacAddress mac2 = MacAddress.valueOf(MAC2); - Criterion matchEth1 = Criteria.matchEthSrc(mac1); - Criterion sameAsMatchEth1 = Criteria.matchEthSrc(mac1); - Criterion matchEth2 = Criteria.matchEthDst(mac2); - - int ethType1 = 1; - int ethType2 = 2; - Criterion matchEthType1 = Criteria.matchEthType(ethType1); - Criterion sameAsMatchEthType1 = Criteria.matchEthType(ethType1); - Criterion matchEthType2 = Criteria.matchEthType(ethType2); - - short vlan1 = 1; - short vlan2 = 2; - VlanId vlanId1 = VlanId.vlanId(vlan1); - VlanId vlanId2 = VlanId.vlanId(vlan2); - Criterion matchVlanId1 = Criteria.matchVlanId(vlanId1); - Criterion sameAsMatchVlanId1 = Criteria.matchVlanId(vlanId1); - Criterion matchVlanId2 = Criteria.matchVlanId(vlanId2); - - byte vlanPcp1 = 1; - byte vlanPcp2 = 2; - Criterion matchVlanPcp1 = Criteria.matchVlanPcp(vlanPcp1); - Criterion sameAsMatchVlanPcp1 = Criteria.matchVlanPcp(vlanPcp1); - Criterion matchVlanPcp2 = Criteria.matchVlanPcp(vlanPcp2); - - byte ipDscp1 = 1; - byte ipDscp2 = 2; - Criterion matchIpDscp1 = Criteria.matchIPDscp(ipDscp1); - Criterion sameAsMatchIpDscp1 = Criteria.matchIPDscp(ipDscp1); - Criterion matchIpDscp2 = Criteria.matchIPDscp(ipDscp2); - - byte ipEcn1 = 1; - byte ipEcn2 = 2; - Criterion matchIpEcn1 = Criteria.matchIPEcn(ipEcn1); - Criterion sameAsMatchIpEcn1 = Criteria.matchIPEcn(ipEcn1); - Criterion matchIpEcn2 = Criteria.matchIPEcn(ipEcn2); - - short protocol1 = 1; - short protocol2 = 2; - Criterion matchIpProtocol1 = Criteria.matchIPProtocol(protocol1); - Criterion sameAsMatchIpProtocol1 = Criteria.matchIPProtocol(protocol1); - Criterion matchIpProtocol2 = Criteria.matchIPProtocol(protocol2); - - private static final String IP1 = "1.2.3.4/24"; - private static final String IP2 = "5.6.7.8/24"; - private static final String IPV61 = "fe80::1/64"; - private static final String IPV62 = "fc80::2/64"; - private IpPrefix ip1 = IpPrefix.valueOf(IP1); - private IpPrefix ip2 = IpPrefix.valueOf(IP2); - private IpPrefix ipv61 = IpPrefix.valueOf(IPV61); - private IpPrefix ipv62 = IpPrefix.valueOf(IPV62); - Criterion matchIp1 = Criteria.matchIPSrc(ip1); - Criterion sameAsMatchIp1 = Criteria.matchIPSrc(ip1); - Criterion matchIp2 = Criteria.matchIPSrc(ip2); - Criterion matchIpv61 = Criteria.matchIPSrc(ipv61); - Criterion sameAsMatchIpv61 = Criteria.matchIPSrc(ipv61); - Criterion matchIpv62 = Criteria.matchIPSrc(ipv62); - - private TpPort tpPort1 = TpPort.tpPort(1); - private TpPort tpPort2 = TpPort.tpPort(2); - Criterion matchTcpPort1 = Criteria.matchTcpSrc(tpPort1); - Criterion sameAsMatchTcpPort1 = Criteria.matchTcpSrc(tpPort1); - Criterion matchTcpPort2 = Criteria.matchTcpDst(tpPort2); - - Criterion matchUdpPort1 = Criteria.matchUdpSrc(tpPort1); - Criterion sameAsMatchUdpPort1 = Criteria.matchUdpSrc(tpPort1); - Criterion matchUdpPort2 = Criteria.matchUdpDst(tpPort2); - - - int tcpFlags1 = - Criterion.TCPFlags.NS.getValue() | - Criterion.TCPFlags.CWR.getValue() | - Criterion.TCPFlags.ECE.getValue() | - Criterion.TCPFlags.URG.getValue() | - Criterion.TCPFlags.ACK.getValue() | - Criterion.TCPFlags.PSH.getValue() | - Criterion.TCPFlags.RST.getValue() | - Criterion.TCPFlags.SYN.getValue(); - - int tcpFlags2 = tcpFlags1 | - Criterion.TCPFlags.FIN.getValue(); - - Criterion matchTcpFlags1 = Criteria.matchTcpFlags(tcpFlags1); - Criterion sameAsmatchTcpFlags1 = Criteria.matchTcpFlags(tcpFlags1); - Criterion matchTcpFlags2 = Criteria.matchTcpFlags(tcpFlags2); - - Criterion matchSctpPort1 = Criteria.matchSctpSrc(tpPort1); - Criterion sameAsMatchSctpPort1 = Criteria.matchSctpSrc(tpPort1); - Criterion matchSctpPort2 = Criteria.matchSctpDst(tpPort2); - - short icmpType1 = 1; - short icmpType2 = 2; - Criterion matchIcmpType1 = Criteria.matchIcmpType(icmpType1); - Criterion sameAsMatchIcmpType1 = Criteria.matchIcmpType(icmpType1); - Criterion matchIcmpType2 = Criteria.matchIcmpType(icmpType2); - - short icmpCode1 = 1; - short icmpCode2 = 2; - Criterion matchIcmpCode1 = Criteria.matchIcmpCode(icmpCode1); - Criterion sameAsMatchIcmpCode1 = Criteria.matchIcmpCode(icmpCode1); - Criterion matchIcmpCode2 = Criteria.matchIcmpCode(icmpCode2); - - int flowLabel1 = 1; - int flowLabel2 = 2; - Criterion matchFlowLabel1 = Criteria.matchIPv6FlowLabel(flowLabel1); - Criterion sameAsMatchFlowLabel1 = Criteria.matchIPv6FlowLabel(flowLabel1); - Criterion matchFlowLabel2 = Criteria.matchIPv6FlowLabel(flowLabel2); - - short icmpv6Type1 = 1; - short icmpv6Type2 = 2; - Criterion matchIcmpv6Type1 = Criteria.matchIcmpv6Type(icmpv6Type1); - Criterion sameAsMatchIcmpv6Type1 = Criteria.matchIcmpv6Type(icmpv6Type1); - Criterion matchIcmpv6Type2 = Criteria.matchIcmpv6Type(icmpv6Type2); - - short icmpv6Code1 = 1; - short icmpv6Code2 = 2; - Criterion matchIcmpv6Code1 = Criteria.matchIcmpv6Code(icmpv6Code1); - Criterion sameAsMatchIcmpv6Code1 = Criteria.matchIcmpv6Code(icmpv6Code1); - Criterion matchIcmpv6Code2 = Criteria.matchIcmpv6Code(icmpv6Code2); - - private static final String IPV6_ADDR1 = "fe80::1"; - private static final String IPV6_ADDR2 = "fe80::2"; - private Ip6Address ip6TargetAddress1 = Ip6Address.valueOf(IPV6_ADDR1); - private Ip6Address ip6TargetAddress2 = Ip6Address.valueOf(IPV6_ADDR2); - Criterion matchIpv6TargetAddr1 = - Criteria.matchIPv6NDTargetAddress(ip6TargetAddress1); - Criterion sameAsMatchIpv6TargetAddr1 = - Criteria.matchIPv6NDTargetAddress(ip6TargetAddress1); - Criterion matchIpv6TargetAddr2 = - Criteria.matchIPv6NDTargetAddress(ip6TargetAddress2); - - private static final String LL_MAC1 = "00:00:00:00:00:01"; - private static final String LL_MAC2 = "00:00:00:00:00:02"; - private MacAddress llMac1 = MacAddress.valueOf(LL_MAC1); - private MacAddress llMac2 = MacAddress.valueOf(LL_MAC2); - Criterion matchSrcLlAddr1 = - Criteria.matchIPv6NDSourceLinkLayerAddress(llMac1); - Criterion sameAsMatchSrcLlAddr1 = - Criteria.matchIPv6NDSourceLinkLayerAddress(llMac1); - Criterion matchSrcLlAddr2 = - Criteria.matchIPv6NDSourceLinkLayerAddress(llMac2); - Criterion matchTargetLlAddr1 = - Criteria.matchIPv6NDTargetLinkLayerAddress(llMac1); - Criterion sameAsMatchTargetLlAddr1 = - Criteria.matchIPv6NDTargetLinkLayerAddress(llMac1); - Criterion matchTargetLlAddr2 = - Criteria.matchIPv6NDTargetLinkLayerAddress(llMac2); - - MplsLabel mpls1 = MplsLabel.mplsLabel(1); - MplsLabel mpls2 = MplsLabel.mplsLabel(2); - Criterion matchMpls1 = Criteria.matchMplsLabel(mpls1); - Criterion sameAsMatchMpls1 = Criteria.matchMplsLabel(mpls1); - Criterion matchMpls2 = Criteria.matchMplsLabel(mpls2); - - byte mplsTc1 = 1; - byte mplsTc2 = 2; - Criterion matchMplsTc1 = Criteria.matchMplsTc(mplsTc1); - Criterion sameAsMatchMplsTc1 = Criteria.matchMplsTc(mplsTc1); - Criterion matchMplsTc2 = Criteria.matchMplsTc(mplsTc2); - - long tunnelId1 = 1; - long tunnelId2 = 2; - Criterion matchTunnelId1 = Criteria.matchTunnelId(tunnelId1); - Criterion sameAsMatchTunnelId1 = Criteria.matchTunnelId(tunnelId1); - Criterion matchTunnelId2 = Criteria.matchTunnelId(tunnelId2); - - int ipv6ExthdrFlags1 = - Criterion.IPv6ExthdrFlags.NONEXT.getValue() | - Criterion.IPv6ExthdrFlags.ESP.getValue() | - Criterion.IPv6ExthdrFlags.AUTH.getValue() | - Criterion.IPv6ExthdrFlags.DEST.getValue() | - Criterion.IPv6ExthdrFlags.FRAG.getValue() | - Criterion.IPv6ExthdrFlags.ROUTER.getValue() | - Criterion.IPv6ExthdrFlags.HOP.getValue() | - Criterion.IPv6ExthdrFlags.UNREP.getValue(); - int ipv6ExthdrFlags2 = ipv6ExthdrFlags1 | - Criterion.IPv6ExthdrFlags.UNSEQ.getValue(); - Criterion matchIpv6ExthdrFlags1 = - Criteria.matchIPv6ExthdrFlags(ipv6ExthdrFlags1); - Criterion sameAsMatchIpv6ExthdrFlags1 = - Criteria.matchIPv6ExthdrFlags(ipv6ExthdrFlags1); - Criterion matchIpv6ExthdrFlags2 = - Criteria.matchIPv6ExthdrFlags(ipv6ExthdrFlags2); - - Criterion matchOchSignalType1 = Criteria.matchOchSignalType(OchSignalType.FIXED_GRID); - Criterion sameAsMatchOchSignalType1 = Criteria.matchOchSignalType(OchSignalType.FIXED_GRID); - Criterion matchOchSignalType2 = Criteria.matchOchSignalType(OchSignalType.FLEX_GRID); - - Criterion matchIndexedLambda1 = Criteria.matchLambda(Lambda.indexedLambda(1)); - Criterion sameAsMatchIndexedLambda1 = Criteria.matchLambda(Lambda.indexedLambda(1)); - Criterion matchIndexedLambda2 = Criteria.matchLambda(Lambda.indexedLambda(2)); - - Criterion matchOchSignal1 = - Criteria.matchLambda(Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_100GHZ, 4, 8)); - Criterion sameAsMatchOchSignal1 = - Criteria.matchLambda(Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_100GHZ, 4, 8)); - Criterion matchOchSignal2 = - Criteria.matchLambda(Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_50GHZ, 4, 8)); - - final OduSignalId odu1 = oduSignalId(1, 80, new byte[]{1, 1, 2, 2, 1, 2, 2, 1, 2, 2}); - final OduSignalId odu2 = oduSignalId(3, 8, new byte[]{1, 0, 0, 0, 0, 0, 0, 0, 0, 0}); - Criterion matchOduSignalId1 = Criteria.matchOduSignalId(odu1); - Criterion sameAsMatchOduSignalId1 = Criteria.matchOduSignalId(odu1); - Criterion matchOduSignalId2 = Criteria.matchOduSignalId(odu2); - - final OduSignalType oduSigType1 = OduSignalType.ODU2; - final OduSignalType oduSigType2 = OduSignalType.ODU4; - Criterion matchOduSignalType1 = Criteria.matchOduSignalType(oduSigType1); - Criterion sameAsMatchOduSignalType1 = Criteria.matchOduSignalType(oduSigType1); - Criterion matchOduSignalType2 = Criteria.matchOduSignalType(oduSigType2); - - int pbbIsid1 = 1; - int pbbIsid2 = 2; - Criterion matchPbbIsid1 = Criteria.matchPbbIsid(pbbIsid1); - Criterion sameAsMatchPbbIsid1 = Criteria.matchPbbIsid(pbbIsid1); - Criterion matchPbbIsid2 = Criteria.matchPbbIsid(pbbIsid2); - - /** - * Checks that a Criterion object has the proper type, and then converts - * it to the proper type. - * - * @param criterion Criterion object to convert - * @param type Enumerated type value for the Criterion class - * @param clazz Desired Criterion class - * @param The type the caller wants returned - * @return converted object - */ - @SuppressWarnings("unchecked") - private T checkAndConvert(Criterion criterion, Criterion.Type type, Class clazz) { - assertThat(criterion, is(notNullValue())); - assertThat(criterion.type(), is(equalTo(type))); - assertThat(criterion, instanceOf(clazz)); - return (T) criterion; - } - - /** - * Check that the Criteria class is a valid utility class. - */ - @Test - public void testCriteriaUtility() { - assertThatClassIsUtility(Criteria.class); - } - - /** - * Check that the Criteria implementations are immutable. - */ - @Test - public void testCriteriaImmutability() { - assertThatClassIsImmutable(PortCriterion.class); - assertThatClassIsImmutable(MetadataCriterion.class); - assertThatClassIsImmutable(EthCriterion.class); - assertThatClassIsImmutable(EthTypeCriterion.class); - assertThatClassIsImmutable(VlanIdCriterion.class); - assertThatClassIsImmutable(VlanPcpCriterion.class); - assertThatClassIsImmutable(IPDscpCriterion.class); - assertThatClassIsImmutable(IPEcnCriterion.class); - assertThatClassIsImmutable(IPProtocolCriterion.class); - assertThatClassIsImmutable(IPCriterion.class); - assertThatClassIsImmutable(TcpPortCriterion.class); - assertThatClassIsImmutable(UdpPortCriterion.class); - assertThatClassIsImmutable(TcpFlagsCriterion.class); - assertThatClassIsImmutable(SctpPortCriterion.class); - assertThatClassIsImmutable(IcmpTypeCriterion.class); - assertThatClassIsImmutable(IcmpCodeCriterion.class); - assertThatClassIsImmutable(IPv6FlowLabelCriterion.class); - assertThatClassIsImmutable(Icmpv6TypeCriterion.class); - assertThatClassIsImmutable(Icmpv6CodeCriterion.class); - assertThatClassIsImmutable(IPv6NDTargetAddressCriterion.class); - assertThatClassIsImmutable(IPv6NDLinkLayerAddressCriterion.class); - assertThatClassIsImmutable(MplsCriterion.class); - assertThatClassIsImmutable(MplsTcCriterion.class); - assertThatClassIsImmutable(IPv6ExthdrFlagsCriterion.class); - assertThatClassIsImmutable(LambdaCriterion.class); - assertThatClassIsImmutable(OduSignalIdCriterion.class); - assertThatClassIsImmutable(OduSignalTypeCriterion.class); - assertThatClassIsImmutable(PbbIsidCriterion.class); - } - - // PortCriterion class - - /** - * Test the matchInPort method. - */ - @Test - public void testMatchInPortMethod() { - PortNumber p1 = portNumber(1); - Criterion matchInPort = Criteria.matchInPort(p1); - PortCriterion portCriterion = - checkAndConvert(matchInPort, - Criterion.Type.IN_PORT, - PortCriterion.class); - assertThat(portCriterion.port(), is(equalTo(p1))); - } - - /** - * Test the matchInPhyPort method. - */ - @Test - public void testMatchInPhyPortMethod() { - PortNumber p1 = portNumber(1); - Criterion matchInPhyPort = Criteria.matchInPhyPort(p1); - PortCriterion portCriterion = - checkAndConvert(matchInPhyPort, - Criterion.Type.IN_PHY_PORT, - PortCriterion.class); - assertThat(portCriterion.port(), is(equalTo(p1))); - } - - /** - * Test the equals() method of the PortCriterion class. - */ - @Test - public void testPortCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchInPort1, sameAsMatchInPort1) - .addEqualityGroup(matchInPort2) - .testEquals(); - - new EqualsTester() - .addEqualityGroup(matchInPhyPort1, sameAsMatchInPhyPort1) - .addEqualityGroup(matchInPhyPort2) - .testEquals(); - } - - // MetadataCriterion class - - /** - * Test the matchMetadata method. - */ - @Test - public void testMatchMetadataMethod() { - Long metadata = 12L; - Criterion matchMetadata = Criteria.matchMetadata(metadata); - MetadataCriterion metadataCriterion = - checkAndConvert(matchMetadata, - Criterion.Type.METADATA, - MetadataCriterion.class); - assertThat(metadataCriterion.metadata(), is(equalTo(metadata))); - } - - /** - * Test the equals() method of the MetadataCriterion class. - */ - @Test - public void testMetadataCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchMetadata1, sameAsMatchMetadata1) - .addEqualityGroup(matchMetadata2) - .testEquals(); - } - - // EthCriterion class - - /** - * Test the matchEthDst method. - */ - @Test - public void testMatchEthDstMethod() { - Criterion matchEthDst = Criteria.matchEthDst(mac1); - EthCriterion ethCriterion = - checkAndConvert(matchEthDst, - Criterion.Type.ETH_DST, - EthCriterion.class); - assertThat(ethCriterion.mac(), is(equalTo(mac1))); - } - - /** - * Test the matchEthSrc method. - */ - @Test - public void testMatchEthSrcMethod() { - Criterion matchEthSrc = Criteria.matchEthSrc(mac1); - EthCriterion ethCriterion = - checkAndConvert(matchEthSrc, - Criterion.Type.ETH_SRC, - EthCriterion.class); - assertThat(ethCriterion.mac(), is(mac1)); - } - - /** - * Test the equals() method of the EthCriterion class. - */ - @Test - public void testEthCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchEth1, sameAsMatchEth1) - .addEqualityGroup(matchEth2) - .testEquals(); - } - - // EthTypeCriterion class - - /** - * Test the matchEthType method. - */ - @Test - public void testMatchEthTypeMethod() { - EthType ethType = new EthType(12); - Criterion matchEthType = Criteria.matchEthType(new EthType(12)); - EthTypeCriterion ethTypeCriterion = - checkAndConvert(matchEthType, - Criterion.Type.ETH_TYPE, - EthTypeCriterion.class); - assertThat(ethTypeCriterion.ethType(), is(equalTo(ethType))); - } - - /** - * Test the equals() method of the EthTypeCriterion class. - */ - @Test - public void testEthTypeCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchEthType1, sameAsMatchEthType1) - .addEqualityGroup(matchEthType2) - .testEquals(); - } - - // VlanIdCriterion class - - /** - * Test the matchVlanId method. - */ - @Test - public void testMatchVlanIdMethod() { - Criterion matchVlanId = Criteria.matchVlanId(vlanId1); - VlanIdCriterion vlanIdCriterion = - checkAndConvert(matchVlanId, - Criterion.Type.VLAN_VID, - VlanIdCriterion.class); - assertThat(vlanIdCriterion.vlanId(), is(equalTo(vlanId1))); - } - - /** - * Test the equals() method of the VlanIdCriterion class. - */ - @Test - public void testVlanIdCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchVlanId1, sameAsMatchVlanId1) - .addEqualityGroup(matchVlanId2) - .testEquals(); - } - - // VlanPcpCriterion class - - /** - * Test the matchVlanPcp method. - */ - @Test - public void testMatchVlanPcpMethod() { - Criterion matchVlanPcp = Criteria.matchVlanPcp(vlanPcp1); - VlanPcpCriterion vlanPcpCriterion = - checkAndConvert(matchVlanPcp, - Criterion.Type.VLAN_PCP, - VlanPcpCriterion.class); - assertThat(vlanPcpCriterion.priority(), is(equalTo(vlanPcp1))); - } - - /** - * Test the equals() method of the VlanPcpCriterion class. - */ - @Test - public void testVlanPcpCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchVlanPcp1, sameAsMatchVlanPcp1) - .addEqualityGroup(matchVlanPcp2) - .testEquals(); - } - - // IPDscpCriterion class - - /** - * Test the matchIPDscp method. - */ - @Test - public void testMatchIPDscpMethod() { - Criterion matchIPDscp = Criteria.matchIPDscp(ipDscp1); - IPDscpCriterion ipDscpCriterion = - checkAndConvert(matchIPDscp, - Criterion.Type.IP_DSCP, - IPDscpCriterion.class); - assertThat(ipDscpCriterion.ipDscp(), is(equalTo(ipDscp1))); - } - - /** - * Test the equals() method of the IPDscpCriterion class. - */ - @Test - public void testIPDscpCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIpDscp1, sameAsMatchIpDscp1) - .addEqualityGroup(matchIpDscp2) - .testEquals(); - } - - // IPEcnCriterion class - - /** - * Test the matchIPEcn method. - */ - @Test - public void testMatchIPEcnMethod() { - Criterion matchIPEcn = Criteria.matchIPEcn(ipEcn1); - IPEcnCriterion ipEcnCriterion = - checkAndConvert(matchIPEcn, - Criterion.Type.IP_ECN, - IPEcnCriterion.class); - assertThat(ipEcnCriterion.ipEcn(), is(equalTo(ipEcn1))); - } - - /** - * Test the equals() method of the IPEcnCriterion class. - */ - @Test - public void testIPEcnCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIpEcn1, sameAsMatchIpEcn1) - .addEqualityGroup(matchIpEcn2) - .testEquals(); - } - - // IpProtocolCriterion class - - /** - * Test the matchIpProtocol method. - */ - @Test - public void testMatchIpProtocolMethod() { - Criterion matchIPProtocol = Criteria.matchIPProtocol(protocol1); - IPProtocolCriterion ipProtocolCriterion = - checkAndConvert(matchIPProtocol, - Criterion.Type.IP_PROTO, - IPProtocolCriterion.class); - assertThat(ipProtocolCriterion.protocol(), is(equalTo(protocol1))); - } - - /** - * Test the equals() method of the IpProtocolCriterion class. - */ - @Test - public void testIpProtocolCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIpProtocol1, sameAsMatchIpProtocol1) - .addEqualityGroup(matchIpProtocol2) - .testEquals(); - } - - // IPCriterion class - - /** - * Test the matchIPSrc method: IPv4. - */ - @Test - public void testMatchIPSrcMethod() { - Criterion matchIpSrc = Criteria.matchIPSrc(ip1); - IPCriterion ipCriterion = - checkAndConvert(matchIpSrc, - Criterion.Type.IPV4_SRC, - IPCriterion.class); - assertThat(ipCriterion.ip(), is(ip1)); - } - - /** - * Test the matchIPDst method: IPv4. - */ - @Test - public void testMatchIPDstMethod() { - Criterion matchIPDst = Criteria.matchIPDst(ip1); - IPCriterion ipCriterion = - checkAndConvert(matchIPDst, - Criterion.Type.IPV4_DST, - IPCriterion.class); - assertThat(ipCriterion.ip(), is(equalTo(ip1))); - } - - /** - * Test the matchIPSrc method: IPv6. - */ - @Test - public void testMatchIPv6SrcMethod() { - Criterion matchIpv6Src = Criteria.matchIPv6Src(ipv61); - IPCriterion ipCriterion = - checkAndConvert(matchIpv6Src, - Criterion.Type.IPV6_SRC, - IPCriterion.class); - assertThat(ipCriterion.ip(), is(ipv61)); - } - - /** - * Test the matchIPDst method: IPv6. - */ - @Test - public void testMatchIPv6DstMethod() { - Criterion matchIPv6Dst = Criteria.matchIPv6Dst(ipv61); - IPCriterion ipCriterion = - checkAndConvert(matchIPv6Dst, - Criterion.Type.IPV6_DST, - IPCriterion.class); - assertThat(ipCriterion.ip(), is(equalTo(ipv61))); - } - - /** - * Test the equals() method of the IpCriterion class. - */ - @Test - public void testIPCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIp1, sameAsMatchIp1) - .addEqualityGroup(matchIp2) - .testEquals(); - - new EqualsTester() - .addEqualityGroup(matchIpv61, sameAsMatchIpv61) - .addEqualityGroup(matchIpv62) - .testEquals(); - } - - // TcpPortCriterion class - - /** - * Test the matchTcpSrc method. - */ - @Test - public void testMatchTcpSrcMethod() { - Criterion matchTcpSrc = Criteria.matchTcpSrc(tpPort1); - TcpPortCriterion tcpPortCriterion = - checkAndConvert(matchTcpSrc, - Criterion.Type.TCP_SRC, - TcpPortCriterion.class); - assertThat(tcpPortCriterion.tcpPort(), is(equalTo(tpPort1))); - } - - /** - * Test the matchTcpDst method. - */ - @Test - public void testMatchTcpDstMethod() { - Criterion matchTcpDst = Criteria.matchTcpDst(tpPort1); - TcpPortCriterion tcpPortCriterion = - checkAndConvert(matchTcpDst, - Criterion.Type.TCP_DST, - TcpPortCriterion.class); - assertThat(tcpPortCriterion.tcpPort(), is(equalTo(tpPort1))); - } - - /** - * Test the equals() method of the TcpPortCriterion class. - */ - @Test - public void testTcpPortCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchTcpPort1, sameAsMatchTcpPort1) - .addEqualityGroup(matchTcpPort2) - .testEquals(); - } - - // UdpPortCriterion class - - /** - * Test the matchUdpSrc method. - */ - @Test - public void testMatchUdpSrcMethod() { - Criterion matchUdpSrc = Criteria.matchUdpSrc(tpPort1); - UdpPortCriterion udpPortCriterion = - checkAndConvert(matchUdpSrc, - Criterion.Type.UDP_SRC, - UdpPortCriterion.class); - assertThat(udpPortCriterion.udpPort(), is(equalTo(tpPort1))); - } - - /** - * Test the matchUdpDst method. - */ - @Test - public void testMatchUdpDstMethod() { - Criterion matchUdpDst = Criteria.matchUdpDst(tpPort1); - UdpPortCriterion udpPortCriterion = - checkAndConvert(matchUdpDst, - Criterion.Type.UDP_DST, - UdpPortCriterion.class); - assertThat(udpPortCriterion.udpPort(), is(equalTo(tpPort1))); - } - - /** - * Test the equals() method of the UdpPortCriterion class. - */ - @Test - public void testUdpPortCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchUdpPort1, sameAsMatchUdpPort1) - .addEqualityGroup(matchUdpPort2) - .testEquals(); - } - - // TcpFlagsCriterion class - - /** - * Test the matchTcpFlags method. - */ - @Test - public void testMatchTcpFlagsMethod() { - Criterion matchTcpFlag = Criteria.matchTcpFlags(tcpFlags1); - TcpFlagsCriterion tcpFlagsCriterion = - checkAndConvert(matchTcpFlag, - Criterion.Type.TCP_FLAGS, - TcpFlagsCriterion.class); - assertThat(tcpFlagsCriterion.flags(), is(equalTo(tcpFlags1))); - } - - /** - * Test the equals() method of the TcpFlagsCriterion class. - */ - @Test - public void testTcpFlagsCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchTcpFlags1, sameAsmatchTcpFlags1) - .addEqualityGroup(matchTcpFlags2) - .testEquals(); - } - - // SctpPortCriterion class - - /** - * Test the matchSctpSrc method. - */ - @Test - public void testMatchSctpSrcMethod() { - Criterion matchSctpSrc = Criteria.matchSctpSrc(tpPort1); - SctpPortCriterion sctpPortCriterion = - checkAndConvert(matchSctpSrc, - Criterion.Type.SCTP_SRC, - SctpPortCriterion.class); - assertThat(sctpPortCriterion.sctpPort(), is(equalTo(tpPort1))); - } - - /** - * Test the matchSctpDst method. - */ - @Test - public void testMatchSctpDstMethod() { - Criterion matchSctpDst = Criteria.matchSctpDst(tpPort1); - SctpPortCriterion sctpPortCriterion = - checkAndConvert(matchSctpDst, - Criterion.Type.SCTP_DST, - SctpPortCriterion.class); - assertThat(sctpPortCriterion.sctpPort(), is(equalTo(tpPort1))); - } - - /** - * Test the equals() method of the SctpPortCriterion class. - */ - @Test - public void testSctpPortCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchSctpPort1, sameAsMatchSctpPort1) - .addEqualityGroup(matchSctpPort2) - .testEquals(); - } - - // IcmpTypeCriterion class - - /** - * Test the matchIcmpType method. - */ - @Test - public void testMatchIcmpTypeMethod() { - short icmpType = 12; - Criterion matchIcmpType = Criteria.matchIcmpType(icmpType); - IcmpTypeCriterion icmpTypeCriterion = - checkAndConvert(matchIcmpType, - Criterion.Type.ICMPV4_TYPE, - IcmpTypeCriterion.class); - assertThat(icmpTypeCriterion.icmpType(), is(equalTo(icmpType))); - } - - /** - * Test the equals() method of the IcmpTypeCriterion class. - */ - @Test - public void testIcmpTypeCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIcmpType1, sameAsMatchIcmpType1) - .addEqualityGroup(matchIcmpType2) - .testEquals(); - } - - // IcmpCodeCriterion class - - /** - * Test the matchIcmpCode method. - */ - @Test - public void testMatchIcmpCodeMethod() { - short icmpCode = 12; - Criterion matchIcmpCode = Criteria.matchIcmpCode(icmpCode); - IcmpCodeCriterion icmpCodeCriterion = - checkAndConvert(matchIcmpCode, - Criterion.Type.ICMPV4_CODE, - IcmpCodeCriterion.class); - assertThat(icmpCodeCriterion.icmpCode(), is(equalTo(icmpCode))); - } - - /** - * Test the equals() method of the IcmpCodeCriterion class. - */ - @Test - public void testIcmpCodeCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIcmpCode1, sameAsMatchIcmpCode1) - .addEqualityGroup(matchIcmpCode2) - .testEquals(); - } - - // IPv6FlowLabelCriterion class - - /** - * Test the matchIPv6FlowLabel method. - */ - @Test - public void testMatchIPv6FlowLabelMethod() { - int flowLabel = 12; - Criterion matchFlowLabel = Criteria.matchIPv6FlowLabel(flowLabel); - IPv6FlowLabelCriterion flowLabelCriterion = - checkAndConvert(matchFlowLabel, - Criterion.Type.IPV6_FLABEL, - IPv6FlowLabelCriterion.class); - assertThat(flowLabelCriterion.flowLabel(), is(equalTo(flowLabel))); - } - - /** - * Test the equals() method of the IPv6FlowLabelCriterion class. - */ - @Test - public void testIPv6FlowLabelCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchFlowLabel1, sameAsMatchFlowLabel1) - .addEqualityGroup(matchFlowLabel2) - .testEquals(); - } - - // Icmpv6TypeCriterion class - - /** - * Test the matchIcmpv6Type method. - */ - @Test - public void testMatchIcmpv6TypeMethod() { - short icmpv6Type = 12; - Criterion matchIcmpv6Type = Criteria.matchIcmpv6Type(icmpv6Type); - Icmpv6TypeCriterion icmpv6TypeCriterion = - checkAndConvert(matchIcmpv6Type, - Criterion.Type.ICMPV6_TYPE, - Icmpv6TypeCriterion.class); - assertThat(icmpv6TypeCriterion.icmpv6Type(), is(equalTo(icmpv6Type))); - } - - /** - * Test the equals() method of the Icmpv6TypeCriterion class. - */ - @Test - public void testIcmpv6TypeCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIcmpv6Type1, sameAsMatchIcmpv6Type1) - .addEqualityGroup(matchIcmpv6Type2) - .testEquals(); - } - - // Icmpv6CodeCriterion class - - /** - * Test the matchIcmpv6Code method. - */ - @Test - public void testMatchIcmpv6CodeMethod() { - short icmpv6Code = 12; - Criterion matchIcmpv6Code = Criteria.matchIcmpv6Code(icmpv6Code); - Icmpv6CodeCriterion icmpv6CodeCriterion = - checkAndConvert(matchIcmpv6Code, - Criterion.Type.ICMPV6_CODE, - Icmpv6CodeCriterion.class); - assertThat(icmpv6CodeCriterion.icmpv6Code(), is(equalTo(icmpv6Code))); - } - - /** - * Test the equals() method of the Icmpv6CodeCriterion class. - */ - @Test - public void testIcmpv6CodeCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIcmpv6Code1, sameAsMatchIcmpv6Code1) - .addEqualityGroup(matchIcmpv6Code2) - .testEquals(); - } - - // IPv6NDTargetAddressCriterion class - - /** - * Test the matchIPv6NDTargetAddress method. - */ - @Test - public void testMatchIPv6NDTargetAddressMethod() { - Criterion matchTargetAddress = - Criteria.matchIPv6NDTargetAddress(ip6TargetAddress1); - IPv6NDTargetAddressCriterion targetAddressCriterion = - checkAndConvert(matchTargetAddress, - Criterion.Type.IPV6_ND_TARGET, - IPv6NDTargetAddressCriterion.class); - assertThat(targetAddressCriterion.targetAddress(), - is(ip6TargetAddress1)); - } - - /** - * Test the equals() method of the IPv6NDTargetAddressCriterion class. - */ - @Test - public void testIPv6NDTargetAddressCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIpv6TargetAddr1, - sameAsMatchIpv6TargetAddr1) - .addEqualityGroup(matchIpv6TargetAddr2) - .testEquals(); - } - - // IPv6NDLinkLayerAddressCriterion class - - /** - * Test the matchIPv6NDSourceLinkLayerAddress method. - */ - @Test - public void testMatchIPv6NDSourceLinkLayerAddressMethod() { - Criterion matchSrcLlAddr = - Criteria.matchIPv6NDSourceLinkLayerAddress(llMac1); - IPv6NDLinkLayerAddressCriterion srcLlCriterion = - checkAndConvert(matchSrcLlAddr, - Criterion.Type.IPV6_ND_SLL, - IPv6NDLinkLayerAddressCriterion.class); - assertThat(srcLlCriterion.mac(), is(equalTo(llMac1))); - } - - /** - * Test the matchIPv6NDTargetLinkLayerAddress method. - */ - @Test - public void testMatchIPv6NDTargetLinkLayerAddressMethod() { - Criterion matchTargetLlAddr = - Criteria.matchIPv6NDTargetLinkLayerAddress(llMac1); - IPv6NDLinkLayerAddressCriterion targetLlCriterion = - checkAndConvert(matchTargetLlAddr, - Criterion.Type.IPV6_ND_TLL, - IPv6NDLinkLayerAddressCriterion.class); - assertThat(targetLlCriterion.mac(), is(equalTo(llMac1))); - } - - /** - * Test the equals() method of the IPv6NDLinkLayerAddressCriterion class. - */ - @Test - public void testIPv6NDLinkLayerAddressCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchSrcLlAddr1, sameAsMatchSrcLlAddr1) - .addEqualityGroup(matchSrcLlAddr2) - .testEquals(); - - new EqualsTester() - .addEqualityGroup(matchTargetLlAddr1, sameAsMatchTargetLlAddr1) - .addEqualityGroup(matchTargetLlAddr2) - .testEquals(); - } - - // MplsCriterion class - - /** - * Test the matchMplsLabel method. - */ - @Test - public void testMatchMplsLabelMethod() { - Criterion matchMplsLabel = Criteria.matchMplsLabel(mpls1); - MplsCriterion mplsCriterion = - checkAndConvert(matchMplsLabel, - Criterion.Type.MPLS_LABEL, - MplsCriterion.class); - assertThat(mplsCriterion.label(), is(equalTo(mpls1))); - } - - /** - * Test the equals() method of the MplsCriterion class. - */ - @Test - public void testMplsCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchMpls1, sameAsMatchMpls1) - .addEqualityGroup(matchMpls2) - .testEquals(); - } - - // MplsTcCriterion class - - /** - * Test the matchMplsTc method. - */ - @Test - public void testMatchMplsTcMethod() { - Criterion matchMplsTc = Criteria.matchMplsTc(mplsTc1); - MplsTcCriterion mplsTcCriterion = - checkAndConvert(matchMplsTc, - Criterion.Type.MPLS_TC, - MplsTcCriterion.class); - assertThat(mplsTcCriterion.tc(), is(equalTo(mplsTc1))); - } - - /** - * Test the equals() method of the MplsTcCriterion class. - */ - @Test - public void testMplsTcCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchMplsTc1, sameAsMatchMplsTc1) - .addEqualityGroup(matchMplsTc2) - .testEquals(); - } - - // TunnelIdCriterion class - - /** - * Test the matchTunnelId method. - */ - @Test - public void testMatchTunnelIdMethod() { - Criterion matchTunnelId = Criteria.matchTunnelId(tunnelId1); - TunnelIdCriterion tunnelIdCriterion = - checkAndConvert(matchTunnelId, - Criterion.Type.TUNNEL_ID, - TunnelIdCriterion.class); - assertThat(tunnelIdCriterion.tunnelId(), is(equalTo(tunnelId1))); - - } - - /** - * Test the equals() method of the TunnelIdCriterion class. - */ - @Test - public void testTunnelIdCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchTunnelId1, sameAsMatchTunnelId1) - .addEqualityGroup(matchTunnelId2) - .testEquals(); - } - - // IPv6ExthdrFlagsCriterion class - - /** - * Test the matchIPv6ExthdrFlags method. - */ - @Test - public void testMatchIPv6ExthdrFlagsMethod() { - Criterion matchExthdrFlags = - Criteria.matchIPv6ExthdrFlags(ipv6ExthdrFlags1); - IPv6ExthdrFlagsCriterion exthdrFlagsCriterion = - checkAndConvert(matchExthdrFlags, - Criterion.Type.IPV6_EXTHDR, - IPv6ExthdrFlagsCriterion.class); - assertThat(exthdrFlagsCriterion.exthdrFlags(), - is(equalTo(ipv6ExthdrFlags1))); - } - - /** - * Test the equals() method of the IPv6ExthdrFlagsCriterion class. - */ - @Test - public void testIPv6ExthdrFlagsCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIpv6ExthdrFlags1, - sameAsMatchIpv6ExthdrFlags1) - .addEqualityGroup(matchIpv6ExthdrFlags2) - .testEquals(); - } - - @Test - public void testIndexedLambdaCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchIndexedLambda1, sameAsMatchIndexedLambda1) - .addEqualityGroup(matchIndexedLambda2) - .testEquals(); - } - - @Test - public void testOchSignalCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchOchSignal1, sameAsMatchOchSignal1) - .addEqualityGroup(matchOchSignal2) - .testEquals(); - } - - /** - * Test the equals() method of the OchSignalTypeCriterion class. - */ - @Test - public void testOchSignalTypeCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchOchSignalType1, sameAsMatchOchSignalType1) - .addEqualityGroup(matchOchSignalType2) - .testEquals(); - } - - /** - * Test the OduSignalId method. - */ - @Test - public void testMatchOduSignalIdMethod() { - OduSignalId odu = oduSignalId(1, 80, new byte[]{2, 1, 1, 3, 1, 1, 3, 1, 1, 3}); - - Criterion matchoduSignalId = Criteria.matchOduSignalId(odu); - OduSignalIdCriterion oduSignalIdCriterion = - checkAndConvert(matchoduSignalId, - Criterion.Type.ODU_SIGID, - OduSignalIdCriterion.class); - assertThat(oduSignalIdCriterion.oduSignalId(), is(equalTo(odu))); - } - - /** - * Test the equals() method of the OduSignalIdCriterion class. - */ - @Test - public void testOduSignalIdCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchOduSignalId1, sameAsMatchOduSignalId1) - .addEqualityGroup(matchOduSignalId2) - .testEquals(); - } - - // OduSignalTypeCriterion class - - /** - * Test the OduSignalType method. - */ - @Test - public void testMatchOduSignalTypeMethod() { - OduSignalType oduSigType = OduSignalType.ODU2; - Criterion matchoduSignalType = Criteria.matchOduSignalType(oduSigType); - OduSignalTypeCriterion oduSignalTypeCriterion = - checkAndConvert(matchoduSignalType, - Criterion.Type.ODU_SIGTYPE, - OduSignalTypeCriterion.class); - assertThat(oduSignalTypeCriterion.signalType(), is(equalTo(oduSigType))); - } - - /** - * Test the equals() method of the OduSignalTypeCriterion class. - */ - @Test - public void testOduSignalTypeCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchOduSignalType1, sameAsMatchOduSignalType1) - .addEqualityGroup(matchOduSignalType2) - .testEquals(); - } - - // PbbIsidCriterion class - - /** - * Test the matchPbbIsid method. - */ - @Test - public void testMatchPbbIsidMethod() { - Criterion matchPbbIsid = Criteria.matchPbbIsid(pbbIsid1); - PbbIsidCriterion pbbIsidCriterion = - checkAndConvert(matchPbbIsid, - Criterion.Type.PBB_ISID, - PbbIsidCriterion.class); - assertThat(pbbIsidCriterion.pbbIsid(), is(equalTo(pbbIsid1))); - } - - /** - * Test the equals() method of the PbbIsidCriterion class. - */ - @Test - public void testPbbIsidCriterionEquals() { - new EqualsTester() - .addEqualityGroup(matchPbbIsid1, sameAsMatchPbbIsid1) - .addEqualityGroup(matchPbbIsid2) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/instructions/InstructionsTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/instructions/InstructionsTest.java deleted file mode 100644 index a25783f9..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flow/instructions/InstructionsTest.java +++ /dev/null @@ -1,766 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.flow.instructions; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onlab.packet.TpPort; -import org.onlab.packet.VlanId; -import org.onosproject.net.ChannelSpacing; -import org.onosproject.net.GridType; -import org.onosproject.net.IndexedLambda; -import org.onosproject.net.Lambda; -import org.onosproject.net.OduSignalId; -import org.onosproject.net.PortNumber; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility; -import static org.onosproject.net.PortNumber.portNumber; -import static org.onosproject.net.OduSignalId.oduSignalId; - -/** - * Unit tests for the Instructions class. - */ -public class InstructionsTest { - - /** - * Checks that a Criterion object has the proper type, and then converts - * it to the proper type. - * - * @param instruction Instruction object to convert - * @param type Enumerated type value for the Criterion class - * @param clazz Desired Criterion class - * @param The type the caller wants returned - * @return converted object - */ - @SuppressWarnings("unchecked") - private T checkAndConvert(Instruction instruction, Instruction.Type type, Class clazz) { - assertThat(instruction, is(notNullValue())); - assertThat(instruction.type(), is(equalTo(type))); - assertThat(instruction, instanceOf(clazz)); - return (T) instruction; - } - - /** - * Checks the equals() and toString() methods of a Criterion class. - * - * @param c1 first object to compare - * @param c1match object that should be equal to the first - * @param c2 object that should be not equal to the first - * @param type of the arguments - */ - private void checkEqualsAndToString(T c1, T c1match, - T c2) { - - new EqualsTester() - .addEqualityGroup(c1, c1match) - .addEqualityGroup(c2) - .testEquals(); - } - - /** - * Checks that Instructions is a proper utility class. - */ - @Test - public void testInstructionsUtilityClass() { - assertThatClassIsUtility(Instructions.class); - } - - /** - * Checks that the Instruction class implementations are immutable. - */ - @Test - public void testImmutabilityOfInstructions() { - assertThatClassIsImmutable(Instructions.DropInstruction.class); - assertThatClassIsImmutable(Instructions.OutputInstruction.class); - assertThatClassIsImmutable(L0ModificationInstruction.ModLambdaInstruction.class); - assertThatClassIsImmutable(L0ModificationInstruction.ModOchSignalInstruction.class); - assertThatClassIsImmutable(L1ModificationInstruction.ModOduSignalIdInstruction.class); - assertThatClassIsImmutable(L2ModificationInstruction.ModEtherInstruction.class); - assertThatClassIsImmutable(L2ModificationInstruction.ModVlanIdInstruction.class); - assertThatClassIsImmutable(L2ModificationInstruction.ModVlanPcpInstruction.class); - assertThatClassIsImmutable(L3ModificationInstruction.ModIPInstruction.class); - assertThatClassIsImmutable(L3ModificationInstruction.ModIPv6FlowLabelInstruction.class); - assertThatClassIsImmutable(L2ModificationInstruction.ModMplsLabelInstruction.class); - assertThatClassIsImmutable(L2ModificationInstruction.PushHeaderInstructions.class); - } - - // DropInstruction - - private final Instructions.DropInstruction drop1 = Instructions.createDrop(); - private final Instructions.DropInstruction drop2 = Instructions.createDrop(); - - /** - * Test the createDrop method. - */ - @Test - public void testCreateDropMethod() { - Instructions.DropInstruction instruction = Instructions.createDrop(); - checkAndConvert(instruction, - Instruction.Type.DROP, - Instructions.DropInstruction.class); - } - - /** - * Test the equals() method of the DropInstruction class. - */ - - @Test - public void testDropInstructionEquals() throws Exception { - assertThat(drop1, is(equalTo(drop2))); - } - - /** - * Test the hashCode() method of the DropInstruction class. - */ - - @Test - public void testDropInstructionHashCode() { - assertThat(drop1.hashCode(), is(equalTo(drop2.hashCode()))); - } - - // OutputInstruction - - private final PortNumber port1 = portNumber(1); - private final PortNumber port2 = portNumber(2); - private final Instructions.OutputInstruction output1 = Instructions.createOutput(port1); - private final Instructions.OutputInstruction sameAsOutput1 = Instructions.createOutput(port1); - private final Instructions.OutputInstruction output2 = Instructions.createOutput(port2); - - /** - * Test the createOutput method. - */ - @Test - public void testCreateOutputMethod() { - final Instruction instruction = Instructions.createOutput(port2); - final Instructions.OutputInstruction outputInstruction = - checkAndConvert(instruction, - Instruction.Type.OUTPUT, - Instructions.OutputInstruction.class); - assertThat(outputInstruction.port(), is(equalTo(port2))); - } - - - /** - * Test the equals() method of the OutputInstruction class. - */ - - @Test - public void testOutputInstructionEquals() throws Exception { - checkEqualsAndToString(output1, sameAsOutput1, output2); - } - - /** - * Test the hashCode() method of the OutputInstruction class. - */ - - @Test - public void testOutputInstructionHashCode() { - assertThat(output1.hashCode(), is(equalTo(sameAsOutput1.hashCode()))); - assertThat(output1.hashCode(), is(not(equalTo(output2.hashCode())))); - } - - // ModLambdaInstruction - - private final IndexedLambda lambda1 = new IndexedLambda(1); - private final IndexedLambda lambda2 = new IndexedLambda(2); - private final Instruction lambdaInstruction1 = Instructions.modL0Lambda(lambda1); - private final Instruction sameAsLambdaInstruction1 = Instructions.modL0Lambda(lambda1); - private final Instruction lambdaInstruction2 = Instructions.modL0Lambda(lambda2); - - /** - * Test the modL0Lambda method. - */ - @Test - public void testCreateLambdaMethod() { - final Instruction instruction = Instructions.modL0Lambda(lambda1); - final L0ModificationInstruction.ModLambdaInstruction lambdaInstruction = - checkAndConvert(instruction, - Instruction.Type.L0MODIFICATION, - L0ModificationInstruction.ModLambdaInstruction.class); - assertThat(lambdaInstruction.lambda(), is(equalTo((short) lambda1.index()))); - } - - /** - * Test the equals() method of the ModLambdaInstruction class. - */ - - @Test - public void testModLambdaInstructionEquals() throws Exception { - checkEqualsAndToString(lambdaInstruction1, - sameAsLambdaInstruction1, - lambdaInstruction2); - } - - /** - * Test the hashCode() method of the ModLambdaInstruction class. - */ - - @Test - public void testModLambdaInstructionHashCode() { - assertThat(lambdaInstruction1.hashCode(), - is(equalTo(sameAsLambdaInstruction1.hashCode()))); - assertThat(lambdaInstruction1.hashCode(), - is(not(equalTo(lambdaInstruction2.hashCode())))); - } - - private final Lambda och1 = Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_100GHZ, 4, 8); - private final Lambda och2 = Lambda.ochSignal(GridType.CWDM, ChannelSpacing.CHL_100GHZ, 4, 8); - private final Instruction ochInstruction1 = Instructions.modL0Lambda(och1); - private final Instruction sameAsOchInstruction1 = Instructions.modL0Lambda(och1); - private final Instruction ochInstruction2 = Instructions.modL0Lambda(och2); - - /** - * Test the modL0Lambda(). - */ - @Test - public void testModL0LambdaMethod() { - Instruction instruction = Instructions.modL0Lambda(och1); - L0ModificationInstruction.ModOchSignalInstruction ochInstruction = - checkAndConvert(instruction, Instruction.Type.L0MODIFICATION, - L0ModificationInstruction.ModOchSignalInstruction.class); - assertThat(ochInstruction.lambda(), is(och1)); - } - - /** - * Test the equals() method of the ModOchSignalInstruction class. - */ - @Test - public void testModOchSignalInstructionEquals() { - checkEqualsAndToString(ochInstruction1, sameAsOchInstruction1, ochInstruction2); - } - - /** - * Test the hashCode() method of the ModOchSignalInstruction class. - */ - @Test - public void testModOchSignalInstructionHashCode() { - assertThat(ochInstruction1.hashCode(), is(sameAsOchInstruction1.hashCode())); - assertThat(ochInstruction1.hashCode(), is(not(ochInstruction2.hashCode()))); - } - - // ModOduSignalIdInstruction - - private final OduSignalId odu1 = oduSignalId(1, 80, new byte[] {8, 7, 6, 5, 7, 6, 5, 7, 6, 5}); - private final OduSignalId odu2 = oduSignalId(2, 80, new byte[] {1, 1, 2, 2, 1, 2, 2, 1, 2, 2}); - private final Instruction oduInstruction1 = Instructions.modL1OduSignalId(odu1); - private final Instruction sameAsOduInstruction1 = Instructions.modL1OduSignalId(odu1); - private final Instruction oduInstruction2 = Instructions.modL1OduSignalId(odu2); - - /** - * Test the modL1OduSignalId(). - */ - @Test - public void testModL1OduSignalIdMethod() { - Instruction instruction = Instructions.modL1OduSignalId(odu1); - L1ModificationInstruction.ModOduSignalIdInstruction oduInstruction = - checkAndConvert(instruction, Instruction.Type.L1MODIFICATION, - L1ModificationInstruction.ModOduSignalIdInstruction.class); - assertThat(oduInstruction.oduSignalId(), is(odu1)); - } - - /** - * Test the equals() method of the ModOduSignalInstruction class. - */ - @Test - public void testModOduSignalIdInstructionEquals() { - checkEqualsAndToString(oduInstruction1, sameAsOduInstruction1, oduInstruction2); - } - - /** - * Test the hashCode() method of the ModOduSignalInstruction class. - */ - @Test - public void testModOduSignalIdInstructionHashCode() { - assertThat(oduInstruction1.hashCode(), is(sameAsOduInstruction1.hashCode())); - assertThat(oduInstruction1.hashCode(), is(not(oduInstruction2.hashCode()))); - } - - - // ModEtherInstruction - - private static final String MAC1 = "00:00:00:00:00:01"; - private static final String MAC2 = "00:00:00:00:00:02"; - private final MacAddress mac1 = MacAddress.valueOf(MAC1); - private final MacAddress mac2 = MacAddress.valueOf(MAC2); - private final Instruction modEtherInstruction1 = Instructions.modL2Src(mac1); - private final Instruction sameAsModEtherInstruction1 = Instructions.modL2Src(mac1); - private final Instruction modEtherInstruction2 = Instructions.modL2Src(mac2); - - /** - * Test the modL2Src method. - */ - @Test - public void testModL2SrcMethod() { - final Instruction instruction = Instructions.modL2Src(mac1); - final L2ModificationInstruction.ModEtherInstruction modEtherInstruction = - checkAndConvert(instruction, - Instruction.Type.L2MODIFICATION, - L2ModificationInstruction.ModEtherInstruction.class); - assertThat(modEtherInstruction.mac(), is(equalTo(mac1))); - assertThat(modEtherInstruction.subtype(), - is(equalTo(L2ModificationInstruction.L2SubType.ETH_SRC))); - } - - /** - * Test the modL2Dst method. - */ - @Test - public void testModL2DstMethod() { - final Instruction instruction = Instructions.modL2Dst(mac1); - final L2ModificationInstruction.ModEtherInstruction modEtherInstruction = - checkAndConvert(instruction, - Instruction.Type.L2MODIFICATION, - L2ModificationInstruction.ModEtherInstruction.class); - assertThat(modEtherInstruction.mac(), is(equalTo(mac1))); - assertThat(modEtherInstruction.subtype(), - is(equalTo(L2ModificationInstruction.L2SubType.ETH_DST))); - } - - /** - * Test the equals() method of the ModEtherInstruction class. - */ - - @Test - public void testModEtherInstructionEquals() throws Exception { - checkEqualsAndToString(modEtherInstruction1, - sameAsModEtherInstruction1, - modEtherInstruction2); - } - - /** - * Test the hashCode() method of the ModEtherInstruction class. - */ - - @Test - public void testModEtherInstructionHashCode() { - assertThat(modEtherInstruction1.hashCode(), - is(equalTo(sameAsModEtherInstruction1.hashCode()))); - assertThat(modEtherInstruction1.hashCode(), - is(not(equalTo(modEtherInstruction2.hashCode())))); - } - - - // ModVlanIdInstruction - - private final short vlan1 = 1; - private final short vlan2 = 2; - private final VlanId vlanId1 = VlanId.vlanId(vlan1); - private final VlanId vlanId2 = VlanId.vlanId(vlan2); - private final Instruction modVlanId1 = Instructions.modVlanId(vlanId1); - private final Instruction sameAsModVlanId1 = Instructions.modVlanId(vlanId1); - private final Instruction modVlanId2 = Instructions.modVlanId(vlanId2); - - /** - * Test the modVlanId method. - */ - @Test - public void testModVlanIdMethod() { - final Instruction instruction = Instructions.modVlanId(vlanId1); - final L2ModificationInstruction.ModVlanIdInstruction modEtherInstruction = - checkAndConvert(instruction, - Instruction.Type.L2MODIFICATION, - L2ModificationInstruction.ModVlanIdInstruction.class); - assertThat(modEtherInstruction.vlanId(), is(equalTo(vlanId1))); - assertThat(modEtherInstruction.subtype(), - is(equalTo(L2ModificationInstruction.L2SubType.VLAN_ID))); - } - - /** - * Test the equals() method of the ModVlanIdInstruction class. - */ - - @Test - public void testModVlanIdInstructionEquals() throws Exception { - checkEqualsAndToString(modVlanId1, - sameAsModVlanId1, - modVlanId2); - } - - /** - * Test the hashCode() method of the ModEtherInstruction class. - */ - - @Test - public void testModVlanIdInstructionHashCode() { - assertThat(modVlanId1.hashCode(), - is(equalTo(sameAsModVlanId1.hashCode()))); - assertThat(modVlanId1.hashCode(), - is(not(equalTo(modVlanId2.hashCode())))); - } - - - // ModVlanPcpInstruction - - private final byte vlanPcp1 = 1; - private final byte vlanPcp2 = 2; - private final Instruction modVlanPcp1 = Instructions.modVlanPcp(vlanPcp1); - private final Instruction sameAsModVlanPcp1 = Instructions.modVlanPcp(vlanPcp1); - private final Instruction modVlanPcp2 = Instructions.modVlanPcp(vlanPcp2); - - /** - * Test the modVlanPcp method. - */ - @Test - public void testModVlanPcpMethod() { - final Instruction instruction = Instructions.modVlanPcp(vlanPcp1); - final L2ModificationInstruction.ModVlanPcpInstruction modEtherInstruction = - checkAndConvert(instruction, - Instruction.Type.L2MODIFICATION, - L2ModificationInstruction.ModVlanPcpInstruction.class); - assertThat(modEtherInstruction.vlanPcp(), is(equalTo(vlanPcp1))); - assertThat(modEtherInstruction.subtype(), - is(equalTo(L2ModificationInstruction.L2SubType.VLAN_PCP))); - } - - /** - * Test the equals() method of the ModVlanPcpInstruction class. - */ - - @Test - public void testModVlanPcpInstructionEquals() throws Exception { - checkEqualsAndToString(modVlanPcp1, - sameAsModVlanPcp1, - modVlanPcp2); - } - - /** - * Test the hashCode() method of the ModEtherInstruction class. - */ - - @Test - public void testModVlanPcpInstructionHashCode() { - assertThat(modVlanPcp1.hashCode(), - is(equalTo(sameAsModVlanPcp1.hashCode()))); - assertThat(modVlanPcp1.hashCode(), - is(not(equalTo(modVlanPcp2.hashCode())))); - } - - // ModIPInstruction - - private static final String IP41 = "1.2.3.4"; - private static final String IP42 = "5.6.7.8"; - private IpAddress ip41 = IpAddress.valueOf(IP41); - private IpAddress ip42 = IpAddress.valueOf(IP42); - private final Instruction modIPInstruction1 = Instructions.modL3Src(ip41); - private final Instruction sameAsModIPInstruction1 = Instructions.modL3Src(ip41); - private final Instruction modIPInstruction2 = Instructions.modL3Src(ip42); - - private static final String IP61 = "1111::2222"; - private static final String IP62 = "3333::4444"; - private IpAddress ip61 = IpAddress.valueOf(IP61); - private IpAddress ip62 = IpAddress.valueOf(IP62); - private final Instruction modIPv6Instruction1 = - Instructions.modL3IPv6Src(ip61); - private final Instruction sameAsModIPv6Instruction1 = - Instructions.modL3IPv6Src(ip61); - private final Instruction modIPv6Instruction2 = - Instructions.modL3IPv6Src(ip62); - - /** - * Test the modL3Src method. - */ - @Test - public void testModL3SrcMethod() { - final Instruction instruction = Instructions.modL3Src(ip41); - final L3ModificationInstruction.ModIPInstruction modIPInstruction = - checkAndConvert(instruction, - Instruction.Type.L3MODIFICATION, - L3ModificationInstruction.ModIPInstruction.class); - assertThat(modIPInstruction.ip(), is(equalTo(ip41))); - assertThat(modIPInstruction.subtype(), - is(equalTo(L3ModificationInstruction.L3SubType.IPV4_SRC))); - } - - /** - * Test the modL3Dst method. - */ - @Test - public void testModL3DstMethod() { - final Instruction instruction = Instructions.modL3Dst(ip41); - final L3ModificationInstruction.ModIPInstruction modIPInstruction = - checkAndConvert(instruction, - Instruction.Type.L3MODIFICATION, - L3ModificationInstruction.ModIPInstruction.class); - assertThat(modIPInstruction.ip(), is(equalTo(ip41))); - assertThat(modIPInstruction.subtype(), - is(equalTo(L3ModificationInstruction.L3SubType.IPV4_DST))); - } - - /** - * Test the modL3IPv6Src method. - */ - @Test - public void testModL3IPv6SrcMethod() { - final Instruction instruction = Instructions.modL3IPv6Src(ip61); - final L3ModificationInstruction.ModIPInstruction modIPInstruction = - checkAndConvert(instruction, - Instruction.Type.L3MODIFICATION, - L3ModificationInstruction.ModIPInstruction.class); - assertThat(modIPInstruction.ip(), is(equalTo(ip61))); - assertThat(modIPInstruction.subtype(), - is(equalTo(L3ModificationInstruction.L3SubType.IPV6_SRC))); - } - - /** - * Test the modL3IPv6Dst method. - */ - @Test - public void testModL3IPv6DstMethod() { - final Instruction instruction = Instructions.modL3IPv6Dst(ip61); - final L3ModificationInstruction.ModIPInstruction modIPInstruction = - checkAndConvert(instruction, - Instruction.Type.L3MODIFICATION, - L3ModificationInstruction.ModIPInstruction.class); - assertThat(modIPInstruction.ip(), is(equalTo(ip61))); - assertThat(modIPInstruction.subtype(), - is(equalTo(L3ModificationInstruction.L3SubType.IPV6_DST))); - } - - /** - * Test the equals() method of the ModIPInstruction class. - */ - @Test - public void testModIPInstructionEquals() throws Exception { - checkEqualsAndToString(modIPInstruction1, - sameAsModIPInstruction1, - modIPInstruction2); - } - - /** - * Test the hashCode() method of the ModIPInstruction class. - */ - @Test - public void testModIPInstructionHashCode() { - assertThat(modIPInstruction1.hashCode(), - is(equalTo(sameAsModIPInstruction1.hashCode()))); - assertThat(modIPInstruction1.hashCode(), - is(not(equalTo(modIPInstruction2.hashCode())))); - } - - private final int flowLabel1 = 0x11111; - private final int flowLabel2 = 0x22222; - private final Instruction modIPv6FlowLabelInstruction1 = - Instructions.modL3IPv6FlowLabel(flowLabel1); - private final Instruction sameAsModIPv6FlowLabelInstruction1 = - Instructions.modL3IPv6FlowLabel(flowLabel1); - private final Instruction modIPv6FlowLabelInstruction2 = - Instructions.modL3IPv6FlowLabel(flowLabel2); - - /** - * Test the modL3IPv6FlowLabel method. - */ - @Test - public void testModL3IPv6FlowLabelMethod() { - final Instruction instruction = - Instructions.modL3IPv6FlowLabel(flowLabel1); - final L3ModificationInstruction.ModIPv6FlowLabelInstruction - modIPv6FlowLabelInstruction = - checkAndConvert(instruction, - Instruction.Type.L3MODIFICATION, - L3ModificationInstruction.ModIPv6FlowLabelInstruction.class); - assertThat(modIPv6FlowLabelInstruction.flowLabel(), - is(equalTo(flowLabel1))); - assertThat(modIPv6FlowLabelInstruction.subtype(), - is(equalTo(L3ModificationInstruction.L3SubType.IPV6_FLABEL))); - } - - /** - * Test the equals() method of the ModIPv6FlowLabelInstruction class. - */ - @Test - public void testModIPv6FlowLabelInstructionEquals() throws Exception { - checkEqualsAndToString(modIPv6FlowLabelInstruction1, - sameAsModIPv6FlowLabelInstruction1, - modIPv6FlowLabelInstruction2); - } - - /** - * Test the hashCode() method of the ModIPv6FlowLabelInstruction class. - */ - @Test - public void testModIPv6FlowLabelInstructionHashCode() { - assertThat(modIPv6FlowLabelInstruction1.hashCode(), - is(equalTo(sameAsModIPv6FlowLabelInstruction1.hashCode()))); - assertThat(modIPv6FlowLabelInstruction1.hashCode(), - is(not(equalTo(modIPv6FlowLabelInstruction2.hashCode())))); - } - - private Instruction modMplsLabelInstruction1 = Instructions.modMplsLabel(MplsLabel.mplsLabel(1)); - private Instruction sameAsModMplsLabelInstruction1 = Instructions.modMplsLabel(MplsLabel.mplsLabel(1)); - private Instruction modMplsLabelInstruction2 = Instructions.modMplsLabel(MplsLabel.mplsLabel(2)); - - /** - * Test the modMplsLabel method. - */ - @Test - public void testModMplsMethod() { - final MplsLabel mplsLabel = MplsLabel.mplsLabel(33); - final Instruction instruction = Instructions.modMplsLabel(mplsLabel); - final L2ModificationInstruction.ModMplsLabelInstruction modMplsLabelInstruction = - checkAndConvert(instruction, - Instruction.Type.L2MODIFICATION, - L2ModificationInstruction.ModMplsLabelInstruction.class); - assertThat(modMplsLabelInstruction.mplsLabel(), is(equalTo(mplsLabel))); - assertThat(modMplsLabelInstruction.subtype(), - is(equalTo(L2ModificationInstruction.L2SubType.MPLS_LABEL))); - } - - /** - * Test the equals(), hashCode and toString() methods of the - * ModMplsLabelInstruction class. - */ - @Test - public void testModMplsLabelInstructionEquals() throws Exception { - checkEqualsAndToString(modMplsLabelInstruction1, - sameAsModMplsLabelInstruction1, - modMplsLabelInstruction2); - } - - // ModTunnelIdInstruction - - private final long tunnelId1 = 1L; - private final long tunnelId2 = 2L; - private final Instruction modTunnelId1 = Instructions.modTunnelId(tunnelId1); - private final Instruction sameAsModTunnelId1 = Instructions.modTunnelId(tunnelId1); - private final Instruction modTunnelId2 = Instructions.modTunnelId(tunnelId2); - - /** - * Test the modTunnelId method. - */ - @Test - public void testModTunnelIdMethod() { - final Instruction instruction = Instructions.modTunnelId(tunnelId1); - final L2ModificationInstruction.ModTunnelIdInstruction modTunnelIdInstruction = - checkAndConvert(instruction, Instruction.Type.L2MODIFICATION, - L2ModificationInstruction.ModTunnelIdInstruction.class); - assertThat(modTunnelIdInstruction.tunnelId(), is(equalTo(tunnelId1))); - assertThat(modTunnelIdInstruction.subtype(), - is(equalTo(L2ModificationInstruction.L2SubType.TUNNEL_ID))); - } - - /*** - * Test the equals() method of the ModTunnelIdInstruction class. - */ - @Test - public void testModTunnelIdInstructionEquals() throws Exception { - checkEqualsAndToString(modTunnelId1, sameAsModTunnelId1, modTunnelId2); - } - - /** - * Test the hashCode() method of the ModTunnelIdInstruction class. - */ - @Test - public void testModTunnelIdInstructionHashCode() { - assertThat(modTunnelId1.hashCode(), is(equalTo(sameAsModTunnelId1.hashCode()))); - assertThat(modTunnelId1.hashCode(), is(not(equalTo(modTunnelId2.hashCode())))); - } - - // ModTransportPortInstruction - - private final TpPort tpPort1 = TpPort.tpPort(1); - private final TpPort tpPort2 = TpPort.tpPort(2); - private final Instruction modTransportPortInstruction1 = Instructions.modTcpSrc(tpPort1); - private final Instruction sameAsModTransportPortInstruction1 = Instructions.modTcpSrc(tpPort1); - private final Instruction modTransportPortInstruction2 = Instructions.modTcpSrc(tpPort2); - - /** - * Test the modTcpSrc() method. - */ - @Test - public void testModTcpSrcMethod() { - final Instruction instruction = Instructions.modTcpSrc(tpPort1); - final L4ModificationInstruction.ModTransportPortInstruction modTransportPortInstruction = - checkAndConvert(instruction, Instruction.Type.L4MODIFICATION, - L4ModificationInstruction.ModTransportPortInstruction.class); - assertThat(modTransportPortInstruction.port(), is(equalTo(tpPort1))); - assertThat(modTransportPortInstruction.subtype(), - is(equalTo(L4ModificationInstruction.L4SubType.TCP_SRC))); - } - - /** - * Test the modTcpDst() method. - */ - @Test - public void testModTcpDstMethod() { - final Instruction instruction = Instructions.modTcpDst(tpPort1); - final L4ModificationInstruction.ModTransportPortInstruction modTransportPortInstruction = - checkAndConvert(instruction, Instruction.Type.L4MODIFICATION, - L4ModificationInstruction.ModTransportPortInstruction.class); - assertThat(modTransportPortInstruction.port(), is(equalTo(tpPort1))); - assertThat(modTransportPortInstruction.subtype(), - is(equalTo(L4ModificationInstruction.L4SubType.TCP_DST))); - } - - /** - * Test the modUdpSrc() method. - */ - @Test - public void testModUdpSrcMethod() { - final Instruction instruction = Instructions.modUdpSrc(tpPort1); - final L4ModificationInstruction.ModTransportPortInstruction modTransportPortInstruction = - checkAndConvert(instruction, Instruction.Type.L4MODIFICATION, - L4ModificationInstruction.ModTransportPortInstruction.class); - assertThat(modTransportPortInstruction.port(), is(equalTo(tpPort1))); - assertThat(modTransportPortInstruction.subtype(), - is(equalTo(L4ModificationInstruction.L4SubType.UDP_SRC))); - } - - /** - * Test the modUdpDst() method. - */ - @Test - public void testModUdpDstMethod() { - final Instruction instruction = Instructions.modUdpDst(tpPort1); - final L4ModificationInstruction.ModTransportPortInstruction modTransportPortInstruction = - checkAndConvert(instruction, Instruction.Type.L4MODIFICATION, - L4ModificationInstruction.ModTransportPortInstruction.class); - assertThat(modTransportPortInstruction.port(), is(equalTo(tpPort1))); - assertThat(modTransportPortInstruction.subtype(), - is(equalTo(L4ModificationInstruction.L4SubType.UDP_DST))); - } - - /** - * Test the equals() method of the ModTransportPortInstruction class. - */ - @Test - public void testModTransportPortInstructionEquals() throws Exception { - checkEqualsAndToString(modTransportPortInstruction1, - sameAsModTransportPortInstruction1, - modTransportPortInstruction2); - } - - /** - * Test the hashCode() method of the ModTransportPortInstruction class. - */ - @Test - public void testModTransportPortInstructionHashCode() { - assertThat(modTransportPortInstruction1.hashCode(), - is(equalTo(sameAsModTransportPortInstruction1.hashCode()))); - assertThat(modTransportPortInstruction1.hashCode(), - is(not(equalTo(modTransportPortInstruction2.hashCode())))); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flowobjective/ObjectiveTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/flowobjective/ObjectiveTest.java deleted file mode 100644 index 850582b0..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/flowobjective/ObjectiveTest.java +++ /dev/null @@ -1,313 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.flowobjective; - -import org.junit.Test; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.criteria.Criteria; -import org.onosproject.net.flow.criteria.Criterion; - -import static org.hamcrest.CoreMatchers.hasItem; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.not; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.NetTestTools.APP_ID; -import static org.onosproject.net.flowobjective.FilteringObjective.Type.DENY; -import static org.onosproject.net.flowobjective.ForwardingObjective.Flag.SPECIFIC; -import static org.onosproject.net.flowobjective.NextObjective.Type.HASHED; -import static org.onosproject.net.flowobjective.Objective.Operation.ADD; -import static org.onosproject.net.flowobjective.Objective.Operation.REMOVE; - -/** - * Unit tests for forwarding objective class. - */ -public class ObjectiveTest { - - private final TrafficTreatment treatment = - DefaultTrafficTreatment.emptyTreatment(); - private final TrafficSelector selector = - DefaultTrafficSelector.emptySelector(); - private final Criterion criterion = Criteria.dummy(); - private final Criterion key = Criteria.dummy(); - - /** - * Mock objective context. - */ - private static class MockObjectiveContext implements ObjectiveContext { - @Override - public void onSuccess(Objective objective) { - // stub - } - - @Override - public void onError(Objective objective, ObjectiveError error) { - // stub - } - } - - /** - * Checks immutability of objective classes. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultFilteringObjective.class); - assertThatClassIsImmutable(DefaultForwardingObjective.class); - assertThatClassIsImmutable(DefaultNextObjective.class); - } - - // Forwarding Objectives - - /** - * Makes a forwarding objective builder with a set of default values. - * - * @return forwarding objective builder - */ - private ForwardingObjective.Builder baseForwardingBuilder() { - return DefaultForwardingObjective.builder() - .withSelector(selector) - .withTreatment(treatment) - .withFlag(SPECIFIC) - .fromApp(APP_ID) - .withPriority(22) - .makeTemporary(5) - .nextStep(33); - } - - /** - * Checks the default values of a forwarding objective object. - * - * @param objective forwarding objective to check - */ - private void checkForwardingBase(ForwardingObjective objective, - Objective.Operation op, - ObjectiveContext expectedContext) { - assertThat(objective.permanent(), is(false)); - assertThat(objective.timeout(), is(5)); - assertThat(objective.selector(), is(selector)); - assertThat(objective.treatment(), is(treatment)); - assertThat(objective.flag(), is(SPECIFIC)); - assertThat(objective.appId(), is(APP_ID)); - assertThat(objective.nextId(), is(33)); - assertThat(objective.id(), is(not(0))); - assertThat(objective.priority(), is(22)); - assertThat(objective.op(), is(op)); - if (objective.context().isPresent()) { - assertThat(objective.context().get(), is(expectedContext)); - } else { - assertThat(expectedContext, nullValue()); - } - } - - /** - * Tests that forwarding objective objects are built correctly using the - * add() method. - */ - @Test - public void testForwardingAdd() { - checkForwardingBase(baseForwardingBuilder().add(), ADD, null); - } - - /** - * Tests that forwarding objective objects are built correctly using the - * add(context) method. - */ - @Test - public void testForwardingAddWithContext() { - ObjectiveContext context = new MockObjectiveContext(); - checkForwardingBase(baseForwardingBuilder().add(context), ADD, context); - } - - /** - * Tests that forwarding objective objects are built correctly using the - * remove() method. - */ - @Test - public void testForwardingRemove() { - checkForwardingBase(baseForwardingBuilder().remove(), REMOVE, null); - } - - /** - * Tests that forwarding objective objects are built correctly using the - * remove(context) method. - */ - @Test - public void testForwardingRemoveWithContext() { - ObjectiveContext context = new MockObjectiveContext(); - checkForwardingBase(baseForwardingBuilder().remove(context), REMOVE, context); - } - - // Filtering objectives - - /** - * Makes a filtering objective builder with a set of default values. - * - * @return filtering objective builder - */ - private FilteringObjective.Builder baseFilteringBuilder() { - return DefaultFilteringObjective.builder() - .withKey(key) - .withPriority(5) - .addCondition(criterion) - .fromApp(APP_ID) - .makeTemporary(2) - .deny(); - } - - /** - * Checks the default values of a filtering objective object. - * - * @param objective filtering objective to check - */ - private void checkFilteringBase(FilteringObjective objective, - Objective.Operation op, - ObjectiveContext expectedContext) { - assertThat(objective.key(), is(key)); - assertThat(objective.conditions(), hasItem(criterion)); - assertThat(objective.permanent(), is(false)); - assertThat(objective.timeout(), is(2)); - assertThat(objective.priority(), is(5)); - assertThat(objective.appId(), is(APP_ID)); - assertThat(objective.type(), is(DENY)); - assertThat(objective.id(), is(not(0))); - assertThat(objective.op(), is(op)); - if (objective.context().isPresent()) { - assertThat(objective.context().get(), is(expectedContext)); - } else { - assertThat(expectedContext, nullValue()); - } - } - - /** - * Tests that forwarding objective objects are built correctly using the - * add() method. - */ - @Test - public void testFilteringAdd() { - checkFilteringBase(baseFilteringBuilder().add(), ADD, null); - } - - /** - * Tests that forwarding objective objects are built correctly using the - * add(context) method. - */ - @Test - public void testFilteringAddWithContext() { - ObjectiveContext context = new MockObjectiveContext(); - checkFilteringBase(baseFilteringBuilder().add(context), ADD, context); - } - - /** - * Tests that forwarding objective objects are built correctly using the - * remove() method. - */ - @Test - public void testFilteringRemove() { - checkFilteringBase(baseFilteringBuilder().remove(), REMOVE, null); - } - - /** - * Tests that forwarding objective objects are built correctly using the - * remove(context) method. - */ - @Test - public void testFilteringRemoveWithContext() { - ObjectiveContext context = new MockObjectiveContext(); - checkFilteringBase(baseFilteringBuilder().remove(context), REMOVE, context); - } - - // Next objectives - - /** - * Makes a next objective builder with a set of default values. - * - * @return next objective builder - */ - private NextObjective.Builder baseNextBuilder() { - return DefaultNextObjective.builder() - .addTreatment(treatment) - .withId(12) - .withType(HASHED) - .makeTemporary(777) - .withPriority(33) - .fromApp(APP_ID); - } - - /** - * Checks the default values of a next objective object. - * - * @param objective next objective to check - */ - private void checkNextBase(NextObjective objective, - Objective.Operation op, - ObjectiveContext expectedContext) { - assertThat(objective.id(), is(12)); - assertThat(objective.appId(), is(APP_ID)); - assertThat(objective.type(), is(HASHED)); - assertThat(objective.next(), hasItem(treatment)); - assertThat(objective.permanent(), is(false)); - assertThat(objective.timeout(), is(0)); - assertThat(objective.priority(), is(0)); - assertThat(objective.op(), is(op)); - if (objective.context().isPresent()) { - assertThat(objective.context().get(), is(expectedContext)); - } else { - assertThat(expectedContext, nullValue()); - } - } - - /** - * Tests that forwarding objective objects are built correctly using the - * add() method. - */ - @Test - public void testNextAdd() { - checkNextBase(baseNextBuilder().add(), ADD, null); - } - - /** - * Tests that forwarding objective objects are built correctly using the - * add(context) method. - */ - @Test - public void testNextAddWithContext() { - ObjectiveContext context = new MockObjectiveContext(); - checkNextBase(baseNextBuilder().add(context), ADD, context); - } - - /** - * Tests that forwarding objective objects are built correctly using the - * remove() method. - */ - @Test - public void testNextRemove() { - checkNextBase(baseNextBuilder().remove(), REMOVE, null); - } - - /** - * Tests that forwarding objective objects are built correctly using the - * remove(context) method. - */ - @Test - public void testNextRemoveWithContext() { - ObjectiveContext context = new MockObjectiveContext(); - checkNextBase(baseNextBuilder().remove(context), REMOVE, context); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupDescriptionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupDescriptionTest.java deleted file mode 100644 index 66b0089e..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupDescriptionTest.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.junit.Test; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.collect.ImmutableList; -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass; -import static org.onosproject.net.NetTestTools.APP_ID; -import static org.onosproject.net.NetTestTools.did; - -/** - * Default group description unit tests. - */ -public class DefaultGroupDescriptionTest { - byte[] keyData = "abcdefg".getBytes(); - private final GroupKey key = new DefaultGroupKey(keyData); - private final TrafficTreatment treatment = - DefaultTrafficTreatment.emptyTreatment(); - private final GroupBucket bucket = - DefaultGroupBucket.createSelectGroupBucket(treatment); - private final GroupBuckets groupBuckets = - new GroupBuckets(ImmutableList.of(bucket)); - private final DefaultGroupDescription d1 = - new DefaultGroupDescription(did("2"), - GroupDescription.Type.FAILOVER, - groupBuckets); - private final DefaultGroupDescription sameAsD1 = - new DefaultGroupDescription(d1); - private final DefaultGroupDescription d2 = - new DefaultGroupDescription(did("2"), - GroupDescription.Type.INDIRECT, - groupBuckets); - private final DefaultGroupDescription d3 = - new DefaultGroupDescription(did("3"), - GroupDescription.Type.FAILOVER, - groupBuckets, - key, - 711, - APP_ID); - - /** - * Checks that the Default group description class is immutable and can be - * inherited from. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutableBaseClass(DefaultGroupDescription.class); - } - - /** - * Tests for proper operation of equals(), hashCode() and toString() methods. - */ - @Test - public void checkEquals() { - new EqualsTester() - .addEqualityGroup(d1, sameAsD1) - .addEqualityGroup(d2) - .addEqualityGroup(d3) - .testEquals(); - } - - /** - * Checks that construction of an object was correct. - */ - @Test - public void testConstruction() { - assertThat(d3.deviceId(), is(did("3"))); - assertThat(d3.type(), is(GroupDescription.Type.FAILOVER)); - assertThat(d3.buckets(), is(groupBuckets)); - assertThat(d3.appId(), is(APP_ID)); - assertThat(d3.givenGroupId(), is(711)); - assertThat(key.key(), is(keyData)); - assertThat(d3.appCookie().key(), is(keyData)); - } -} - diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java deleted file mode 100644 index f27f266b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.junit.Test; -import org.onosproject.core.DefaultGroupId; -import org.onosproject.core.GroupId; -import org.onosproject.net.NetTestTools; -import org.onosproject.net.flow.DefaultTrafficTreatment; - -import com.google.common.collect.ImmutableList; -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.*; -import static org.onosproject.net.NetTestTools.did; - -/** - * Unit tests for DefaultGroup class. - */ -public class DefaultGroupTest { - private final GroupId id1 = new DefaultGroupId(6); - private final GroupId id2 = new DefaultGroupId(7); - private final GroupBucket bucket = - DefaultGroupBucket.createSelectGroupBucket( - DefaultTrafficTreatment.emptyTreatment()); - private final GroupBuckets groupBuckets = - new GroupBuckets(ImmutableList.of(bucket)); - private final GroupDescription groupDesc1 = - new DefaultGroupDescription(did("1"), - GroupDescription.Type.FAILOVER, - groupBuckets); - private final GroupDescription groupDesc2 = - new DefaultGroupDescription(did("2"), - GroupDescription.Type.FAILOVER, - groupBuckets); - - DefaultGroup group1 = new DefaultGroup(id1, groupDesc1); - DefaultGroup sameAsGroup1 = new DefaultGroup(id1, groupDesc1); - DefaultGroup group2 = new DefaultGroup(id1, groupDesc2); - DefaultGroup group3 = new DefaultGroup(id2, groupDesc2); - - /** - * Tests for proper operation of equals(), hashCode() and toString() methods. - */ - @Test - public void checkEquals() { - new EqualsTester() - .addEqualityGroup(group1, sameAsGroup1) - .addEqualityGroup(group2) - .addEqualityGroup(group3) - .testEquals(); - } - - /** - * Tests that objects are created properly. - */ - @Test - public void checkConstruction() { - assertThat(group1.id(), is(id1)); - assertThat(group1.bytes(), is(0L)); - assertThat(group1.life(), is(0L)); - assertThat(group1.packets(), is(0L)); - assertThat(group1.referenceCount(), is(0L)); - assertThat(group1.buckets(), is(groupBuckets)); - assertThat(group1.state(), is(Group.GroupState.PENDING_ADD)); - } - - /** - * Tests that objects are created properly using the device based constructor. - */ - @Test - public void checkConstructionWithDid() { - DefaultGroup group = new DefaultGroup(id2, NetTestTools.did("1"), - GroupDescription.Type.INDIRECT, groupBuckets); - assertThat(group.id(), is(id2)); - assertThat(group.bytes(), is(0L)); - assertThat(group.life(), is(0L)); - assertThat(group.packets(), is(0L)); - assertThat(group.referenceCount(), is(0L)); - assertThat(group.deviceId(), is(NetTestTools.did("1"))); - assertThat(group.buckets(), is(groupBuckets)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupBucketTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupBucketTest.java deleted file mode 100644 index 0672ebf3..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupBucketTest.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.junit.Test; -import org.onosproject.core.DefaultGroupId; -import org.onosproject.core.GroupId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.onosproject.net.group.GroupDescription.Type.FAILOVER; -import static org.onosproject.net.group.GroupDescription.Type.INDIRECT; -import static org.onosproject.net.group.GroupDescription.Type.SELECT; - -/** - * Unit tests for the group bucket class. - */ -public class GroupBucketTest { - - private final GroupId groupId = new DefaultGroupId(7); - private final GroupId nullGroup = null; - - private final PortNumber nullPort = null; - - private final TrafficTreatment treatment = - DefaultTrafficTreatment.emptyTreatment(); - private final GroupBucket selectGroupBucket = - DefaultGroupBucket.createSelectGroupBucket(treatment); - private final GroupBucket sameAsSelectGroupBucket = - DefaultGroupBucket.createSelectGroupBucket(treatment); - private final GroupBucket failoverGroupBucket = - DefaultGroupBucket.createFailoverGroupBucket(treatment, - PortNumber.IN_PORT, groupId); - private final GroupBucket indirectGroupBucket = - DefaultGroupBucket.createIndirectGroupBucket(treatment); - private final GroupBucket selectGroupBucketWithWeight = - DefaultGroupBucket.createSelectGroupBucket(treatment, (short) 5); - - - /** - * Tests for proper operation of equals(), hashCode() and toString() methods. - */ - @Test - public void checkEquals() { - new EqualsTester() - .addEqualityGroup(selectGroupBucket, - sameAsSelectGroupBucket, - selectGroupBucketWithWeight) - .addEqualityGroup(failoverGroupBucket) - .addEqualityGroup(indirectGroupBucket) - .testEquals(); - } - - private void checkValues(GroupBucket bucket, GroupDescription.Type type, - long bytes, long packets, short weight, - GroupId groupId, PortNumber portNumber) { - assertThat(bucket.type(), is(type)); - assertThat(bucket.bytes(), is(bytes)); - assertThat(bucket.packets(), is(packets)); - assertThat(bucket.treatment(), is(treatment)); - assertThat(bucket.weight(), is(weight)); - assertThat(bucket.watchGroup(), is(groupId)); - assertThat(bucket.watchPort(), is(portNumber)); - } - - /** - * Checks that construction of a select group was correct. - */ - @Test - public void checkSelectGroup() { - // Casting needed because only the store accesses the set methods. - ((DefaultGroupBucket) selectGroupBucket).setBytes(4); - ((DefaultGroupBucket) selectGroupBucket).setPackets(44); - - checkValues(selectGroupBucket, SELECT, 4L, 44L, (short) 1, - nullGroup, nullPort); - } - - /** - * Checks that construction of a select group with a weight was correct. - */ - @Test - public void checkSelectGroupWithPriority() { - checkValues(selectGroupBucketWithWeight, SELECT, 0L, 0L, (short) 5, - nullGroup, nullPort); - } - - /** - * Checks that construction of an indirect group was correct. - */ - @Test - public void checkFailoverGroup() { - checkValues(failoverGroupBucket, FAILOVER, 0L, 0L, (short) -1, - groupId, PortNumber.IN_PORT); - } - /** - * Checks that construction of an indirect group was correct. - */ - @Test - public void checkIndirectGroup() { - checkValues(indirectGroupBucket, INDIRECT, 0L, 0L, (short) -1, - nullGroup, nullPort); - } - - /** - * Checks that a weight of 0 results in no group getting created. - */ - @Test - public void checkZeroWeight() { - GroupBucket bucket = - DefaultGroupBucket.createSelectGroupBucket(treatment, (short) 0); - assertThat(bucket, nullValue()); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupOperationTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupOperationTest.java deleted file mode 100644 index 5ee3a7ec..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupOperationTest.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.group; - -import org.junit.Test; -import org.onosproject.core.DefaultGroupId; -import org.onosproject.core.GroupId; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.collect.ImmutableList; -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.group.GroupDescription.Type.ALL; -import static org.onosproject.net.group.GroupDescription.Type.INDIRECT; -import static org.onosproject.net.group.GroupOperation.Type.ADD; - -/** - * Tests for the group operation class. - */ -public class GroupOperationTest { - - private final GroupId groupId = new DefaultGroupId(6); - private final TrafficTreatment treatment = - DefaultTrafficTreatment.emptyTreatment(); - private final GroupBucket bucket = - DefaultGroupBucket.createSelectGroupBucket(treatment); - private final GroupBuckets groupBuckets = - new GroupBuckets(ImmutableList.of(bucket)); - private final GroupOperation op1 = - GroupOperation.createAddGroupOperation(groupId, ALL, groupBuckets); - private final GroupOperation sameAsOp1 = - GroupOperation.createAddGroupOperation(groupId, ALL, groupBuckets); - private final GroupOperation op2 = - GroupOperation.createAddGroupOperation(groupId, INDIRECT, groupBuckets); - private final GroupOperation op3 = - GroupOperation.createDeleteGroupOperation(groupId, INDIRECT); - private final GroupOperation op4 = - GroupOperation.createModifyGroupOperation(groupId, INDIRECT, groupBuckets); - - /** - * Checks that the GroupOperation class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(GroupOperation.class); - } - - /** - * Tests for proper operation of equals(), hashCode() and toString() methods. - */ - @Test - public void checkEquals() { - new EqualsTester() - .addEqualityGroup(op1, sameAsOp1) - .addEqualityGroup(op2) - .addEqualityGroup(op3) - .addEqualityGroup(op4) - .testEquals(); - } - - /** - * Checks that the construction of the add operation is correct. - */ - @Test - public void testAddGroupOperation() { - assertThat(op1.buckets(), is(groupBuckets)); - assertThat(op1.groupId(), is(groupId)); - assertThat(op1.groupType(), is(ALL)); - assertThat(op1.opType(), is(ADD)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/DefaultHostDecriptionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/DefaultHostDecriptionTest.java deleted file mode 100644 index 496269b6..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/DefaultHostDecriptionTest.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.junit.Test; -import org.onosproject.net.DeviceId; -import org.onosproject.net.HostLocation; -import org.onosproject.net.PortNumber; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; - -import com.google.common.collect.ImmutableSet; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -/** - * Test for the default host description. - */ -public class DefaultHostDecriptionTest { - - private static final MacAddress MAC = MacAddress.valueOf("00:00:11:00:00:01"); - private static final VlanId VLAN = VlanId.vlanId((short) 10); - private static final IpAddress IP = IpAddress.valueOf("10.0.0.1"); - - private static final HostLocation LOC = new HostLocation( - DeviceId.deviceId("of:foo"), - PortNumber.portNumber(100), - 123L - ); - - @Test - public void basics() { - HostDescription host = - new DefaultHostDescription(MAC, VLAN, LOC, IP); - assertEquals("incorrect mac", MAC, host.hwAddress()); - assertEquals("incorrect vlan", VLAN, host.vlan()); - assertEquals("incorrect location", LOC, host.location()); - assertEquals("incorrect ip's", ImmutableSet.of(IP), host.ipAddress()); - assertTrue("incorrect toString", host.toString().contains("vlan=10")); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/HostEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/HostEventTest.java deleted file mode 100644 index 4a55d638..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/HostEventTest.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import java.util.Set; - -import org.junit.Test; -import org.onosproject.event.AbstractEventTest; -import org.onosproject.net.DefaultHost; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.HostLocation; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; - -import com.google.common.collect.Sets; - -public class HostEventTest extends AbstractEventTest { - - private Host createHost() { - MacAddress mac = MacAddress.valueOf("00:00:11:00:00:01"); - VlanId vlan = VlanId.vlanId((short) 10); - HostLocation loc = new HostLocation( - DeviceId.deviceId("of:foo"), - PortNumber.portNumber(100), - 123L - ); - Set ipset = Sets.newHashSet( - IpAddress.valueOf("10.0.0.1"), - IpAddress.valueOf("10.0.0.2") - ); - HostId hid = HostId.hostId(mac, vlan); - - return new DefaultHost( - new ProviderId("of", "foo"), hid, mac, vlan, loc, ipset); - } - - @Override - @Test - public void withTime() { - Host host = createHost(); - HostEvent event = new HostEvent(HostEvent.Type.HOST_ADDED, host, 123L); - validateEvent(event, HostEvent.Type.HOST_ADDED, host, 123L); - } - - @Override - @Test - public void withoutTime() { - Host host = createHost(); - long before = System.currentTimeMillis(); - HostEvent event = new HostEvent(HostEvent.Type.HOST_ADDED, host, before); - long after = System.currentTimeMillis(); - validateEvent(event, HostEvent.Type.HOST_ADDED, host, before, after); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/HostServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/HostServiceAdapter.java deleted file mode 100644 index 0fad54a8..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/HostServiceAdapter.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; - -import java.util.Set; - -/** - * Test adapter for host service. - */ -public class HostServiceAdapter implements HostService { - @Override - public int getHostCount() { - return 0; - } - - @Override - public Iterable getHosts() { - return null; - } - - @Override - public Host getHost(HostId hostId) { - return null; - } - - @Override - public Set getHostsByVlan(VlanId vlanId) { - return null; - } - - @Override - public Set getHostsByMac(MacAddress mac) { - return null; - } - - @Override - public Set getHostsByIp(IpAddress ip) { - return null; - } - - @Override - public Set getConnectedHosts(ConnectPoint connectPoint) { - return null; - } - - @Override - public Set getConnectedHosts(DeviceId deviceId) { - return null; - } - - @Override - public void startMonitoringIp(IpAddress ip) { - } - - @Override - public void stopMonitoringIp(IpAddress ip) { - } - - @Override - public void requestMac(IpAddress ip) { - } - - @Override - public void addListener(HostListener listener) { - } - - @Override - public void removeListener(HostListener listener) { - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java deleted file mode 100644 index 6120b7ce..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.host; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; - -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.nullValue; -import static org.junit.Assert.assertThat; - -/** - * Tests for class {@link InterfaceIpAddress}. - */ -public class InterfaceIpAddressTest { - private static final IpAddress IP_ADDRESS = IpAddress.valueOf("1.2.3.4"); - private static final IpPrefix SUBNET_ADDRESS = - IpPrefix.valueOf("1.2.0.0/16"); - private static final IpAddress BROADCAST_ADDRESS = - IpAddress.valueOf("1.2.0.255"); // NOTE: non-default broadcast - private static final IpAddress PEER_ADDRESS = IpAddress.valueOf("5.6.7.8"); - - private static final IpAddress IP_ADDRESS2 = IpAddress.valueOf("10.2.3.4"); - private static final IpPrefix SUBNET_ADDRESS2 = - IpPrefix.valueOf("10.2.0.0/16"); - private static final IpAddress BROADCAST_ADDRESS2 = - IpAddress.valueOf("10.2.0.255"); // NOTE: non-default broadcast - private static final IpAddress PEER_ADDRESS2 = - IpAddress.valueOf("50.6.7.8"); - - /** - * Tests valid class copy constructor. - */ - @Test - public void testCopyConstructor() { - InterfaceIpAddress fromAddr; - InterfaceIpAddress toAddr; - - // Regular interface address with default broadcast address - fromAddr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); - toAddr = new InterfaceIpAddress(fromAddr); - assertThat(toAddr.ipAddress(), is(fromAddr.ipAddress())); - assertThat(toAddr.subnetAddress(), is(fromAddr.subnetAddress())); - assertThat(toAddr.broadcastAddress(), is(fromAddr.broadcastAddress())); - assertThat(toAddr.peerAddress(), is(fromAddr.peerAddress())); - - // Interface address with non-default broadcast address - fromAddr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, - BROADCAST_ADDRESS); - toAddr = new InterfaceIpAddress(fromAddr); - assertThat(toAddr.ipAddress(), is(fromAddr.ipAddress())); - assertThat(toAddr.subnetAddress(), is(fromAddr.subnetAddress())); - assertThat(toAddr.broadcastAddress(), is(fromAddr.broadcastAddress())); - assertThat(toAddr.peerAddress(), is(fromAddr.peerAddress())); - - // Point-to-point address with peer IP address - fromAddr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, - PEER_ADDRESS); - toAddr = new InterfaceIpAddress(fromAddr); - assertThat(toAddr.ipAddress(), is(fromAddr.ipAddress())); - assertThat(toAddr.subnetAddress(), is(fromAddr.subnetAddress())); - assertThat(toAddr.broadcastAddress(), is(fromAddr.broadcastAddress())); - assertThat(toAddr.peerAddress(), is(fromAddr.peerAddress())); - } - - /** - * Tests invalid class copy constructor for a null object to copy from. - */ - @Test(expected = NullPointerException.class) - public void testInvalidConstructorNullObject() { - InterfaceIpAddress fromAddr = null; - InterfaceIpAddress toAddr = new InterfaceIpAddress(fromAddr); - } - - /** - * Tests valid class constructor for regular interface address with - * default broadcast address. - */ - @Test - public void testConstructorForDefaultBroadcastAddress() { - InterfaceIpAddress addr = - new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); - assertThat(addr.ipAddress(), is(IP_ADDRESS)); - assertThat(addr.subnetAddress(), is(SUBNET_ADDRESS)); - assertThat(addr.broadcastAddress(), nullValue()); - assertThat(addr.peerAddress(), nullValue()); - } - - /** - * Tests valid class constructor for interface address with - * non-default broadcast address. - */ - @Test - public void testConstructorForNonDefaultBroadcastAddress() { - InterfaceIpAddress addr = - new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, - BROADCAST_ADDRESS); - - assertThat(addr.ipAddress(), is(IP_ADDRESS)); - assertThat(addr.subnetAddress(), is(SUBNET_ADDRESS)); - assertThat(addr.broadcastAddress(), is(BROADCAST_ADDRESS)); - assertThat(addr.peerAddress(), nullValue()); - } - - /** - * Tests valid class constructor for point-to-point interface address with - * peer address. - */ - @Test - public void testConstructorForPointToPointAddress() { - InterfaceIpAddress addr = - new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, - PEER_ADDRESS); - - assertThat(addr.ipAddress(), is(IP_ADDRESS)); - assertThat(addr.subnetAddress(), is(SUBNET_ADDRESS)); - assertThat(addr.broadcastAddress(), nullValue()); - assertThat(addr.peerAddress(), is(PEER_ADDRESS)); - } - - /** - * Tests getting the fields of an interface address. - */ - @Test - public void testGetFields() { - InterfaceIpAddress addr; - - // Regular interface address with default broadcast address - addr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); - assertThat(addr.ipAddress().toString(), is("1.2.3.4")); - assertThat(addr.subnetAddress().toString(), is("1.2.0.0/16")); - assertThat(addr.broadcastAddress(), is(nullValue())); // TODO: Fix - assertThat(addr.peerAddress(), is(nullValue())); - - // Interface address with non-default broadcast address - addr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, - BROADCAST_ADDRESS); - assertThat(addr.ipAddress().toString(), is("1.2.3.4")); - assertThat(addr.subnetAddress().toString(), is("1.2.0.0/16")); - assertThat(addr.broadcastAddress().toString(), is("1.2.0.255")); - assertThat(addr.peerAddress(), is(nullValue())); - - // Point-to-point address with peer IP address - addr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, - PEER_ADDRESS); - assertThat(addr.ipAddress().toString(), is("1.2.3.4")); - assertThat(addr.subnetAddress().toString(), is("1.2.0.0/16")); - assertThat(addr.broadcastAddress(), is(nullValue())); - assertThat(addr.peerAddress().toString(), is("5.6.7.8")); - } - - /** - * Tests equality of {@link InterfaceIpAddress}. - */ - @Test - public void testEquality() { - InterfaceIpAddress addr1, addr2; - - // Regular interface address with default broadcast address - addr1 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); - addr2 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); - assertThat(addr1, is(addr2)); - - // Interface address with non-default broadcast address - addr1 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, - BROADCAST_ADDRESS); - addr2 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, - BROADCAST_ADDRESS); - assertThat(addr1, is(addr2)); - - // Point-to-point address with peer IP address - addr1 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, - PEER_ADDRESS); - addr2 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, - PEER_ADDRESS); - assertThat(addr1, is(addr2)); - } - - /** - * Tests non-equality of {@link InterfaceIpAddress}. - */ - @Test - public void testNonEquality() { - InterfaceIpAddress addr1, addr2, addr3, addr4; - - // Regular interface address with default broadcast address - addr1 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); - // Interface address with non-default broadcast address - addr2 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, - BROADCAST_ADDRESS); - // Point-to-point address with peer IP address - addr3 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, - PEER_ADDRESS); - - // Test interface addresses with different properties: - // - default-broadcast vs non-default broadcast - // - regular vs point-to-point - assertThat(addr1, is(not(addr2))); - assertThat(addr1, is(not(addr3))); - assertThat(addr2, is(not(addr3))); - - // Test regular interface address with default broadcast address - addr4 = new InterfaceIpAddress(IP_ADDRESS2, SUBNET_ADDRESS); - assertThat(addr1, is(not(addr4))); - addr4 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS2); - assertThat(addr1, is(not(addr4))); - - // Test interface address with non-default broadcast address - addr4 = new InterfaceIpAddress(IP_ADDRESS2, SUBNET_ADDRESS, - BROADCAST_ADDRESS); - assertThat(addr2, is(not(addr4))); - addr4 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS2, - BROADCAST_ADDRESS); - assertThat(addr2, is(not(addr4))); - addr4 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, - BROADCAST_ADDRESS2); - assertThat(addr2, is(not(addr4))); - - // Test point-to-point address with peer IP address - addr4 = new InterfaceIpAddress(IP_ADDRESS2, SUBNET_ADDRESS, null, - PEER_ADDRESS); - assertThat(addr3, is(not(addr4))); - addr4 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS2, null, - PEER_ADDRESS); - assertThat(addr3, is(not(addr4))); - addr4 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, - PEER_ADDRESS2); - assertThat(addr3, is(not(addr4))); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/AbstractIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/AbstractIntentTest.java deleted file mode 100644 index 6bb7e28f..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/AbstractIntentTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.After; -import org.junit.Before; -import org.onosproject.core.IdGenerator; - -public abstract class AbstractIntentTest { - - protected IdGenerator idGenerator = new MockIdGenerator(); - - @Before - public void setUp() throws Exception { - Intent.bindIdGenerator(idGenerator); - } - - @After - public void tearDown() { - Intent.unbindIdGenerator(idGenerator); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/ConnectivityIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/ConnectivityIntentTest.java deleted file mode 100644 index c510b60a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/ConnectivityIntentTest.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.Set; - -import org.onosproject.core.ApplicationId; -import org.onosproject.TestApplicationId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -/** - * Base facilities to test various connectivity tests. - */ -public abstract class ConnectivityIntentTest extends IntentTest { - - public static final ApplicationId APPID = new TestApplicationId("foo"); - public static final Key KEY = Key.of(1L, APPID); - - public static final IntentId IID = new IntentId(123); - public static final TrafficSelector MATCH = DefaultTrafficSelector.emptySelector(); - public static final TrafficTreatment NOP = DefaultTrafficTreatment.emptyTreatment(); - - public static final ConnectPoint P1 = new ConnectPoint(DeviceId.deviceId("111"), PortNumber.portNumber(0x1)); - public static final ConnectPoint P2 = new ConnectPoint(DeviceId.deviceId("222"), PortNumber.portNumber(0x2)); - public static final ConnectPoint P3 = new ConnectPoint(DeviceId.deviceId("333"), PortNumber.portNumber(0x3)); - - public static final Set PS1 = itemSet(new ConnectPoint[]{P1, P3}); - public static final Set PS2 = itemSet(new ConnectPoint[]{P2, P3}); -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/FakeIntentManager.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/FakeIntentManager.java deleted file mode 100644 index a33d3692..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/FakeIntentManager.java +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * Fake implementation of the intent service to assist in developing tests of - * the interface contract. - */ -public class FakeIntentManager implements TestableIntentService { - - private final Map intents = new HashMap<>(); - private final Map intentStates = new HashMap<>(); - private final Map> installables = new HashMap<>(); - private final Set listeners = new HashSet<>(); - - private final Map, IntentCompiler> compilers = new HashMap<>(); - - private final ExecutorService executor = Executors.newSingleThreadExecutor(); - private final List exceptions = new ArrayList<>(); - - @Override - public List getExceptions() { - return exceptions; - } - - // Provides an out-of-thread simulation of intent submit life-cycle - private void executeSubmit(final Intent intent) { - registerSubclassCompilerIfNeeded(intent); - executor.execute(() -> { - try { - executeCompilingPhase(intent); - } catch (IntentException e) { - exceptions.add(e); - } - }); - } - - // Provides an out-of-thread simulation of intent withdraw life-cycle - private void executeWithdraw(final Intent intent) { - executor.execute(() -> { - try { - List installable = getInstallable(intent.key()); - executeWithdrawingPhase(intent, installable); - } catch (IntentException e) { - exceptions.add(e); - } - }); - } - - private IntentCompiler getCompiler(T intent) { - @SuppressWarnings("unchecked") - IntentCompiler compiler = (IntentCompiler) compilers.get(intent.getClass()); - if (compiler == null) { - throw new IntentException("no compiler for class " + intent.getClass()); - } - return compiler; - } - - private void executeCompilingPhase(T intent) { - setState(intent, IntentState.COMPILING); - try { - // For the fake, we compile using a single level pass - List installable = new ArrayList<>(); - for (Intent compiled : getCompiler(intent).compile(intent, null, null)) { - installable.add(compiled); - } - executeInstallingPhase(intent, installable); - - } catch (IntentException e) { - setState(intent, IntentState.FAILED); - dispatch(new IntentEvent(IntentEvent.Type.FAILED, intent)); - } - } - - private void executeInstallingPhase(Intent intent, - List installable) { - setState(intent, IntentState.INSTALLING); - try { - setState(intent, IntentState.INSTALLED); - putInstallable(intent.key(), installable); - dispatch(new IntentEvent(IntentEvent.Type.INSTALLED, intent)); - - } catch (IntentException e) { - setState(intent, IntentState.FAILED); - dispatch(new IntentEvent(IntentEvent.Type.FAILED, intent)); - } - } - - private void executeWithdrawingPhase(Intent intent, - List installable) { - setState(intent, IntentState.WITHDRAWING); - try { - removeInstallable(intent.key()); - setState(intent, IntentState.WITHDRAWN); - dispatch(new IntentEvent(IntentEvent.Type.WITHDRAWN, intent)); - } catch (IntentException e) { - // FIXME: Rework this to always go from WITHDRAWING to WITHDRAWN! - setState(intent, IntentState.FAILED); - dispatch(new IntentEvent(IntentEvent.Type.FAILED, intent)); - } - } - - // Sets the internal state for the given intent and dispatches an event - private void setState(Intent intent, IntentState state) { - intentStates.put(intent.key(), state); - } - - private void putInstallable(Key key, List installable) { - installables.put(key, installable); - } - - private void removeInstallable(Key key) { - installables.remove(key); - } - - private List getInstallable(Key key) { - List installable = installables.get(key); - if (installable != null) { - return installable; - } else { - return Collections.emptyList(); - } - } - - @Override - public void submit(Intent intent) { - intents.put(intent.key(), intent); - setState(intent, IntentState.INSTALL_REQ); - dispatch(new IntentEvent(IntentEvent.Type.INSTALL_REQ, intent)); - executeSubmit(intent); - } - - @Override - public void withdraw(Intent intent) { - intents.remove(intent.key()); - executeWithdraw(intent); - } - - @Override - public void purge(Intent intent) { - IntentState currentState = intentStates.get(intent.key()); - if (currentState == IntentState.WITHDRAWN - || currentState == IntentState.FAILED) { - intents.remove(intent.key()); - installables.remove(intent.key()); - intentStates.remove(intent.key()); - } - } - - @Override - public Set getIntents() { - return Collections.unmodifiableSet(new HashSet<>(intents.values())); - } - - @Override - public Iterable getIntentData() { - throw new UnsupportedOperationException(); - } - - @Override - public long getIntentCount() { - return intents.size(); - } - - @Override - public Intent getIntent(Key intentKey) { - return intents.get(intentKey); - } - - @Override - public IntentState getIntentState(Key intentKey) { - return intentStates.get(intentKey); - } - - @Override - public List getInstallableIntents(Key intentKey) { - return installables.get(intentKey); - } - - @Override - public boolean isLocal(Key intentKey) { - return true; - } - - @Override - public Iterable getPending() { - return Collections.emptyList(); - } - - @Override - public void addListener(IntentListener listener) { - listeners.add(listener); - } - - @Override - public void removeListener(IntentListener listener) { - listeners.remove(listener); - } - - private void dispatch(IntentEvent event) { - for (IntentListener listener : listeners) { - listener.event(event); - } - } - - @Override - public void registerCompiler(Class cls, - IntentCompiler compiler) { - compilers.put(cls, compiler); - } - - @Override - public void unregisterCompiler(Class cls) { - compilers.remove(cls); - } - - @Override - public Map, IntentCompiler> getCompilers() { - return Collections.unmodifiableMap(compilers); - } - - private void registerSubclassCompilerIfNeeded(Intent intent) { - if (!compilers.containsKey(intent.getClass())) { - Class cls = intent.getClass(); - while (cls != Object.class) { - // As long as we're within the Intent class descendants - if (Intent.class.isAssignableFrom(cls)) { - IntentCompiler compiler = compilers.get(cls); - if (compiler != null) { - compilers.put(intent.getClass(), compiler); - return; - } - } - cls = cls.getSuperclass(); - } - } - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java deleted file mode 100644 index c3a95473..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.Test; -import org.onlab.util.DataRateUnit; -import org.onosproject.TestApplicationId; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.HostId; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.intent.constraint.BandwidthConstraint; -import com.google.common.collect.ImmutableList; -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.NetTestTools.hid; - -/** - * Unit tests for the HostToHostIntent class. - */ -public class HostToHostIntentTest extends IntentTest { - private final TrafficSelector selector = new IntentTestsMocks.MockSelector(); - private final IntentTestsMocks.MockTreatment treatment = new IntentTestsMocks.MockTreatment(); - private final HostId id1 = hid("12:34:56:78:91:ab/1"); - private final HostId id2 = hid("12:34:56:78:92:ab/1"); - private final HostId id3 = hid("12:34:56:78:93:ab/1"); - - private static final ApplicationId APPID = new TestApplicationId("foo"); - - private HostToHostIntent makeHostToHost(HostId one, HostId two) { - return HostToHostIntent.builder() - .appId(APPID) - .one(one) - .two(two) - .selector(selector) - .treatment(treatment) - .build(); - } - - /** - * Tests the equals() method where two HostToHostIntents have references - * to the same hosts. These should compare equal. - */ - @Test - public void testSameEquals() { - - HostId one = hid("00:00:00:00:00:01/-1"); - HostId two = hid("00:00:00:00:00:02/-1"); - HostToHostIntent i1 = makeHostToHost(one, two); - HostToHostIntent i2 = makeHostToHost(one, two); - - assertThat(i1.one(), is(equalTo(i2.one()))); - assertThat(i1.two(), is(equalTo(i2.two()))); - } - - /** - * Checks that the HostToHostIntent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(HostToHostIntent.class); - } - - /** - * Tests equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - final HostToHostIntent intent1 = HostToHostIntent.builder() - .appId(APPID) - .one(id1) - .two(id2) - .selector(selector) - .treatment(treatment) - .build(); - - final HostToHostIntent intent2 = HostToHostIntent.builder() - .appId(APPID) - .one(id2) - .two(id3) - .selector(selector) - .treatment(treatment) - .build(); - - new EqualsTester() - .addEqualityGroup(intent1) - .addEqualityGroup(intent2) - .testEquals(); - } - - @Test - public void testImplicitConstraintsAreAdded() { - final Constraint other = BandwidthConstraint.of(1, DataRateUnit.GBPS); - final HostToHostIntent intent = HostToHostIntent.builder() - .appId(APPID) - .one(id1) - .two(id2) - .selector(selector) - .treatment(treatment) - .constraints(ImmutableList.of(other)) - .build(); - - assertThat(intent.constraints(), hasItem(HostToHostIntent.NOT_OPTICAL)); - } - - @Test - public void testImplicitConstraints() { - final HostToHostIntent implicit = HostToHostIntent.builder() - .appId(APPID) - .one(id1) - .two(id2) - .selector(selector) - .treatment(treatment) - .build(); - final HostToHostIntent empty = HostToHostIntent.builder() - .appId(APPID) - .one(id1) - .two(id2) - .selector(selector) - .treatment(treatment) - .constraints(ImmutableList.of()) - .build(); - final HostToHostIntent exact = HostToHostIntent.builder() - .appId(APPID) - .one(id1) - .two(id2) - .selector(selector) - .treatment(treatment) - .constraints(ImmutableList.of(HostToHostIntent.NOT_OPTICAL)) - .build(); - - new EqualsTester() - .addEqualityGroup(implicit.constraints(), - empty.constraints(), - exact.constraints()) - .testEquals(); - - } - - @Override - protected Intent createOne() { - return HostToHostIntent.builder() - .appId(APPID) - .one(id1) - .two(id2) - .selector(selector) - .treatment(treatment) - .build(); - } - - @Override - protected Intent createAnother() { - return HostToHostIntent.builder() - .appId(APPID) - .one(id1) - .two(id3) - .selector(selector) - .treatment(treatment) - .build(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentDataTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentDataTest.java deleted file mode 100644 index 9c4cf7e0..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentDataTest.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.core.IdGenerator; -import org.onosproject.store.Timestamp; - -import com.google.common.testing.EqualsTester; - -import static junit.framework.TestCase.assertFalse; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertTrue; -import static org.onosproject.net.intent.IntentTestsMocks.MockIntent; -import static org.onosproject.net.intent.IntentTestsMocks.MockTimestamp; - -/** - * Unit tests for intent data objects. - */ -public class IntentDataTest { - - private Timestamp timestamp1; - private Timestamp timestamp2; - private Timestamp timestamp3; - - private Intent intent1; - private Intent intent2; - private Intent intent3; - - private IntentData data1; - private IntentData data1Copy; - private IntentData data2; - private IntentData data2Copy; - private IntentData data3; - private IntentData data3Copy; - - IdGenerator idGenerator; - - @Before - public void setUpTest() { - idGenerator = new MockIdGenerator(); - Intent.bindIdGenerator(idGenerator); - - timestamp1 = new MockTimestamp(1); - timestamp2 = new MockTimestamp(2); - timestamp3 = new MockTimestamp(3); - - intent1 = new MockIntent(1L); - intent2 = new MockIntent(2L); - intent3 = new MockIntent(3L); - - data1 = new IntentData(intent1, IntentState.INSTALLED, timestamp1); - data1Copy = new IntentData(intent1, IntentState.INSTALLED, timestamp1); - data2 = new IntentData(intent2, IntentState.INSTALLED, timestamp2); - data2Copy = new IntentData(intent2, IntentState.INSTALLED, timestamp2); - data3 = new IntentData(intent3, IntentState.INSTALLED, timestamp3); - data3Copy = new IntentData(intent3, IntentState.INSTALLED, timestamp3); - } - - @After - public void tearDownTest() { - Intent.unbindIdGenerator(idGenerator); - } - - /** - * Checks that intent data objects are properly constructed. - */ - @Test - public void checkConstruction() { - assertThat(data1.state(), is(IntentState.INSTALLED)); - assertThat(data1.version(), is(timestamp1)); - assertThat(data1.intent(), is(intent1)); - } - - /** - * Checks equals() for intent data objects. - */ - @Test - public void checkEquals() { - new EqualsTester() - .addEqualityGroup(data1, data1Copy) - .addEqualityGroup(data2, data2Copy) - .addEqualityGroup(data3, data3Copy) - .testEquals(); - } - - @Test - public void testIsUpdateAcceptable() { - // Going from null to something is always allowed - assertTrue(IntentData.isUpdateAcceptable(null, data1)); - - // we can go from older version to newer but not they other way - assertTrue(IntentData.isUpdateAcceptable(data1, data2)); - assertFalse(IntentData.isUpdateAcceptable(data2, data1)); - - IntentData installing = new IntentData(intent1, IntentState.INSTALLING, timestamp1); - IntentData installed = new IntentData(intent1, IntentState.INSTALLED, timestamp1); - IntentData withdrawing = new IntentData(intent1, IntentState.WITHDRAWING, timestamp1); - IntentData withdrawn = new IntentData(intent1, IntentState.WITHDRAWN, timestamp1); - - IntentData failed = new IntentData(intent1, IntentState.FAILED, timestamp1); - IntentData purgeReq = new IntentData(intent1, IntentState.PURGE_REQ, timestamp1); - - IntentData compiling = new IntentData(intent1, IntentState.COMPILING, timestamp1); - IntentData recompiling = new IntentData(intent1, IntentState.RECOMPILING, timestamp1); - IntentData installReq = new IntentData(intent1, IntentState.INSTALL_REQ, timestamp1); - IntentData withdrawReq = new IntentData(intent1, IntentState.WITHDRAW_REQ, timestamp1); - - // We can't change to the same state - assertFalse(IntentData.isUpdateAcceptable(installing, installing)); - assertFalse(IntentData.isUpdateAcceptable(installed, installed)); - - // From installing we can change to installed - assertTrue(IntentData.isUpdateAcceptable(installing, installed)); - - // Sanity checks in case the manager submits bogus state transitions - assertFalse(IntentData.isUpdateAcceptable(installing, withdrawing)); - assertFalse(IntentData.isUpdateAcceptable(installing, withdrawn)); - assertFalse(IntentData.isUpdateAcceptable(installed, withdrawing)); - assertFalse(IntentData.isUpdateAcceptable(installed, withdrawn)); - - // We can't change to the same state - assertFalse(IntentData.isUpdateAcceptable(withdrawing, withdrawing)); - assertFalse(IntentData.isUpdateAcceptable(withdrawn, withdrawn)); - - // From withdrawing we can change to withdrawn - assertTrue(IntentData.isUpdateAcceptable(withdrawing, withdrawn)); - - // Sanity checks in case the manager submits bogus state transitions - assertFalse(IntentData.isUpdateAcceptable(withdrawing, installing)); - assertFalse(IntentData.isUpdateAcceptable(withdrawing, installed)); - assertFalse(IntentData.isUpdateAcceptable(withdrawn, installing)); - assertFalse(IntentData.isUpdateAcceptable(withdrawn, installed)); - - // We can't go from failed to failed - assertFalse(IntentData.isUpdateAcceptable(failed, failed)); - - // But we can go from any install* or withdraw* state to failed - assertTrue(IntentData.isUpdateAcceptable(installing, failed)); - assertTrue(IntentData.isUpdateAcceptable(installed, failed)); - assertTrue(IntentData.isUpdateAcceptable(withdrawing, failed)); - assertTrue(IntentData.isUpdateAcceptable(withdrawn, failed)); - - // We can go from anything to purgeReq - assertTrue(IntentData.isUpdateAcceptable(installing, purgeReq)); - assertTrue(IntentData.isUpdateAcceptable(installed, purgeReq)); - assertTrue(IntentData.isUpdateAcceptable(withdrawing, purgeReq)); - assertTrue(IntentData.isUpdateAcceptable(withdrawn, purgeReq)); - assertTrue(IntentData.isUpdateAcceptable(failed, purgeReq)); - - // We can't go from purgeReq back to anything else - assertFalse(IntentData.isUpdateAcceptable(purgeReq, withdrawn)); - assertFalse(IntentData.isUpdateAcceptable(purgeReq, withdrawing)); - assertFalse(IntentData.isUpdateAcceptable(purgeReq, installed)); - assertFalse(IntentData.isUpdateAcceptable(purgeReq, installing)); - - // We're never allowed to store transient states - assertFalse(IntentData.isUpdateAcceptable(installing, compiling)); - assertFalse(IntentData.isUpdateAcceptable(installing, recompiling)); - assertFalse(IntentData.isUpdateAcceptable(installing, installReq)); - assertFalse(IntentData.isUpdateAcceptable(installing, withdrawReq)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentExceptionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentExceptionTest.java deleted file mode 100644 index f26ee639..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentExceptionTest.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -/** - * Test of the intent exception. - */ -public class IntentExceptionTest { - - @Test - public void basics() { - validate(new IntentException(), null, null); - validate(new IntentException("foo"), "foo", null); - - Throwable cause = new NullPointerException("bar"); - validate(new IntentException("foo", cause), "foo", cause); - } - - /** - * Validates that the specified exception has the correct message and cause. - * - * @param e exception to test - * @param message expected message - * @param cause expected cause - */ - protected void validate(RuntimeException e, String message, Throwable cause) { - assertEquals("incorrect message", message, e.getMessage()); - assertEquals("incorrect cause", cause, e.getCause()); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentIdTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentIdTest.java deleted file mode 100644 index e2987b54..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentIdTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.not; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * This class tests the immutability, equality, and non-equality of - * {@link IntentId}. - */ -public class IntentIdTest { - /** - * Tests the immutability of {@link IntentId}. - */ - @Test - public void intentIdFollowsGuidelineForImmutableObject() { - assertThatClassIsImmutable(IntentId.class); - } - - /** - * Tests equality of {@link IntentId}. - */ - @Test - public void testEquality() { - IntentId id1 = new IntentId(1L); - IntentId id2 = new IntentId(1L); - - assertThat(id1, is(id2)); - } - - /** - * Tests non-equality of {@link IntentId}. - */ - @Test - public void testNonEquality() { - IntentId id1 = new IntentId(1L); - IntentId id2 = new IntentId(2L); - - assertThat(id1, is(not(id2))); - } - - @Test - public void valueOf() { - IntentId id = new IntentId(0xdeadbeefL); - assertEquals("incorrect valueOf", id, IntentId.valueOf(0xdeadbeefL)); - } - - /** - * Tests the equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - final IntentId id1 = new IntentId(11111L); - final IntentId sameAsId1 = new IntentId(11111L); - final IntentId id2 = new IntentId(22222L); - - new EqualsTester() - .addEqualityGroup(id1, sameAsId1) - .addEqualityGroup(id2) - .testEquals(); - } - - /** - * Tests construction of an IntentId object. - */ - @Test - public void testConstruction() { - final IntentId id1 = new IntentId(987654321L); - assertEquals(id1.fingerprint(), 987654321L); - - final IntentId emptyId = new IntentId(); - assertEquals(emptyId.fingerprint(), 0L); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentServiceAdapter.java deleted file mode 100644 index 13786b4e..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentServiceAdapter.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.List; - -/** - * Test adapter for intent service. - */ -public class IntentServiceAdapter implements IntentService { - @Override - public void submit(Intent intent) { - - } - - @Override - public void withdraw(Intent intent) { - - } - - @Override - public void purge(Intent intent) { - - } - - @Override - public Iterable getIntents() { - return null; - } - - @Override - public Iterable getIntentData() { - return null; - } - - @Override - public long getIntentCount() { - return 0; - } - - @Override - public Intent getIntent(Key intentKey) { - return null; - } - - @Override - public IntentState getIntentState(Key intentKey) { - return IntentState.INSTALLED; - } - - @Override - public List getInstallableIntents(Key intentKey) { - return null; - } - - @Override - public boolean isLocal(Key intentKey) { - return false; - } - - @Override - public Iterable getPending() { - return null; - } - - @Override - public void addListener(IntentListener listener) { - - } - - @Override - public void removeListener(IntentListener listener) { - - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java deleted file mode 100644 index 0067fb2d..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.core.IdGenerator; -import org.onosproject.net.resource.link.LinkResourceAllocations; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import static org.junit.Assert.*; -import static org.onosproject.net.intent.IntentEvent.Type.*; - -/** - * Suite of tests for the intent service contract. - */ -public class IntentServiceTest { - - public static final int IID = 123; - public static final int INSTALLABLE_IID = 234; - - protected static final int GRACE_MS = 500; // millis - - protected TestableIntentService service; - protected TestListener listener = new TestListener(); - protected IdGenerator idGenerator = new MockIdGenerator(); - - @Before - public void setUp() { - service = createIntentService(); - service.addListener(listener); - Intent.bindIdGenerator(idGenerator); - } - - @After - public void tearDown() { - service.removeListener(listener); - Intent.unbindIdGenerator(idGenerator); - } - - /** - * Creates a service instance appropriately instrumented for testing. - * - * @return testable intent service - */ - protected TestableIntentService createIntentService() { - return new FakeIntentManager(); - } - - @Test - public void basics() { - // Make sure there are no intents - assertEquals("incorrect intent count", 0, service.getIntentCount()); - - // Register a compiler and an installer both setup for success. - service.registerCompiler(TestIntent.class, new TestCompiler(new TestInstallableIntent(INSTALLABLE_IID))); - - final Intent intent = new TestIntent(IID); - service.submit(intent); - - // Allow a small window of time until the intent is in the expected state - TestTools.assertAfter(GRACE_MS, () -> - assertEquals("incorrect intent state", IntentState.INSTALLED, service.getIntentState(intent.key()))); - - // Make sure that all expected events have been emitted - validateEvents(intent, INSTALL_REQ, INSTALLED); - - // Make sure there is just one intent (and is ours) - assertEquals("incorrect intent count", 1, service.getIntentCount()); - - // Reset the listener events - listener.events.clear(); - - // Now withdraw the intent - service.withdraw(intent); - - // Allow a small window of time until the event is in the expected state - TestTools.assertAfter(GRACE_MS, () -> - assertEquals("incorrect intent state", IntentState.WITHDRAWN, service.getIntentState(intent.key()))); - - // Make sure that all expected events have been emitted - validateEvents(intent, WITHDRAWN); - - // TODO: discuss what is the fate of intents after they have been withdrawn - // Make sure that the intent is no longer in the system -// assertEquals("incorrect intent count", 0, service.getIntents().size()); -// assertNull("intent should not be found", service.getIntent(intent.id())); -// assertNull("intent state should not be found", service.getIntentState(intent.id())); - } - - @Test - public void failedCompilation() { - // Register a compiler programmed for success - service.registerCompiler(TestIntent.class, new TestCompiler(true)); - - // Submit an intent - final Intent intent = new TestIntent(IID); - service.submit(intent); - - // Allow a small window of time until the intent is in the expected state - TestTools.assertAfter(GRACE_MS, () -> - assertEquals("incorrect intent state", IntentState.FAILED, service.getIntentState(intent.key()))); - - // Make sure that all expected events have been emitted - validateEvents(intent, INSTALL_REQ, FAILED); - } - - /** - * Validates that the test event listener has received the following events - * for the specified intent. Events received for other intents will not be - * considered. - * - * @param intent intent subject - * @param types list of event types for which events are expected - */ - protected void validateEvents(Intent intent, IntentEvent.Type... types) { - Iterator events = listener.events.iterator(); - for (IntentEvent.Type type : types) { - IntentEvent event = events.hasNext() ? events.next() : null; - if (event == null) { - fail("expected event not found: " + type); - } else if (intent.equals(event.subject())) { - assertEquals("incorrect state", type, event.type()); - } - } - - // Remainder of events should not apply to this intent; make sure. - while (events.hasNext()) { - assertFalse("unexpected event for intent", - intent.equals(events.next().subject())); - } - } - - @Test - public void compilerBasics() { - // Make sure there are no compilers - assertEquals("incorrect compiler count", 0, service.getCompilers().size()); - - // Add a compiler and make sure that it appears in the map - IntentCompiler compiler = new TestCompiler(false); - service.registerCompiler(TestIntent.class, compiler); - assertEquals("incorrect compiler", compiler, - service.getCompilers().get(TestIntent.class)); - - // Remove the same and make sure that it no longer appears in the map - service.unregisterCompiler(TestIntent.class); - assertNull("compiler should not be registered", - service.getCompilers().get(TestIntent.class)); - } - - @Test - public void implicitRegistration() { - // Add a compiler and make sure that it appears in the map - IntentCompiler compiler = new TestCompiler(new TestSubclassInstallableIntent(INSTALLABLE_IID)); - service.registerCompiler(TestIntent.class, compiler); - assertEquals("incorrect compiler", compiler, - service.getCompilers().get(TestIntent.class)); - - // Submit an intent which is a subclass of the one we registered - final Intent intent = new TestSubclassIntent(IID); - service.submit(intent); - - // Allow some time for the intent to be compiled and installed - TestTools.assertAfter(GRACE_MS, () -> - assertEquals("incorrect intent state", IntentState.INSTALLED, service.getIntentState(intent.key()))); - - // Make sure that now we have an implicit registration of the compiler - // under the intent subclass - assertEquals("incorrect compiler", compiler, - service.getCompilers().get(TestSubclassIntent.class)); - - // TODO: discuss whether or if implicit registration should require implicit unregistration - // perhaps unregister by compiler or installer itself, rather than by class would be better - } - - - // Fixture to track emitted intent events - protected class TestListener implements IntentListener { - final List events = new ArrayList<>(); - - @Override - public void event(IntentEvent event) { - events.add(event); - } - } - - // Controllable compiler - private class TestCompiler implements IntentCompiler { - private final boolean fail; - private final List result; - - TestCompiler(boolean fail) { - this.fail = fail; - this.result = Collections.emptyList(); - } - - TestCompiler(Intent... result) { - this.fail = false; - this.result = Arrays.asList(result); - } - - @Override - public List compile(TestIntent intent, List installable, - Set resources) { - if (fail) { - throw new IntentException("compile failed by design"); - } - List compiled = new ArrayList<>(result); - return compiled; - } - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentTest.java deleted file mode 100644 index d713b8aa..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - -/** - * Base facilities to test various intent tests. - */ -public abstract class IntentTest extends AbstractIntentTest { - /** - * Produces a set of items from the supplied items. - * - * @param items items to be placed in set - * @param item type - * @return set of items - */ - protected static Set itemSet(T[] items) { - return new HashSet<>(Arrays.asList(items)); - } - - /** - * Creates a new intent, but always a like intent, i.e. all instances will - * be equal, but should not be the same. - * - * @return intent - */ - protected abstract Intent createOne(); - - /** - * Creates another intent, not equals to the one created by - * {@link #createOne()} and with a different hash code. - * - * @return another intent - */ - protected abstract Intent createAnother(); -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java deleted file mode 100644 index 14201472..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java +++ /dev/null @@ -1,496 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableSet; -import org.onlab.util.Bandwidth; -import org.onosproject.core.DefaultGroupId; -import org.onosproject.core.GroupId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.ElementId; -import org.onosproject.net.Link; -import org.onosproject.net.NetTestTools; -import org.onosproject.net.NetworkResource; -import org.onosproject.net.Path; -import org.onosproject.net.flow.FlowId; -import org.onosproject.net.flow.FlowRule; -import org.onosproject.net.flow.FlowRuleExtPayLoad; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.criteria.Criterion; -import org.onosproject.net.flow.criteria.Criterion.Type; -import org.onosproject.net.flow.instructions.Instruction; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.flow.instructions.Instructions.MetadataInstruction; -import org.onosproject.net.resource.ResourceAllocation; -import org.onosproject.net.resource.ResourceRequest; -import org.onosproject.net.resource.ResourceType; -import org.onosproject.net.resource.link.BandwidthResource; -import org.onosproject.net.resource.link.BandwidthResourceRequest; -import org.onosproject.net.resource.link.LambdaResource; -import org.onosproject.net.resource.link.LambdaResourceAllocation; -import org.onosproject.net.resource.link.LambdaResourceRequest; -import org.onosproject.net.resource.link.LinkResourceAllocations; -import org.onosproject.net.resource.link.LinkResourceListener; -import org.onosproject.net.resource.link.LinkResourceRequest; -import org.onosproject.net.resource.link.LinkResourceService; -import org.onosproject.net.resource.link.MplsLabel; -import org.onosproject.net.resource.link.MplsLabelResourceAllocation; -import org.onosproject.net.topology.DefaultTopologyEdge; -import org.onosproject.net.topology.DefaultTopologyVertex; -import org.onosproject.net.topology.LinkWeight; -import org.onosproject.net.topology.PathServiceAdapter; -import org.onosproject.net.topology.TopologyVertex; -import org.onosproject.store.Timestamp; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.atomic.AtomicLong; - -import static org.onosproject.net.NetTestTools.*; - -/** - * Common mocks used by the intent framework tests. - */ -public class IntentTestsMocks { - /** - * Mock traffic selector class used for satisfying API requirements. - */ - public static class MockSelector implements TrafficSelector { - @Override - public Set criteria() { - return new HashSet<>(); - } - - @Override - public Criterion getCriterion(Type type) { - return null; - } - } - - /** - * Mock traffic treatment class used for satisfying API requirements. - */ - public static class MockTreatment implements TrafficTreatment { - @Override - public List deferred() { - return Collections.emptyList(); - } - - @Override - public List immediate() { - return Collections.emptyList(); - } - - @Override - public List allInstructions() { - return Collections.emptyList(); - } - - @Override - public Instructions.TableTypeTransition tableTransition() { - return null; - } - - @Override - public boolean clearedDeferred() { - return false; - } - - @Override - public MetadataInstruction writeMetadata() { - return null; - } - - @Override - public Instructions.MeterInstruction metered() { - return null; - } - } - - /** - * Mock path service for creating paths within the test. - */ - public static class MockPathService extends PathServiceAdapter { - - final String[] pathHops; - final String[] reversePathHops; - - /** - * Constructor that provides a set of hops to mock. - * - * @param pathHops path hops to mock - */ - public MockPathService(String[] pathHops) { - this.pathHops = pathHops; - String[] reversed = pathHops.clone(); - Collections.reverse(Arrays.asList(reversed)); - reversePathHops = reversed; - } - - @Override - public Set getPaths(ElementId src, ElementId dst) { - Set result = new HashSet<>(); - - String[] allHops = new String[pathHops.length]; - - if (src.toString().endsWith(pathHops[0])) { - System.arraycopy(pathHops, 0, allHops, 0, pathHops.length); - } else { - System.arraycopy(reversePathHops, 0, allHops, 0, pathHops.length); - } - - result.add(createPath(allHops)); - return result; - } - - @Override - public Set getPaths(ElementId src, ElementId dst, LinkWeight weight) { - final Set paths = getPaths(src, dst); - - for (Path path : paths) { - final DeviceId srcDevice = path.src().deviceId(); - final DeviceId dstDevice = path.dst().deviceId(); - final TopologyVertex srcVertex = new DefaultTopologyVertex(srcDevice); - final TopologyVertex dstVertex = new DefaultTopologyVertex(dstDevice); - final Link link = link(src.toString(), 1, dst.toString(), 1); - - final double weightValue = weight.weight(new DefaultTopologyEdge(srcVertex, dstVertex, link)); - if (weightValue < 0) { - return new HashSet<>(); - } - } - return paths; - } - } - - public static class MockLinkResourceAllocations implements LinkResourceAllocations { - @Override - public Set getResourceAllocation(Link link) { - return ImmutableSet.of( - new LambdaResourceAllocation(LambdaResource.valueOf(77)), - new MplsLabelResourceAllocation(MplsLabel.valueOf(10))); - } - - @Override - public IntentId intentId() { - return null; - } - - @Override - public Collection links() { - return null; - } - - @Override - public Set resources() { - return null; - } - - @Override - public ResourceType type() { - return null; - } - } - - public static class MockedAllocationFailure extends RuntimeException { } - - public static class MockResourceService implements LinkResourceService { - - double availableBandwidth = -1.0; - int availableLambda = -1; - - /** - * Allocates a resource service that will allow bandwidth allocations - * up to a limit. - * - * @param bandwidth available bandwidth limit - * @return resource manager for bandwidth requests - */ - public static MockResourceService makeBandwidthResourceService(double bandwidth) { - final MockResourceService result = new MockResourceService(); - result.availableBandwidth = bandwidth; - return result; - } - - /** - * Allocates a resource service that will allow lambda allocations. - * - * @param lambda Lambda to return for allocation requests. Currently unused - * @return resource manager for lambda requests - */ - public static MockResourceService makeLambdaResourceService(int lambda) { - final MockResourceService result = new MockResourceService(); - result.availableLambda = lambda; - return result; - } - - public void setAvailableBandwidth(double availableBandwidth) { - this.availableBandwidth = availableBandwidth; - } - - public void setAvailableLambda(int availableLambda) { - this.availableLambda = availableLambda; - } - - - @Override - public LinkResourceAllocations requestResources(LinkResourceRequest req) { - int lambda = -1; - double bandwidth = -1.0; - - for (ResourceRequest resourceRequest : req.resources()) { - if (resourceRequest.type() == ResourceType.BANDWIDTH) { - final BandwidthResourceRequest brr = (BandwidthResourceRequest) resourceRequest; - bandwidth = brr.bandwidth().toDouble(); - } else if (resourceRequest.type() == ResourceType.LAMBDA) { - lambda = 1; - } - } - - if (availableBandwidth < bandwidth) { - throw new MockedAllocationFailure(); - } - if (lambda > 0 && availableLambda == 0) { - throw new MockedAllocationFailure(); - } - - return new IntentTestsMocks.MockLinkResourceAllocations(); - } - - @Override - public void releaseResources(LinkResourceAllocations allocations) { - // Mock - } - - @Override - public LinkResourceAllocations updateResources(LinkResourceRequest req, - LinkResourceAllocations oldAllocations) { - return null; - } - - @Override - public Iterable getAllocations() { - return ImmutableSet.of( - new IntentTestsMocks.MockLinkResourceAllocations()); - } - - @Override - public Iterable getAllocations(Link link) { - return ImmutableSet.of( - new IntentTestsMocks.MockLinkResourceAllocations()); - } - - @Override - public LinkResourceAllocations getAllocations(IntentId intentId) { - return new IntentTestsMocks.MockLinkResourceAllocations(); - } - - @Override - public Iterable getAvailableResources(Link link) { - final List result = new LinkedList<>(); - if (availableBandwidth > 0.0) { - result.add(new BandwidthResourceRequest( - new BandwidthResource(Bandwidth.bps(availableBandwidth)))); - } - if (availableLambda > 0) { - result.add(new LambdaResourceRequest()); - } - return result; - } - - @Override - public Iterable getAvailableResources(Link link, LinkResourceAllocations allocations) { - return null; - } - - @Override - public void addListener(LinkResourceListener listener) { - - } - - @Override - public void removeListener(LinkResourceListener listener) { - - } - } - - private static final IntentTestsMocks.MockSelector SELECTOR = - new IntentTestsMocks.MockSelector(); - private static final IntentTestsMocks.MockTreatment TREATMENT = - new IntentTestsMocks.MockTreatment(); - - public static class MockFlowRule implements FlowRule { - static int nextId = 0; - - int priority; - int tableId; - long timestamp; - int id; - FlowRuleExtPayLoad payLoad; - - public MockFlowRule(int priority) { - this.priority = priority; - this.tableId = 0; - this.timestamp = System.currentTimeMillis(); - this.id = nextId++; - this.payLoad = null; - } - - public MockFlowRule(int priority, FlowRuleExtPayLoad payLoad) { - this.priority = priority; - this.timestamp = System.currentTimeMillis(); - this.id = nextId++; - this.payLoad = payLoad; - } - - @Override - public FlowId id() { - return FlowId.valueOf(id); - } - - @Override - public short appId() { - return 0; - } - - @Override - public GroupId groupId() { - return new DefaultGroupId(0); - } - - @Override - public int priority() { - return priority; - } - - @Override - public DeviceId deviceId() { - return did("1"); - } - - @Override - public TrafficSelector selector() { - return SELECTOR; - } - - @Override - public TrafficTreatment treatment() { - return TREATMENT; - } - - @Override - public int timeout() { - return 0; - } - - @Override - public boolean isPermanent() { - return false; - } - - @Override - public int hashCode() { - return priority; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final MockFlowRule other = (MockFlowRule) obj; - return Objects.equals(this.timestamp, other.timestamp) && - this.id == other.id; - } - - @Override - public boolean exactMatch(FlowRule rule) { - return this.equals(rule); - } - - @Override - public int tableId() { - return tableId; - } - - @Override - public FlowRuleExtPayLoad payLoad() { - return payLoad; - } - } - - public static class MockIntent extends Intent { - private static AtomicLong counter = new AtomicLong(0); - - private final Long number; - - public MockIntent(Long number) { - super(NetTestTools.APP_ID, null, Collections.emptyList(), - Intent.DEFAULT_INTENT_PRIORITY); - this.number = number; - } - - public MockIntent(Long number, Collection resources) { - super(NetTestTools.APP_ID, null, resources, Intent.DEFAULT_INTENT_PRIORITY); - this.number = number; - } - - public Long number() { - return number; - } - - public static Long nextId() { - return counter.getAndIncrement(); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("id", id()) - .add("appId", appId()) - .toString(); - } - } - - public static class MockTimestamp implements Timestamp { - final int value; - - public MockTimestamp(int value) { - this.value = value; - } - - @Override - public int compareTo(Timestamp o) { - if (!(o instanceof MockTimestamp)) { - return -1; - } - MockTimestamp that = (MockTimestamp) o; - return this.value - that.value; - } - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/KeyTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/KeyTest.java deleted file mode 100644 index dfc73442..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/KeyTest.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.Test; -import org.onosproject.net.NetTestTools; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for the intent key class. - */ -public class KeyTest { - - private static final String KEY_1 = "key1"; - private static final String KEY_2 = "key2"; - private static final String KEY_3 = "key3"; - - private static final long LONG_KEY_1 = 0x1111; - private static final long LONG_KEY_2 = 0x2222; - private static final long LONG_KEY_3 = 0x3333; - - /** - * Tests that keys are properly immutable. - */ - @Test - public void keysAreImmutable() { - assertThatClassIsImmutableBaseClass(Key.class); - - // Will be a long based key, class is private so cannot be - // accessed directly - Key longKey = Key.of(0xabcdefL, NetTestTools.APP_ID); - assertThatClassIsImmutable(longKey.getClass()); - - // Will be a String based key, class is private so cannot be - // accessed directly. - Key stringKey = Key.of("some key", NetTestTools.APP_ID); - assertThatClassIsImmutable(stringKey.getClass()); - } - - /** - * Tests string key construction. - */ - @Test - public void stringKeyConstruction() { - Key stringKey1 = Key.of(KEY_3, NetTestTools.APP_ID); - assertThat(stringKey1, notNullValue()); - Key stringKey2 = Key.of(KEY_3, NetTestTools.APP_ID); - assertThat(stringKey2, notNullValue()); - - assertThat(stringKey1.hash(), is(stringKey2.hash())); - } - - /** - * Tests long key construction. - */ - @Test - public void longKeyConstruction() { - Key longKey1 = Key.of(LONG_KEY_3, NetTestTools.APP_ID); - assertThat(longKey1, notNullValue()); - Key longKey2 = Key.of(LONG_KEY_3, NetTestTools.APP_ID); - assertThat(longKey2, notNullValue()); - - assertThat(longKey1.hash(), is(longKey2.hash())); - } - - /** - * Tests equals for string based keys. - */ - @Test - public void stringKey() { - Key stringKey1 = Key.of(KEY_1, NetTestTools.APP_ID); - Key copyOfStringKey1 = Key.of(KEY_1, NetTestTools.APP_ID); - Key stringKey2 = Key.of(KEY_2, NetTestTools.APP_ID); - Key copyOfStringKey2 = Key.of(KEY_2, NetTestTools.APP_ID); - Key stringKey3 = Key.of(KEY_3, NetTestTools.APP_ID); - - new EqualsTester() - .addEqualityGroup(stringKey1, copyOfStringKey1) - .addEqualityGroup(stringKey2, copyOfStringKey2) - .addEqualityGroup(stringKey3) - .testEquals(); - } - - /** - * Tests equals for long based keys. - */ - @Test - public void longKey() { - Key longKey1 = Key.of(LONG_KEY_1, NetTestTools.APP_ID); - Key copyOfLongKey1 = Key.of(LONG_KEY_1, NetTestTools.APP_ID); - Key longKey2 = Key.of(LONG_KEY_2, NetTestTools.APP_ID); - Key copyOfLongKey2 = Key.of(LONG_KEY_2, NetTestTools.APP_ID); - Key longKey3 = Key.of(LONG_KEY_3, NetTestTools.APP_ID); - - new EqualsTester() - .addEqualityGroup(longKey1, copyOfLongKey1) - .addEqualityGroup(longKey2, copyOfLongKey2) - .addEqualityGroup(longKey3) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java deleted file mode 100644 index dd371c15..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import org.junit.Test; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.IndexedLambda; -import org.onosproject.net.Link; -import org.onosproject.net.NetTestTools; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.intent.constraint.LambdaConstraint; - -import com.google.common.collect.ImmutableSet; -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; -import static org.hamcrest.Matchers.startsWith; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.NetTestTools.APP_ID; -import static org.onosproject.net.NetTestTools.link; - -/** - * Unit tests for the LinkCollectionIntent class. - */ -public class LinkCollectionIntentTest extends IntentTest { - - final ConnectPoint ingress = NetTestTools.connectPoint("ingress", 2); - final ConnectPoint egress = NetTestTools.connectPoint("egress", 3); - final TrafficSelector selector = new IntentTestsMocks.MockSelector(); - final IntentTestsMocks.MockTreatment treatment = new IntentTestsMocks.MockTreatment(); - - /** - * Checks that the LinkCollectionIntent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(LinkCollectionIntent.class); - } - - /** - * Tests equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - - final HashSet links1 = new HashSet<>(); - links1.add(link("src", 1, "dst", 2)); - final LinkCollectionIntent collectionIntent1 = - LinkCollectionIntent.builder() - .appId(APP_ID) - .selector(selector) - .treatment(treatment) - .links(links1) - .ingressPoints(ImmutableSet.of(ingress)) - .egressPoints(ImmutableSet.of(egress)) - .build(); - - final HashSet links2 = new HashSet<>(); - links2.add(link("src", 1, "dst", 3)); - final LinkCollectionIntent collectionIntent2 = - LinkCollectionIntent.builder() - .appId(APP_ID) - .selector(selector) - .treatment(treatment) - .links(links2) - .ingressPoints(ImmutableSet.of(ingress)) - .egressPoints(ImmutableSet.of(egress)) - .build(); - - new EqualsTester() - .addEqualityGroup(collectionIntent1) - .addEqualityGroup(collectionIntent2) - .testEquals(); - } - - /** - * Tests constructor without constraints. - */ - @Test - public void testConstructor() { - final HashSet links1 = new HashSet<>(); - links1.add(link("src", 1, "dst", 2)); - final LinkCollectionIntent collectionIntent = - LinkCollectionIntent.builder() - .appId(APP_ID) - .selector(selector) - .treatment(treatment) - .links(links1) - .ingressPoints(ImmutableSet.of(ingress)) - .egressPoints(ImmutableSet.of(egress)) - .build(); - - final Set createdLinks = collectionIntent.links(); - assertThat(createdLinks, hasSize(1)); - assertThat(collectionIntent.isInstallable(), is(false)); - assertThat(collectionIntent.treatment(), is(treatment)); - assertThat(collectionIntent.selector(), is(selector)); - assertThat(collectionIntent.ingressPoints(), is(ImmutableSet.of(ingress))); - assertThat(collectionIntent.egressPoints(), is(ImmutableSet.of(egress))); - assertThat(collectionIntent.resources(), hasSize(1)); - final List createdConstraints = collectionIntent.constraints(); - assertThat(createdConstraints, hasSize(0)); - } - - /** - * Tests constructor with constraints. - */ - @Test - public void testConstructorWithConstraints() { - final HashSet links1 = new HashSet<>(); - final LinkedList constraints = new LinkedList<>(); - - links1.add(link("src", 1, "dst", 2)); - constraints.add(new LambdaConstraint(new IndexedLambda(23))); - final LinkCollectionIntent collectionIntent = - LinkCollectionIntent.builder() - .appId(APP_ID) - .selector(selector) - .treatment(treatment) - .links(links1) - .ingressPoints(ImmutableSet.of(ingress)) - .egressPoints(ImmutableSet.of(egress)) - .constraints(constraints) - .priority(8888) - .build(); - - final Set createdLinks = collectionIntent.links(); - assertThat(createdLinks, hasSize(1)); - assertThat(collectionIntent.isInstallable(), is(false)); - assertThat(collectionIntent.treatment(), is(treatment)); - assertThat(collectionIntent.selector(), is(selector)); - assertThat(collectionIntent.ingressPoints(), is(ImmutableSet.of(ingress))); - assertThat(collectionIntent.egressPoints(), is(ImmutableSet.of(egress))); - - final List createdConstraints = collectionIntent.constraints(); - assertThat(createdConstraints, hasSize(1)); - assertThat(createdConstraints.get(0).toString(), startsWith("LambdaConstraint")); - } - - /** - * Tests constructor with constraints. - */ - @Test - public void testSerializerConstructor() { - - final LinkCollectionIntent collectionIntent = - new LinkCollectionIntent(); - - final Set createdLinks = collectionIntent.links(); - assertThat(createdLinks, nullValue()); - assertThat(collectionIntent.isInstallable(), is(false)); - assertThat(collectionIntent.treatment(), nullValue()); - assertThat(collectionIntent.selector(), nullValue()); - assertThat(collectionIntent.ingressPoints(), nullValue()); - assertThat(collectionIntent.egressPoints(), nullValue()); - - final List createdConstraints = collectionIntent.constraints(); - assertThat(createdConstraints, hasSize(0)); - } - - @Override - protected Intent createOne() { - HashSet links1 = new HashSet<>(); - links1.add(link("src", 1, "dst", 2)); - return LinkCollectionIntent.builder() - .appId(APP_ID) - .selector(selector) - .treatment(treatment) - .links(links1) - .ingressPoints(ImmutableSet.of(ingress)) - .egressPoints(ImmutableSet.of(egress)) - .build(); - } - - @Override - protected Intent createAnother() { - HashSet links2 = new HashSet<>(); - links2.add(link("src", 1, "dst", 3)); - return LinkCollectionIntent.builder() - .appId(APP_ID) - .selector(selector) - .treatment(treatment) - .links(links2) - .ingressPoints(ImmutableSet.of(ingress)) - .egressPoints(ImmutableSet.of(egress)) - .build(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MockIdGenerator.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MockIdGenerator.java deleted file mode 100644 index 5e84cd8c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MockIdGenerator.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -import org.onosproject.core.IdGenerator; - -import java.util.concurrent.atomic.AtomicLong; - -/** - * Mock id generator for testing. - */ -public class MockIdGenerator implements IdGenerator { - private AtomicLong nextId = new AtomicLong(0); - - @Override - public long getNewId() { - return nextId.getAndIncrement(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MplsIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MplsIntentTest.java deleted file mode 100644 index 7fbdf232..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MplsIntentTest.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.Optional; - -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.MplsLabel; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.NetTestTools.APP_ID; -import static org.onosproject.net.NetTestTools.connectPoint; - -/** - * Unit tests for the MplsIntent class. - */ - -public class MplsIntentTest extends AbstractIntentTest { - static final int PRIORITY = 22; - - MplsIntent intent1; - MplsIntent intent2; - - Optional label1; - Optional label2; - - TrafficSelector selector; - TrafficTreatment treatment; - - @Before - public void mplsIntentTestSetUp() throws Exception { - - label1 = Optional.of(MplsLabel.mplsLabel(1)); - label2 = Optional.of(MplsLabel.mplsLabel(2)); - - selector = new IntentTestsMocks.MockSelector(); - treatment = new IntentTestsMocks.MockTreatment(); - - intent1 = MplsIntent.builder() - .appId(APP_ID) - .ingressLabel(label1) - .egressLabel(label2) - .ingressPoint(connectPoint("in", 1)) - .egressPoint(connectPoint("out", 1)) - .selector(selector) - .treatment(treatment) - .priority(PRIORITY) - .build(); - - intent2 = MplsIntent.builder() - .appId(APP_ID) - .ingressLabel(label1) - .egressLabel(label2) - .ingressPoint(connectPoint("in", 2)) - .egressPoint(connectPoint("out", 2)) - .selector(selector) - .treatment(treatment) - .priority(PRIORITY) - .build(); - } - - /** - * Checks that the MplsIntent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(MplsIntent.class); - } - - /** - * Checks the operation of equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(intent1) - .addEqualityGroup(intent2) - .testEquals(); - } - - /** - * Checks that the MplsIntent objects are created correctly. - */ - @Test - public void testContents() { - assertThat(intent1.appId(), equalTo(APP_ID)); - assertThat(intent1.ingressLabel(), equalTo(label1)); - assertThat(intent1.egressLabel(), equalTo(label2)); - assertThat(intent1.ingressPoint(), equalTo(connectPoint("in", 1))); - assertThat(intent1.egressPoint(), equalTo(connectPoint("out", 1))); - assertThat(intent1.selector(), equalTo(intent2.selector())); - assertThat(intent1.treatment(), equalTo(intent2.treatment())); - assertThat(intent1.priority(), is(PRIORITY)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MplsPathIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MplsPathIntentTest.java deleted file mode 100644 index 64528cb9..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MplsPathIntentTest.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.Optional; - -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.MplsLabel; -import org.onosproject.net.Path; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.NetTestTools.APP_ID; -import static org.onosproject.net.NetTestTools.createPath; - -/** - * Unit tests for the MplsPathIntent class. - */ -public class MplsPathIntentTest extends AbstractIntentTest { - - static final int PRIORITY = 777; - - MplsPathIntent intent1; - MplsPathIntent intent2; - Path defaultPath; - Optional label1; - Optional label2; - TrafficSelector selector; - TrafficTreatment treatment; - static final Key KEY1 = Key.of(5L, APP_ID); - - @Before - public void mplsPathIntentTestSetUp() { - defaultPath = createPath("a", "b", "c"); - selector = new IntentTestsMocks.MockSelector(); - treatment = new IntentTestsMocks.MockTreatment(); - - label1 = Optional.of(MplsLabel.mplsLabel(1)); - label2 = Optional.of(MplsLabel.mplsLabel(2)); - intent1 = MplsPathIntent.builder() - .appId(APP_ID) - .key(KEY1) - .ingressLabel(label1) - .egressLabel(label2) - .path(defaultPath) - .priority(PRIORITY) - .build(); - - intent2 = MplsPathIntent.builder() - .appId(APP_ID) - .ingressLabel(label1) - .egressLabel(label2) - .path(defaultPath) - .priority(PRIORITY) - .build(); - } - - - /** - * Checks that the MplsPathIntent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(MplsPathIntent.class); - } - - /** - * Checks the operation of equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(intent1) - .addEqualityGroup(intent2) - .testEquals(); - } - - /** - * Checks that the MPLS path intent objects are created correctly. - */ - @Test - public void testContents() { - assertThat(intent1.appId(), equalTo(APP_ID)); - assertThat(intent1.ingressLabel(), equalTo(label1)); - assertThat(intent1.egressLabel(), equalTo(label2)); - assertThat(intent1.selector(), equalTo(intent2.selector())); - assertThat(intent1.treatment(), equalTo(intent2.treatment())); - assertThat(intent1.priority(), is(PRIORITY)); - assertThat(intent1.path(), is(defaultPath)); - assertThat(intent1.key(), equalTo(KEY1)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MultiPointToSinglePointIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MultiPointToSinglePointIntentTest.java deleted file mode 100644 index 00be3101..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/MultiPointToSinglePointIntentTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Suite of tests of the multi-to-single point intent descriptor. - */ -public class MultiPointToSinglePointIntentTest extends ConnectivityIntentTest { - - /** - * Checks that the MultiPointToSinglePointIntent class is immutable. - */ - @Test - public void checkImmutability() { - assertThatClassIsImmutable(MultiPointToSinglePointIntent.class); - } - - @Test - public void basics() { - MultiPointToSinglePointIntent intent = createOne(); - assertEquals("incorrect id", APPID, intent.appId()); - assertEquals("incorrect match", MATCH, intent.selector()); - assertEquals("incorrect ingress", PS1, intent.ingressPoints()); - assertEquals("incorrect egress", P2, intent.egressPoint()); - } - - @Override - protected MultiPointToSinglePointIntent createOne() { - return MultiPointToSinglePointIntent.builder() - .appId(APPID) - .selector(MATCH) - .treatment(NOP) - .ingressPoints(PS1) - .egressPoint(P2) - .build(); - } - - @Override - protected MultiPointToSinglePointIntent createAnother() { - return MultiPointToSinglePointIntent.builder() - .appId(APPID) - .selector(MATCH) - .treatment(NOP) - .ingressPoints(PS2) - .egressPoint(P1) - .build(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/OpticalConnectivityIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/OpticalConnectivityIntentTest.java deleted file mode 100644 index 7df220c3..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/OpticalConnectivityIntentTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.Test; - -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for the OpticalConnectivityIntent class. - */ -public class OpticalConnectivityIntentTest { - - /** - * Checks that the HostToHostIntent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(OpticalConnectivityIntent.class); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/OpticalPathIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/OpticalPathIntentTest.java deleted file mode 100644 index 36e018a9..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/OpticalPathIntentTest.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.hamcrest.Matchers; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.net.OchSignalType; -import org.onosproject.net.Path; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.NetTestTools.APP_ID; -import static org.onosproject.net.NetTestTools.connectPoint; -import static org.onosproject.net.NetTestTools.createLambda; -import static org.onosproject.net.NetTestTools.createPath; - -public class OpticalPathIntentTest extends AbstractIntentTest { - - static final int PRIORITY = 777; - - OpticalPathIntent intent1; - OpticalPathIntent intent2; - Path defaultPath; - - @Before - public void opticalPathIntentTestSetUp() { - defaultPath = createPath("a", "b", "c"); - intent1 = OpticalPathIntent.builder() - .appId(APP_ID) - .src(connectPoint("one", 1)) - .dst(connectPoint("two", 2)) - .path(defaultPath) - .lambda(createLambda()) - .signalType(OchSignalType.FIXED_GRID) - .priority(PRIORITY) - .build(); - - intent2 = OpticalPathIntent.builder() - .appId(APP_ID) - .src(connectPoint("two", 1)) - .dst(connectPoint("one", 2)) - .path(defaultPath) - .lambda(createLambda()) - .signalType(OchSignalType.FIXED_GRID) - .priority(PRIORITY) - .build(); - } - - /** - * Checks that the OpticalPathIntent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(OpticalPathIntent.class); - } - - /** - * Checks the operation of equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(intent1) - .addEqualityGroup(intent2) - .testEquals(); - } - - /** - * Checks that the optical path intent objects are created correctly. - */ - @Test - public void testContents() { - assertThat(intent1.appId(), equalTo(APP_ID)); - assertThat(intent1.src(), Matchers.equalTo(connectPoint("one", 1))); - assertThat(intent1.dst(), Matchers.equalTo(connectPoint("two", 2))); - assertThat(intent1.priority(), is(PRIORITY)); - assertThat(intent1.path(), is(defaultPath)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PartitionServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PartitionServiceAdapter.java deleted file mode 100644 index 2a38cbb3..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PartitionServiceAdapter.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.onosproject.cluster.NodeId; - -/** - * Testing adapter for the partition service. - */ -public class PartitionServiceAdapter implements PartitionService { - @Override - public boolean isMine(Key intentKey) { - return true; - } - - @Override - public NodeId getLeader(Key intentKey) { - return null; - } - - @Override - public void addListener(PartitionEventListener listener) { - - } - - @Override - public void removeListener(PartitionEventListener listener) { - - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PathIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PathIntentTest.java deleted file mode 100644 index 9e675347..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PathIntentTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.Arrays; -import java.util.Collections; - -import org.junit.Test; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DefaultPath; -import org.onosproject.net.DeviceId; -import org.onosproject.net.NetTestTools; -import org.onosproject.net.Path; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.Link.Type.DIRECT; -import static org.onosproject.net.PortNumber.portNumber; - -public class PathIntentTest extends ConnectivityIntentTest { - // 111:11 --> 222:22 - private static final Path PATH1 = NetTestTools.createPath("111", "222"); - - // 111:11 --> 333:33 - private static final Path PATH2 = NetTestTools.createPath("222", "333"); - - private final ProviderId provider1 = new ProviderId("of", "1"); - private final DeviceId device1 = deviceId("1"); - private final DeviceId device2 = deviceId("2"); - private final PortNumber port1 = portNumber(1); - private final PortNumber port2 = portNumber(2); - private final PortNumber port3 = portNumber(3); - private final PortNumber port4 = portNumber(4); - private final ConnectPoint cp1 = new ConnectPoint(device1, port1); - private final ConnectPoint cp2 = new ConnectPoint(device1, port2); - private final ConnectPoint cp3 = new ConnectPoint(device2, port3); - private final ConnectPoint cp4 = new ConnectPoint(device2, port4); - private final DefaultLink link1 = new DefaultLink(provider1, cp1, cp2, DIRECT); - private final DefaultLink link2 = new DefaultLink(provider1, cp1, cp2, DIRECT); - private final double cost = 1; - - @Test - public void basics() { - PathIntent intent = createOne(); - assertEquals("incorrect id", APPID, intent.appId()); - assertEquals("incorrect match", MATCH, intent.selector()); - assertEquals("incorrect action", NOP, intent.treatment()); - assertEquals("incorrect path", PATH1, intent.path()); - assertEquals("incorrect key", KEY, intent.key()); - } - - @Override - protected PathIntent createOne() { - return PathIntent.builder() - .appId(APPID) - .key(KEY) - .selector(MATCH) - .treatment(NOP) - .path(PATH1) - .build(); - } - - @Override - protected PathIntent createAnother() { - return PathIntent.builder() - .appId(APPID) - .selector(MATCH) - .treatment(NOP) - .path(PATH2) - .build(); - } - - /** - * Tests the constructor raises IllegalArgumentException when the same device is specified in - * source and destination of a link. - */ - @Test(expected = IllegalArgumentException.class) - public void testRaiseExceptionWhenSameDevices() { - PathIntent.builder() - .appId(APPID) - .selector(MATCH) - .treatment(NOP) - .path(new DefaultPath(provider1, Collections.singletonList(link1), cost)) - .build(); - } - - /** - * Tests the constructor raises IllegalArgumentException when the different elements are specified - * in source element of the first link and destination element of the second link. - */ - @Test(expected = IllegalArgumentException.class) - public void testRaiseExceptionWhenDifferentDevice() { - PathIntent.builder() - .appId(APPID) - .selector(MATCH) - .treatment(NOP) - .path(new DefaultPath(provider1, Arrays.asList(link1, link2), cost)) - .build(); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PointToPointIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PointToPointIntentTest.java deleted file mode 100644 index 46772f9f..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/PointToPointIntentTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass; - -/** - * Suite of tests of the point-to-point intent descriptor. - */ -public class PointToPointIntentTest extends ConnectivityIntentTest { - - /** - * Checks that the MultiPointToSinglePointIntent class is immutable. - */ - @Test - public void checkImmutability() { - assertThatClassIsImmutableBaseClass(PointToPointIntent.class); - } - - @Test - public void basics() { - PointToPointIntent intent = createOne(); - assertEquals("incorrect id", APPID, intent.appId()); - assertEquals("incorrect match", MATCH, intent.selector()); - assertEquals("incorrect ingress", P1, intent.ingressPoint()); - assertEquals("incorrect egress", P2, intent.egressPoint()); - } - - @Override - protected PointToPointIntent createOne() { - return PointToPointIntent.builder() - .appId(APPID) - .selector(MATCH) - .treatment(NOP) - .ingressPoint(P1) - .egressPoint(P2) - .build(); - } - - @Override - protected PointToPointIntent createAnother() { - return PointToPointIntent.builder() - .appId(APPID) - .selector(MATCH) - .treatment(NOP) - .ingressPoint(P2) - .egressPoint(P1) - .build(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/SinglePointToMultiPointIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/SinglePointToMultiPointIntentTest.java deleted file mode 100644 index 18c6d7bc..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/SinglePointToMultiPointIntentTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Suite of tests of the single-to-multi point intent descriptor. - */ -public class SinglePointToMultiPointIntentTest extends ConnectivityIntentTest { - - /** - * Checks that the SinglePointToMultiPointIntent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SinglePointToMultiPointIntent.class); - } - - @Test - public void basics() { - SinglePointToMultiPointIntent intent = createOne(); - assertEquals("incorrect id", APPID, intent.appId()); - assertEquals("incorrect match", MATCH, intent.selector()); - assertEquals("incorrect ingress", P1, intent.ingressPoint()); - assertEquals("incorrect egress", PS2, intent.egressPoints()); - } - - @Override - protected SinglePointToMultiPointIntent createOne() { - return SinglePointToMultiPointIntent.builder() - .appId(APPID) - .selector(MATCH) - .treatment(NOP) - .ingressPoint(P1) - .egressPoints(PS2) - .build(); - } - - @Override - protected SinglePointToMultiPointIntent createAnother() { - return SinglePointToMultiPointIntent.builder() - .appId(APPID) - .selector(MATCH) - .treatment(NOP) - .ingressPoint(P2) - .egressPoints(PS1) - .build(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestInstallableIntent.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestInstallableIntent.java deleted file mode 100644 index d949ee16..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestInstallableIntent.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.onosproject.TestApplicationId; - -import java.util.Collections; - -/** - * An installable intent used in the unit test. - */ -public class TestInstallableIntent extends Intent { - - private final int value; - - /** - * Constructs an instance with the specified intent ID. - * - * @param value intent ID - */ - public TestInstallableIntent(int value) { // FIXME - super(new TestApplicationId("foo"), null, Collections.emptyList(), - Intent.DEFAULT_INTENT_PRIORITY); - this.value = value; - } - - /** - * Constructor for serializer. - */ - protected TestInstallableIntent() { - super(); - value = -1; - } - - @Override - public boolean isInstallable() { - return true; - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestIntent.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestIntent.java deleted file mode 100644 index 857fc8b5..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestIntent.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.onosproject.TestApplicationId; - -import java.util.Collections; - -/** - * An intent used in the unit test. - */ -public class TestIntent extends Intent { - - private final int value; - - /** - * Constructs an instance with the specified intent ID. - * - * @param value intent ID - */ - public TestIntent(int value) { // FIXME - super(new TestApplicationId("foo"), null, Collections.emptyList(), - Intent.DEFAULT_INTENT_PRIORITY); - this.value = value; - } - - /** - * Constructor for serializer. - */ - protected TestIntent() { - super(); - value = -1; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestSubclassInstallableIntent.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestSubclassInstallableIntent.java deleted file mode 100644 index 82c14843..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestSubclassInstallableIntent.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -/** - * An intent used in the unit test. - */ -public class TestSubclassInstallableIntent extends TestInstallableIntent { - /** - * Constructs an instance with the specified intent ID. - * - * @param id intent ID - */ - public TestSubclassInstallableIntent(int id) { //FIXME - super(id); - } - - /** - * Constructor for serializer. - */ - protected TestSubclassInstallableIntent() { - super(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestSubclassIntent.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestSubclassIntent.java deleted file mode 100644 index 44c81189..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestSubclassIntent.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -/** - * An intent used in the unit test. - */ -public class TestSubclassIntent extends TestIntent { - /** - * Constructs an instance with the specified intent ID. - * - * @param id intent ID - */ - public TestSubclassIntent(int id) { //FIXME - super(id); - } - - /** - * Constructor for serializer. - */ - protected TestSubclassIntent() { - super(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestTools.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestTools.java deleted file mode 100644 index 80ae180d..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestTools.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -import static org.junit.Assert.fail; - -/** - * Set of test tools. - */ -public final class TestTools { - - // Disallow construction - private TestTools() { - } - - /** - * Utility method to pause the current thread for the specified number of - * milliseconds. - * - * @param ms number of milliseconds to pause - */ - public static void delay(int ms) { - try { - Thread.sleep(ms); - } catch (InterruptedException e) { - fail("unexpected interrupt"); - } - } - - /** - * Periodically runs the given runnable, which should contain a series of - * test assertions until all the assertions succeed, in which case it will - * return, or until the the time expires, in which case it will throw the - * first failed assertion error. - * - * @param start start time, in millis since start of epoch from which the - * duration will be measured - * @param delay initial delay (in milliseconds) before the first assertion - * attempt - * @param step delay (in milliseconds) between successive assertion - * attempts - * @param duration number of milliseconds beyond the given start time, - * after which the failed assertions will be propagated and allowed - * to fail the test - * @param assertions runnable housing the test assertions - */ - public static void assertAfter(long start, int delay, int step, - int duration, Runnable assertions) { - delay(delay); - while (true) { - try { - assertions.run(); - break; - } catch (AssertionError e) { - if (System.currentTimeMillis() - start > duration) { - throw e; - } - } - delay(step); - } - } - - /** - * Periodically runs the given runnable, which should contain a series of - * test assertions until all the assertions succeed, in which case it will - * return, or until the the time expires, in which case it will throw the - * first failed assertion error. - *

- * The start of the period is the current time. - * - * @param delay initial delay (in milliseconds) before the first assertion - * attempt - * @param step delay (in milliseconds) between successive assertion - * attempts - * @param duration number of milliseconds beyond the current time time, - * after which the failed assertions will be propagated and allowed - * to fail the test - * @param assertions runnable housing the test assertions - */ - public static void assertAfter(int delay, int step, int duration, - Runnable assertions) { - assertAfter(System.currentTimeMillis(), delay, step, duration, - assertions); - } - - /** - * Periodically runs the given runnable, which should contain a series of - * test assertions until all the assertions succeed, in which case it will - * return, or until the the time expires, in which case it will throw the - * first failed assertion error. - *

- * The start of the period is the current time and the first assertion - * attempt is delayed by the value of {@code step} parameter. - * - * @param step delay (in milliseconds) between successive assertion - * attempts - * @param duration number of milliseconds beyond the current time time, - * after which the failed assertions will be propagated and allowed - * to fail the test - * @param assertions runnable housing the test assertions - */ - public static void assertAfter(int step, int duration, - Runnable assertions) { - assertAfter(step, step, duration, assertions); - } - - /** - * Periodically runs the given runnable, which should contain a series of - * test assertions until all the assertions succeed, in which case it will - * return, or until the the time expires, in which case it will throw the - * first failed assertion error. - *

- * The start of the period is the current time and each successive - * assertion attempt is delayed by at least 10 milliseconds unless the - * {@code duration} is less than that, in which case the one and only - * assertion is made after that delay. - * - * @param duration number of milliseconds beyond the current time, - * after which the failed assertions will be propagated and allowed - * to fail the test - * @param assertions runnable housing the test assertions - */ - public static void assertAfter(int duration, Runnable assertions) { - int step = Math.min(duration, Math.max(10, duration / 10)); - assertAfter(step, duration, assertions); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestableIntentService.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestableIntentService.java deleted file mode 100644 index 792c0ff8..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TestableIntentService.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent; - -import java.util.List; - -/** - * Abstraction of an extensible intent service enabled for unit tests. - */ -public interface TestableIntentService extends IntentService, IntentExtensionService { - - List getExceptions(); - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TwoWayP2PIntentTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TwoWayP2PIntentTest.java deleted file mode 100644 index 0986216a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/TwoWayP2PIntentTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.intent; - -import org.hamcrest.Matchers; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.NetTestTools.APP_ID; -import static org.onosproject.net.NetTestTools.connectPoint; -/** - * Unit tests for the TwoWayP2PIntent class. - */ -public class TwoWayP2PIntentTest extends AbstractIntentTest { - - TrafficSelector selector; - TrafficTreatment treatment; - - TwoWayP2PIntent intent1; - TwoWayP2PIntent intent2; - - static final int PRIORITY = 12; - - @Before - public void twoWatP2PIntentTestSetUp() { - selector = new IntentTestsMocks.MockSelector(); - treatment = new IntentTestsMocks.MockTreatment(); - - intent1 = TwoWayP2PIntent.builder() - .appId(APP_ID) - .priority(PRIORITY) - .selector(selector) - .treatment(treatment) - .one(connectPoint("one", 1)) - .two(connectPoint("two", 2)) - .build(); - - intent2 = TwoWayP2PIntent.builder() - .appId(APP_ID) - .priority(PRIORITY) - .selector(selector) - .treatment(treatment) - .one(connectPoint("two", 2)) - .two(connectPoint("three", 2)) - .build(); - } - - /** - * Checks that the TwoWayP2PIntent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(TwoWayP2PIntent.class); - } - - /** - * Checks the operation of equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(intent1) - .addEqualityGroup(intent2) - .testEquals(); - } - - /** - * Checks that the optical path ntent objects are created correctly. - */ - @Test - public void testContents() { - assertThat(intent1.appId(), equalTo(APP_ID)); - assertThat(intent1.one(), Matchers.equalTo(connectPoint("one", 1))); - assertThat(intent1.two(), Matchers.equalTo(connectPoint("two", 2))); - assertThat(intent1.priority(), is(PRIORITY)); - assertThat(intent1.selector(), is(selector)); - assertThat(intent1.treatment(), is(treatment)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/AnnotationConstraintTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/AnnotationConstraintTest.java deleted file mode 100644 index b87dc12b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/AnnotationConstraintTest.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.testing.EqualsTester; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.net.resource.link.LinkResourceService; - -import static org.easymock.EasyMock.createMock; -import static org.hamcrest.Matchers.closeTo; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.lessThan; -import static org.junit.Assert.assertThat; -import static org.onosproject.net.DefaultLinkTest.cp; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.Link.Type.DIRECT; -import static org.onosproject.net.PortNumber.portNumber; - -/** - * Test for link annotated value threshold. - */ -public class AnnotationConstraintTest { - - private static final ProviderId PID = new ProviderId("of", "foo"); - private static final DeviceId DID1 = deviceId("of:1"); - private static final DeviceId DID2 = deviceId("of:2"); - private static final PortNumber PID1 = portNumber(1); - private static final PortNumber PID2 = portNumber(2); - private static final String KEY = "distance"; - private static final double VALUE = 100; - - private AnnotationConstraint sut; - private Link link; - private LinkResourceService linkResourceService; - - @Before - public void setUp() { - linkResourceService = createMock(LinkResourceService.class); - - DefaultAnnotations annotations = DefaultAnnotations.builder().set(KEY, String.valueOf(VALUE)).build(); - - link = new DefaultLink(PID, cp(DID1, PID1), cp(DID2, PID2), DIRECT, annotations); - } - - /** - * Tests the specified annotated value is less than the threshold. - */ - @Test - public void testLessThanThreshold() { - double value = 120; - sut = new AnnotationConstraint(KEY, value); - - assertThat(sut.isValid(link, linkResourceService), is(true)); - assertThat(sut.cost(link, linkResourceService), is(closeTo(VALUE, 1.0e-6))); - } - - /** - * Tests the specified annotated value is more than the threshold. - */ - @Test - public void testMoreThanThreshold() { - double value = 80; - sut = new AnnotationConstraint(KEY, value); - - assertThat(sut.isValid(link, linkResourceService), is(false)); - assertThat(sut.cost(link, linkResourceService), is(lessThan(0.0))); - } - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(new AnnotationConstraint(KEY, 100), new AnnotationConstraint(KEY, 100)) - .addEqualityGroup(new AnnotationConstraint(KEY, 120)) - .addEqualityGroup(new AnnotationConstraint("latency", 100)) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java deleted file mode 100644 index d2e99400..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import org.junit.Test; -import org.onlab.util.Bandwidth; -import org.onosproject.net.IndexedLambda; -import org.onosproject.net.Link; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.is; - -/** - * Unit tests for Constraint objects. - */ -public class ConstraintObjectsTest { - - // Bandwidth Constraint - - private final Bandwidth bandwidth1 = Bandwidth.bps(100.0); - private final Bandwidth sameAsBandwidth1 = Bandwidth.bps(100.0); - private final Bandwidth bandwidth2 = Bandwidth.bps(200.0); - - final BandwidthConstraint bandwidthConstraint1 = new BandwidthConstraint(bandwidth1); - final BandwidthConstraint bandwidthConstraintSameAs1 = new BandwidthConstraint(sameAsBandwidth1); - final BandwidthConstraint bandwidthConstraint2 = new BandwidthConstraint(bandwidth2); - - /** - * Checks that the objects were created properly. - */ - @Test - public void testBandwidthConstraintCreation() { - assertThat(bandwidthConstraint1.bandwidth().bps(), is(equalTo(100.0))); - assertThat(bandwidthConstraintSameAs1.bandwidth().bps(), is(equalTo(100.0))); - assertThat(bandwidthConstraint2.bandwidth().bps(), is(equalTo(200.0))); - } - - /** - * Checks the correctness of the equals() method. - */ - @Test - public void testBandwidthConstraintEquals() { - new EqualsTester() - .addEqualityGroup(bandwidthConstraint1, bandwidthConstraintSameAs1) - .addEqualityGroup(bandwidthConstraint2) - .testEquals(); - } - - // Lambda Constraint - - final LambdaConstraint lambdaConstraint1 = - new LambdaConstraint(new IndexedLambda(100)); - final LambdaConstraint lambdaConstraintSameAs1 = - new LambdaConstraint(new IndexedLambda(100)); - final LambdaConstraint lambdaConstraint2 = - new LambdaConstraint(new IndexedLambda(200)); - - /** - * Checks that the objects were created properly. - */ - @Test - public void testLambdaConstraintCreation() { - assertThat(lambdaConstraint1.lambda().index(), is(equalTo(100L))); - assertThat(lambdaConstraintSameAs1.lambda().index(), is(equalTo(100L))); - assertThat(lambdaConstraint2.lambda().index(), is(equalTo(200L))); - } - - /** - * Checks the correctness of the equals() method. - */ - @Test - public void testLambdaConstraintEquals() { - new EqualsTester() - .addEqualityGroup(lambdaConstraint1, lambdaConstraintSameAs1) - .addEqualityGroup(lambdaConstraint2) - .testEquals(); - } - - // LinkType Constraint - - final LinkTypeConstraint linkTypeConstraint1 = - new LinkTypeConstraint(true, Link.Type.OPTICAL, Link.Type.TUNNEL); - final LinkTypeConstraint linkTypeConstraintSameAs1 = - new LinkTypeConstraint(true, Link.Type.OPTICAL, Link.Type.TUNNEL); - final LinkTypeConstraint linkTypeConstraint2 = - new LinkTypeConstraint(true, Link.Type.OPTICAL, Link.Type.DIRECT); - - /** - * Checks that the objects were created properly. - */ - @Test - public void testLinkTypeConstraintCreation() { - assertThat(linkTypeConstraint1.isInclusive(), is(true)); - assertThat(linkTypeConstraint1.types(), - contains(Link.Type.OPTICAL, Link.Type.TUNNEL)); - assertThat(linkTypeConstraintSameAs1.isInclusive(), is(true)); - assertThat(linkTypeConstraintSameAs1.types(), - contains(Link.Type.OPTICAL, Link.Type.TUNNEL)); - assertThat(linkTypeConstraint2.isInclusive(), is(true)); - assertThat(linkTypeConstraint2.types(), - contains(Link.Type.OPTICAL, Link.Type.DIRECT)); - } - - /** - * Checks the correctness of the equals() method. - */ - @Test - public void testLinkTypeConstraintEquals() { - new EqualsTester() - .addEqualityGroup(linkTypeConstraint1, linkTypeConstraintSameAs1) - .addEqualityGroup(linkTypeConstraint2) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/LatencyConstraintTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/LatencyConstraintTest.java deleted file mode 100644 index bab17495..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/LatencyConstraintTest.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.testing.EqualsTester; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.net.Annotations; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DefaultPath; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.net.resource.link.LinkResourceService; - -import java.time.Duration; -import java.time.temporal.ChronoUnit; -import java.util.Arrays; - -import static org.easymock.EasyMock.createMock; -import static org.hamcrest.Matchers.closeTo; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; -import static org.onosproject.net.AnnotationKeys.LATENCY; -import static org.onosproject.net.DefaultLinkTest.cp; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.Link.Type.DIRECT; - -public class LatencyConstraintTest { - - private static final DeviceId DID1 = deviceId("of:1"); - private static final DeviceId DID2 = deviceId("of:2"); - private static final DeviceId DID3 = deviceId("of:3"); - private static final PortNumber PN1 = PortNumber.portNumber(1); - private static final PortNumber PN2 = PortNumber.portNumber(2); - private static final PortNumber PN3 = PortNumber.portNumber(3); - private static final PortNumber PN4 = PortNumber.portNumber(4); - private static final ProviderId PROVIDER_ID = new ProviderId("of", "foo"); - private static final String LATENCY1 = "3.0"; - private static final String LATENCY2 = "4.0"; - - private LatencyConstraint sut; - private LinkResourceService linkResourceService; - - private Path path; - private Link link1; - private Link link2; - - @Before - public void setUp() { - linkResourceService = createMock(LinkResourceService.class); - - Annotations annotations1 = DefaultAnnotations.builder().set(LATENCY, LATENCY1).build(); - Annotations annotations2 = DefaultAnnotations.builder().set(LATENCY, LATENCY2).build(); - - link1 = new DefaultLink(PROVIDER_ID, cp(DID1, PN1), cp(DID2, PN2), DIRECT, annotations1); - link2 = new DefaultLink(PROVIDER_ID, cp(DID2, PN3), cp(DID3, PN4), DIRECT, annotations2); - path = new DefaultPath(PROVIDER_ID, Arrays.asList(link1, link2), 10); - } - - /** - * Tests the path latency is less than the supplied constraint. - */ - @Test - public void testLessThanLatency() { - sut = new LatencyConstraint(Duration.of(10, ChronoUnit.MICROS)); - - assertThat(sut.validate(path, linkResourceService), is(true)); - } - - /** - * Tests the path latency is more than the supplied constraint. - */ - @Test - public void testMoreThanLatency() { - sut = new LatencyConstraint(Duration.of(3, ChronoUnit.MICROS)); - - assertThat(sut.validate(path, linkResourceService), is(false)); - } - - /** - * Tests the link latency is equal to "latency" annotated value. - */ - @Test - public void testCost() { - sut = new LatencyConstraint(Duration.of(10, ChronoUnit.MICROS)); - - assertThat(sut.cost(link1, linkResourceService), is(closeTo(Double.parseDouble(LATENCY1), 1.0e-6))); - assertThat(sut.cost(link2, linkResourceService), is(closeTo(Double.parseDouble(LATENCY2), 1.0e-6))); - } - - /** - * Tests equality of the instances. - */ - @Test - public void testEquality() { - LatencyConstraint c1 = new LatencyConstraint(Duration.of(1, ChronoUnit.SECONDS)); - LatencyConstraint c2 = new LatencyConstraint(Duration.of(1000, ChronoUnit.MILLIS)); - - LatencyConstraint c3 = new LatencyConstraint(Duration.of(2, ChronoUnit.SECONDS)); - LatencyConstraint c4 = new LatencyConstraint(Duration.of(2000, ChronoUnit.MILLIS)); - - new EqualsTester() - .addEqualityGroup(c1, c2) - .addEqualityGroup(c3, c4) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/ObstacleConstraintTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/ObstacleConstraintTest.java deleted file mode 100644 index f02787f3..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/ObstacleConstraintTest.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -/** - * Test for constraint of intermediate nodes not passed. - */ -import com.google.common.testing.EqualsTester; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DefaultPath; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Path; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.net.resource.link.LinkResourceService; - -import java.util.Arrays; - -import static org.easymock.EasyMock.createMock; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.*; -import static org.onosproject.net.DefaultLinkTest.cp; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.Link.Type.DIRECT; - -public class ObstacleConstraintTest { - - private static final DeviceId DID1 = deviceId("of:1"); - private static final DeviceId DID2 = deviceId("of:2"); - private static final DeviceId DID3 = deviceId("of:3"); - private static final DeviceId DID4 = deviceId("of:4"); - private static final PortNumber PN1 = PortNumber.portNumber(1); - private static final PortNumber PN2 = PortNumber.portNumber(2); - private static final PortNumber PN3 = PortNumber.portNumber(3); - private static final PortNumber PN4 = PortNumber.portNumber(4); - private static final ProviderId PROVIDER_ID = new ProviderId("of", "foo"); - - private LinkResourceService linkResourceService; - - private Path path; - private DefaultLink link2; - private DefaultLink link1; - - private ObstacleConstraint sut; - - @Before - public void setUp() { - linkResourceService = createMock(LinkResourceService.class); - - link1 = new DefaultLink(PROVIDER_ID, cp(DID1, PN1), cp(DID2, PN2), DIRECT); - link2 = new DefaultLink(PROVIDER_ID, cp(DID2, PN3), cp(DID3, PN4), DIRECT); - path = new DefaultPath(PROVIDER_ID, Arrays.asList(link1, link2), 10); - } - - @Test - public void testEquality() { - ObstacleConstraint o1 = new ObstacleConstraint(DID1, DID2, DID3); - ObstacleConstraint o2 = new ObstacleConstraint(DID3, DID2, DID1); - ObstacleConstraint o3 = new ObstacleConstraint(DID1, DID2); - ObstacleConstraint o4 = new ObstacleConstraint(DID2, DID1); - - new EqualsTester() - .addEqualityGroup(o1, o2) - .addEqualityGroup(o3, o4) - .testEquals(); - } - - /** - * Tests the specified path avoids the specified obstacle. - */ - @Test - public void testPathNotThroughObstacles() { - sut = new ObstacleConstraint(DID4); - - assertThat(sut.validate(path, linkResourceService), is(true)); - } - - /** - * Test the specified path does not avoid the specified obstacle. - */ - @Test - public void testPathThroughObstacle() { - sut = new ObstacleConstraint(DID1); - - assertThat(sut.validate(path, linkResourceService), is(false)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/WaypointConstraintTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/WaypointConstraintTest.java deleted file mode 100644 index f7e212a3..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/intent/constraint/WaypointConstraintTest.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.intent.constraint; - -import com.google.common.testing.EqualsTester; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DefaultPath; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Path; -import org.onosproject.net.PortNumber; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.net.resource.link.LinkResourceService; - -import java.util.Arrays; - -import static org.easymock.EasyMock.createMock; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; -import static org.onosproject.net.DefaultLinkTest.cp; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.Link.Type.DIRECT; - -/** - * Test for constraint of intermediate elements. - */ -public class WaypointConstraintTest { - - private static final DeviceId DID1 = deviceId("of:1"); - private static final DeviceId DID2 = deviceId("of:2"); - private static final DeviceId DID3 = deviceId("of:3"); - private static final DeviceId DID4 = deviceId("of:4"); - private static final PortNumber PN1 = PortNumber.portNumber(1); - private static final PortNumber PN2 = PortNumber.portNumber(2); - private static final PortNumber PN3 = PortNumber.portNumber(3); - private static final PortNumber PN4 = PortNumber.portNumber(4); - private static final ProviderId PROVIDER_ID = new ProviderId("of", "foo"); - - private WaypointConstraint sut; - private LinkResourceService linkResourceService; - - private Path path; - private DefaultLink link2; - private DefaultLink link1; - - @Before - public void setUp() { - linkResourceService = createMock(LinkResourceService.class); - - link1 = new DefaultLink(PROVIDER_ID, cp(DID1, PN1), cp(DID2, PN2), DIRECT); - link2 = new DefaultLink(PROVIDER_ID, cp(DID2, PN3), cp(DID3, PN4), DIRECT); - path = new DefaultPath(PROVIDER_ID, Arrays.asList(link1, link2), 10); - } - - /** - * Tests that all of the specified waypoints are included in the specified path in order. - */ - @Test - public void testSatisfyWaypoints() { - sut = new WaypointConstraint(DID1, DID2, DID3); - - assertThat(sut.validate(path, linkResourceService), is(true)); - } - - /** - * Tests that the specified path does not includes the specified waypoint. - */ - @Test - public void testNotSatisfyWaypoint() { - sut = new WaypointConstraint(DID4); - - assertThat(sut.validate(path, linkResourceService), is(false)); - } - - @Test - public void testEquality() { - Constraint c1 = new WaypointConstraint(DID1, DID2); - Constraint c2 = new WaypointConstraint(DID1, DID2); - - Constraint c3 = new WaypointConstraint(DID2); - Constraint c4 = new WaypointConstraint(DID3); - - new EqualsTester() - .addEqualityGroup(c1, c2) - .addEqualityGroup(c3) - .addEqualityGroup(c4) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/link/DefaultLinkDescriptionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/link/DefaultLinkDescriptionTest.java deleted file mode 100644 index 3b98c5ba..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/link/DefaultLinkDescriptionTest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import org.junit.Test; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.DefaultLinkTest.cp; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.Link.Type.DIRECT; -import static org.onosproject.net.PortNumber.portNumber; - -/** - * Test of the default link description. - */ -public class DefaultLinkDescriptionTest { - - private static final DeviceId DID1 = deviceId("of:foo"); - private static final DeviceId DID2 = deviceId("of:bar"); - private static final PortNumber P1 = portNumber(1); - - @Test - public void basics() { - LinkDescription desc = new DefaultLinkDescription(cp(DID1, P1), cp(DID2, P1), DIRECT); - assertEquals("incorrect src", cp(DID1, P1), desc.src()); - assertEquals("incorrect dst", cp(DID2, P1), desc.dst()); - assertEquals("incorrect type", DIRECT, desc.type()); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/link/LinkEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/link/LinkEventTest.java deleted file mode 100644 index 307fa69a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/link/LinkEventTest.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import org.junit.Test; -import org.onosproject.event.AbstractEventTest; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.Link; -import org.onosproject.net.provider.ProviderId; - -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.PortNumber.portNumber; - -/** - * Tests of the device event. - */ -public class LinkEventTest extends AbstractEventTest { - - private Link createLink() { - return new DefaultLink(new ProviderId("of", "foo"), - new ConnectPoint(deviceId("of:foo"), portNumber(1)), - new ConnectPoint(deviceId("of:bar"), portNumber(2)), - Link.Type.INDIRECT); - } - - @Test - public void withTime() { - Link link = createLink(); - LinkEvent event = new LinkEvent(LinkEvent.Type.LINK_ADDED, link, 123L); - validateEvent(event, LinkEvent.Type.LINK_ADDED, link, 123L); - } - - @Test - public void withoutTime() { - Link link = createLink(); - long before = System.currentTimeMillis(); - LinkEvent event = new LinkEvent(LinkEvent.Type.LINK_ADDED, link); - long after = System.currentTimeMillis(); - validateEvent(event, LinkEvent.Type.LINK_ADDED, link, before, after); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/link/LinkServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/link/LinkServiceAdapter.java deleted file mode 100644 index 7cd87cd1..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/link/LinkServiceAdapter.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.link; - -import java.util.Set; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.Link.State; - -import com.google.common.collect.FluentIterable; - -/** - * Test adapter for link service. - */ -public class LinkServiceAdapter implements LinkService { - @Override - public int getLinkCount() { - return 0; - } - - @Override - public Iterable getLinks() { - return null; - } - - @Override - public Iterable getActiveLinks() { - return FluentIterable.from(getLinks()) - .filter(input -> input.state() == State.ACTIVE); - } - - @Override - public Set getDeviceLinks(DeviceId deviceId) { - return null; - } - - @Override - public Set getDeviceEgressLinks(DeviceId deviceId) { - return null; - } - - @Override - public Set getDeviceIngressLinks(DeviceId deviceId) { - return null; - } - - @Override - public Set getLinks(ConnectPoint connectPoint) { - return null; - } - - @Override - public Set getEgressLinks(ConnectPoint connectPoint) { - return null; - } - - @Override - public Set getIngressLinks(ConnectPoint connectPoint) { - return null; - } - - @Override - public Link getLink(ConnectPoint src, ConnectPoint dst) { - return null; - } - - @Override - public void addListener(LinkListener listener) { - } - - @Override - public void removeListener(LinkListener listener) { - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java deleted file mode 100644 index b39d2efb..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import com.google.common.testing.EqualsTester; -import org.junit.Before; -import org.junit.Test; - -import java.util.Collections; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onosproject.net.NetTestTools.APP_ID; -import static org.onosproject.net.NetTestTools.did; - - -/** - * DefaultMeter Tests. - */ -public class DefaultMeterTest { - - private Meter m1; - private Meter sameAsm1; - private Meter m2; - - @Before - public void setup() { - - Band band = DefaultBand.builder() - .ofType(Band.Type.DROP) - .withRate(500) - .build(); - - m1 = DefaultMeter.builder() - .forDevice(did("1")) - .fromApp(APP_ID) - .withId(MeterId.meterId(1)) - .withUnit(Meter.Unit.KB_PER_SEC) - .withBands(Collections.singletonList(band)) - .build(); - - sameAsm1 = DefaultMeter.builder() - .forDevice(did("1")) - .fromApp(APP_ID) - .withId(MeterId.meterId(1)) - .withUnit(Meter.Unit.KB_PER_SEC) - .withBands(Collections.singletonList(band)) - .build(); - - m2 = DefaultMeter.builder() - .forDevice(did("2")) - .fromApp(APP_ID) - .withId(MeterId.meterId(2)) - .withUnit(Meter.Unit.KB_PER_SEC) - .withBands(Collections.singletonList(band)) - .build(); - - } - - @Test - public void testEquality() { - new EqualsTester() - .addEqualityGroup(m1, sameAsm1) - .addEqualityGroup(m2).testEquals(); - } - - @Test - public void testConstruction() { - DefaultMeter m = (DefaultMeter) m1; - - assertThat(m.deviceId(), is(did("1"))); - assertThat(m.appId(), is(APP_ID)); - assertThat(m.id(), is(MeterId.meterId(1))); - assertThat(m.isBurst(), is(false)); - - assertThat(m.life(), is(0L)); - assertThat(m.bytesSeen(), is(0L)); - assertThat(m.packetsSeen(), is(0L)); - assertThat(m.referenceCount(), is(0L)); - - } - - - - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/meter/MeterOperationTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/meter/MeterOperationTest.java deleted file mode 100644 index ad53e3a3..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/meter/MeterOperationTest.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.meter; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; - -import java.util.Collection; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass; - -/** - * Unit tests for the MeterOperationTest object. - */ -public class MeterOperationTest { - - - - /** - * Checks that the MeterOperation class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutableBaseClass(MeterOperation.class); - } - - @Test - public void testEquality() { - final Meter m1 = new TestMeter(); - final Meter m2 = new TestMeter(); - final MeterOperation op1 = new MeterOperation(m1, - MeterOperation.Type.ADD); - final MeterOperation sameAsOp1 = new MeterOperation(m1, - MeterOperation.Type.ADD); - final MeterOperation op2 = new MeterOperation(m2, - MeterOperation.Type.ADD); - - new EqualsTester() - .addEqualityGroup(op1, sameAsOp1) - .addEqualityGroup(op2) - .testEquals(); - } - - @Test - public void testConstruction() { - final Meter m1 = new TestMeter(); - - final MeterOperation op = new MeterOperation(m1, MeterOperation.Type.ADD); - - assertThat(op.meter(), is(m1)); - } - - private static final class TestMeter implements Meter { - - @Override - public DeviceId deviceId() { - return null; - } - - @Override - public MeterId id() { - return null; - } - - @Override - public ApplicationId appId() { - return null; - } - - @Override - public Unit unit() { - return null; - } - - @Override - public boolean isBurst() { - return false; - } - - @Override - public Collection bands() { - return null; - } - - @Override - public MeterState state() { - return null; - } - - @Override - public long life() { - return 0; - } - - @Override - public long referenceCount() { - return 0; - } - - @Override - public long packetsSeen() { - return 0; - } - - @Override - public long bytesSeen() { - return 0; - } - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java deleted file mode 100644 index d21c4b1b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourceAllocationTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onlab.packet.VlanId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.intent.IntentId; - -public class ResourceAllocationTest { - - private static final DeviceId D1 = DeviceId.deviceId("of:001"); - private static final DeviceId D2 = DeviceId.deviceId("of:002"); - private static final PortNumber P1 = PortNumber.portNumber(1); - private static final VlanId VLAN1 = VlanId.vlanId((short) 100); - private static final IntentId IID1 = IntentId.valueOf(30); - - @Test - public void testEquals() { - ResourceAllocation alloc1 = new ResourceAllocation(ResourcePath.discrete(D1, P1, VLAN1), IID1); - ResourceAllocation sameAsAlloc1 = new ResourceAllocation(ResourcePath.discrete(D1, P1, VLAN1), IID1); - ResourceAllocation alloc2 = new ResourceAllocation(ResourcePath.discrete(D2, P1, VLAN1), IID1); - - new EqualsTester() - .addEqualityGroup(alloc1, sameAsAlloc1) - .addEqualityGroup(alloc2) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java deleted file mode 100644 index 4bbb458c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/newresource/ResourcePathTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.newresource; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onlab.packet.VlanId; -import org.onlab.util.Bandwidth; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; - -import java.util.Optional; - -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - -public class ResourcePathTest { - - private static final DeviceId D1 = DeviceId.deviceId("of:001"); - private static final DeviceId D2 = DeviceId.deviceId("of:002"); - private static final PortNumber P1 = PortNumber.portNumber(1); - private static final VlanId VLAN1 = VlanId.vlanId((short) 100); - private static final Bandwidth BW1 = Bandwidth.gbps(2); - private static final Bandwidth BW2 = Bandwidth.gbps(1); - - @Test - public void testEquals() { - ResourcePath resource1 = ResourcePath.discrete(D1, P1, VLAN1); - ResourcePath sameAsResource1 = ResourcePath.discrete(D1, P1, VLAN1); - ResourcePath resource2 = ResourcePath.discrete(D2, P1, VLAN1); - ResourcePath resource3 = ResourcePath.continuous(BW1.bps(), D1, P1, BW1); - ResourcePath sameAsResource3 = ResourcePath.continuous(BW2.bps(), D1, P1, BW1); - - new EqualsTester() - .addEqualityGroup(resource1, sameAsResource1) - .addEqualityGroup(resource2) - .addEqualityGroup(resource3, sameAsResource3) // this is intentional - .testEquals(); - } - - @Test - public void testComponents() { - ResourcePath port = ResourcePath.discrete(D1, P1); - - assertThat(port.components(), contains(D1, P1)); - } - - @Test - public void testThereIsParent() { - ResourcePath path = ResourcePath.discrete(D1, P1, VLAN1); - ResourcePath parent = ResourcePath.discrete(D1, P1); - - assertThat(path.parent(), is(Optional.of(parent))); - } - - @Test - public void testNoParent() { - ResourcePath path = ResourcePath.discrete(D1); - - assertThat(path.parent(), is(Optional.of(ResourcePath.ROOT))); - } - - @Test - public void testBase() { - ResourcePath path = ResourcePath.discrete(D1); - - DeviceId child = (DeviceId) path.last(); - assertThat(child, is(D1)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultInboundPacketTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultInboundPacketTest.java deleted file mode 100644 index eda68240..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultInboundPacketTest.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import java.nio.ByteBuffer; - -import org.junit.Test; -import org.onlab.packet.Ethernet; -import org.onlab.packet.MacAddress; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.NetTestTools.connectPoint; - -/** - * Unit tests for the DefaultInboundPacket class. - */ -public class DefaultInboundPacketTest { - - final Ethernet eth = new Ethernet() - .setDestinationMACAddress(MacAddress.BROADCAST) - .setSourceMACAddress(MacAddress.BROADCAST); - final ByteBuffer byteBuffer = ByteBuffer.wrap(eth.serialize()); - final DefaultInboundPacket packet1 = - new DefaultInboundPacket(connectPoint("d1", 1), - eth, - byteBuffer); - final DefaultInboundPacket sameAsPacket1 = - new DefaultInboundPacket(connectPoint("d1", 1), - eth, - byteBuffer); - final DefaultInboundPacket packet2 = - new DefaultInboundPacket(connectPoint("d2", 1), - eth, - byteBuffer); - /** - * Checks that the DefaultInboundPacket class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultInboundPacket.class); - } - - /** - * Tests the equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(packet1, sameAsPacket1) - .addEqualityGroup(packet2) - .testEquals(); - } - - /** - * Tests the object creation through the constructor. - */ - @Test - public void testConstruction() { - assertThat(packet1.receivedFrom(), equalTo(connectPoint("d1", 1))); - assertThat(packet1.parsed(), equalTo(eth)); - assertThat(packet1.unparsed(), notNullValue()); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultOutboundPacketTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultOutboundPacketTest.java deleted file mode 100644 index 21f997d9..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultOutboundPacketTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import java.nio.ByteBuffer; - -import org.junit.Test; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.intent.IntentTestsMocks; -import org.onlab.packet.Ethernet; -import org.onlab.packet.MacAddress; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.net.NetTestTools.did; - -/** - * Unit tests for the DefaultOutboundPacketTest class. - */ -public class DefaultOutboundPacketTest { - final Ethernet eth = new Ethernet() - .setDestinationMACAddress(MacAddress.BROADCAST) - .setSourceMACAddress(MacAddress.BROADCAST); - final ByteBuffer byteBuffer = ByteBuffer.wrap(eth.serialize()); - final TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); - final DefaultOutboundPacket packet1 = - new DefaultOutboundPacket(did("d1"), - treatment, - byteBuffer); - final DefaultOutboundPacket sameAsPacket1 = - new DefaultOutboundPacket(did("d1"), - treatment, - byteBuffer); - final DefaultOutboundPacket packet2 = - new DefaultOutboundPacket(did("d2"), - treatment, - byteBuffer); - /** - * Checks that the DefaultOutboundPacket class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultOutboundPacket.class); - } - - /** - * Tests the equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(packet1, sameAsPacket1) - .addEqualityGroup(packet2) - .testEquals(); - } - - /** - * Tests the object creation through the constructor. - */ - @Test - public void testConstruction() { - assertThat(packet1.sendThrough(), equalTo(did("d1"))); - assertThat(packet1.data(), equalTo(byteBuffer)); - assertThat(packet1.treatment(), equalTo(treatment)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultPacketContextTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultPacketContextTest.java deleted file mode 100644 index ee7ae7e5..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultPacketContextTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.packet; - -import java.nio.ByteBuffer; - -import org.junit.Test; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.intent.IntentTestsMocks; -import org.onlab.packet.Ethernet; -import org.onlab.packet.MacAddress; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass; -import static org.onosproject.net.NetTestTools.connectPoint; -import static org.onosproject.net.NetTestTools.did; - -/** - * Unit tests for the DefaultPacketContextTest. - */ -public class DefaultPacketContextTest { - final Ethernet eth = new Ethernet() - .setDestinationMACAddress(MacAddress.BROADCAST) - .setSourceMACAddress(MacAddress.BROADCAST); - final ByteBuffer byteBuffer = ByteBuffer.wrap(eth.serialize()); - final DefaultInboundPacket inPacket = - new DefaultInboundPacket(connectPoint("d1", 1), - eth, - byteBuffer); - final TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); - final DefaultOutboundPacket outPacket = - new DefaultOutboundPacket(did("d1"), - treatment, - byteBuffer); - - static class MockPacketContext extends DefaultPacketContext { - - protected MockPacketContext(long time, InboundPacket inPkt, - OutboundPacket outPkt, boolean block) { - super(time, inPkt, outPkt, block); - } - - @Override - public void send() { - - } - - @Override - public boolean block() { - return super.block(); - } - } - - final DefaultPacketContext context1 = - new MockPacketContext(123L, inPacket, outPacket, true); - final DefaultPacketContext sameAsContext1 = - new MockPacketContext(123L, inPacket, outPacket, true); - final DefaultPacketContext context2 = - new MockPacketContext(123123L, inPacket, outPacket, true); - - /** - * Checks that the DefaultOutboundPacket class is immutable but can be - * used as a base class. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutableBaseClass(DefaultPacketContext.class); - } - - /** - * Tests the equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - // No hashCode() or equals() defined, object comparison is used. - new EqualsTester() - .addEqualityGroup(context1) - .addEqualityGroup(sameAsContext1) - .addEqualityGroup(context2) - .testEquals(); - } - - /** - * Tests that objects are created properly. - */ - @Test - public void testConstruction() { - assertThat(context1.block(), is(true)); - assertThat(context1.inPacket(), is(inPacket)); - assertThat(context1.isHandled(), is(true)); - assertThat(context1.outPacket(), is(outPacket)); - assertThat(context1.time(), is(123L)); - assertThat(context1.treatmentBuilder(), is(notNullValue())); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultPacketRequestTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultPacketRequestTest.java deleted file mode 100644 index 592cd983..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/DefaultPacketRequestTest.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.packet; - -import org.junit.Test; -import org.onosproject.core.DefaultApplicationId; -import org.onosproject.net.NetTestTools; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.TrafficSelector; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for the DefaultPacketRequest class. - */ -public class DefaultPacketRequestTest { - - private final TrafficSelector selector = DefaultTrafficSelector - .builder() - .matchIcmpCode((byte) 1) - .build(); - - private final DefaultPacketRequest packetRequest1 = - new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), - PacketPriority.CONTROL, - NetTestTools.APP_ID); - private final DefaultPacketRequest sameAsacketRequest1 = - new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), - PacketPriority.CONTROL, - NetTestTools.APP_ID); - private final DefaultPacketRequest packetRequest2 = - new DefaultPacketRequest(selector, - PacketPriority.CONTROL, - NetTestTools.APP_ID); - private final DefaultPacketRequest packetRequest3 = - new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), - PacketPriority.REACTIVE, - NetTestTools.APP_ID); - private final DefaultPacketRequest packetRequest4 = - new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), - PacketPriority.CONTROL, - new DefaultApplicationId(1, "foo")); - - /** - * Tests the operation of the equals(), toAstring() and hashCode() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(packetRequest1, sameAsacketRequest1) - .addEqualityGroup(packetRequest2) - .addEqualityGroup(packetRequest3) - .addEqualityGroup(packetRequest4) - .testEquals(); - } - - /** - * Tests that building and fetching from a DefaultPacketRequest is correct. - */ - @Test - public void testConstruction() { - assertThat(packetRequest1.priority(), is(PacketPriority.CONTROL)); - assertThat(packetRequest1.priority().priorityValue(), - is(PacketPriority.CONTROL.priorityValue())); - assertThat(packetRequest1.selector(), is(DefaultTrafficSelector.emptySelector())); - assertThat(packetRequest1.appId(), is(NetTestTools.APP_ID)); - } - - /** - * Checks that the DefaultPacketRequest class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPacketRequest.class); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketEventTest.java deleted file mode 100644 index f0d45f0c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketEventTest.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.packet; - -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.greaterThanOrEqualTo; -import static org.hamcrest.Matchers.is; - -/** - * Unit tests for PacketEvent class. - */ -public class PacketEventTest { - - OutboundPacket packet; - - @Test - public void testConstruction1() { - long time = System.currentTimeMillis(); - PacketEvent event = new PacketEvent(PacketEvent.Type.EMIT, packet); - - assertThat(event.type(), is(PacketEvent.Type.EMIT)); - assertThat(event.subject(), is(packet)); - assertThat(event.time(), greaterThanOrEqualTo(time)); - } - - @Test - public void testConstruction2() { - long time = 12345678; - PacketEvent event = new PacketEvent(PacketEvent.Type.EMIT, packet, time); - - assertThat(event.type(), is(PacketEvent.Type.EMIT)); - assertThat(event.subject(), is(packet)); - assertThat(event.time(), is(time)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketProcessorTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketProcessorTest.java deleted file mode 100644 index 7b2ef541..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketProcessorTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.packet; - -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.greaterThanOrEqualTo; -import static org.hamcrest.Matchers.lessThan; - -/** - * Unit tests for static APIs in the packet processor class. - */ -public class PacketProcessorTest { - - /** - * Tests a priority in the advisor range. - */ - @Test - public void testAdvisorPriorities() { - int advisorPriority = PacketProcessor.advisor(3); - assertThat(advisorPriority, lessThan(PacketProcessor.ADVISOR_MAX)); - assertThat(advisorPriority, greaterThanOrEqualTo(0)); - } - - /** - * Tests a priority in the director range. - */ - @Test - public void testDirectorPriorities() { - int directorPriority = PacketProcessor.director(3); - assertThat(directorPriority, lessThan(PacketProcessor.DIRECTOR_MAX)); - assertThat(directorPriority, greaterThanOrEqualTo(PacketProcessor.ADVISOR_MAX)); - } - - /** - * Tests a priority in the observer range. - */ - @Test - public void testObserverPriorities() { - int observerPriority = PacketProcessor.observer(3); - assertThat(observerPriority, lessThan(PacketProcessor.OBSERVER_MAX)); - assertThat(observerPriority, greaterThanOrEqualTo(PacketProcessor.DIRECTOR_MAX)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketServiceAdapter.java deleted file mode 100644 index 2993ce6b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/packet/PacketServiceAdapter.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.packet; - -import org.onosproject.core.ApplicationId; -import org.onosproject.net.flow.TrafficSelector; - -import java.util.List; - -/** - * Test adapter for packet service. - */ -public class PacketServiceAdapter implements PacketService { - @Override - public void addProcessor(PacketProcessor processor, int priority) { - } - - @Override - public void removeProcessor(PacketProcessor processor) { - } - - @Override - public List getProcessors() { - return null; - } - - @Override - public List getRequests() { - return null; - } - - @Override - public void requestPackets(TrafficSelector selector, PacketPriority priority, ApplicationId appId) { - } - - @Override - public void cancelPackets(TrafficSelector selector, PacketPriority priority, ApplicationId appId) { - } - - @Override - public void emit(OutboundPacket packet) { - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/AbstractProviderRegistryTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/AbstractProviderRegistryTest.java deleted file mode 100644 index f08d93bd..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/AbstractProviderRegistryTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertEquals; - -/** - * Test of the base provider registry. - */ -public class AbstractProviderRegistryTest { - - private class TestProviderService extends AbstractProviderService { - protected TestProviderService(TestProvider provider) { - super(provider); - } - } - - private class TestProviderRegistry extends AbstractProviderRegistry { - @Override - protected TestProviderService createProviderService(TestProvider provider) { - return new TestProviderService(provider); - } - } - - @Test - public void basics() { - TestProviderRegistry registry = new TestProviderRegistry(); - assertEquals("incorrect provider count", 0, registry.getProviders().size()); - - ProviderId fooId = new ProviderId("of", "foo"); - TestProvider pFoo = new TestProvider(fooId); - TestProviderService psFoo = registry.register(pFoo); - assertEquals("incorrect provider count", 1, registry.getProviders().size()); - assertThat("provider not found", registry.getProviders().contains(fooId)); - assertEquals("incorrect provider", psFoo.provider(), pFoo); - - ProviderId barId = new ProviderId("snmp", "bar"); - TestProvider pBar = new TestProvider(barId); - TestProviderService psBar = registry.register(pBar); - assertEquals("incorrect provider count", 2, registry.getProviders().size()); - assertThat("provider not found", registry.getProviders().contains(barId)); - assertEquals("incorrect provider", psBar.provider(), pBar); - - psFoo.checkValidity(); - registry.unregister(pFoo); - psBar.checkValidity(); - assertEquals("incorrect provider count", 1, registry.getProviders().size()); - assertThat("provider not found", registry.getProviders().contains(barId)); - } - - @Test - public void ancillaryProviders() { - TestProviderRegistry registry = new TestProviderRegistry(); - TestProvider pFoo = new TestProvider(new ProviderId("of", "foo")); - TestProvider pBar = new TestProvider(new ProviderId("of", "bar", true)); - registry.register(pFoo); - registry.register(pBar); - assertEquals("incorrect provider count", 2, registry.getProviders().size()); - } - - @Test(expected = IllegalStateException.class) - public void duplicateRegistration() { - TestProviderRegistry registry = new TestProviderRegistry(); - TestProvider pFoo = new TestProvider(new ProviderId("of", "foo")); - registry.register(pFoo); - registry.register(pFoo); - } - - @Test(expected = IllegalStateException.class) - public void duplicateSchemeRegistration() { - TestProviderRegistry registry = new TestProviderRegistry(); - TestProvider pFoo = new TestProvider(new ProviderId("of", "foo")); - TestProvider pBar = new TestProvider(new ProviderId("of", "bar")); - registry.register(pFoo); - registry.register(pBar); - } - - @Test - public void voidUnregistration() { - TestProviderRegistry registry = new TestProviderRegistry(); - registry.unregister(new TestProvider(new ProviderId("of", "foo"))); - } - - @Test(expected = IllegalStateException.class) - public void unregistration() { - TestProviderRegistry registry = new TestProviderRegistry(); - TestProvider pFoo = new TestProvider(new ProviderId("of", "foo")); - TestProviderService psFoo = registry.register(pFoo); - registry.unregister(pFoo); - psFoo.checkValidity(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/AbstractProviderTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/AbstractProviderTest.java deleted file mode 100644 index e9e06c76..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/AbstractProviderTest.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -/** - * Test of the base provider implementation. - */ -public class AbstractProviderTest { - - @Test - public void basics() { - ProviderId id = new ProviderId("of", "foo.bar"); - TestProvider provider = new TestProvider(id); - assertEquals("incorrect id", id, provider.id()); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/ProviderIdTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/ProviderIdTest.java deleted file mode 100644 index 7e973991..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/ProviderIdTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -/** - * Test of the provider identifier. - */ -public class ProviderIdTest { - - @Test - public void basics() { - new EqualsTester() - .addEqualityGroup(new ProviderId("of", "foo"), new ProviderId("of", "foo")) - .addEqualityGroup(new ProviderId("snmp", "foo"), new ProviderId("snmp", "foo")) - .addEqualityGroup(new ProviderId("of", "bar")) - .testEquals(); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/TestProvider.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/TestProvider.java deleted file mode 100644 index 2f521bbb..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/provider/TestProvider.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.provider; - -/** - * Test provider fixture. - */ -public class TestProvider extends AbstractProvider { - - /** - * Creates a provider with the supplier identifier. - * - * @param id provider id - */ - protected TestProvider(ProviderId id) { - super(id); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/resource/MplsObjectsTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/resource/MplsObjectsTest.java deleted file mode 100644 index 56f7a477..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/resource/MplsObjectsTest.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.resource; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; -import org.onosproject.net.resource.link.MplsLabel; -import org.onosproject.net.resource.link.MplsLabelResourceAllocation; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -/** - * Unit tests for MPLS objects. - */ -public class MplsObjectsTest { - - MplsLabel label1 = MplsLabel.valueOf(1); - MplsLabel label2 = MplsLabel.valueOf(2); - MplsLabel sameAsLabel1 = MplsLabel.valueOf(1); - MplsLabel sameAsLabel2 = MplsLabel.valueOf(2); - MplsLabel label3 = MplsLabel.valueOf(3); - - /** - * Tests creation of MPLS label objects. - */ - @Test - public void checkLabelConstruction() { - assertThat(label1.label().toInt(), is(1)); - } - - /** - * Tests the operation of equals(), hashCode() and toString(). - */ - @Test - public void testLabelEqualsOperation() { - new EqualsTester() - .addEqualityGroup(label1, sameAsLabel1) - .addEqualityGroup(label2, sameAsLabel2) - .addEqualityGroup(label3) - .testEquals(); - } - - MplsLabelResourceAllocation labelAllocation1 = - new MplsLabelResourceAllocation(label1); - MplsLabelResourceAllocation sameAsLabelAllocation1 = - new MplsLabelResourceAllocation(label1); - MplsLabelResourceAllocation labelAllocation2 = - new MplsLabelResourceAllocation(label2); - MplsLabelResourceAllocation sameAsLabelAllocation2 = - new MplsLabelResourceAllocation(label2); - MplsLabelResourceAllocation labelAllocation3 = - new MplsLabelResourceAllocation(label3); - - /** - * Tests creation of MPLS label objects. - */ - @Test - public void checkLabelResourceAllocationConstruction() { - assertThat(labelAllocation1.mplsLabel().label().toInt(), is(1)); - assertThat(labelAllocation1.type(), is(ResourceType.MPLS_LABEL)); - } - - /** - * Tests the operation of equals(), hashCode() and toString(). - */ - @Test - public void testLabelResourceAllocationEqualsOperation() { - new EqualsTester() - .addEqualityGroup(labelAllocation1, sameAsLabelAllocation1) - .addEqualityGroup(labelAllocation2, sameAsLabelAllocation2) - .addEqualityGroup(labelAllocation3) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/statistic/DefaultLoadTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/statistic/DefaultLoadTest.java deleted file mode 100644 index 6b3ef93d..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/statistic/DefaultLoadTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.statistic; - -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.core.IsNot.not; - -/** - * Unit tests for DefaultLoad class. - */ -public class DefaultLoadTest { - - @Before - public void reset() { - DefaultLoad.setPollInterval(10); - } - - /** - * Tests the default constructor. - */ - @Test - public void testDefaultConstructor() { - DefaultLoad load = new DefaultLoad(); - assertThat(load.isValid(), is(false)); - assertThat(load.latest(), is(-1L)); - assertThat(load.rate(), is(0L)); - assertThat(load.time(), is(not(0))); - } - - /** - * Tests the current-previous constructor. - */ - @Test - public void testCurrentPreviousConstructor() { - DefaultLoad load = new DefaultLoad(20, 10); - assertThat(load.isValid(), is(true)); - assertThat(load.latest(), is(20L)); - assertThat(load.rate(), is(1L)); - assertThat(load.time(), is(not(0))); - } - - /** - * Tests the current-previous-interval constructor. - */ - @Test - public void testCurrentPreviousIntervalConstructor() { - DefaultLoad load = new DefaultLoad(20, 10, 1); - assertThat(load.isValid(), is(true)); - assertThat(load.latest(), is(20L)); - assertThat(load.rate(), is(10L)); - assertThat(load.time(), is(not(0))); - } - - /** - * Tests the toString operation. - */ - @Test - public void testToString() { - DefaultLoad load = new DefaultLoad(20, 10); - - String s = load.toString(); - assertThat(s, containsString("Load{rate=1, latest=20}")); - } - - /** - * Tests setting the poll interval. - */ - @Test - public void testSettingPollInterval() { - DefaultLoad.setPollInterval(1); - DefaultLoad load = new DefaultLoad(40, 10); - assertThat(load.rate(), is(30L)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/statistic/StatisticServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/statistic/StatisticServiceAdapter.java deleted file mode 100644 index cf8f36f8..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/statistic/StatisticServiceAdapter.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.statistic; - -import org.onosproject.core.ApplicationId; -import org.onosproject.core.GroupId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.flow.FlowRule; - -import java.util.Optional; - -/** - * Test adapter for statistics service. - */ -public class StatisticServiceAdapter implements StatisticService { - @Override - public Load load(Link link) { - return null; - } - - @Override - public Load load(ConnectPoint connectPoint) { - return null; - } - - @Override - public Link max(Path path) { - return null; - } - - @Override - public Link min(Path path) { - return null; - } - - @Override - public FlowRule highestHitter(ConnectPoint connectPoint) { - return null; - } - - @Override - public Load load(Link link, ApplicationId appId, Optional groupId) { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/ClusterIdTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/ClusterIdTest.java deleted file mode 100644 index 1eb6331f..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/ClusterIdTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import static org.junit.Assert.*; -import static org.onosproject.net.topology.ClusterId.clusterId; - -/** - * Test of the cluster ID. - */ -public class ClusterIdTest { - - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(clusterId(1), clusterId(1)) - .addEqualityGroup(clusterId(3), clusterId(3)).testEquals(); - } - - @Test - public void basics() { - assertEquals("incorrect index", 123, clusterId(123).index()); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultGraphDescriptionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultGraphDescriptionTest.java deleted file mode 100644 index f3958491..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultGraphDescriptionTest.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import com.google.common.collect.ImmutableSet; - -import org.junit.Test; -import org.onosproject.net.DefaultDevice; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.Device.Type.SWITCH; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.topology.DefaultTopologyEdgeTest.*; - -public class DefaultGraphDescriptionTest { - - static final DefaultTopologyEdge E1 = new DefaultTopologyEdge(V1, V2, L1); - static final DefaultTopologyEdge E2 = new DefaultTopologyEdge(V1, V2, L1); - - private static final DeviceId D3 = deviceId("3"); - - static final Device DEV1 = new DefaultDevice(PID, D1, SWITCH, "", "", "", "", null); - static final Device DEV2 = new DefaultDevice(PID, D2, SWITCH, "", "", "", "", null); - static final Device DEV3 = new DefaultDevice(PID, D3, SWITCH, "", "", "", "", null); - - @Test - public void basics() { - DefaultGraphDescription desc = - new DefaultGraphDescription(4321L, System.currentTimeMillis(), ImmutableSet.of(DEV1, DEV2, DEV3), - ImmutableSet.of(L1, L2)); - assertEquals("incorrect time", 4321L, desc.timestamp()); - assertEquals("incorrect vertex count", 3, desc.vertexes().size()); - assertEquals("incorrect edge count", 2, desc.edges().size()); - } - - @Test - public void missingVertex() { - GraphDescription desc = new DefaultGraphDescription(4321L, System.currentTimeMillis(), - ImmutableSet.of(DEV1, DEV3), - ImmutableSet.of(L1, L2)); - assertEquals("incorrect time", 4321L, desc.timestamp()); - assertEquals("incorrect vertex count", 2, desc.vertexes().size()); - assertEquals("incorrect edge count", 0, desc.edges().size()); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyClusterTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyClusterTest.java deleted file mode 100644 index 06ed8fde..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyClusterTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2014-2015 Open Networking Laboratory - * - * 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.net.topology; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.topology.ClusterId.clusterId; - -/** - * Test of the default topology cluster implementation. - */ -public class DefaultTopologyClusterTest { - - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(cluster(3, 2, 1, "of:1"), cluster(3, 2, 1, "of:1")) - .addEqualityGroup(cluster(3, 2, 1, "of:2"), cluster(3, 2, 1, "of:2")) - .addEqualityGroup(cluster(0, 2, 1, "of:1"), cluster(0, 2, 1, "of:1")) - .addEqualityGroup(cluster(3, 3, 1, "of:1"), cluster(3, 3, 1, "of:1")) - .testEquals(); - } - - @Test - public void basics() { - TopologyCluster cluster = cluster(6, 5, 4, "of:111"); - assertEquals("incorrect id", clusterId(6), cluster.id()); - assertEquals("incorrect id", 5, cluster.deviceCount()); - assertEquals("incorrect id", 4, cluster.linkCount()); - assertEquals("incorrect id", deviceId("of:111"), cluster.root().deviceId()); - - } - - private TopologyCluster cluster(int id, int dc, int lc, String root) { - return new DefaultTopologyCluster(clusterId(id), dc, lc, - new DefaultTopologyVertex(deviceId(root))); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyEdgeTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyEdgeTest.java deleted file mode 100644 index 830e9b9f..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyEdgeTest.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.PortNumber.portNumber; - -/** - * Tests of the topology graph edge. - */ -public class DefaultTopologyEdgeTest { - - static final DeviceId D1 = deviceId("1"); - static final DeviceId D2 = deviceId("2"); - static final PortNumber P1 = portNumber(1); - static final PortNumber P2 = portNumber(2); - - static final ConnectPoint CP1 = new ConnectPoint(D1, P1); - static final ConnectPoint CP2 = new ConnectPoint(D2, P1); - static final ConnectPoint CP3 = new ConnectPoint(D2, P1); - static final ConnectPoint CP4 = new ConnectPoint(D1, P2); - - static final DefaultTopologyVertex V1 = new DefaultTopologyVertex(D1); - static final DefaultTopologyVertex V2 = new DefaultTopologyVertex(D2); - - static final ProviderId PID = new ProviderId("foo", "bar"); - - /** D1:P1 -> D2:P1. */ - static final Link L1 = new DefaultLink(PID, CP1, CP2, Link.Type.INDIRECT); - /** D2:P1 -> D1:P2. */ - static final Link L2 = new DefaultLink(PID, CP3, CP4, Link.Type.INDIRECT); - - @Test - public void basics() { - DefaultTopologyEdge e = new DefaultTopologyEdge(V1, V2, L1); - assertEquals("incorrect src", V1, e.src()); - assertEquals("incorrect dst", V2, e.dst()); - assertEquals("incorrect link", L1, e.link()); - - new EqualsTester() - .addEqualityGroup(new DefaultTopologyEdge(V1, V2, L1), - new DefaultTopologyEdge(V1, V2, L1)) - .addEqualityGroup(new DefaultTopologyEdge(V2, V1, L2), - new DefaultTopologyEdge(V2, V1, L2)) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyVertexTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyVertexTest.java deleted file mode 100644 index aa01d261..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/DefaultTopologyVertexTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.net.DeviceId; - -import static org.junit.Assert.*; -import static org.onosproject.net.DeviceId.deviceId; - -/** - * Tests of the topology graph vertex. - */ -public class DefaultTopologyVertexTest { - - private static final DeviceId D1 = deviceId("1"); - private static final DeviceId D2 = deviceId("2"); - - @Test - public void basics() { - DefaultTopologyVertex v = new DefaultTopologyVertex(D1); - assertEquals("incorrect device id", D1, v.deviceId()); - - new EqualsTester() - .addEqualityGroup(new DefaultTopologyVertex(D1), - new DefaultTopologyVertex(D1)) - .addEqualityGroup(new DefaultTopologyVertex(D2), - new DefaultTopologyVertex(D2)).testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/PathServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/PathServiceAdapter.java deleted file mode 100644 index 6a8e586f..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/PathServiceAdapter.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.net.DisjointPath; -import org.onosproject.net.ElementId; -import org.onosproject.net.Link; -import org.onosproject.net.Path; - -import java.util.Map; -import java.util.Set; - -/** - * Test adapter for path service. - */ -public class PathServiceAdapter implements PathService { - @Override - public Set getPaths(ElementId src, ElementId dst) { - return null; - } - - @Override - public Set getPaths(ElementId src, ElementId dst, LinkWeight weight) { - return null; - } - - @Override - public Set getDisjointPaths(ElementId src, ElementId dst) { - return null; - } - - @Override - public Set getDisjointPaths(ElementId src, ElementId dst, LinkWeight weight) { - return null; - } - - @Override - public Set getDisjointPaths(ElementId src, ElementId dst, - Map riskProfile) { - return null; - } - - @Override - public Set getDisjointPaths(ElementId src, ElementId dst, - LinkWeight weight, - Map riskProfile) { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/TopologyServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/TopologyServiceAdapter.java deleted file mode 100644 index 72cc67d7..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/net/topology/TopologyServiceAdapter.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.net.topology; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.DisjointPath; -import org.onosproject.net.Link; -import org.onosproject.net.Path; - -import java.util.Map; -import java.util.Set; - -/** - * Test adapter for topology service. - */ -public class TopologyServiceAdapter implements TopologyService { - @Override - public Topology currentTopology() { - return null; - } - - @Override - public boolean isLatest(Topology topology) { - return false; - } - - @Override - public TopologyGraph getGraph(Topology topology) { - return null; - } - - @Override - public Set getClusters(Topology topology) { - return null; - } - - @Override - public TopologyCluster getCluster(Topology topology, ClusterId clusterId) { - return null; - } - - @Override - public Set getClusterDevices(Topology topology, TopologyCluster cluster) { - return null; - } - - @Override - public Set getClusterLinks(Topology topology, TopologyCluster cluster) { - return null; - } - - @Override - public Set getPaths(Topology topology, DeviceId src, DeviceId dst) { - return null; - } - - @Override - public Set getPaths(Topology topology, DeviceId src, DeviceId dst, LinkWeight weight) { - return null; - } - - @Override - public boolean isInfrastructure(Topology topology, ConnectPoint connectPoint) { - return false; - } - - @Override - public boolean isBroadcastPoint(Topology topology, ConnectPoint connectPoint) { - return false; - } - - @Override - public void addListener(TopologyListener listener) { - } - - @Override - public void removeListener(TopologyListener listener) { - } - - @Override - public Set getDisjointPaths(Topology topology, DeviceId src, DeviceId dst) { - return null; - } - - @Override - public Set getDisjointPaths(Topology topology, DeviceId src, - DeviceId dst, LinkWeight weight) { - return null; - } - - @Override - public Set getDisjointPaths(Topology topology, DeviceId src, DeviceId dst, - Map riskProfile) { - return null; - } - - @Override - public Set getDisjointPaths(Topology topology, DeviceId src, - DeviceId dst, LinkWeight weight, - Map riskProfile) { - return null; - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterCommunicationServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterCommunicationServiceAdapter.java deleted file mode 100644 index 04f890c8..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterCommunicationServiceAdapter.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.cluster.messaging; - -import java.util.Set; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.function.Consumer; -import java.util.function.Function; - -import org.onosproject.cluster.NodeId; - -/** - * Testing adapter for the cluster communication service. - */ -public class ClusterCommunicationServiceAdapter - implements ClusterCommunicationService { - - @Override - public void addSubscriber(MessageSubject subject, - ClusterMessageHandler subscriber, - ExecutorService executor) { - } - - @Override - public void removeSubscriber(MessageSubject subject) {} - - @Override - public void broadcast(M message, MessageSubject subject, - Function encoder) { - } - - @Override - public void broadcastIncludeSelf(M message, - MessageSubject subject, Function encoder) { - } - - @Override - public CompletableFuture unicast(M message, MessageSubject subject, - Function encoder, NodeId toNodeId) { - return null; - } - - @Override - public void multicast(M message, MessageSubject subject, - Function encoder, Set nodes) { - } - - @Override - public CompletableFuture sendAndReceive(M message, - MessageSubject subject, Function encoder, - Function decoder, NodeId toNodeId) { - return null; - } - - @Override - public void addSubscriber(MessageSubject subject, - Function decoder, Function handler, - Function encoder, Executor executor) { - } - - @Override - public void addSubscriber(MessageSubject subject, - Function decoder, Function> handler, - Function encoder) { - } - - @Override - public void addSubscriber(MessageSubject subject, - Function decoder, Consumer handler, - Executor executor) { - - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterMessageTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterMessageTest.java deleted file mode 100644 index 22f841b4..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterMessageTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.cluster.messaging; - -import org.junit.Test; -import org.onosproject.cluster.NodeId; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -/** - * Units tests for ClusterMessage class. - */ -public class ClusterMessageTest { - private final MessageSubject subject1 = new MessageSubject("Message 1"); - private final MessageSubject subject2 = new MessageSubject("Message 2"); - - private final byte[] payload1 = {0, 1, 2, 3, 4, 5}; - private final byte[] payload2 = {0, 1, 2, 3, 4, 5, 6}; - - private final NodeId nodeId = new NodeId("node"); - - private final ClusterMessage message1 = - new ClusterMessage(nodeId, subject1, payload1); - private final ClusterMessage sameAsMessage1 = - new ClusterMessage(nodeId, subject1, payload1); - private final ClusterMessage message2 = - new ClusterMessage(nodeId, subject1, payload2); - private final ClusterMessage message3 = - new ClusterMessage(nodeId, subject2, payload1); - - /** - * Checks the operation of equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(message1, sameAsMessage1) - .addEqualityGroup(message2) - .addEqualityGroup(message3) - .testEquals(); - } - - /** - * Checks the construction of a FlowId object. - */ - @Test - public void testConstruction() { - assertThat(message1.payload(), is(payload1)); - assertThat(message1.sender(), is(nodeId)); - assertThat(message1.subject(), is(subject1)); - - byte[] response = {2, 2, 2, 2, 2, 2, 2, 2}; - message1.respond(response); - assertThat(message1.response(), is(response)); - } - - /** - * Tests the toBytes and fromBytes methods. - */ - @Test - public void testByteMethods() { - byte[] fromBytes = message3.getBytes(); - ClusterMessage message = ClusterMessage.fromBytes(fromBytes); - assertThat(message, is(message3)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/EndpointTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/EndpointTest.java deleted file mode 100644 index c88c711a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/EndpointTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.cluster.messaging; - - -import org.junit.Test; -import org.onlab.packet.IpAddress; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for the Endpoint class. - */ -public class EndpointTest { - IpAddress host1 = IpAddress.valueOf("1.2.3.4"); - IpAddress host2 = IpAddress.valueOf("1.2.3.5"); - - private final Endpoint endpoint1 = new Endpoint(host1, 1); - private final Endpoint sameAsEndpoint1 = new Endpoint(host1, 1); - private final Endpoint endpoint2 = new Endpoint(host2, 1); - private final Endpoint endpoint3 = new Endpoint(host1, 2); - - /** - * Checks that the MessageSubject class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(Endpoint.class); - } - - /** - * Checks the operation of equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(endpoint1, sameAsEndpoint1) - .addEqualityGroup(endpoint2) - .addEqualityGroup(endpoint3) - .testEquals(); - } - - /** - * Checks the construction of a MessageSubject object. - */ - @Test - public void testConstruction() { - assertThat(endpoint2.host(), is(host2)); - assertThat(endpoint2.port(), is(1)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/MessageSubjectTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/MessageSubjectTest.java deleted file mode 100644 index 498edd33..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/cluster/messaging/MessageSubjectTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.cluster.messaging; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for MessageSubject class. - */ -public class MessageSubjectTest { - private final MessageSubject subject1 = new MessageSubject("Message 1"); - private final MessageSubject sameAsSubject1 = new MessageSubject("Message 1"); - private final MessageSubject subject2 = new MessageSubject("Message 2"); - private final MessageSubject subject3 = new MessageSubject("Message 3"); - - /** - * Checks that the MessageSubject class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(MessageSubject.class); - } - - /** - * Checks the operation of equals(), hashCode() and toString() methods. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(subject1, sameAsSubject1) - .addEqualityGroup(subject2) - .addEqualityGroup(subject3) - .testEquals(); - } - - /** - * Checks the construction of a MessageSubject object. - */ - @Test - public void testConstruction() { - assertThat(subject3.value(), is("Message 3")); - MessageSubject serializerObject = new MessageSubject(); - assertThat(serializerObject.value(), is("")); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/persistence/PersistenceServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/persistence/PersistenceServiceAdapter.java deleted file mode 100644 index 3edfcc73..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/persistence/PersistenceServiceAdapter.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.persistence; - -import org.onosproject.persistence.PersistenceService; -import org.onosproject.persistence.PersistentMapBuilder; -import org.onosproject.persistence.PersistentSetBuilder; - -/** - * Adapter for PersistenceService. - */ -public class PersistenceServiceAdapter implements PersistenceService { - - @Override - public PersistentMapBuilder persistentMapBuilder() { - return null; - } - - @Override - public PersistentSetBuilder persistentSetBuilder() { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/persistence/TestPersistenceService.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/persistence/TestPersistenceService.java deleted file mode 100644 index a6d97458..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/persistence/TestPersistenceService.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.persistence; - -import java.util.Map; - -import org.onosproject.persistence.PersistentMapBuilder; -import org.onosproject.persistence.PersistentSetBuilder; -import org.onosproject.store.service.Serializer; - -import com.google.common.collect.Maps; - -/** - * PersistenceService that produces in memory maps for use in unit testing. - */ -public class TestPersistenceService extends PersistenceServiceAdapter { - @Override - public PersistentMapBuilder persistentMapBuilder() { - return new TestPersistentMapBuilder(); - } - - @Override - public PersistentSetBuilder persistentSetBuilder() { - throw new UnsupportedOperationException(); - } - - private static class TestPersistentMapBuilder implements PersistentMapBuilder { - - @Override - public PersistentMapBuilder withName(String name) { - return this; - } - - @Override - public PersistentMapBuilder withSerializer(Serializer serializer) { - return this; - } - - @Override - public Map build() { - return Maps.newConcurrentMap(); - } - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/AtomicValueEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/AtomicValueEventTest.java deleted file mode 100644 index 39481ca0..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/AtomicValueEventTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.store.service.AtomicValueEvent.Type.UPDATE; - -/** - * Unit tests for the AtomicValueEvent class. - */ -public class AtomicValueEventTest { - - AtomicValueEvent event1 = - new AtomicValueEvent<>("map1", UPDATE, "e1"); - AtomicValueEvent event2 = - new AtomicValueEvent<>("map1", UPDATE, "e2"); - AtomicValueEvent sameAsEvent2 = - new AtomicValueEvent<>("map1", UPDATE, "e2"); - AtomicValueEvent event3 = - new AtomicValueEvent<>("map2", UPDATE, "e2"); - - /** - * Checks that the SetEvent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(AtomicValueEvent.class); - } - - /** - * Checks the equals(), hashCode() and toString() operations. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(event1) - .addEqualityGroup(event2, sameAsEvent2) - .addEqualityGroup(event3) - .testEquals(); - } - - /** - * Checks that construction of the object is correct. - */ - @Test - public void testConstruction() { - assertThat(event1.type(), is(UPDATE)); - assertThat(event1.value(), is("e1")); - assertThat(event1.name(), is("map1")); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/ConsistentMapAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/ConsistentMapAdapter.java deleted file mode 100644 index d0c1adf6..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/ConsistentMapAdapter.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.Predicate; - -/** - * Testing adapter for the consistent map. - */ -public class ConsistentMapAdapter implements ConsistentMap { - @Override - public int size() { - return 0; - } - - @Override - public boolean isEmpty() { - return false; - } - - @Override - public boolean containsKey(K key) { - return false; - } - - @Override - public boolean containsValue(V value) { - return false; - } - - @Override - public Versioned get(K key) { - return null; - } - - @Override - public Versioned computeIfAbsent(K key, Function mappingFunction) { - return null; - } - - @Override - public Versioned compute(K key, BiFunction remappingFunction) { - return null; - } - - @Override - public Versioned computeIfPresent(K key, BiFunction remappingFunction) { - return null; - } - - @Override - public Versioned computeIf(K key, Predicate condition, - BiFunction remappingFunction) { - return null; - } - - @Override - public Versioned put(K key, V value) { - return null; - } - - @Override - public Versioned putAndGet(K key, V value) { - return null; - } - - @Override - public Versioned remove(K key) { - return null; - } - - @Override - public void clear() { - - } - - @Override - public Set keySet() { - return null; - } - - @Override - public Collection> values() { - return null; - } - - @Override - public Set>> entrySet() { - return null; - } - - @Override - public Versioned putIfAbsent(K key, V value) { - return null; - } - - @Override - public boolean remove(K key, V value) { - return false; - } - - @Override - public boolean remove(K key, long version) { - return false; - } - - @Override - public boolean replace(K key, V oldValue, V newValue) { - return false; - } - - @Override - public boolean replace(K key, long oldVersion, V newValue) { - return false; - } - - @Override - public void addListener(MapEventListener listener) { - - } - - @Override - public void removeListener(MapEventListener listener) { - - } - - @Override - public Map asJavaMap() { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/DatabaseUpdateTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/DatabaseUpdateTest.java deleted file mode 100644 index ad439d66..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/DatabaseUpdateTest.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -/** - * Unit Tests for DatabseUpdate class. - */ - -public class DatabaseUpdateTest { - - private final DatabaseUpdate stats1 = DatabaseUpdate.newBuilder() - .withCurrentValue("1".getBytes()) - .withValue("2".getBytes()) - .withCurrentVersion(3) - .withKey("4") - .withMapName("5") - .withType(DatabaseUpdate.Type.PUT) - .build(); - - private final DatabaseUpdate stats2 = DatabaseUpdate.newBuilder() - .withCurrentValue("1".getBytes()) - .withValue("2".getBytes()) - .withCurrentVersion(3) - .withKey("4") - .withMapName("5") - .withType(DatabaseUpdate.Type.REMOVE) - .build(); - - private final DatabaseUpdate stats3 = DatabaseUpdate.newBuilder() - .withCurrentValue("1".getBytes()) - .withValue("2".getBytes()) - .withCurrentVersion(3) - .withKey("4") - .withMapName("5") - .withType(DatabaseUpdate.Type.REMOVE_IF_VALUE_MATCH) - .build(); - - private final DatabaseUpdate stats4 = DatabaseUpdate.newBuilder() - .withCurrentValue("1".getBytes()) - .withValue("2".getBytes()) - .withCurrentVersion(3) - .withKey("4") - .withMapName("5") - .withType(DatabaseUpdate.Type.REMOVE_IF_VERSION_MATCH) - .build(); - - private final DatabaseUpdate stats5 = DatabaseUpdate.newBuilder() - .withCurrentValue("1".getBytes()) - .withValue("2".getBytes()) - .withCurrentVersion(3) - .withKey("4") - .withMapName("5") - .withType(DatabaseUpdate.Type.PUT_IF_VALUE_MATCH) - .build(); - - private final DatabaseUpdate stats6 = DatabaseUpdate.newBuilder() - .withCurrentValue("1".getBytes()) - .withValue("2".getBytes()) - .withCurrentVersion(3) - .withKey("4") - .withMapName("5") - .withType(DatabaseUpdate.Type.PUT_IF_VERSION_MATCH) - .build(); - - /** - * Tests the constructor for the class. - */ - @Test - public void testConstruction() { - assertThat(stats1.currentValue(), is("1".getBytes())); - assertThat(stats1.value(), is("2".getBytes())); - assertThat(stats1.currentVersion(), is(3L)); - assertThat(stats1.key(), is("4")); - assertThat(stats1.mapName(), is("5")); - assertThat(stats1.type(), is(DatabaseUpdate.Type.PUT)); - } - - /** - * Tests the equals, hashCode and toString methods using Guava EqualsTester. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(stats1, stats1) - .addEqualityGroup(stats2) - .testEquals(); - - new EqualsTester() - .addEqualityGroup(stats3, stats3) - .addEqualityGroup(stats4) - .testEquals(); - - new EqualsTester() - .addEqualityGroup(stats5, stats5) - .addEqualityGroup(stats6) - .testEquals(); - } - - /** - * Tests if the toString method returns a consistent value for hashing. - */ - @Test - public void testToString() { - assertThat(stats1.toString(), is(stats1.toString())); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/EventuallyConsistentMapAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/EventuallyConsistentMapAdapter.java deleted file mode 100644 index 07f5fb4d..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/EventuallyConsistentMapAdapter.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; -import java.util.function.BiFunction; - -/** - * Testing adapter for EventuallyConsistentMap. - */ -public class EventuallyConsistentMapAdapter implements EventuallyConsistentMap { - @Override - public int size() { - return 0; - } - - @Override - public boolean isEmpty() { - return false; - } - - @Override - public boolean containsKey(K key) { - return false; - } - - @Override - public boolean containsValue(V value) { - return false; - } - - @Override - public V get(K key) { - return null; - } - - @Override - public void put(K key, V value) { - - } - - @Override - public V remove(K key) { - return null; - } - - @Override - public void remove(K key, V value) { - - } - - @Override - public V compute(K key, BiFunction recomputeFunction) { - return null; - } - - @Override - public void putAll(Map m) { - - } - - @Override - public void clear() { - - } - - @Override - public Set keySet() { - return null; - } - - @Override - public Collection values() { - return null; - } - - @Override - public Set> entrySet() { - return null; - } - - @Override - public void addListener(EventuallyConsistentMapListener listener) { - - } - - @Override - public void removeListener(EventuallyConsistentMapListener listener) { - - } - - @Override - public void destroy() { - - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/EventuallyConsistentMapEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/EventuallyConsistentMapEventTest.java deleted file mode 100644 index a4163cb6..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/EventuallyConsistentMapEventTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT; -import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.REMOVE; - -/** - * Unit tests for the EventuallyConsistentMapEvent class. - */ -public class EventuallyConsistentMapEventTest { - - EventuallyConsistentMapEvent event1 = - new EventuallyConsistentMapEvent<>("map1", PUT, "k1", "v1"); - EventuallyConsistentMapEvent event2 = - new EventuallyConsistentMapEvent<>("map1", REMOVE, "k1", "v1"); - EventuallyConsistentMapEvent sameAsEvent2 = - new EventuallyConsistentMapEvent<>("map1", REMOVE, "k1", "v1"); - EventuallyConsistentMapEvent event3 = - new EventuallyConsistentMapEvent<>("map1", PUT, "k2", "v1"); - EventuallyConsistentMapEvent event4 = - new EventuallyConsistentMapEvent<>("map1", PUT, "k1", "v2"); - EventuallyConsistentMapEvent event5 = - new EventuallyConsistentMapEvent<>("map2", REMOVE, "k1", "v2"); - EventuallyConsistentMapEvent event6 = - new EventuallyConsistentMapEvent<>("map3", REMOVE, "k1", "v2"); - - - /** - * Checks the equals(), hashCode() and toString() operations. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(event1) - .addEqualityGroup(event2, sameAsEvent2) - .addEqualityGroup(event3) - .addEqualityGroup(event4) - .addEqualityGroup(event5) - .addEqualityGroup(event6) - .testEquals(); - } - - /** - * Checks that the EventuallyConsistentMapEvent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(EventuallyConsistentMapEvent.class); - } - - /** - * Checks that construction of the object is correct. - */ - @Test - public void testConstruction() { - assertThat(event1.type(), is(PUT)); - assertThat(event1.key(), is("k1")); - assertThat(event1.value(), is("v1")); - assertThat(event1.name(), is("map1")); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/MapEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/MapEventTest.java deleted file mode 100644 index 47fba6c9..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/MapEventTest.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -/** - * MapEvent unit tests. - */ -public class MapEventTest { - - private final Versioned vStats = new Versioned<>(2, 1); - - private final MapEvent stats1 = new MapEvent<>("a", MapEvent.Type.INSERT, "1", vStats); - - private final MapEvent stats2 = new MapEvent<>("a", MapEvent.Type.REMOVE, "1", vStats); - - private final MapEvent stats3 = new MapEvent<>("a", MapEvent.Type.UPDATE, "1", vStats); - - /** - * Tests the creation of the MapEvent object. - */ - @Test - public void testConstruction() { - assertThat(stats1.name(), is("a")); - assertThat(stats1.type(), is(MapEvent.Type.INSERT)); - assertThat(stats1.key(), is("1")); - assertThat(stats1.value(), is(vStats)); - } - - /** - * Tests the equals, hashCode and toString methods using Guava EqualsTester. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(stats1, stats1) - .addEqualityGroup(stats2) - .addEqualityGroup(stats3) - .testEquals(); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/MultiValuedTimestampTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/MultiValuedTimestampTest.java deleted file mode 100644 index 43475e45..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/MultiValuedTimestampTest.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import com.google.common.testing.EqualsTester; - -import org.junit.Assert; -import org.junit.Test; - -import java.lang.reflect.Constructor; -import java.util.Arrays; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * MultiValuedTimestamp unit tests. - */ -public class MultiValuedTimestampTest { - - private final MultiValuedTimestamp stats1 = new MultiValuedTimestamp<>(1, 3); - - private final MultiValuedTimestamp stats2 = new MultiValuedTimestamp<>(1, 2); - - - /** - * Tests the creation of the MapEvent object. - */ - @Test - public void testConstruction() { - assertThat(stats1.value1(), is(1)); - assertThat(stats1.value2(), is(3)); - } - - /** - * Tests the toCompare function. - */ - @Test - public void testToCompare() { - assertThat(stats1.compareTo(stats2), is(1)); - } - - /** - * Tests the equals, hashCode and toString methods using Guava EqualsTester. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(stats1, stats1) - .addEqualityGroup(stats2) - .testEquals(); - } - - /** - * Tests that the empty argument list constructor for serialization - * is present and creates a proper object. - */ - @Test - public void testSerializerConstructor() { - try { - Constructor[] constructors = MultiValuedTimestamp.class.getDeclaredConstructors(); - assertThat(constructors, notNullValue()); - Arrays.stream(constructors).filter(ctor -> - ctor.getParameterTypes().length == 0) - .forEach(noParamsCtor -> { - try { - noParamsCtor.setAccessible(true); - MultiValuedTimestamp stats = - (MultiValuedTimestamp) noParamsCtor.newInstance(); - assertThat(stats, notNullValue()); - } catch (Exception e) { - Assert.fail("Exception instantiating no parameters constructor"); - } - }); - } catch (Exception e) { - Assert.fail("Exception looking up constructors"); - } - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/SetEventTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/SetEventTest.java deleted file mode 100644 index 5cc89d85..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/SetEventTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; -import static org.onosproject.store.service.SetEvent.Type.ADD; -import static org.onosproject.store.service.SetEvent.Type.REMOVE; - -/** - * Unit tests for the SetEvent class. - */ -public class SetEventTest { - - SetEvent event1 = - new SetEvent<>("map1", ADD, "e1"); - SetEvent event2 = - new SetEvent<>("map1", REMOVE, "e1"); - SetEvent sameAsEvent2 = - new SetEvent<>("map1", REMOVE, "e1"); - SetEvent event3 = - new SetEvent<>("map1", ADD, "e2"); - SetEvent event4 = - new SetEvent<>("map1", REMOVE, "e2"); - - /** - * Checks that the SetEvent class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(EventuallyConsistentMapEvent.class); - } - - /** - * Checks the equals(), hashCode() and toString() operations. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(event1) - .addEqualityGroup(event2, sameAsEvent2) - .addEqualityGroup(event3) - .addEqualityGroup(event4) - .testEquals(); - } - - /** - * Checks that construction of the object is correct. - */ - @Test - public void testConstruction() { - assertThat(event1.type(), is(ADD)); - assertThat(event1.entry(), is("e1")); - assertThat(event1.name(), is("map1")); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/StorageServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/StorageServiceAdapter.java deleted file mode 100644 index ec04e331..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/StorageServiceAdapter.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -/** - * Adapter for the storage service. - */ -public class StorageServiceAdapter implements StorageService { - @Override - public EventuallyConsistentMapBuilder eventuallyConsistentMapBuilder() { - return null; - } - - @Override - public ConsistentMapBuilder consistentMapBuilder() { - return null; - } - - @Override - public DistributedSetBuilder setBuilder() { - return null; - } - - @Override - public DistributedQueueBuilder queueBuilder() { - return null; - } - - @Override - public AtomicCounterBuilder atomicCounterBuilder() { - return null; - } - - @Override - public AtomicValueBuilder atomicValueBuilder() { - return null; - } - - @Override - public TransactionContextBuilder transactionContextBuilder() { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestAtomicCounter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestAtomicCounter.java deleted file mode 100644 index 8c577df9..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestAtomicCounter.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.concurrent.atomic.AtomicLong; - -/** - * Test implementation of atomic counter. - */ -public final class TestAtomicCounter implements AtomicCounter { - final AtomicLong value; - - private TestAtomicCounter() { - value = new AtomicLong(); - } - - @Override - public long incrementAndGet() { - return value.incrementAndGet(); - } - - @Override - public long getAndIncrement() { - return value.getAndIncrement(); - } - - @Override - public long getAndAdd(long delta) { - return value.getAndAdd(delta); - } - - @Override - public long addAndGet(long delta) { - return value.addAndGet(delta); - } - - @Override - public void set(long value) { - this.value.set(value); - } - - @Override - public boolean compareAndSet(long expectedValue, long updateValue) { - return value.compareAndSet(expectedValue, updateValue); - } - - @Override - public long get() { - return value.get(); - } - - public static AtomicCounterBuilder builder() { - return new Builder(); - } - - public static class Builder implements AtomicCounterBuilder { - @Override - public AtomicCounterBuilder withName(String name) { - return this; - } - - @Override - public AtomicCounterBuilder withPartitionsDisabled() { - return this; - } - - @Override - public AtomicCounterBuilder withMeteringDisabled() { - return this; - } - - @Override - public AsyncAtomicCounter buildAsyncCounter() { - throw new UnsupportedOperationException("Async Counter is not supported"); - } - - @Override - public AtomicCounter build() { - return new TestAtomicCounter(); - } - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java deleted file mode 100644 index 0136a94c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.atomic.AtomicLong; -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -import org.onosproject.core.ApplicationId; -import static org.onosproject.store.service.MapEvent.Type; -import static org.onosproject.store.service.MapEvent.Type.*; - -/** - * Test implementation of the consistent map. - */ -public final class TestConsistentMap extends ConsistentMapAdapter { - - private final List> listeners; - private final HashMap map; - private final String mapName; - private final AtomicLong counter = new AtomicLong(0); - - private TestConsistentMap(String mapName) { - map = new HashMap<>(); - listeners = new LinkedList<>(); - this.mapName = mapName; - } - - private Versioned version(V v) { - return new Versioned<>(v, counter.incrementAndGet(), System.currentTimeMillis()); - } - - /** - * Notify all listeners of an event. - */ - private void notifyListeners(String mapName, Type type, - K key, Versioned value) { - MapEvent event = new MapEvent<>(mapName, type, key, value); - listeners.forEach( - listener -> listener.event(event) - ); - } - - @Override - public int size() { - return map.size(); - } - - @Override - public boolean isEmpty() { - return map.isEmpty(); - } - - @Override - public boolean containsKey(K key) { - return map.containsKey(key); - } - - @Override - public boolean containsValue(V value) { - return map.containsValue(value); - } - - @Override - public Versioned get(K key) { - V value = map.get(key); - if (value != null) { - return version(value); - } else { - return null; - } - } - - @Override - public Versioned computeIfAbsent(K key, Function mappingFunction) { - Versioned result = version(map.computeIfAbsent(key, mappingFunction)); - notifyListeners(mapName, INSERT, key, result); - return result; - } - - @Override - public Versioned compute(K key, BiFunction remappingFunction) { - return version(map.compute(key, remappingFunction)); - } - - @Override - public Versioned computeIfPresent(K key, BiFunction remappingFunction) { - return version(map.computeIfPresent(key, remappingFunction)); - } - - @Override - public Versioned computeIf(K key, Predicate condition, - BiFunction remappingFunction) { - return null; - } - - @Override - public Versioned put(K key, V value) { - Versioned result = version(value); - if (map.put(key, value) == null) { - notifyListeners(mapName, INSERT, key, result); - } else { - notifyListeners(mapName, UPDATE, key, result); - } - return result; - } - - @Override - public Versioned putAndGet(K key, V value) { - Versioned result = version(map.put(key, value)); - notifyListeners(mapName, UPDATE, key, result); - return result; - } - - @Override - public Versioned remove(K key) { - Versioned result = version(map.remove(key)); - notifyListeners(mapName, REMOVE, key, result); - return result; - } - - @Override - public void clear() { - map.clear(); - } - - @Override - public Set keySet() { - return map.keySet(); - } - - @Override - public Collection> values() { - return map - .values() - .stream() - .map(this::version) - .collect(Collectors.toList()); - } - - @Override - public Set>> entrySet() { - return super.entrySet(); - } - - @Override - public Versioned putIfAbsent(K key, V value) { - Versioned result = version(map.putIfAbsent(key, value)); - if (map.get(key).equals(value)) { - notifyListeners(mapName, INSERT, key, result); - } - return result; - } - - @Override - public boolean remove(K key, V value) { - boolean removed = map.remove(key, value); - if (removed) { - notifyListeners(mapName, REMOVE, key, null); - } - return removed; - } - - @Override - public boolean remove(K key, long version) { - boolean removed = map.remove(key, version); - if (removed) { - notifyListeners(mapName, REMOVE, key, null); - } - return removed; - } - - @Override - public boolean replace(K key, V oldValue, V newValue) { - boolean replaced = map.replace(key, oldValue, newValue); - if (replaced) { - notifyListeners(mapName, REMOVE, key, null); - } - return replaced; - } - - @Override - public boolean replace(K key, long oldVersion, V newValue) { - boolean replaced = map.replace(key, map.get(key), newValue); - if (replaced) { - notifyListeners(mapName, REMOVE, key, null); - } - return replaced; - } - - @Override - public void addListener(MapEventListener listener) { - listeners.add(listener); - } - - @Override - public void removeListener(MapEventListener listener) { - listeners.remove(listener); - } - - @Override - public Map asJavaMap() { - return map; - } - - public static Builder builder() { - return new Builder(); - } - - public static class Builder implements ConsistentMapBuilder { - String mapName = "map"; - - @Override - public ConsistentMapBuilder withName(String mapName) { - this.mapName = mapName; - return this; - } - - @Override - public ConsistentMapBuilder withApplicationId(ApplicationId id) { - return this; - } - - @Override - public ConsistentMapBuilder withSerializer(Serializer serializer) { - return this; - } - - @Override - public ConsistentMapBuilder withPartitionsDisabled() { - return this; - } - - @Override - public ConsistentMapBuilder withUpdatesDisabled() { - return this; - } - - @Override - public ConsistentMapBuilder withPurgeOnUninstall() { - return this; - } - - @Override - public ConsistentMapBuilder withRelaxedReadConsistency() { - return this; - } - - @Override - public ConsistentMapBuilder withMeteringDisabled() { - return this; - } - - @Override - public ConsistentMap build() { - return new TestConsistentMap<>(mapName); - } - - @Override - public AsyncConsistentMap buildAsyncMap() { - return null; - } - - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java deleted file mode 100644 index 02462e85..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestEventuallyConsistentMap.java +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.function.BiFunction; - -import org.onlab.util.KryoNamespace; -import org.onosproject.cluster.NodeId; -import org.onosproject.store.Timestamp; - -import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT; -import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.REMOVE; - -/** - * Testing version of an Eventually Consistent Map. - */ - -public final class TestEventuallyConsistentMap extends EventuallyConsistentMapAdapter { - - private final HashMap map; - private final String mapName; - private final List> listeners; - private final BiFunction> peerUpdateFunction; - - private TestEventuallyConsistentMap(String mapName, - BiFunction> peerUpdateFunction) { - map = new HashMap<>(); - listeners = new LinkedList<>(); - this.mapName = mapName; - this.peerUpdateFunction = peerUpdateFunction; - } - - /** - * Notify all listeners of an event. - */ - private void notifyListeners(EventuallyConsistentMapEvent event) { - listeners.forEach( - listener -> listener.event(event) - ); - } - - @Override - public int size() { - return map.size(); - } - - @Override - public boolean isEmpty() { - return map.isEmpty(); - } - - @Override - public boolean containsKey(K key) { - return map.containsKey(key); - } - - @Override - public boolean containsValue(V value) { - return map.containsValue(value); - } - - @Override - public V get(K key) { - return map.get(key); - } - - @Override - public void put(K key, V value) { - map.put(key, value); - EventuallyConsistentMapEvent addEvent = - new EventuallyConsistentMapEvent<>(mapName, PUT, key, value); - notifyListeners(addEvent); - if (peerUpdateFunction != null) { - peerUpdateFunction.apply(key, value); - } - } - - @Override - public V remove(K key) { - V result = map.remove(key); - if (result != null) { - EventuallyConsistentMapEvent removeEvent = - new EventuallyConsistentMapEvent<>(mapName, REMOVE, - key, map.get(key)); - notifyListeners(removeEvent); - } - return result; - } - - @Override - public void remove(K key, V value) { - boolean removed = map.remove(key, value); - if (removed) { - EventuallyConsistentMapEvent removeEvent = - new EventuallyConsistentMapEvent<>(mapName, REMOVE, key, value); - notifyListeners(removeEvent); - } - } - - @Override - public V compute(K key, BiFunction recomputeFunction) { - return map.compute(key, recomputeFunction); - } - - @Override - public void putAll(Map m) { - map.putAll(m); - } - - @Override - public void clear() { - map.clear(); - } - - @Override - public Set keySet() { - return map.keySet(); - } - - @Override - public Collection values() { - return map.values(); - } - - @Override - public Set> entrySet() { - return map.entrySet(); - } - - public static Builder builder() { - return new Builder<>(); - } - - @Override - public void addListener(EventuallyConsistentMapListener listener) { - listeners.add(listener); - } - - @Override - public void removeListener(EventuallyConsistentMapListener listener) { - listeners.remove(listener); - } - - public static class Builder implements EventuallyConsistentMapBuilder { - private String name; - private BiFunction> peerUpdateFunction; - - @Override - public EventuallyConsistentMapBuilder withName(String name) { - this.name = name; - return this; - } - - @Override - public EventuallyConsistentMapBuilder withSerializer(KryoNamespace.Builder serializerBuilder) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder - withTimestampProvider(BiFunction timestampProvider) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withEventExecutor(ExecutorService executor) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withCommunicationExecutor(ExecutorService executor) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withBackgroundExecutor(ScheduledExecutorService executor) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder - withPeerUpdateFunction(BiFunction> peerUpdateFunction) { - this.peerUpdateFunction = peerUpdateFunction; - return this; - } - - @Override - public EventuallyConsistentMapBuilder withTombstonesDisabled() { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withAntiEntropyPeriod(long period, TimeUnit unit) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withFasterConvergence() { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withPersistence() { - return this; - } - - @Override - public EventuallyConsistentMap build() { - if (name == null) { - name = "test"; - } - return new TestEventuallyConsistentMap<>(name, peerUpdateFunction); - } - } - -} - diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestStorageService.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestStorageService.java deleted file mode 100644 index 9b52a305..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/TestStorageService.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -public class TestStorageService extends StorageServiceAdapter { - - - @Override - public EventuallyConsistentMapBuilder eventuallyConsistentMapBuilder() { - return TestEventuallyConsistentMap.builder(); - } - - @Override - public ConsistentMapBuilder consistentMapBuilder() { - return TestConsistentMap.builder(); - } - - @Override - public DistributedSetBuilder setBuilder() { - throw new UnsupportedOperationException("setBuilder"); - } - - @Override - public DistributedQueueBuilder queueBuilder() { - throw new UnsupportedOperationException("queueBuilder"); - } - - @Override - public AtomicCounterBuilder atomicCounterBuilder() { - return TestAtomicCounter.builder(); - } - - @Override - public AtomicValueBuilder atomicValueBuilder() { - throw new UnsupportedOperationException("atomicValueBuilder"); - } - - @Override - public TransactionContextBuilder transactionContextBuilder() { - throw new UnsupportedOperationException("transactionContextBuilder"); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/VersionedTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/VersionedTest.java deleted file mode 100644 index fbe3271b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/VersionedTest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import com.google.common.testing.EqualsTester; -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -/** - * Versioned unit tests. - */ -public class VersionedTest { - - private final Versioned stats1 = new Versioned<>(1, 2, 3); - - private final Versioned stats2 = new Versioned<>(1, 2); - - /** - * Tests the creation of the MapEvent object. - */ - @Test - public void testConstruction() { - assertThat(stats1.value(), is(1)); - assertThat(stats1.version(), is(2L)); - assertThat(stats1.creationTime(), is(3L)); - } - - /** - * Maps an Integer to a String - Utility function to test the map function. - * @param a Actual Integer parameter. - * @return String Mapped valued. - */ - public static String transform(Integer a) { - return Integer.toString(a); - } - - /** - * Tests the map function. - */ - @Test - public void testMap() { - Versioned tempObj = stats1.map(VersionedTest::transform); - assertThat(tempObj.value(), is("1")); - } - - /** - * Tests the valueOrElse method. - */ - @Test - public void testOrElse() { - Versioned vv = new Versioned<>("foo", 1); - Versioned nullVV = null; - assertThat(Versioned.valueOrElse(vv, "bar"), is("foo")); - assertThat(Versioned.valueOrElse(nullVV, "bar"), is("bar")); - } - - /** - * Tests the equals, hashCode and toString methods using Guava EqualsTester. - */ - @Test - public void testEquals() { - new EqualsTester() - .addEqualityGroup(stats1, stats1) - .addEqualityGroup(stats2) - .testEquals(); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/WallClockTimestampTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/WallClockTimestampTest.java deleted file mode 100644 index 97f5a39b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/store/service/WallClockTimestampTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.store.service; - -import static org.junit.Assert.assertTrue; - -import java.nio.ByteBuffer; - -import org.junit.Test; -import org.onosproject.store.Timestamp; -import org.onlab.util.KryoNamespace; - -import com.google.common.testing.EqualsTester; - -/** - * Tests for {@link WallClockTimestamp}. - */ -public class WallClockTimestampTest { - - @Test - public final void testBasic() throws InterruptedException { - WallClockTimestamp ts1 = new WallClockTimestamp(); - Thread.sleep(50); - WallClockTimestamp ts2 = new WallClockTimestamp(); - long stamp = System.currentTimeMillis() + 10000; - WallClockTimestamp ts3 = new WallClockTimestamp(stamp); - - - assertTrue(ts1.compareTo(ts1) == 0); - assertTrue(ts2.compareTo(ts1) > 0); - assertTrue(ts1.compareTo(ts2) < 0); - assertTrue(ts3.unixTimestamp() == stamp); - } - - @Test - public final void testKryoSerializable() { - WallClockTimestamp ts1 = new WallClockTimestamp(); - WallClockTimestamp ts2 = new WallClockTimestamp(System.currentTimeMillis() + 10000); - final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024); - final KryoNamespace kryos = KryoNamespace.newBuilder() - .register(WallClockTimestamp.class) - .build(); - - kryos.serialize(ts1, buffer); - buffer.flip(); - Timestamp copy = kryos.deserialize(buffer); - - new EqualsTester() - .addEqualityGroup(ts1, copy) - .addEqualityGroup(ts2) - .testEquals(); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/UiExtensionServiceAdapter.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/UiExtensionServiceAdapter.java deleted file mode 100644 index 68d9264c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/UiExtensionServiceAdapter.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import java.util.List; - -/** - * Adapter for testing against UI extension service. - */ -public class UiExtensionServiceAdapter implements UiExtensionService { - @Override - public void register(UiExtension extension) { - } - - @Override - public void unregister(UiExtension extension) { - } - - @Override - public List getExtensions() { - return null; - } - - @Override - public UiExtension getViewExtension(String viewId) { - return null; - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/UiExtensionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/UiExtensionTest.java deleted file mode 100644 index bd3d15f6..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/UiExtensionTest.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui; - -import com.google.common.collect.ImmutableList; -import org.junit.Test; - -import java.io.IOException; -import java.util.List; - -import static com.google.common.io.ByteStreams.toByteArray; -import static org.junit.Assert.*; -import static org.onosproject.ui.UiView.Category.OTHER; - -/** - * Tests the default user interface extension descriptor. - */ -public class UiExtensionTest { - - private static final String FOO_ID = "foo"; - private static final String FOO_LABEL = "Foo View"; - private static final String BAR_ID = "bar"; - private static final String BAR_LABEL = "Bar View"; - private static final String CUSTOM = "custom"; - - - private static final UiView FOO_VIEW = new UiView(OTHER, FOO_ID, FOO_LABEL); - private static final UiView BAR_VIEW = new UiView(OTHER, BAR_ID, BAR_LABEL); - private static final UiView HIDDEN_VIEW = new UiViewHidden(FOO_ID); - - private static final UiMessageHandlerFactory MH_FACTORY = () -> null; - private static final UiTopoOverlayFactory TO_FACTORY = () -> null; - - private final ClassLoader cl = getClass().getClassLoader(); - - private List viewList; - private UiExtension ext; - private String css; - private String js; - private UiView view; - - - - @Test - public void basics() throws IOException { - viewList = ImmutableList.of(FOO_VIEW); - ext = new UiExtension.Builder(cl, viewList).build(); - - css = new String(toByteArray(ext.css())); - assertTrue("incorrect css stream", css.contains("foo-css")); - js = new String(toByteArray(ext.js())); - assertTrue("incorrect js stream", js.contains("foo-js")); - - assertEquals("expected 1 view", 1, ext.views().size()); - view = ext.views().get(0); - assertEquals("wrong view category", OTHER, view.category()); - assertEquals("wrong view id", FOO_ID, view.id()); - assertEquals("wrong view label", FOO_LABEL, view.label()); - - assertNull("unexpected message handler factory", ext.messageHandlerFactory()); - assertNull("unexpected topo overlay factory", ext.topoOverlayFactory()); - } - - @Test - public void withPath() throws IOException { - viewList = ImmutableList.of(FOO_VIEW); - ext = new UiExtension.Builder(cl, viewList) - .resourcePath(CUSTOM) - .build(); - - css = new String(toByteArray(ext.css())); - assertTrue("incorrect css stream", css.contains("custom-css")); - js = new String(toByteArray(ext.js())); - assertTrue("incorrect js stream", js.contains("custom-js")); - - assertEquals("expected 1 view", 1, ext.views().size()); - view = ext.views().get(0); - assertEquals("wrong view category", OTHER, view.category()); - assertEquals("wrong view id", FOO_ID, view.id()); - assertEquals("wrong view label", FOO_LABEL, view.label()); - - assertNull("unexpected message handler factory", ext.messageHandlerFactory()); - assertNull("unexpected topo overlay factory", ext.topoOverlayFactory()); - } - - @Test - public void messageHandlerFactory() { - viewList = ImmutableList.of(FOO_VIEW); - ext = new UiExtension.Builder(cl, viewList) - .messageHandlerFactory(MH_FACTORY) - .build(); - - assertEquals("wrong message handler factory", MH_FACTORY, - ext.messageHandlerFactory()); - assertNull("unexpected topo overlay factory", ext.topoOverlayFactory()); - } - - @Test - public void topoOverlayFactory() { - viewList = ImmutableList.of(HIDDEN_VIEW); - ext = new UiExtension.Builder(cl, viewList) - .topoOverlayFactory(TO_FACTORY) - .build(); - - assertNull("unexpected message handler factory", ext.messageHandlerFactory()); - assertEquals("wrong topo overlay factory", TO_FACTORY, - ext.topoOverlayFactory()); - } - - @Test - public void twoViews() { - viewList = ImmutableList.of(FOO_VIEW, BAR_VIEW); - ext = new UiExtension.Builder(cl, viewList).build(); - - assertEquals("expected 2 views", 2, ext.views().size()); - - view = ext.views().get(0); - assertEquals("wrong view category", OTHER, view.category()); - assertEquals("wrong view id", FOO_ID, view.id()); - assertEquals("wrong view label", FOO_LABEL, view.label()); - - view = ext.views().get(1); - assertEquals("wrong view category", OTHER, view.category()); - assertEquals("wrong view id", BAR_ID, view.id()); - assertEquals("wrong view label", BAR_LABEL, view.label()); - } -} \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/TableModelTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/TableModelTest.java deleted file mode 100644 index 7524bcb3..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/TableModelTest.java +++ /dev/null @@ -1,338 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table; - -import org.junit.Test; -import org.onosproject.ui.table.TableModel.SortDir; -import org.onosproject.ui.table.cell.DefaultCellFormatter; -import org.onosproject.ui.table.cell.HexFormatter; - -import static org.junit.Assert.*; - -/** - * Unit tests for {@link TableModel}. - */ -public class TableModelTest { - - private static final String UNEX_SORT = "unexpected sort: index "; - - private static final String FOO = "foo"; - private static final String BAR = "bar"; - private static final String ZOO = "zoo"; - - private enum StarWars { - LUKE_SKYWALKER, LEIA_ORGANA, HAN_SOLO, C3PO, R2D2, JABBA_THE_HUTT - } - - private static class ParenFormatter implements CellFormatter { - @Override - public String format(Object value) { - return "(" + value + ")"; - } - } - - private TableModel tm; - private TableModel.Row[] rows; - private TableModel.Row row; - private CellFormatter fmt; - - @Test(expected = NullPointerException.class) - public void guardAgainstNull() { - tm = new TableModel(null); - } - - @Test(expected = IllegalArgumentException.class) - public void guardAgainstEmpty() { - tm = new TableModel(); - } - - @Test(expected = IllegalArgumentException.class) - public void guardAgainstDuplicateCols() { - tm = new TableModel(FOO, BAR, FOO); - } - - @Test - public void basic() { - tm = new TableModel(FOO, BAR); - assertEquals("column count", 2, tm.columnCount()); - assertEquals("row count", 0, tm.rowCount()); - } - - @Test - public void defaultFormatter() { - tm = new TableModel(FOO); - fmt = tm.getFormatter(FOO); - assertTrue("Wrong formatter", fmt instanceof DefaultCellFormatter); - } - - @Test(expected = IllegalArgumentException.class) - public void formatterBadColumn() { - tm = new TableModel(FOO); - fmt = tm.getFormatter(BAR); - } - - @Test - public void altFormatter() { - tm = new TableModel(FOO, BAR); - tm.setFormatter(BAR, new ParenFormatter()); - - fmt = tm.getFormatter(FOO); - assertTrue("Wrong formatter", fmt instanceof DefaultCellFormatter); - assertEquals("Wrong result", "2", fmt.format(2)); - - fmt = tm.getFormatter(BAR); - assertTrue("Wrong formatter", fmt instanceof ParenFormatter); - assertEquals("Wrong result", "(2)", fmt.format(2)); - } - - @Test - public void emptyRow() { - tm = new TableModel(FOO, BAR); - tm.addRow(); - assertEquals("bad row count", 1, tm.rowCount()); - } - - @Test(expected = IllegalArgumentException.class) - public void rowBadColumn() { - tm = new TableModel(FOO, BAR); - tm.addRow().cell(ZOO, 2); - } - - @Test - public void simpleRow() { - tm = new TableModel(FOO, BAR); - tm.addRow().cell(FOO, 3).cell(BAR, true); - assertEquals("bad row count", 1, tm.rowCount()); - row = tm.getRows()[0]; - assertEquals("bad cell", 3, row.get(FOO)); - assertEquals("bad cell", true, row.get(BAR)); - } - - - private static final String ONE = "one"; - private static final String TWO = "two"; - private static final String THREE = "three"; - private static final String FOUR = "four"; - private static final String ELEVEN = "eleven"; - private static final String TWELVE = "twelve"; - private static final String TWENTY = "twenty"; - private static final String THIRTY = "thirty"; - - private static final String[] NAMES = { - FOUR, - THREE, - TWO, - ONE, - ELEVEN, - TWELVE, - THIRTY, - TWENTY, - }; - private static final String[] SORTED_NAMES = { - ELEVEN, - FOUR, - ONE, - THIRTY, - THREE, - TWELVE, - TWENTY, - TWO, - }; - - private static final int[] NUMBERS = { - 4, 3, 2, 1, 11, 12, 30, 20 - }; - - private static final int[] SORTED_NUMBERS = { - 1, 2, 3, 4, 11, 12, 20, 30 - }; - - private static final String[] SORTED_HEX = { - "0x1", "0x2", "0x3", "0x4", "0xb", "0xc", "0x14", "0x1e" - }; - - @Test - public void verifyTestData() { - // not a unit test per se, but will fail if we don't keep - // the three test arrays in sync - int nalen = NAMES.length; - int snlen = SORTED_NAMES.length; - int nulen = NUMBERS.length; - - if (nalen != snlen || nalen != nulen) { - fail("test data array size discrepancy"); - } - } - - private void initUnsortedTable() { - tm = new TableModel(FOO, BAR); - for (int i = 0; i < NAMES.length; i++) { - tm.addRow().cell(FOO, NAMES[i]).cell(BAR, NUMBERS[i]); - } - } - - @Test - public void tableStringSort() { - initUnsortedTable(); - - // sort by name - tm.sort(FOO, SortDir.ASC); - - // verify results - rows = tm.getRows(); - int nr = rows.length; - assertEquals("row count", NAMES.length, nr); - for (int i = 0; i < nr; i++) { - assertEquals(UNEX_SORT + i, SORTED_NAMES[i], rows[i].get(FOO)); - } - - // now the other way - tm.sort(FOO, SortDir.DESC); - - // verify results - rows = tm.getRows(); - nr = rows.length; - assertEquals("row count", NAMES.length, nr); - for (int i = 0; i < nr; i++) { - assertEquals(UNEX_SORT + i, - SORTED_NAMES[nr - 1 - i], rows[i].get(FOO)); - } - } - - @Test - public void tableNumberSort() { - initUnsortedTable(); - - // sort by number - tm.sort(BAR, SortDir.ASC); - - // verify results - rows = tm.getRows(); - int nr = rows.length; - assertEquals("row count", NUMBERS.length, nr); - for (int i = 0; i < nr; i++) { - assertEquals(UNEX_SORT + i, SORTED_NUMBERS[i], rows[i].get(BAR)); - } - - // now the other way - tm.sort(BAR, SortDir.DESC); - - // verify results - rows = tm.getRows(); - nr = rows.length; - assertEquals("row count", NUMBERS.length, nr); - for (int i = 0; i < nr; i++) { - assertEquals(UNEX_SORT + i, - SORTED_NUMBERS[nr - 1 - i], rows[i].get(BAR)); - } - } - - @Test - public void sortAndFormat() { - initUnsortedTable(); - - // set hex formatter - tm.setFormatter(BAR, HexFormatter.INSTANCE); - - // sort by number - tm.sort(BAR, SortDir.ASC); - - // verify results - rows = tm.getRows(); - int nr = rows.length; - assertEquals("row count", SORTED_HEX.length, nr); - for (int i = 0; i < nr; i++) { - assertEquals(UNEX_SORT + i, SORTED_HEX[i], rows[i].getAsString(BAR)); - } - } - - private static final String[][] SORTED_NAMES_AND_HEX = { - {ELEVEN, "0xb"}, - {FOUR, "0x4"}, - {ONE, "0x1"}, - {THIRTY, "0x1e"}, - {THREE, "0x3"}, - {TWELVE, "0xc"}, - {TWENTY, "0x14"}, - {TWO, "0x2"}, - }; - - @Test - public void sortAndFormatTwo() { - initUnsortedTable(); - tm.setFormatter(BAR, HexFormatter.INSTANCE); - tm.sort(FOO, SortDir.ASC); - rows = tm.getRows(); - int nr = rows.length; - for (int i = 0; i < nr; i++) { - String[] exp = SORTED_NAMES_AND_HEX[i]; - String[] act = rows[i].getAsFormattedStrings(); - assertArrayEquals(UNEX_SORT + i, exp, act); - } - } - - private static final String[] FBZ = {FOO, BAR, ZOO}; - - @Test - public void getColumnIds() { - tm = new TableModel(FOO, BAR, ZOO); - assertArrayEquals("col IDs", FBZ, tm.getColumnIds()); - } - - @Test - public void sortDirAsc() { - assertEquals("asc sort dir", SortDir.ASC, TableModel.sortDir("asc")); - } - - @Test - public void sortDirDesc() { - assertEquals("desc sort dir", SortDir.DESC, TableModel.sortDir("desc")); - } - - @Test - public void sortDirOther() { - assertEquals("other sort dir", SortDir.ASC, TableModel.sortDir("other")); - } - - @Test - public void sortDirNull() { - assertEquals("null sort dir", SortDir.ASC, TableModel.sortDir(null)); - } - - - @Test - public void enumSort() { - tm = new TableModel(FOO); - tm.addRow().cell(FOO, StarWars.HAN_SOLO); - tm.addRow().cell(FOO, StarWars.C3PO); - tm.addRow().cell(FOO, StarWars.JABBA_THE_HUTT); - tm.addRow().cell(FOO, StarWars.LEIA_ORGANA); - tm.addRow().cell(FOO, StarWars.R2D2); - tm.addRow().cell(FOO, StarWars.LUKE_SKYWALKER); - - tm.sort(FOO, SortDir.ASC); - - // verify expected results - StarWars[] ordered = StarWars.values(); - TableModel.Row[] rows = tm.getRows(); - assertEquals("wrong length?", ordered.length, rows.length); - int nr = rows.length; - for (int i = 0; i < nr; i++) { - assertEquals(UNEX_SORT + i, ordered[i], rows[i].get(FOO)); - } - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/TableUtilsTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/TableUtilsTest.java deleted file mode 100644 index 4456dd3d..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/TableUtilsTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import org.junit.Assert; -import org.junit.Test; - -/** - * Unit tests for {@link TableUtils}. - */ -public class TableUtilsTest { - - private static final String FOO = "foo"; - private static final String BAR = "bar"; - - private static final String ARRAY_AS_STRING = - "[{\"foo\":\"1\",\"bar\":\"2\"},{\"foo\":\"3\",\"bar\":\"4\"}]"; - - @Test - public void basic() { - TableModel tm = new TableModel(FOO, BAR); - tm.addRow().cell(FOO, 1).cell(BAR, 2); - tm.addRow().cell(FOO, 3).cell(BAR, 4); - - ArrayNode array = TableUtils.generateArrayNode(tm); - Assert.assertEquals("wrong results", ARRAY_AS_STRING, array.toString()); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AbstractCellComparatorTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AbstractCellComparatorTest.java deleted file mode 100644 index 30125afb..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AbstractCellComparatorTest.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.junit.Test; -import org.onosproject.ui.table.CellComparator; - -import static org.junit.Assert.assertTrue; - -/** - * Unit tests for {@link AbstractCellComparator}. - */ -public class AbstractCellComparatorTest { - - private static class Concrete extends AbstractCellComparator { - @Override - protected int nonNullCompare(Object o1, Object o2) { - return 42; - } - } - - private CellComparator cmp = new Concrete(); - - @Test - public void twoNullArgs() { - assertTrue("two nulls", cmp.compare(null, null) == 0); - } - - @Test - public void nullArgOne() { - assertTrue("null one", cmp.compare(null, 1) < 0); - } - - @Test - public void nullArgTwo() { - assertTrue("null two", cmp.compare(1, null) > 0); - } - - // mock output, but check that our method was invoked... - @Test - public void noNulls() { - assertTrue("no Nulls", cmp.compare(1, 2) == 42); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AbstractCellFormatterTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AbstractCellFormatterTest.java deleted file mode 100644 index 41fefd65..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AbstractCellFormatterTest.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.junit.Test; -import org.onosproject.ui.table.CellFormatter; - -import static org.junit.Assert.assertEquals; - -/** - * Unit tests for {@link AbstractCellFormatter}. - */ -public class AbstractCellFormatterTest { - - private static final String MOCK_OUTPUT = "Mock!!"; - - private static class Concrete extends AbstractCellFormatter { - @Override - protected String nonNullFormat(Object value) { - return MOCK_OUTPUT; - } - } - - private CellFormatter frm = new Concrete(); - - @Test - public void nullInput() { - assertEquals("wrong result", "", frm.format(null)); - } - - // mock output, but check that our method was invoked... - @Test - public void nonNullInput() { - assertEquals("what?", MOCK_OUTPUT, frm.format(1)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AppIdFormatterTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AppIdFormatterTest.java deleted file mode 100644 index a7befbdb..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/AppIdFormatterTest.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.junit.Test; -import org.onosproject.core.ApplicationId; -import org.onosproject.ui.table.CellFormatter; - -import static org.junit.Assert.assertEquals; - -/** - * Unit tests for {@link AppIdFormatter}. - */ -public class AppIdFormatterTest { - - private static final ApplicationId APP_ID = new ApplicationId() { - @Override - public short id() { - return 25; - } - - @Override - public String name() { - return "some app"; - } - }; - - private CellFormatter fmt = AppIdFormatter.INSTANCE; - - @Test - public void basic() { - assertEquals("wrong format", "25 : some app", fmt.format(APP_ID)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/ConnectPointFormatterTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/ConnectPointFormatterTest.java deleted file mode 100644 index f7ad2751..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/ConnectPointFormatterTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.junit.Test; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.ui.table.CellFormatter; - -import static org.junit.Assert.assertEquals; - -/** - * Unit tests for {@link ConnectPointFormatter}. - */ -public class ConnectPointFormatterTest { - - private static final DeviceId DEVID = DeviceId.deviceId("foobar"); - private static final PortNumber PORT = PortNumber.portNumber(42); - - private static final ConnectPoint CP = new ConnectPoint(DEVID, PORT); - - private CellFormatter fmt = ConnectPointFormatter.INSTANCE; - - @Test - public void basic() { - assertEquals("wrong format", "foobar/42", fmt.format(CP)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java deleted file mode 100644 index b870d483..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.junit.Test; -import org.onosproject.ui.table.CellComparator; - -import static org.junit.Assert.assertTrue; - -/** - * Unit tests for {@link DefaultCellComparator}. - */ -public class DefaultCellComparatorTest { - - private static final String SOME = "SoMeStRiNg"; - private static final String OTHER = "OtherSTRING"; - - private CellComparator cmp = DefaultCellComparator.INSTANCE; - - // default comparator should detect Comparable impls and use that - - @Test - public void sameString() { - assertTrue("same string", cmp.compare(SOME, SOME) == 0); - } - - @Test - public void someVsOther() { - assertTrue("some vs other", cmp.compare(SOME, OTHER) > 0); - } - - @Test - public void otherVsSome() { - assertTrue("other vs some", cmp.compare(OTHER, SOME) < 0); - } - - @Test - public void someVsNull() { - assertTrue("some vs null", cmp.compare(SOME, null) > 0); - } - - @Test - public void nullVsSome() { - assertTrue("null vs some", cmp.compare(null, SOME) < 0); - } - - @Test(expected = ClassCastException.class) - public void mismatch() { - cmp.compare(42, SOME); - } - - - @Test - public void strElevenTwo() { - assertTrue("str 11 vs 2", cmp.compare("11", "2") < 0); - } - - @Test - public void intElevenTwo() { - assertTrue("int 11 vs 2", cmp.compare(11, 2) > 0); - } - - - @Test - public void intSmallBig() { - assertTrue("int 2 vs 4", cmp.compare(2, 4) < 0); - } - - @Test - public void intBigSmall() { - assertTrue("int 4 vs 2", cmp.compare(4, 2) > 0); - } - - @Test - public void intEqual() { - assertTrue("int 4 vs 4", cmp.compare(4, 4) == 0); - } - - @Test - public void longSmallBig() { - assertTrue("long 2 vs 4", cmp.compare(2L, 4L) < 0); - } - - @Test - public void longBigSmall() { - assertTrue("long 4 vs 2", cmp.compare(4L, 2L) > 0); - } - - @Test - public void longEqual() { - assertTrue("long 4 vs 4", cmp.compare(4L, 4L) == 0); - } - - - private enum SmallStarWars { C3PO, R2D2, LUKE } - - @Test - public void swEpisodeI() { - assertTrue("c3po r2d2", - cmp.compare(SmallStarWars.C3PO, SmallStarWars.R2D2) < 0); - } - - @Test - public void swEpisodeIi() { - assertTrue("r2d2 c3po", - cmp.compare(SmallStarWars.R2D2, SmallStarWars.C3PO) > 0); - } - - @Test - public void swEpisodeIii() { - assertTrue("luke c3po", - cmp.compare(SmallStarWars.LUKE, SmallStarWars.C3PO) > 0); - } - - @Test - public void swEpisodeIv() { - assertTrue("c3po luke", - cmp.compare(SmallStarWars.C3PO, SmallStarWars.LUKE) < 0); - } - - @Test - public void swEpisodeV() { - assertTrue("luke r2d2", - cmp.compare(SmallStarWars.LUKE, SmallStarWars.R2D2) > 0); - } - - @Test - public void swEpisodeVi() { - assertTrue("r2d2 luke", - cmp.compare(SmallStarWars.R2D2, SmallStarWars.LUKE) < 0); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellFormatterTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellFormatterTest.java deleted file mode 100644 index b63793b9..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellFormatterTest.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.junit.Test; -import org.onosproject.ui.table.CellFormatter; - -import static org.junit.Assert.assertEquals; - -/** - * Unit tests for {@link DefaultCellFormatter}. - */ -public class DefaultCellFormatterTest { - - private static final String UNEX = "Unexpected result"; - private static final String SOME_STRING = "SoMeStRiNg"; - - private static class TestClass { - @Override - public String toString() { - return SOME_STRING; - } - } - - private CellFormatter fmt = DefaultCellFormatter.INSTANCE; - - @Test - public void formatNull() { - assertEquals(UNEX, "", fmt.format(null)); - } - - @Test - public void formatInteger() { - assertEquals(UNEX, "3", fmt.format(3)); - } - - @Test - public void formatTrue() { - assertEquals(UNEX, "true", fmt.format(true)); - } - - @Test - public void formatFalse() { - assertEquals(UNEX, "false", fmt.format(false)); - } - - @Test - public void formatString() { - assertEquals(UNEX, "FOO", fmt.format("FOO")); - } - - @Test - public void formatObject() { - assertEquals(UNEX, SOME_STRING, fmt.format(new TestClass())); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/EnumFormatterTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/EnumFormatterTest.java deleted file mode 100644 index 68833c90..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/EnumFormatterTest.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.junit.Test; -import org.onosproject.ui.table.CellFormatter; - -import static org.junit.Assert.assertEquals; - -/** - * Unit tests for {@link EnumFormatter}. - */ -public class EnumFormatterTest { - - enum TestEnum { - ADDED, - PENDING_ADD, - WAITING_AUDIT_COMPLETE - } - - private CellFormatter fmt = EnumFormatter.INSTANCE; - - @Test - public void nullValue() { - assertEquals("null value", "", fmt.format(null)); - } - - @Test - public void noUnderscores() { - assertEquals("All caps", "Added", fmt.format(TestEnum.ADDED)); - } - - @Test - public void underscores() { - assertEquals("All caps with underscores", - "Pending Add", fmt.format(TestEnum.PENDING_ADD)); - } - - @Test - public void multiUnderscores() { - assertEquals("All caps with underscores", - "Waiting Audit Complete", - fmt.format(TestEnum.WAITING_AUDIT_COMPLETE)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/HexFormatterTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/HexFormatterTest.java deleted file mode 100644 index 2f70d43c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/HexFormatterTest.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.junit.Test; -import org.onosproject.ui.table.CellFormatter; - -import static org.junit.Assert.assertEquals; - -/** - * Unit tests for {@link HexFormatter}. - */ -public class HexFormatterTest { - - private CellFormatter fmt = HexFormatter.INSTANCE; - - @Test - public void nullValue() { - assertEquals("null value", "", fmt.format(null)); - } - - @Test - public void zero() { - assertEquals("zero", "0x0", fmt.format(0)); - } - - @Test - public void one() { - assertEquals("one", "0x1", fmt.format(1)); - } - - @Test - public void ten() { - assertEquals("ten", "0xa", fmt.format(10)); - } - - @Test - public void twenty() { - assertEquals("twenty", "0x14", fmt.format(20)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/HostLocationFormatterTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/HostLocationFormatterTest.java deleted file mode 100644 index 25ec89cd..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/HostLocationFormatterTest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.junit.Test; -import org.onosproject.net.DeviceId; -import org.onosproject.net.HostLocation; -import org.onosproject.net.PortNumber; -import org.onosproject.ui.table.CellFormatter; - -import static org.junit.Assert.assertEquals; - -/** - * Unit tests for {@link HostLocationFormatter}. - */ -public class HostLocationFormatterTest { - - private static final DeviceId DEVID = DeviceId.deviceId("foobar"); - private static final PortNumber PORT = PortNumber.portNumber(42); - private static final long TIME = 12345; - - private static final HostLocation LOC = new HostLocation(DEVID, PORT, TIME); - - private CellFormatter fmt = HostLocationFormatter.INSTANCE; - - @Test - public void basic() { - assertEquals("wrong format", "foobar/42", fmt.format(LOC)); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/TimeFormatterTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/TimeFormatterTest.java deleted file mode 100644 index 1e05ded1..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/table/cell/TimeFormatterTest.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.table.cell; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import org.junit.Test; -import org.onosproject.ui.table.CellFormatter; - -import java.util.Locale; - -import static org.junit.Assert.assertTrue; - -/** - * Unit tests for {@link TimeFormatter}. - */ -public class TimeFormatterTest { - - private static final Locale LOCALE = Locale.ENGLISH; - private static final DateTimeZone ZONE = DateTimeZone.UTC; - - private static final DateTime TIME = new DateTime(2015, 5, 4, 15, 30, ZONE); - private static final String EXP_ZONE_NAME = "3:30:00 PM UTC"; - private static final String EXP_ZONE_OFFSET = "3:30:00 PM +00:00"; - - // Have to use explicit Locale and TimeZone for the unit test, so that - // irrespective of which locale and time zone the test is run in, it - // always produces the same result... - private CellFormatter fmt = - new TimeFormatter().withLocale(LOCALE).withZone(ZONE); - - @Test - public void basic() { - assertTrue("wrong format", (EXP_ZONE_NAME.equals(fmt.format(TIME)) || - EXP_ZONE_OFFSET.equals(fmt.format(TIME)))); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkMapTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkMapTest.java deleted file mode 100644 index 83f4809c..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkMapTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -/** - * Unit tests for {@link BiLinkMap}. - */ -public class BiLinkMapTest extends BiLinkTestBase { - - - private ConcreteLink clink; - private ConcreteLinkMap linkMap; - - @Before - public void setUp() { - linkMap = new ConcreteLinkMap(); - } - - @Test - public void basic() { - assertEquals("wrong map size", 0, linkMap.size()); - assertTrue("unexpected links", linkMap.biLinks().isEmpty()); - } - - @Test - public void addSameLinkTwice() { - linkMap.add(LINK_AB); - assertEquals("wrong map size", 1, linkMap.size()); - clink = linkMap.biLinks().iterator().next(); - assertEquals("wrong link one", LINK_AB, clink.one()); - assertNull("unexpected link two", clink.two()); - - linkMap.add(LINK_AB); - assertEquals("wrong map size", 1, linkMap.size()); - clink = linkMap.biLinks().iterator().next(); - assertEquals("wrong link one", LINK_AB, clink.one()); - assertNull("unexpected link two", clink.two()); - } - - @Test - public void addPairOfLinks() { - linkMap.add(LINK_AB); - assertEquals("wrong map size", 1, linkMap.size()); - clink = linkMap.biLinks().iterator().next(); - assertEquals("wrong link one", LINK_AB, clink.one()); - assertNull("unexpected link two", clink.two()); - - linkMap.add(LINK_BA); - assertEquals("wrong map size", 1, linkMap.size()); - clink = linkMap.biLinks().iterator().next(); - assertEquals("wrong link one", LINK_AB, clink.one()); - assertEquals("wrong link two", LINK_BA, clink.two()); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkTest.java deleted file mode 100644 index 55f31ac9..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -/** - * Unit tests for {@link BiLink}. - */ -public class BiLinkTest extends BiLinkTestBase { - - private static final String EXP_ID_AB = "device-a/1-device-b/2"; - - private BiLink blink; - - @Test - public void basic() { - blink = new ConcreteLink(KEY_AB, LINK_AB); - assertEquals("wrong id", EXP_ID_AB, blink.linkId()); - assertEquals("wrong key", KEY_AB, blink.key()); - assertEquals("wrong link one", LINK_AB, blink.one()); - assertNull("what?", blink.two()); - - blink.setOther(LINK_BA); - assertEquals("wrong link two", LINK_BA, blink.two()); - } - - @Test(expected = NullPointerException.class) - public void nullKey() { - new ConcreteLink(null, LINK_AB); - } - - @Test(expected = NullPointerException.class) - public void nullLink() { - new ConcreteLink(KEY_AB, null); - } - - @Test(expected = NullPointerException.class) - public void nullOther() { - blink = new ConcreteLink(KEY_AB, LINK_AB); - blink.setOther(null); - } -} - diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkTestBase.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkTestBase.java deleted file mode 100644 index a6beec86..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/BiLinkTestBase.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.onosproject.net.Annotations; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; - -/** - * Base class for unit tests of {@link BiLink} and {@link BiLinkMap}. - */ -public abstract class BiLinkTestBase { - - protected static class FakeLink implements Link { - private final ConnectPoint src; - private final ConnectPoint dst; - - FakeLink(ConnectPoint src, ConnectPoint dst) { - this.src = src; - this.dst = dst; - } - - @Override public ConnectPoint src() { - return src; - } - @Override public ConnectPoint dst() { - return dst; - } - - @Override public Type type() { - return null; - } - @Override public State state() { - return null; - } - @Override public boolean isDurable() { - return false; - } - @Override public Annotations annotations() { - return null; - } - @Override public ProviderId providerId() { - return null; - } - } - - protected static final DeviceId DEV_A_ID = DeviceId.deviceId("device-A"); - protected static final DeviceId DEV_B_ID = DeviceId.deviceId("device-B"); - protected static final PortNumber PORT_1 = PortNumber.portNumber(1); - protected static final PortNumber PORT_2 = PortNumber.portNumber(2); - - protected static final ConnectPoint CP_A1 = new ConnectPoint(DEV_A_ID, PORT_1); - protected static final ConnectPoint CP_B2 = new ConnectPoint(DEV_B_ID, PORT_2); - - protected static final LinkKey KEY_AB = LinkKey.linkKey(CP_A1, CP_B2); - protected static final LinkKey KEY_BA = LinkKey.linkKey(CP_B2, CP_A1); - - protected static final Link LINK_AB = new FakeLink(CP_A1, CP_B2); - protected static final Link LINK_BA = new FakeLink(CP_B2, CP_A1); - - protected static class ConcreteLink extends BiLink { - public ConcreteLink(LinkKey key, Link link) { - super(key, link); - } - @Override - public LinkHighlight highlight(Enum type) { - return null; - } - } - - protected static class ConcreteLinkMap extends BiLinkMap { - @Override - public ConcreteLink create(LinkKey key, Link link) { - return new ConcreteLink(key, link); - } - } - - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/ButtonIdTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/ButtonIdTest.java deleted file mode 100644 index 01a1b975..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/ButtonIdTest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.junit.Test; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -/** - * Unit tests for {@link ButtonId}. - */ -public class ButtonIdTest { - - private static final String ID1 = "id-1"; - private static final String ID2 = "id-2"; - - private ButtonId b1, b2; - - - @Test - public void basic() { - b1 = new ButtonId(ID1); - } - - @Test - public void same() { - b1 = new ButtonId(ID1); - b2 = new ButtonId(ID1); - assertFalse("same ref?", b1 == b2); - assertTrue("not equal?", b1.equals(b2)); - } - - @Test - public void notSame() { - b1 = new ButtonId(ID1); - b2 = new ButtonId(ID2); - assertFalse("same ref?", b1 == b2); - assertFalse("equal?", b1.equals(b2)); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/HighlightsTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/HighlightsTest.java deleted file mode 100644 index fe663a5b..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/HighlightsTest.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ui.topo.Highlights.Amount; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -/** - * Unit tests for {@link Highlights}. - */ -public class HighlightsTest { - - private static final String DEV_1 = "dev-1"; - private static final String DEV_2 = "dev-2"; - private static final String HOST_A = "Host...A"; - - private Highlights highlights; - private DeviceHighlight dh1; - private DeviceHighlight dh2; - private HostHighlight hha; - - @Before - public void setUp() { - highlights = new Highlights(); - } - - @Test - public void basic() { - assertEquals("devices", 0, highlights.devices().size()); - assertEquals("hosts", 0, highlights.hosts().size()); - assertEquals("links", 0, highlights.links().size()); - assertEquals("sudue", Amount.ZERO, highlights.subdueLevel()); - } - - @Test - public void coupleOfDevices() { - dh1 = new DeviceHighlight(DEV_1); - dh2 = new DeviceHighlight(DEV_2); - - highlights.add(dh1); - highlights.add(dh2); - assertTrue("missing dh1", highlights.devices().contains(dh1)); - assertTrue("missing dh2", highlights.devices().contains(dh2)); - } - - @Test - public void alternateSubdue() { - highlights.subdueAllElse(Amount.MINIMALLY); - assertEquals("wrong level", Amount.MINIMALLY, highlights.subdueLevel()); - } - - @Test - public void highlightRetrieval() { - dh1 = new DeviceHighlight(DEV_1); - hha = new HostHighlight(HOST_A); - highlights.add(dh1) - .add(hha); - - assertNull("dev as host", highlights.getHost(DEV_1)); - assertNull("host as dev", highlights.getDevice(HOST_A)); - - assertEquals("missed dev as dev", dh1, highlights.getDevice(DEV_1)); - assertEquals("missed dev as node", dh1, highlights.getNode(DEV_1)); - - assertEquals("missed host as host", hha, highlights.getHost(HOST_A)); - assertEquals("missed host as node", hha, highlights.getNode(HOST_A)); - } - - // NOTE: further unit tests involving the Highlights class are done - // in TopoJsonTest. -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/LinkHighlightTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/LinkHighlightTest.java deleted file mode 100644 index a88de33a..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/LinkHighlightTest.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.junit.Test; - -import java.util.Iterator; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.onosproject.ui.topo.LinkHighlight.Flavor.*; - -/** - * Unit tests for {@link LinkHighlight}. - */ -public class LinkHighlightTest { - - private static final String LINK_ID = "link-id-for-testing"; - private static final String LABEL = "some label"; - private static final String EMPTY = ""; - private static final String CUSTOM = "custom"; - private static final String ANIMATED = "animated"; - private static final String OPTICAL = "optical"; - - private LinkHighlight lh; - - @Test - public void basic() { - lh = new LinkHighlight(LINK_ID, NO_HIGHLIGHT); - - assertEquals("wrong flavor", NO_HIGHLIGHT, lh.flavor()); - assertTrue("unexpected mods", lh.mods().isEmpty()); - assertEquals("wrong css", "plain", lh.cssClasses()); - assertEquals("wrong label", EMPTY, lh.label()); - } - - @Test - public void primaryOptical() { - lh = new LinkHighlight(LINK_ID, PRIMARY_HIGHLIGHT) - .addMod(LinkHighlight.MOD_OPTICAL); - - assertEquals("wrong flavor", PRIMARY_HIGHLIGHT, lh.flavor()); - assertEquals("missing mod", 1, lh.mods().size()); - Mod m = lh.mods().iterator().next(); - assertEquals("wrong mod", LinkHighlight.MOD_OPTICAL, m); - assertEquals("wrong css", "primary optical", lh.cssClasses()); - assertEquals("wrong label", EMPTY, lh.label()); - } - - @Test - public void secondaryAnimatedWithLabel() { - lh = new LinkHighlight(LINK_ID, SECONDARY_HIGHLIGHT) - .addMod(LinkHighlight.MOD_ANIMATED) - .setLabel(LABEL); - - assertEquals("wrong flavor", SECONDARY_HIGHLIGHT, lh.flavor()); - assertEquals("missing mod", 1, lh.mods().size()); - Mod m = lh.mods().iterator().next(); - assertEquals("wrong mod", LinkHighlight.MOD_ANIMATED, m); - assertEquals("wrong css", "secondary animated", lh.cssClasses()); - assertEquals("wrong label", LABEL, lh.label()); - } - - @Test - public void customMod() { - lh = new LinkHighlight(LINK_ID, PRIMARY_HIGHLIGHT) - .addMod(new Mod(CUSTOM)); - - assertEquals("missing mod", 1, lh.mods().size()); - Mod m = lh.mods().iterator().next(); - assertEquals("wrong mod", CUSTOM, m.toString()); - assertEquals("wrong css", "primary custom", lh.cssClasses()); - } - - @Test - public void severalMods() { - lh = new LinkHighlight(LINK_ID, SECONDARY_HIGHLIGHT) - .addMod(LinkHighlight.MOD_OPTICAL) - .addMod(LinkHighlight.MOD_ANIMATED) - .addMod(new Mod(CUSTOM)); - - assertEquals("missing mods", 3, lh.mods().size()); - Iterator iter = lh.mods().iterator(); - // NOTE: we know we are using TreeSet as backing => sorted order - assertEquals("wrong mod", ANIMATED, iter.next().toString()); - assertEquals("wrong mod", CUSTOM, iter.next().toString()); - assertEquals("wrong mod", OPTICAL, iter.next().toString()); - assertEquals("wrong css", "secondary animated custom optical", lh.cssClasses()); - } - - @Test(expected = NullPointerException.class) - public void noFlavor() { - new LinkHighlight(LINK_ID, null); - } - - @Test(expected = NullPointerException.class) - public void noIdentity() { - new LinkHighlight(null, PRIMARY_HIGHLIGHT); - } - -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/ModTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/ModTest.java deleted file mode 100644 index 03a18f97..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/ModTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Unit tests for {@link Mod}. - */ -public class ModTest { - - private static final String AAA = "aaa"; - private static final String BBB = "bbb"; - - private Mod mod1; - private Mod mod2; - - @Test(expected = NullPointerException.class) - public void nullId() { - new Mod(null); - } - - @Test - public void basic() { - mod1 = new Mod(AAA); - assertEquals("wrong id", AAA, mod1.toString()); - } - - @Test - public void equivalence() { - mod1 = new Mod(AAA); - mod2 = new Mod(AAA); - assertNotSame("oops", mod1, mod2); - assertEquals("not equivalent", mod1, mod2); - } - - @Test - public void comparable() { - mod1 = new Mod(AAA); - mod2 = new Mod(BBB); - assertNotEquals("what?", mod1, mod2); - assertTrue(mod1.compareTo(mod2) < 0); - assertTrue(mod2.compareTo(mod1) > 0); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/NodeBadgeTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/NodeBadgeTest.java deleted file mode 100644 index c8243695..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/NodeBadgeTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.junit.Test; -import org.onosproject.ui.topo.NodeBadge.Status; - -import static org.junit.Assert.assertEquals; - -/** - * Unit tests for {@link NodeBadge}. - */ -public class NodeBadgeTest { - - private static final String MSG = "a msg"; - private static final String TXT = "text"; - private static final String GID = "glyph-id"; - private static final int NUM = 42; - private static final String NUM_STR = Integer.toString(NUM); - - private static final String WR_S = "wrong status"; - private static final String WR_B = "wrong boolean"; - private static final String WR_T = "wrong text"; - private static final String WR_M = "wrong message"; - private static final String WR_SF = "wrong string format"; - - private NodeBadge badge; - - private void checkFields(NodeBadge b, Status s, boolean g, - String txt, String msg) { - assertEquals(WR_S, s, b.status()); - assertEquals(WR_B, g, b.isGlyph()); - assertEquals(WR_T, txt, b.text()); - assertEquals(WR_M, msg, b.message()); - } - - @Test - public void badgeTypes() { - assertEquals(WR_SF, "i", Status.INFO.code()); - assertEquals(WR_SF, "w", Status.WARN.code()); - assertEquals(WR_SF, "e", Status.ERROR.code()); - assertEquals("unexpected size", 3, Status.values().length); - } - - @Test - public void textOnly() { - badge = NodeBadge.text(TXT); - checkFields(badge, Status.INFO, false, TXT, null); - } - - @Test - public void glyphOnly() { - badge = NodeBadge.glyph(GID); - checkFields(badge, Status.INFO, true, GID, null); - } - - @Test - public void numberOnly() { - badge = NodeBadge.number(NUM); - checkFields(badge, Status.INFO, false, NUM_STR, null); - } - - @Test - public void textInfo() { - badge = NodeBadge.text(Status.INFO, TXT); - checkFields(badge, Status.INFO, false, TXT, null); - } - - @Test - public void glyphWarn() { - badge = NodeBadge.glyph(Status.WARN, GID); - checkFields(badge, Status.WARN, true, GID, null); - } - - @Test - public void numberError() { - badge = NodeBadge.number(Status.ERROR, NUM); - checkFields(badge, Status.ERROR, false, NUM_STR, null); - } - - @Test - public void textInfoMsg() { - badge = NodeBadge.text(Status.INFO, TXT, MSG); - checkFields(badge, Status.INFO, false, TXT, MSG); - } - - @Test - public void glyphWarnMsg() { - badge = NodeBadge.glyph(Status.WARN, GID, MSG); - checkFields(badge, Status.WARN, true, GID, MSG); - } - - @Test - public void numberErrorMsg() { - badge = NodeBadge.number(Status.ERROR, NUM, MSG); - checkFields(badge, Status.ERROR, false, NUM_STR, MSG); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/NodeSelectionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/NodeSelectionTest.java deleted file mode 100644 index 06a78580..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/NodeSelectionTest.java +++ /dev/null @@ -1,348 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.junit.Test; -import org.onlab.packet.ChassisId; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; -import org.onosproject.net.Annotations; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.HostLocation; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.device.DeviceServiceAdapter; -import org.onosproject.net.host.HostService; -import org.onosproject.net.host.HostServiceAdapter; -import org.onosproject.net.provider.ProviderId; - -import java.util.Set; - -import static org.junit.Assert.*; - -/** - * Unit tests for {@link NodeSelection}. - */ -public class NodeSelectionTest { - - private static class FakeDevice implements Device { - - private final DeviceId id; - - FakeDevice(DeviceId id) { - this.id = id; - } - - @Override - public DeviceId id() { - return id; - } - - @Override - public Type type() { - return null; - } - - @Override - public String manufacturer() { - return null; - } - - @Override - public String hwVersion() { - return null; - } - - @Override - public String swVersion() { - return null; - } - - @Override - public String serialNumber() { - return null; - } - - @Override - public ChassisId chassisId() { - return null; - } - - @Override - public Annotations annotations() { - return null; - } - - @Override - public ProviderId providerId() { - return null; - } - } - - private static class FakeHost implements Host { - - private final HostId id; - - FakeHost(HostId id) { - this.id = id; - } - - @Override - public HostId id() { - return id; - } - - @Override - public MacAddress mac() { - return null; - } - - @Override - public VlanId vlan() { - return null; - } - - @Override - public Set ipAddresses() { - return null; - } - - @Override - public HostLocation location() { - return null; - } - - @Override - public Annotations annotations() { - return null; - } - - @Override - public ProviderId providerId() { - return null; - } - } - - - - private final ObjectMapper mapper = new ObjectMapper(); - - private static final String IDS = "ids"; - private static final String HOVER = "hover"; - - private static final DeviceId DEVICE_1_ID = DeviceId.deviceId("Device-1"); - private static final DeviceId DEVICE_2_ID = DeviceId.deviceId("Device-2"); - private static final HostId HOST_A_ID = HostId.hostId("aa:aa:aa:aa:aa:aa/1"); - private static final HostId HOST_B_ID = HostId.hostId("bb:bb:bb:bb:bb:bb/2"); - - private static final Device DEVICE_1 = new FakeDevice(DEVICE_1_ID); - private static final Device DEVICE_2 = new FakeDevice(DEVICE_2_ID); - private static final Host HOST_A = new FakeHost(HOST_A_ID); - private static final Host HOST_B = new FakeHost(HOST_B_ID); - - // ================== - // == FAKE SERVICES - private static class FakeDevices extends DeviceServiceAdapter { - @Override - public Device getDevice(DeviceId deviceId) { - if (DEVICE_1_ID.equals(deviceId)) { - return DEVICE_1; - } - if (DEVICE_2_ID.equals(deviceId)) { - return DEVICE_2; - } - return null; - } - } - - private static class FakeHosts extends HostServiceAdapter { - @Override - public Host getHost(HostId hostId) { - if (HOST_A_ID.equals(hostId)) { - return HOST_A; - } - if (HOST_B_ID.equals(hostId)) { - return HOST_B; - } - return null; - } - } - - private DeviceService deviceService = new FakeDevices(); - private HostService hostService = new FakeHosts(); - - private NodeSelection ns; - - private ObjectNode objectNode() { - return mapper.createObjectNode(); - } - - private ArrayNode arrayNode() { - return mapper.createArrayNode(); - } - - private NodeSelection createNodeSelection(ObjectNode payload) { - return new NodeSelection(payload, deviceService, hostService); - } - - // selection JSON payload creation methods - private ObjectNode emptySelection() { - ObjectNode payload = objectNode(); - ArrayNode ids = arrayNode(); - payload.set(IDS, ids); - return payload; - } - - private ObjectNode oneDeviceSelected() { - ObjectNode payload = objectNode(); - ArrayNode ids = arrayNode(); - payload.set(IDS, ids); - ids.add(DEVICE_1_ID.toString()); - return payload; - } - - private ObjectNode oneHostSelected() { - ObjectNode payload = objectNode(); - ArrayNode ids = arrayNode(); - payload.set(IDS, ids); - ids.add(HOST_A_ID.toString()); - return payload; - } - - private ObjectNode twoHostsOneDeviceSelected() { - ObjectNode payload = objectNode(); - ArrayNode ids = arrayNode(); - payload.set(IDS, ids); - ids.add(HOST_A_ID.toString()); - ids.add(DEVICE_1_ID.toString()); - ids.add(HOST_B_ID.toString()); - return payload; - } - - private ObjectNode oneHostAndHoveringDeviceSelected() { - ObjectNode payload = objectNode(); - ArrayNode ids = arrayNode(); - payload.set(IDS, ids); - ids.add(HOST_A_ID.toString()); - payload.put(HOVER, DEVICE_2_ID.toString()); - return payload; - } - - private ObjectNode twoDevicesOneHostAndHoveringHostSelected() { - ObjectNode payload = objectNode(); - ArrayNode ids = arrayNode(); - payload.set(IDS, ids); - ids.add(HOST_A_ID.toString()); - ids.add(DEVICE_1_ID.toString()); - ids.add(DEVICE_2_ID.toString()); - payload.put(HOVER, HOST_B_ID.toString()); - return payload; - } - - - @Test - public void basic() { - ns = createNodeSelection(emptySelection()); - assertEquals("unexpected devices", 0, ns.devices().size()); - assertEquals("unexpected devices w/hover", 0, ns.devicesWithHover().size()); - assertEquals("unexpected hosts", 0, ns.hosts().size()); - assertEquals("unexpected hosts w/hover", 0, ns.hostsWithHover().size()); - assertTrue("unexpected selection", ns.none()); - assertNull("hover?", ns.hovered()); - } - - @Test - public void oneDevice() { - ns = createNodeSelection(oneDeviceSelected()); - assertEquals("missing device", 1, ns.devices().size()); - assertTrue("missing device 1", ns.devices().contains(DEVICE_1)); - assertEquals("missing device w/hover", 1, ns.devicesWithHover().size()); - assertTrue("missing device 1 w/hover", ns.devicesWithHover().contains(DEVICE_1)); - assertEquals("unexpected hosts", 0, ns.hosts().size()); - assertEquals("unexpected hosts w/hover", 0, ns.hostsWithHover().size()); - assertFalse("unexpected selection", ns.none()); - assertNull("hover?", ns.hovered()); - } - - @Test - public void oneHost() { - ns = createNodeSelection(oneHostSelected()); - assertEquals("unexpected devices", 0, ns.devices().size()); - assertEquals("unexpected devices w/hover", 0, ns.devicesWithHover().size()); - assertEquals("missing host", 1, ns.hosts().size()); - assertTrue("missing host A", ns.hosts().contains(HOST_A)); - assertEquals("missing host w/hover", 1, ns.hostsWithHover().size()); - assertTrue("missing host A w/hover", ns.hostsWithHover().contains(HOST_A)); - assertFalse("unexpected selection", ns.none()); - assertNull("hover?", ns.hovered()); - } - - @Test - public void twoHostsOneDevice() { - ns = createNodeSelection(twoHostsOneDeviceSelected()); - assertEquals("missing device", 1, ns.devices().size()); - assertTrue("missing device 1", ns.devices().contains(DEVICE_1)); - assertEquals("missing device w/hover", 1, ns.devicesWithHover().size()); - assertTrue("missing device 1 w/hover", ns.devicesWithHover().contains(DEVICE_1)); - assertEquals("unexpected hosts", 2, ns.hosts().size()); - assertTrue("missing host A", ns.hosts().contains(HOST_A)); - assertTrue("missing host B", ns.hosts().contains(HOST_B)); - assertEquals("unexpected hosts w/hover", 2, ns.hostsWithHover().size()); - assertTrue("missing host A w/hover", ns.hostsWithHover().contains(HOST_A)); - assertTrue("missing host B w/hover", ns.hostsWithHover().contains(HOST_B)); - assertFalse("unexpected selection", ns.none()); - assertNull("hover?", ns.hovered()); - } - - @Test - public void oneHostAndHoveringDevice() { - ns = createNodeSelection(oneHostAndHoveringDeviceSelected()); - assertEquals("unexpected devices", 0, ns.devices().size()); - assertEquals("unexpected devices w/hover", 1, ns.devicesWithHover().size()); - assertTrue("missing device 2 w/hover", ns.devicesWithHover().contains(DEVICE_2)); - assertEquals("missing host", 1, ns.hosts().size()); - assertTrue("missing host A", ns.hosts().contains(HOST_A)); - assertEquals("missing host w/hover", 1, ns.hostsWithHover().size()); - assertTrue("missing host A w/hover", ns.hostsWithHover().contains(HOST_A)); - assertFalse("unexpected selection", ns.none()); - assertEquals("missing hover device 2", DEVICE_2, ns.hovered()); - } - - @Test - public void twoDevicesOneHostAndHoveringHost() { - ns = createNodeSelection(twoDevicesOneHostAndHoveringHostSelected()); - assertEquals("missing devices", 2, ns.devices().size()); - assertTrue("missing device 1", ns.devices().contains(DEVICE_1)); - assertTrue("missing device 2", ns.devices().contains(DEVICE_2)); - assertEquals("missing devices w/hover", 2, ns.devicesWithHover().size()); - assertTrue("missing device 1 w/hover", ns.devicesWithHover().contains(DEVICE_1)); - assertTrue("missing device 2 w/hover", ns.devicesWithHover().contains(DEVICE_2)); - assertEquals("missing host", 1, ns.hosts().size()); - assertTrue("missing host A", ns.hosts().contains(HOST_A)); - assertEquals("missing host w/hover", 2, ns.hostsWithHover().size()); - assertTrue("missing host A w/hover", ns.hostsWithHover().contains(HOST_A)); - assertTrue("missing host B w/hover", ns.hostsWithHover().contains(HOST_B)); - assertFalse("unexpected selection", ns.none()); - assertEquals("missing hover host B", HOST_B, ns.hovered()); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/PropertyPanelTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/PropertyPanelTest.java deleted file mode 100644 index b6d32bed..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/PropertyPanelTest.java +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import org.junit.BeforeClass; -import org.junit.Test; -import org.onosproject.ui.topo.PropertyPanel.Prop; - -import java.text.NumberFormat; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Locale; -import java.util.Map; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.fail; - -/** - * Unit tests for {@link PropertyPanel}. - */ -public class PropertyPanelTest { - - // Modified property panel subclass to use ENGLISH locale formatter so - // we know formatted numbers will use comma for the thousand separator. - private static final class EnglishPropertyPanel extends PropertyPanel { - private static final NumberFormat ENGLISH_FORMATTER = - NumberFormat.getInstance(Locale.ENGLISH); - - public EnglishPropertyPanel(String title, String typeId) { - super(title, typeId); - } - - @Override - protected NumberFormat formatter() { - return ENGLISH_FORMATTER; - } - } - - private static final String TITLE_ORIG = "Original Title"; - private static final String TYPE_ORIG = "Original type ID"; - private static final String TITLE_NEW = "New Title"; - private static final String TYPE_NEW = "New type"; - private static final String SOME_IDENTIFICATION = "It's Me!"; - - private static final String KEY_A = "A"; - private static final String KEY_B = "B"; - private static final String KEY_C = "C"; - private static final String SEP = "-"; - private static final String KEY_Z = "Z"; - - private static final String VALUE_A = "Hay"; - private static final String VALUE_B = "Bee"; - private static final String VALUE_C = "Sea"; - private static final String VALUE_Z = "Zed"; - - private static final Map PROP_MAP = new HashMap<>(); - - private static class FooClass { - private final String s; - FooClass(String s) { - this.s = s; - } - - @Override - public String toString() { - return ">" + s + "<"; - } - } - - private PropertyPanel pp; - - - - @BeforeClass - public static void setUpClass() { - PROP_MAP.put(KEY_A, new Prop(KEY_A, VALUE_A)); - PROP_MAP.put(KEY_B, new Prop(KEY_B, VALUE_B)); - PROP_MAP.put(KEY_C, new Prop(KEY_C, VALUE_C)); - PROP_MAP.put(KEY_Z, new Prop(KEY_Z, VALUE_Z)); - PROP_MAP.put(SEP, new PropertyPanel.Separator()); - } - - @Test - public void basic() { - pp = new EnglishPropertyPanel(TITLE_ORIG, TYPE_ORIG); - assertEquals("wrong title", TITLE_ORIG, pp.title()); - assertEquals("wrong type", TYPE_ORIG, pp.typeId()); - assertNull("id?", pp.id()); - assertEquals("unexpected props", 0, pp.properties().size()); - assertEquals("unexpected buttons", 0, pp.buttons().size()); - } - - @Test - public void changeTitle() { - basic(); - pp.title(TITLE_NEW); - assertEquals("wrong title", TITLE_NEW, pp.title()); - } - - @Test - public void changeType() { - basic(); - pp.typeId(TYPE_NEW); - assertEquals("wrong type", TYPE_NEW, pp.typeId()); - } - - @Test - public void setId() { - basic(); - pp.id(SOME_IDENTIFICATION); - assertEquals("wrong id", SOME_IDENTIFICATION, pp.id()); - } - - private void validateProps(String... keys) { - Iterator iter = pp.properties().iterator(); - for (String k: keys) { - Prop exp = PROP_MAP.get(k); - Prop act = iter.next(); - assertEquals("Bad prop sequence", exp, act); - } - } - - private void validateProp(String key, String expValue) { - Iterator iter = pp.properties().iterator(); - Prop prop = null; - while (iter.hasNext()) { - Prop p = iter.next(); - if (p.key().equals(key)) { - prop = p; - break; - } - } - if (prop == null) { - fail("no prop found with key: " + key); - } - assertEquals("Wrong prop value", expValue, prop.value()); - } - - @Test - public void props() { - basic(); - pp.addProp(KEY_A, VALUE_A) - .addProp(KEY_B, VALUE_B) - .addProp(KEY_C, VALUE_C); - assertEquals("bad props", 3, pp.properties().size()); - validateProps(KEY_A, KEY_B, KEY_C); - } - - @Test - public void separator() { - props(); - pp.addSeparator() - .addProp(KEY_Z, VALUE_Z); - - assertEquals("bad props", 5, pp.properties().size()); - validateProps(KEY_A, KEY_B, KEY_C, SEP, KEY_Z); - } - - @Test - public void removeAllProps() { - props(); - assertEquals("wrong props", 3, pp.properties().size()); - pp.removeAllProps(); - assertEquals("unexpected props", 0, pp.properties().size()); - } - - @Test - public void adjustProps() { - props(); - pp.removeProps(KEY_B, KEY_A); - pp.addProp(KEY_Z, VALUE_Z); - validateProps(KEY_C, KEY_Z); - } - - @Test - public void intValues() { - basic(); - pp.addProp(KEY_A, 200) - .addProp(KEY_B, 2000) - .addProp(KEY_C, 1234567); - - validateProp(KEY_A, "200"); - validateProp(KEY_B, "2,000"); - validateProp(KEY_C, "1,234,567"); - } - - @Test - public void longValues() { - basic(); - pp.addProp(KEY_A, 200L) - .addProp(KEY_B, 2000L) - .addProp(KEY_C, 1234567L) - .addProp(KEY_Z, Long.MAX_VALUE); - - validateProp(KEY_A, "200"); - validateProp(KEY_B, "2,000"); - validateProp(KEY_C, "1,234,567"); - validateProp(KEY_Z, "9,223,372,036,854,775,807"); - } - - @Test - public void objectValue() { - basic(); - pp.addProp(KEY_A, new FooClass("a")) - .addProp(KEY_B, new FooClass("bxyyzy"), "[xz]"); - - validateProp(KEY_A, ">a<"); - validateProp(KEY_B, ">byyy<"); - } - - private static final ButtonId BD_A = new ButtonId(KEY_A); - private static final ButtonId BD_B = new ButtonId(KEY_B); - private static final ButtonId BD_C = new ButtonId(KEY_C); - private static final ButtonId BD_Z = new ButtonId(KEY_Z); - - private void verifyButtons(String... keys) { - Iterator iter = pp.buttons().iterator(); - for (String k: keys) { - assertEquals("wrong button", k, iter.next().id()); - } - assertFalse("too many buttons", iter.hasNext()); - } - - @Test - public void buttons() { - basic(); - pp.addButton(BD_A) - .addButton(BD_B); - assertEquals("wrong buttons", 2, pp.buttons().size()); - verifyButtons(KEY_A, KEY_B); - - pp.removeButtons(BD_B) - .addButton(BD_C) - .addButton(BD_Z); - assertEquals("wrong buttons", 3, pp.buttons().size()); - verifyButtons(KEY_A, KEY_C, KEY_Z); - - pp.removeAllButtons() - .addButton(BD_B); - assertEquals("wrong buttons", 1, pp.buttons().size()); - verifyButtons(KEY_B); - } -} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/TopoJsonTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/TopoJsonTest.java deleted file mode 100644 index 50aabf8e..00000000 --- a/framework/src/onos/core/api/src/test/java/org/onosproject/ui/topo/TopoJsonTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * 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.ui.topo; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.junit.Test; -import org.onosproject.ui.JsonUtils; -import org.onosproject.ui.topo.Highlights.Amount; -import org.onosproject.ui.topo.NodeBadge.Status; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -/** - * Unit tests for {@link TopoJson}. - */ -public class TopoJsonTest { - - private static final String DEV1 = "device-1"; - private static final String DEV2 = "device-2"; - private static final String SOME_MSG = "Hello there"; - private static final String GID = "glyph-ID"; - - private ObjectNode payload; - - private void checkArrayLength(String key, int expLen) { - ArrayNode a = (ArrayNode) payload.get(key); - assertEquals("wrong size: " + key, expLen, a.size()); - } - - private void checkEmptyArrays() { - checkArrayLength(TopoJson.DEVICES, 0); - checkArrayLength(TopoJson.HOSTS, 0); - checkArrayLength(TopoJson.LINKS, 0); - } - - @Test - public void basicHighlights() { - Highlights h = new Highlights(); - payload = TopoJson.json(h); - checkEmptyArrays(); - String subdue = JsonUtils.string(payload, TopoJson.SUBDUE); - assertEquals("subdue", "", subdue); - } - - @Test - public void subdueMinimalHighlights() { - Highlights h = new Highlights().subdueAllElse(Amount.MINIMALLY); - payload = TopoJson.json(h); - checkEmptyArrays(); - String subdue = JsonUtils.string(payload, TopoJson.SUBDUE); - assertEquals("not min", "min", subdue); - } - - @Test - public void subdueMaximalHighlights() { - Highlights h = new Highlights().subdueAllElse(Amount.MAXIMALLY); - payload = TopoJson.json(h); - checkEmptyArrays(); - String subdue = JsonUtils.string(payload, TopoJson.SUBDUE); - assertEquals("not max", "max", subdue); - } - - @Test - public void badgedDevice() { - Highlights h = new Highlights(); - DeviceHighlight dh = new DeviceHighlight(DEV1); - dh.setBadge(NodeBadge.number(7)); - h.add(dh); - - dh = new DeviceHighlight(DEV2); - dh.setBadge(NodeBadge.glyph(Status.WARN, GID, SOME_MSG)); - h.add(dh); - - payload = TopoJson.json(h); -// System.out.println(payload); - - // dig into the payload, and verify the badges are set on the devices - ArrayNode a = (ArrayNode) payload.get(TopoJson.DEVICES); - - ObjectNode d = (ObjectNode) a.get(0); - assertEquals("wrong device id", DEV1, d.get(TopoJson.ID).asText()); - - ObjectNode b = (ObjectNode) d.get(TopoJson.BADGE); - assertNotNull("missing badge", b); - assertEquals("wrong status code", "i", b.get(TopoJson.STATUS).asText()); - assertEquals("wrong text", "7", b.get(TopoJson.TXT).asText()); - assertNull("glyph?", b.get(TopoJson.GID)); - assertNull("msg?", b.get(TopoJson.MSG)); - - d = (ObjectNode) a.get(1); - assertEquals("wrong device id", DEV2, d.get(TopoJson.ID).asText()); - - b = (ObjectNode) d.get(TopoJson.BADGE); - assertNotNull("missing badge", b); - assertEquals("wrong status code", "w", b.get(TopoJson.STATUS).asText()); - assertNull("text?", b.get(TopoJson.TXT)); - assertEquals("wrong text", GID, b.get(TopoJson.GID).asText()); - assertEquals("wrong message", SOME_MSG, b.get(TopoJson.MSG).asText()); - } -} diff --git a/framework/src/onos/core/api/src/test/resources/css.html b/framework/src/onos/core/api/src/test/resources/css.html deleted file mode 100644 index 3079957b..00000000 --- a/framework/src/onos/core/api/src/test/resources/css.html +++ /dev/null @@ -1,2 +0,0 @@ -foo-css -bar-css \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/resources/custom/css.html b/framework/src/onos/core/api/src/test/resources/custom/css.html deleted file mode 100644 index e67f4a2b..00000000 --- a/framework/src/onos/core/api/src/test/resources/custom/css.html +++ /dev/null @@ -1 +0,0 @@ -custom-css diff --git a/framework/src/onos/core/api/src/test/resources/custom/js.html b/framework/src/onos/core/api/src/test/resources/custom/js.html deleted file mode 100644 index f87844b1..00000000 --- a/framework/src/onos/core/api/src/test/resources/custom/js.html +++ /dev/null @@ -1 +0,0 @@ -custom-js \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/resources/js.html b/framework/src/onos/core/api/src/test/resources/js.html deleted file mode 100644 index 50b63b34..00000000 --- a/framework/src/onos/core/api/src/test/resources/js.html +++ /dev/null @@ -1,2 +0,0 @@ -foo-js -bar-js \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.1.xml b/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.1.xml deleted file mode 100644 index e4490450..00000000 --- a/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.1.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - ding - bat - - - - v1 - v2 - - \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.bad.xml b/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.bad.xml deleted file mode 100644 index 5815ba38..00000000 --- a/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.bad.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.noclass.xml b/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.noclass.xml deleted file mode 100644 index e46b42e3..00000000 --- a/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.noclass.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.noconstructor.xml b/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.noconstructor.xml deleted file mode 100644 index 873656d8..00000000 --- a/framework/src/onos/core/api/src/test/resources/org/onosproject/net/driver/drivers.noconstructor.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - \ No newline at end of file -- cgit