org.onosproject.net.DeviceId Java Examples

The following examples show how to use org.onosproject.net.DeviceId. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ProxyTestCommand.java    From onos with Apache License 2.0 6 votes vote down vote up
@Override
protected void doExecute() {
    ProxyTest proxyTest = get(ProxyTest.class);
    TestProxy proxy;
    if ("node".equals(type)) {
        NodeId nodeId = NodeId.nodeId(arg1);
        proxy = proxyTest.getProxyFor(nodeId);
    } else if ("master".equals(type)) {
        DeviceId deviceId = DeviceId.deviceId(arg1);
        proxy = proxyTest.getProxyFor(deviceId);
    } else {
        throw new IllegalArgumentException("Unknown operation type " + type);
    }

    if ("sync".equals(operation)) {
        print("%s", proxy.testSync(arg2));
    } else if ("async".equals(operation)) {
        try {
            print("%s", proxy.testAsync(arg2).get(10, TimeUnit.SECONDS));
        } catch (InterruptedException | ExecutionException | TimeoutException e) {
            throw new IllegalStateException(e);
        }
    } else {
        throw new IllegalArgumentException("Unknown operation " + operation);
    }
}
 
Example #2
Source File: Ipv6RoutingComponent.java    From ngsdn-tutorial with Apache License 2.0 6 votes vote down vote up
/**
 * Creates a flow rule for the L2 table mapping the given next hop MAC to
 * the given output port.
 * <p>
 * This is called by the routing policy methods below to establish L2-based
 * forwarding inside the fabric, e.g., when deviceId is a leaf switch and
 * nextHopMac is the one of a spine switch.
 *
 * @param deviceId   the device
 * @param nexthopMac the next hop (destination) mac
 * @param outPort    the output port
 */
private FlowRule createL2NextHopRule(DeviceId deviceId, MacAddress nexthopMac,
                                     PortNumber outPort) {

    final String tableId = "IngressPipeImpl.l2_exact_table";
    final PiCriterion match = PiCriterion.builder()
            .matchExact(PiMatchFieldId.of("hdr.ethernet.dst_addr"),
                        nexthopMac.toBytes())
            .build();


    final PiAction action = PiAction.builder()
            .withId(PiActionId.of("IngressPipeImpl.set_egress_port"))
            .withParameter(new PiActionParam(
                    PiActionParamId.of("port_num"),
                    outPort.toLong()))
            .build();

    return Utils.buildFlowRule(
            deviceId, appId, tableId, match, action);
}
 
Example #3
Source File: IntentJsonMatcher.java    From onos with Apache License 2.0 6 votes vote down vote up
/**
 * Matches an obstacle constraint against a JSON representation of the
 * constraint.
 *
 * @param obstacleConstraint constraint object to match
 * @param constraintJson JSON representation of the constraint
 * @return true if the constraint and JSON match, false otherwise.
 */
private boolean matchObstacleConstraint(ObstacleConstraint obstacleConstraint,
                                        JsonNode constraintJson) {
    final JsonNode obstaclesJson = constraintJson.get("obstacles");

    if (obstaclesJson.size() != obstacleConstraint.obstacles().size()) {
        return false;
    }

    for (int obstaclesIndex = 0; obstaclesIndex < obstaclesJson.size();
             obstaclesIndex++) {
        boolean obstacleFound = false;
        final String obstacleJson = obstaclesJson.get(obstaclesIndex)
                .asText();
        for (DeviceId obstacle : obstacleConstraint.obstacles()) {
            if (obstacle.toString().equals(obstacleJson)) {
                obstacleFound = true;
            }
        }
        if (!obstacleFound) {
            return false;
        }
    }
    return true;
}
 
Example #4
Source File: GossipDeviceStore.java    From onos with Apache License 2.0 6 votes vote down vote up
private void handlePortStatusEvent(InternalPortStatusEvent event) {
    ProviderId providerId = event.providerId();
    DeviceId deviceId = event.deviceId();
    Timestamped<PortDescription> portDescription = event.portDescription();

    if (getDevice(deviceId) == null) {
        log.debug("{} not found on this node yet, ignoring.", deviceId);
        // Note: dropped information will be recovered by anti-entropy
        return;
    }

    try {
        notifyDelegateIfNotNull(updatePortStatusInternal(providerId, deviceId, portDescription));
    } catch (Exception e) {
        log.warn("Exception thrown handling port update", e);
    }
}
 
Example #5
Source File: FlowViewMessageHandlerTest.java    From onos with Apache License 2.0 6 votes vote down vote up
@Test
public void renderExtensionInstruction() {
    title("renderExtensionInstruction");

    ExtensionTreatment extn = new Ofdpa3SetMplsType((short) 32);
    DeviceId devid = deviceId(DEV_OF_204);

    instr = Instructions.extension(extn, devid);
    string = instr.toString();
    render = handler.renderInstructionForDisplay(instr);

    print(string);
    print(render);

    assertEquals("unexpected toString", EXT_FULL_STR, string);
    assertEquals("unexpected short string", EXT_NO_DPID, render);
}
 
Example #6
Source File: DistributedVirtualNetworkStore.java    From onos with Apache License 2.0 6 votes vote down vote up
@Override
public void bindPort(NetworkId networkId, DeviceId deviceId,
                     PortNumber portNumber, ConnectPoint realizedBy) {

    Set<VirtualPort> virtualPortSet = networkIdVirtualPortSetMap
            .get(networkId);

    Optional<VirtualPort> virtualPortOptional = virtualPortSet.stream().filter(
            p -> p.element().id().equals(deviceId) &&
                    p.number().equals(portNumber)).findFirst();
    checkState(virtualPortOptional.isPresent(), "The virtual port has not been added.");

    VirtualDevice device = deviceIdVirtualDeviceMap.get(new VirtualDeviceId(networkId, deviceId));
    checkNotNull(device, "The device has not been created for deviceId: "
            + deviceId);

    VirtualPort vPort = virtualPortOptional.get();
    virtualPortSet.remove(vPort);
    vPort = new DefaultVirtualPort(networkId, device, portNumber, realizedBy);
    virtualPortSet.add(vPort);
    networkIdVirtualPortSetMap.put(networkId, virtualPortSet);
    notifyDelegate(new VirtualNetworkEvent(VirtualNetworkEvent.Type.VIRTUAL_PORT_UPDATED,
                                           networkId, device, vPort));
}
 
Example #7
Source File: SimpleVirtualMastershipStore.java    From onos with Apache License 2.0 6 votes vote down vote up
@Override
public MastershipRole getRole(NetworkId networkId, NodeId nodeId, DeviceId deviceId) {
    Map<DeviceId, NodeId> masterMap = getMasterMap(networkId);
    Map<DeviceId, List<NodeId>> backups = getBackups(networkId);

    //just query
    NodeId current = masterMap.get(deviceId);
    MastershipRole role;

    if (current != null && current.equals(nodeId)) {
        return MastershipRole.MASTER;
    }

    if (backups.getOrDefault(deviceId, Collections.emptyList()).contains(nodeId)) {
        role = MastershipRole.STANDBY;
    } else {
        role = MastershipRole.NONE;
    }
    return role;
}
 
Example #8
Source File: PortAuthTracker.java    From onos with Apache License 2.0 5 votes vote down vote up
private List<PortAuthState> reportPortsAuthState() {
    List<PortAuthState> result = new ArrayList<>();

    for (Map.Entry<DeviceId, Map<PortNumber, BlockState>> entry :
            blockedPorts.entrySet()) {
        DeviceId d = entry.getKey();
        Map<PortNumber, BlockState> portMap = entry.getValue();

        for (PortNumber p : portMap.keySet()) {
            result.add(new PortAuthState(d, p, portMap.get(p)));
        }
    }
    Collections.sort(result);
    return result;
}
 
Example #9
Source File: InstancePortCodecTest.java    From onos with Apache License 2.0 5 votes vote down vote up
/**
 * Tests the instance port decoding.
 */
@Test
public void testInstancePortDecode() throws IOException {
    InstancePort port = getInstancePort("InstancePort.json");

    assertThat(port.networkId(), is("net-id-1"));
    assertThat(port.portId(), is("port-id-1"));
    assertThat(port.deviceId(), is(DeviceId.deviceId("of:000000000000000a")));
    assertThat(port.portNumber(), is(PortNumber.portNumber(1, "tap-1")));
    assertThat(port.ipAddress(), is(IpAddress.valueOf("10.10.10.1")));
    assertThat(port.macAddress(), is(MacAddress.valueOf("11:22:33:44:55:66")));
    assertThat(port.state().name(), is("ACTIVE"));
}
 
Example #10
Source File: PcepClientControllerImpl.java    From onos with Apache License 2.0 5 votes vote down vote up
/**
 * Releases allocated adjacency label of a link.
 *
 * @param link link
 */
public void releaseAdjacencyLabel(Link link) {
    checkNotNull(link, LINK_NULL);

    Device specificDevice = deviceService.getDevice(link.src().deviceId());

    // Retrieve lsrId of a specific device
    if (specificDevice.annotations() == null) {
        log.debug("Device {} does not have annotations.", specificDevice.toString());
        return;
    }

    String lsrId = specificDevice.annotations().value(LSRID);
    if (lsrId == null) {
        log.debug("Unable to retrieve lsr-id of a device {}.", specificDevice.toString());
        return;
    }

    // Get capability config from netconfig
    DeviceCapability cfg = netCfgService.getConfig(DeviceId.deviceId(lsrId), DeviceCapability.class);
    if (cfg == null) {
        log.error("Unable to find corresponding capabilty for a lsrd {} from NetConfig.", lsrId);
        return;
    }

    // Check whether device has SR-TE Capability
    if (cfg.labelStackCap()) {
        if (!srTeHandler.releaseAdjacencyLabel(link)) {
            log.error("Unable to release adjacency labels for a link {}.", link.toString());
        }
    }
}
 
Example #11
Source File: EncodeConstraintCodecHelper.java    From onos with Apache License 2.0 5 votes vote down vote up
/**
 * Encodes a waypoint constraint.
 *
 * @return JSON ObjectNode representing the constraint
 */
private ObjectNode encodeWaypointConstraint() {
    checkNotNull(constraint, "Waypoint constraint cannot be null");
    final WaypointConstraint waypointConstraint =
            (WaypointConstraint) constraint;

    final ObjectNode result = context.mapper().createObjectNode();
    final ArrayNode jsonWaypoints = result.putArray("waypoints");

    for (DeviceId did : waypointConstraint.waypoints()) {
        jsonWaypoints.add(did.toString());
    }

    return result;
}
 
Example #12
Source File: HostToHostIntentCompiler.java    From onos with Apache License 2.0 5 votes vote down vote up
private FilteredConnectPoint getFilteredPointFromLink(Link link) {
    FilteredConnectPoint filteredConnectPoint;
    if (link.src().elementId() instanceof DeviceId) {
        filteredConnectPoint = new FilteredConnectPoint(link.src());
    } else if (link.dst().elementId() instanceof DeviceId) {
        filteredConnectPoint = new FilteredConnectPoint(link.dst());
    } else {
        throw new IntentCompilationException(DEVICE_ID_NOT_FOUND);
    }
    return filteredConnectPoint;
}
 
Example #13
Source File: NetconfActiveComponent.java    From onos with Apache License 2.0 5 votes vote down vote up
/**
 * Retrieves device id from Resource id.
 *
 * @param path associated with the event
 * @return the deviceId of the effected device
 */
@Beta
public DeviceId getDeviceId(ResourceId path) {
    String resId = ResourceIdParser.parseResId(path);
    String[] el = resId.split(ResourceIdParser.EL_CHK);
    if (el.length < 3) {
        throw new IllegalStateException(new NetconfException("Invalid resource id, cannot apply"));
    }
    if (!el[2].contains((ResourceIdParser.KEY_SEP))) {
        throw new IllegalStateException(new NetconfException("Invalid device id key, cannot apply"));
    }
    String[] keys = el[2].split(ResourceIdParser.KEY_CHK);
    if (keys.length < 2) {
        throw new IllegalStateException(new NetconfException("Invalid device id key, cannot apply"));
    }
    String[] parts = keys[1].split(ResourceIdParser.NM_CHK);
    if (parts.length < 3) {
        throw new IllegalStateException(new NetconfException("Invalid device id key, cannot apply"));
    }
    String[] temp = parts[2].split("\\:");
    String ip, port;
    if (temp.length != 3) {
        throw new IllegalStateException(new NetconfException("Invalid device id form, cannot apply"));
    }
    ip = temp[1];
    port = temp[2];
    try {
        return DeviceId.deviceId(new URI("netconf", ip + ":" + port, (String) null));
    } catch (URISyntaxException ex) {
        throw new IllegalArgumentException("Unable to build deviceID for device " + ip + ":" + port, ex);
    }
}
 
Example #14
Source File: ThroughputViewMessageHandler.java    From onos with Apache License 2.0 5 votes vote down vote up
/**
 * Turn the current monitoring data into a data
 * structure that can feed the Throughput UI memory.
 *
 * @param deviceId the device ID being monitored
 * @param length the length of the array
 * @param monStats a MonitoringStatistics object
 * @return a map of throughput metrics to their values
 */
private Map<Integer, Float> populateThroughputData(
        DeviceId deviceId, int length, MonitoringStatistics monStats) {
    Map<Integer, Float> data = initializeMapData(MAX_COLUMNS_NB);

    for (CpuStatistics stats : monStats.cpuStatisticsAll()) {
        int index = stats.id();

        Float value = null;
        if ((stats.averageThroughput().isPresent()) && (stats.load() > MIN_CPU_LOAD)) {
            value = stats.averageThroughput().get();
        } else {
            value = new Float(0);
        }

        // Unit conversion
        ThroughputUnit throughputUnit = null;
        if (stats.throughputUnit().isPresent()) {
            throughputUnit = (ThroughputUnit) stats.throughputUnit().get();
        } else {
            throughputUnit = ThroughputUnit.BPS;
        }
        value = ThroughputUnit.toGbps(value, throughputUnit);

        // Store it locally
        addToCache(deviceId, length, index, value);

        // And into the map
        data.put(index, value);
    }

    return data;
}
 
Example #15
Source File: OpticalPathProvisioner.java    From onos with Apache License 2.0 5 votes vote down vote up
private boolean hasEnoughBandwidth(ConnectPoint cp) {
    if (cp.elementId() instanceof DeviceId) {
        Device device = deviceService.getDevice(cp.deviceId());
        Device.Type type = device.type();

        if (isTransportLayer(type)) {
            // Check if the port has enough capacity
            Port port = deviceService.getPort(cp.deviceId(), cp.port());
            if (port instanceof OduCltPort || port instanceof OchPort) {
                // Port with capacity
                return bandwidth.bps() < port.portSpeed() * 1000000.0;
            } else {
                // Port without valid capacity (OMS port, etc.)
                return true;
            }
        } else {
            // Check if enough amount of bandwidth resource remains
            ContinuousResource resource = Resources.continuous(cp.deviceId(), cp.port(), Bandwidth.class)
                    .resource(bandwidth.bps());
            try {
                return resourceService.isAvailable(resource);
            } catch (Exception e) {
                log.error("Resource service failed checking availability of {}",
                        resource, e);
                throw e;
            }
        }
    }
    return false;
}
 
Example #16
Source File: OvsdbDeviceProvider.java    From onos with Apache License 2.0 5 votes vote down vote up
private void discoverPorts(DeviceId deviceId) {
    Device device = deviceService.getDevice(deviceId);
    if (device.is(DeviceDescriptionDiscovery.class)) {
        DeviceDescriptionDiscovery deviceDescriptionDiscovery = device.as(DeviceDescriptionDiscovery.class);
        providerService.updatePorts(deviceId, deviceDescriptionDiscovery.discoverPortDetails());
    } else {
        log.warn("Device " + deviceId + " does not support behaviour DeviceDescriptionDiscovery");
    }
}
 
Example #17
Source File: PiPipeconfManager.java    From onos with Apache License 2.0 5 votes vote down vote up
@Override
public String getMergedDriver(DeviceId deviceId, PiPipeconfId pipeconfId) {
    log.debug("Starting device driver merge of {} with {}...", deviceId, pipeconfId);
    final BasicDeviceConfig basicDeviceConfig = cfgService.getConfig(
            deviceId, BasicDeviceConfig.class);
    if (basicDeviceConfig == null) {
        log.warn("Unable to get basic device config for {}, " +
                         "aborting pipeconf driver merge", deviceId);
        return null;
    }
    String baseDriverName = basicDeviceConfig.driver();
    if (baseDriverName == null) {
        log.warn("Missing driver from basic device config for {}, " +
                         "cannot produce merged driver", deviceId);
        return null;
    }
    if (isMergedDriverName(baseDriverName)) {
        // The config already has driver name that is a merged one. We still
        // need to make sure an instance of that merged driver is present in
        // this node.
        log.debug("Base driver of {} ({}) is a merged one",
                  deviceId, baseDriverName);
        baseDriverName = getBaseDriverNameFromMerged(baseDriverName);
    }

    return doMergeDriver(baseDriverName, pipeconfId);
}
 
Example #18
Source File: ClassifierResourceTest.java    From onos with Apache License 2.0 5 votes vote down vote up
/**
 * Tests the result of a rest api GET for classifiers.
 */
@Test
public void testClassifiers() {

    DeviceId devId1 = did("dev1");
    Device device1 = device("dev1");

    expect(classifierService.getClassifiers()).andReturn(ImmutableList.of(devId1)).anyTimes();
    replay(classifierService);

    final WebTarget wt = target();
    final String response = wt.path("classifiers").request().get(String.class);
    final JsonObject result = Json.parse(response).asObject();
    assertThat(result, notNullValue());
}
 
Example #19
Source File: DefaultK8sPort.java    From onos with Apache License 2.0 5 votes vote down vote up
private DefaultK8sPort(String networkId, String portId, MacAddress macAddress,
                       IpAddress ipAddress, DeviceId deviceId,
                       PortNumber portNumber, State state) {
    this.networkId = networkId;
    this.portId = portId;
    this.macAddress = macAddress;
    this.ipAddress = ipAddress;
    this.deviceId = deviceId;
    this.portNumber = portNumber;
    this.state = state;
}
 
Example #20
Source File: VtnData.java    From onos with Apache License 2.0 5 votes vote down vote up
/**
 * Get the ControllerId from the device .
 *
 * @param device Device
 * @param devices Devices
 * @return Controller Id
 */
public static DeviceId getControllerId(Device device,
                                       Iterable<Device> devices) {
    for (Device d : devices) {
        if (d.type() == Device.Type.CONTROLLER && d.id().toString()
                .contains(getControllerIpOfSwitch(device))) {
            return d.id();
        }
    }
    log.info("Can not find controller for device : {}", device.id());
    return null;
}
 
Example #21
Source File: McastStoreKey.java    From onos with Apache License 2.0 5 votes vote down vote up
/**
 * Constructs the key of multicast next objective store.
 *
 * @param mcastIp multicast group IP address
 * @param deviceId device ID
 * @param vlanId vlan id
 */
public McastStoreKey(IpAddress mcastIp, DeviceId deviceId, VlanId vlanId) {
    checkNotNull(mcastIp, "mcastIp cannot be null");
    checkNotNull(deviceId, "deviceId cannot be null");
    checkNotNull(vlanId, "vlan id cannot be null");
    checkArgument(mcastIp.isMulticast(), "mcastIp must be a multicast address");
    this.mcastIp = mcastIp;
    this.deviceId = deviceId;
    // FIXME probably we should avoid not valid values
    this.vlanId = vlanId;
}
 
Example #22
Source File: OpenFlowPacketProvider.java    From onos with Apache License 2.0 5 votes vote down vote up
@Override
public void emit(OutboundPacket packet) {
    DeviceId devId = packet.sendThrough();
    String scheme = devId.toString().split(":")[0];

    if (!scheme.equals(this.id().scheme())) {
        throw new IllegalArgumentException(
                "Don't know how to handle Device with scheme " + scheme);
    }

    Dpid dpid = Dpid.dpid(devId.uri());
    OpenFlowSwitch sw = controller.getSwitch(dpid);
    if (sw == null) {
        log.warn("Device {} isn't available?", devId);
        return;
    }

    OFPort inPort;
    if (packet.inPort() != null) {
        inPort = portDesc(packet.inPort()).getPortNo();
    } else {
        inPort = OFPort.CONTROLLER;
    }

    //Ethernet eth = new Ethernet();
    //eth.deserialize(packet.data().array(), 0, packet.data().array().length);
    OFPortDesc p = null;
    for (Instruction inst : packet.treatment().allInstructions()) {
        if (inst.type().equals(Instruction.Type.OUTPUT)) {
            p = portDesc(((OutputInstruction) inst).port());

            OFPacketOut po = packetOut(sw, packet.data().array(), p.getPortNo(), inPort);
            sw.sendMsg(po);
        }
    }

}
 
Example #23
Source File: RestSBControllerImpl.java    From onos with Apache License 2.0 5 votes vote down vote up
@Override
public void startServerSentEvents(DeviceId deviceId, String eventsUrl) {
    this.getServerSentEvents(deviceId, eventsUrl,
            (event) -> sendEvent(event, deviceId),
            (error) -> log.error("Unable to handle {} SSEvent from {}. {}",
                    eventsUrl, deviceId, error));
}
 
Example #24
Source File: DefaultAlarmTest.java    From onos with Apache License 2.0 5 votes vote down vote up
@Test
public void testEquals() {
    final DefaultAlarm a = new DefaultAlarm.Builder(ALARM_ID_2,
            DeviceId.NONE, "desc", Alarm.SeverityLevel.MINOR, 3).build();
    final DefaultAlarm b = new DefaultAlarm.Builder(ALARM_ID,
            DeviceId.NONE, "desc", Alarm.SeverityLevel.MINOR, a.timeRaised() + 1)
            .withTimeUpdated(a.timeUpdated() + 1).build();
    assertEquals("id or timeRaised or timeUpdated may differ", a, b);

    assertNotEquals(a, new DefaultAlarm.Builder(a).withAcknowledged(!a.acknowledged()).build());
    assertNotEquals(a, new DefaultAlarm.Builder(a).withManuallyClearable(!a.manuallyClearable()).build());
    assertNotEquals(a, new DefaultAlarm.Builder(a).withServiceAffecting(!a.serviceAffecting()).build());
    assertNotEquals(a, new DefaultAlarm.Builder(a).withAssignedUser("Changed" + a.assignedUser()).build());

}
 
Example #25
Source File: GroupManagerTest.java    From onos with Apache License 2.0 5 votes vote down vote up
public void validate(DeviceId expectedDeviceId,
                     List<GroupOperation> expectedGroupOps) {
    if (expectedGroupOps == null) {
        assertTrue("events generated", groupOperations.isEmpty());
        return;
    }

    assertEquals(lastDeviceId, expectedDeviceId);
    assertTrue((this.groupOperations.containsAll(expectedGroupOps) &&
            expectedGroupOps.containsAll(groupOperations)));

    groupOperations.clear();
    lastDeviceId = null;
}
 
Example #26
Source File: GeneralDeviceProvider.java    From onos with Apache License 2.0 5 votes vote down vote up
private void handleConnectionUpdate(DeviceId deviceId) {
    assertConfig(deviceId);
    final DeviceHandshaker handshaker = handshakerOrFail(deviceId);
    if (!handshaker.hasConnection()) {
        // If driver reports that a connection still exists, perhaps the
        // part of the netcfg that changed does not affect the connection.
        // Otherwise, remove any previous connection state from the old
        // netcfg and create a new one.
        log.warn("Detected change of connection endpoints for {}, will " +
                         "tear down existing connection and set up a new one...",
                 deviceId);
        handleConnectionTeardown(deviceId);
        handleConnectionSetup(deviceId);
    }
}
 
Example #27
Source File: LabelResourceAdapter.java    From onos with Apache License 2.0 5 votes vote down vote up
@Override
public void deviceLabelResourcePoolDetected(DeviceId deviceId,
                                            LabelResourceId beginLabel,
                                            LabelResourceId endLabel) {
    checkNotNull(deviceId, "deviceId is not null");
    checkNotNull(beginLabel, "beginLabel is not null");
    checkNotNull(endLabel, "endLabel is not null");
    createDevicePool(deviceId, beginLabel, endLabel);
}
 
Example #28
Source File: OpticalPathIntentCompiler.java    From onos with Apache License 2.0 5 votes vote down vote up
/**
 * Returns true if device does not accept flow rules, false otherwise.
 *
 * @param deviceId the device
 * @return true if device does not accept flow rule, false otherwise
 */
private boolean isNoFlowRule(DeviceId deviceId) {
    return NO_FLOWRULE_DEVICES.contains(
            Optional.ofNullable(deviceService.getDevice(deviceId))
                    .map(Device::type)
                    .orElse(Type.OTHER));
}
 
Example #29
Source File: DistributedMeterStore.java    From onos with Apache License 2.0 5 votes vote down vote up
@Override
public MeterId allocateMeterId(DeviceId deviceId) {
    // Init steps
    MeterId meterId;
    long id;
    // Try to reuse meter id
    meterId = firstReusableMeterId(deviceId);
    // We found a reusable id, return
    if (meterId != null) {
        return meterId;
    }
    // If there was no reusable MeterId we have to generate a new value
    // using maxMeters as upper limit.
    long maxMeters = getMaxMeters(MeterFeaturesKey.key(deviceId));
    // If the device does not give us MeterFeatures
    if (maxMeters == 0L) {
        // MeterFeatures couldn't be retrieved, fallback to queryMeters.
        maxMeters = queryMaxMeters(deviceId);
    }
    // If we don't know the max, cannot proceed
    if (maxMeters == 0L) {
        return null;
    }
    // Get a new value
    id = meterIdGenerators.incrementAndGet(deviceId);
    // Check with the max, and if the value is bigger, cannot proceed
    if (id >= maxMeters) {
        return null;
    }
    // Done, return the value
    return MeterId.meterId(id);
}
 
Example #30
Source File: SimpleMastershipStore.java    From onos with Apache License 2.0 5 votes vote down vote up
@Override
public Set<DeviceId> getDevices(NodeId nodeId) {
    Set<DeviceId> ids = new HashSet<>();
    for (Map.Entry<DeviceId, NodeId> d : masterMap.entrySet()) {
        if (Objects.equals(d.getValue(), nodeId)) {
            ids.add(d.getKey());
        }
    }
    return ids;
}