private void initializeFlowRules() {
    OpenstackSwitchingRulePopulator rulePopulator =
        new OpenstackSwitchingRulePopulator(
            appId, flowObjectiveService, deviceService, restHandler, driverService);

    deviceService
        .getDevices()
        .forEach(
            device -> {
              log.debug(
                  "device {} num of ports {} ",
                  device.id(),
                  deviceService.getPorts(device.id()).size());
              deviceService
                  .getPorts(device.id())
                  .stream()
                  .filter(port -> port.annotations().value("portName").startsWith("tap"))
                  .forEach(
                      vmPort -> {
                        OpenstackPort osPort = rulePopulator.openstackPort(vmPort);
                        if (osPort != null) {
                          rulePopulator.populateSwitchingRules(device, vmPort);
                          registerDhcpInfo(osPort);
                        } else {
                          log.warn("No openstackPort information for port {}", vmPort);
                        }
                      });
            });
  }
 private void processPortAdded(Device device, Port port) {
   if (!port.annotations().value("portName").equals("vxlan")) {
     OpenstackSwitchingRulePopulator rulePopulator =
         new OpenstackSwitchingRulePopulator(
             appId, flowObjectiveService, deviceService, restHandler, driverService);
     rulePopulator.populateSwitchingRules(device, port);
   }
 }