private void registerDhcpInfo(OpenstackPort openstackPort) { Ip4Address ip4Address; Ip4Address subnetMask; Ip4Address dhcpServer; Ip4Address gatewayIPAddress; Ip4Address domainServer; OpenstackSubnet openstackSubnet; ip4Address = (Ip4Address) openstackPort.fixedIps().values().toArray()[0]; openstackSubnet = restHandler .getSubnets() .stream() .filter(n -> n.networkId().equals(openstackPort.networkId())) .findFirst() .get(); subnetMask = Ip4Address.valueOf(buildSubnetMask(openstackSubnet.cidr())); gatewayIPAddress = Ip4Address.valueOf(openstackSubnet.gatewayIp()); dhcpServer = gatewayIPAddress; // TODO: supports multiple DNS servers if (openstackSubnet.dnsNameservers().isEmpty()) { domainServer = Ip4Address.valueOf("8.8.8.8"); } else { domainServer = openstackSubnet.dnsNameservers().get(0); } List<Ip4Address> options = Lists.newArrayList(); options.add(subnetMask); options.add(dhcpServer); options.add(gatewayIPAddress); options.add(domainServer); dhcpService.setStaticMapping(openstackPort.macAddress(), ip4Address, true, options); }
@Override public Collection<OpenstackPort> ports(String networkId) { Collection<OpenstackPort> ports = restHandler.getPorts(); List<OpenstackPort> portList = ports.stream().filter(p -> p.networkId().equals(networkId)).collect(Collectors.toList()); return portList; }
@Override public OpenstackNetwork network(String networkId) { Collection<OpenstackNetwork> networks = restHandler.getNetworks(); return networks.stream().filter(n -> n.id().equals(networkId)).findFirst().orElse(null); }
@Override public OpenstackPort port(String portId) { Collection<OpenstackPort> ports = restHandler.getPorts(); return ports.stream().filter(p -> p.id().equals(portId)).findFirst().orElse(null); }
@Override public OpenstackPort port(Port port) { Collection<OpenstackPort> ports = restHandler.getPorts(); String uuid = port.annotations().value("portName").substring(3); return ports.stream().filter(p -> p.id().startsWith(uuid)).findFirst().orElse(null); }