public void apply(Entity source, Object valueIgnored) { Location targetVm = Iterables.getOnlyElement(getLocations(), null); if (targetVm==null) { log.warn("Skipping adding public IP to "+this+" because it does not have a location"); return; } PublicIPAddress ip = systemCreatePublicIpHostname(); setAttributeIfChanged(whereToAdvertiseHostname, ip.getIPAddress()); } }
public void apply(Entity source, Object valueIgnored) { Location targetVm = Iterables.getOnlyElement(serviceToOpen.getLocations(), null); if (targetVm==null) { log.warn("Skipping port forward rule for "+serviceToOpen+" because it does not have a location"); return; } if (isSubnetEnabled()) { PublicIPAddress ip = systemCreatePublicIpHostname(); serviceToOpen.sensors().set(sensorAdvertisingHostname, ip.getIPAddress()); boolean success = systemEnableStaticNat(ip.getId(), targetVm); if (success) { log.debug("Enabled static NAT via to {} via {} (VM {})", new Object[] {serviceToOpen, ip, targetVm}); } } } }
private void loopAndCheckSSH() throws IOException { for (int i = 0; i < 5; i++) {// retry loop TODO replace with predicate. try { checkSSH(HostAndPort.fromParts(ip.getIPAddress(), 22)); return; } catch (SshException e) { e.printStackTrace(); try { Thread.sleep(10 * 1000); } catch (InterruptedException e1) { } continue; } } }
private void loopAndCheckSSH() throws IOException { for (int i = 0; i < 5; i++) {// retry loop TODO replace with predicate. try { checkSSH(HostAndPort.fromParts(ip.getIPAddress(), 22)); return; } catch (SshException e) { e.printStackTrace(); try { Thread.sleep(10 * 1000); } catch (InterruptedException e1) { } continue; } } }
protected void systemCreatePublicIpHostnameForForwarding() { PublicIPAddress ip = systemCreatePublicIpHostname(); sensors().set(PUBLIC_HOSTNAME, ip.getIPAddress()); sensors().set(PUBLIC_HOSTNAME_IP_ADDRESS_ID, ip.getId()); }
log.info(format("Opening port:%s on vm:%s with IP:%s", targetPort, vm.get().getId(), publicIpAddress.getIPAddress())); String jobid = client.createPortForwardRule(networkId, publicIpAddress.getId(), PortForwardingRule.Protocol.TCP, publicPort, vm.get().getId(), targetPort); client.waitForJobSuccess(jobid); log.debug("Enabled port-forwarding on {}", publicIpAddress.getIPAddress() + ":" + publicPort); return HostAndPort.fromParts(publicIpAddress.getIPAddress(), publicPort);
@Test(dependsOnMethods = "testAssignToLoadBalancerRule", expectedExceptions = SshException.class) public void testRemoveFromLoadBalancerRule() throws Exception { if (networksDisabled) throw new SshException(); assertTrue(jobComplete.apply(client.getLoadBalancerClient().removeVirtualMachinesFromLoadBalancerRule( rule.getId(), vm.getId()))); assertEquals(client.getLoadBalancerClient().listVirtualMachinesAssignedToLoadBalancerRule(rule.getId()).size(), 0); assertEquals(rule.getState(), State.ADD); checkSSH(HostAndPort.fromParts(ip.getIPAddress(), 22)); }
@Test(dependsOnMethods = "testAssignToLoadBalancerRule", expectedExceptions = SshException.class) public void testRemoveFromLoadBalancerRule() throws Exception { if (networksDisabled) throw new SshException(); assertTrue(jobComplete.apply(client.getLoadBalancerApi().removeVirtualMachinesFromLoadBalancerRule( rule.getId(), vm.getId()))); assertEquals(client.getLoadBalancerApi().listVirtualMachinesAssignedToLoadBalancerRule(rule.getId()).size(), 0); assertEquals(rule.getState(), State.ADD); checkSSH(HostAndPort.fromParts(ip.getIPAddress(), 22)); }
public void testCreateIPForwardingRule() throws Exception { if (networksDisabled) return; BlockUntilJobCompletesAndReturnResult blocker = new BlockUntilJobCompletesAndReturnResult(client, jobComplete); StaticNATVirtualMachineInNetwork fn = new StaticNATVirtualMachineInNetwork(client, reuseOrAssociate, network); CreatePortForwardingRulesForIP createPortForwardingRulesForIP = new CreatePortForwardingRulesForIP(client, blocker, CacheBuilder.newBuilder().<String, Set<IPForwardingRule>> build( new GetIPForwardingRulesByVirtualMachine(client))); // logger injector.injectMembers(blocker); injector.injectMembers(fn); injector.injectMembers(createPortForwardingRulesForIP); ip = fn.apply(vm); createPortForwardingRulesForIP.apply(ip, ImmutableSet.of(22)); rule = getOnlyElement(filter(client.getNATClient().getIPForwardingRulesForIPAddress(ip.getId()), new Predicate<IPForwardingRule>() { @Override public boolean apply(IPForwardingRule rule) { return rule != null && rule.getStartPort() == 22; } })); assertEquals(rule.getIPAddressId(), ip.getId()); assertEquals(rule.getVirtualMachineId(), vm.getId()); assertEquals(rule.getStartPort(), 22); assertEquals(rule.getProtocol(), "tcp"); checkRule(rule); HostAndPort socket = HostAndPort.fromParts(ip.getIPAddress(), 22); checkSSH(socket); }
public void testCreateIPForwardingRule() throws Exception { if (networksDisabled) return; BlockUntilJobCompletesAndReturnResult blocker = new BlockUntilJobCompletesAndReturnResult(client, jobComplete); StaticNATVirtualMachineInNetwork fn = new StaticNATVirtualMachineInNetwork(client, reuseOrAssociate, network); CreatePortForwardingRulesForIP createPortForwardingRulesForIP = new CreatePortForwardingRulesForIP(client, blocker, CacheBuilder.newBuilder().<String, Set<IPForwardingRule>> build( new GetIPForwardingRulesByVirtualMachine(client))); // logger injector.injectMembers(blocker); injector.injectMembers(fn); injector.injectMembers(createPortForwardingRulesForIP); ip = fn.apply(vm); createPortForwardingRulesForIP.apply(ip, ImmutableSet.of(22)); rule = getOnlyElement(filter(client.getNATApi().getIPForwardingRulesForIPAddress(ip.getId()), new Predicate<IPForwardingRule>() { @Override public boolean apply(IPForwardingRule rule) { return rule != null && rule.getStartPort() == 22; } })); assertEquals(rule.getIPAddressId(), ip.getId()); assertEquals(rule.getVirtualMachineId(), vm.getId()); assertEquals(rule.getStartPort(), 22); assertEquals(rule.getProtocol(), "tcp"); checkRule(rule); HostAndPort socket = HostAndPort.fromParts(ip.getIPAddress(), 22); checkSSH(socket); }
public void testCreatePortForwardingRule() throws Exception { if (networksDisabled) return; while (portForwardingRule == null) { ip = reuseOrAssociate.apply(network); try { AsyncCreateResponse job = client.getFirewallClient() .createPortForwardingRuleForVirtualMachine(ip.getId(), PortForwardingRule.Protocol.TCP, 22, vm.getId(), 22); assertTrue(jobComplete.apply(job.getJobId())); portForwardingRule = client.getFirewallClient().getPortForwardingRule(job.getId()); } catch (IllegalStateException e) { Logger.CONSOLE.error("Failed while trying to allocate ip: " + e); // very likely an ip conflict, so retry; } } assertEquals(portForwardingRule.getIPAddressId(), ip.getId()); assertEquals(portForwardingRule.getVirtualMachineId(), vm.getId()); assertEquals(portForwardingRule.getPublicPort(), 22); assertEquals(portForwardingRule.getProtocol(), PortForwardingRule.Protocol.TCP); checkPortForwardingRule(portForwardingRule); checkSSH(HostAndPort.fromParts(ip.getIPAddress(), 22)); }
public void testCreatePortForwardingRule() throws Exception { if (networksDisabled) return; while (portForwardingRule == null) { ip = reuseOrAssociate.apply(network); try { AsyncCreateResponse job = client.getFirewallApi() .createPortForwardingRuleForVirtualMachine(ip.getId(), PortForwardingRule.Protocol.TCP, 22, vm.getId(), 22); assertTrue(jobComplete.apply(job.getJobId())); portForwardingRule = client.getFirewallApi().getPortForwardingRule(job.getId()); } catch (IllegalStateException e) { Logger.CONSOLE.error("Failed while trying to allocate ip: " + e); // very likely an ip conflict, so retry; } } assertEquals(portForwardingRule.getIPAddressId(), ip.getId()); assertEquals(portForwardingRule.getVirtualMachineId(), vm.getId()); assertEquals(portForwardingRule.getPublicPort(), 22); assertEquals(portForwardingRule.getProtocol(), PortForwardingRule.Protocol.TCP); checkPortForwardingRule(portForwardingRule); checkSSH(HostAndPort.fromParts(ip.getIPAddress(), 22)); }
protected PublicIPAddress systemCreatePublicIpHostname() { PublicIPAddress ip; Location l = Iterables.getOnlyElement(getLocations()); String vpcId = getVpcId(l); if (vpcId==null) { String zoneId = getZoneId(l); String networkId = getAttribute(NETWORK_ID); AsyncCreateResponse response = cloudstackClient.getCloudstackGlobalClient().getAddressApi().associateIPAddressInZone(zoneId, AssociateIPAddressOptions.Builder.networkId(networkId)); cloudstackClient.waitForJobSuccess(response.getJobId()); ip = cloudstackClient.getCloudstackGlobalClient().getAddressApi().getPublicIPAddress(response.getId()); } else { ip = cloudstackClient.createIpAddressForVpc(vpcId); } synchronized (this) { Map<String, String> ips = getAttribute(PUBLIC_HOSTNAME_IP_IDS); if (ips == null) { ips = ImmutableMap.of(); } Map<String,String> newips = MutableMap.<String,String>builder().putAll(ips).put(ip.getIPAddress(), ip.getId()).build(); sensors().set(PUBLIC_HOSTNAME_IP_IDS, newips); } return ip; }
sensors().set(HOSTNAME, ip.getIPAddress()); sensors().set(PROTOCOL, inferProtocol()); sensors().set(ROOT_URL, inferUrl());
public T fromPublicIPAddress(PublicIPAddress in) { return this .id(in.getId()) .account(in.getAccount()) .allocated(in.getAllocated()) .associatedNetworkId(in.getAssociatedNetworkId()) .domain(in.getDomain()) .domainId(in.getDomainId()) .usesVirtualNetwork(in.isUsesVirtualNetwork()) .IPAddress(in.getIPAddress()) .isSourceNAT(in.isSourceNAT()) .isStaticNAT(in.isStaticNAT()) .networkId(in.getNetworkId()) .state(in.getState()) .virtualMachineDisplayName(in.getVirtualMachineDisplayName()) .virtualMachineId(in.getVirtualMachineId()) .virtualMachineName(in.getVirtualMachineName()) .VLANId(in.getVLANId()) .VLANName(in.getVLANName()) .zoneId(in.getZoneId()) .zoneName(in.getZoneName()) .jobId(in.getJobId()) .jobStatus(in.getJobStatus()); } }
public T fromPublicIPAddress(PublicIPAddress in) { return this .id(in.getId()) .account(in.getAccount()) .allocated(in.getAllocated()) .associatedNetworkId(in.getAssociatedNetworkId()) .domain(in.getDomain()) .domainId(in.getDomainId()) .usesVirtualNetwork(in.isUsesVirtualNetwork()) .IPAddress(in.getIPAddress()) .isSourceNAT(in.isSourceNAT()) .isStaticNAT(in.isStaticNAT()) .networkId(in.getNetworkId()) .state(in.getState()) .virtualMachineDisplayName(in.getVirtualMachineDisplayName()) .virtualMachineId(in.getVirtualMachineId()) .virtualMachineName(in.getVirtualMachineName()) .VLANId(in.getVLANId()) .VLANName(in.getVLANName()) .zoneId(in.getZoneId()) .zoneName(in.getZoneName()) .jobId(in.getJobId()) .jobStatus(in.getJobStatus()); } }
public T fromPublicIPAddress(PublicIPAddress in) { return this .id(in.getId()) .account(in.getAccount()) .allocated(in.getAllocated()) .associatedNetworkId(in.getAssociatedNetworkId()) .domain(in.getDomain()) .domainId(in.getDomainId()) .usesVirtualNetwork(in.isUsesVirtualNetwork()) .IPAddress(in.getIPAddress()) .isSourceNAT(in.isSourceNAT()) .isStaticNAT(in.isStaticNAT()) .networkId(in.getNetworkId()) .state(in.getState()) .virtualMachineDisplayName(in.getVirtualMachineDisplayName()) .virtualMachineId(in.getVirtualMachineId()) .virtualMachineName(in.getVirtualMachineName()) .VLANId(in.getVLANId()) .VLANName(in.getVLANName()) .zoneId(in.getZoneId()) .zoneName(in.getZoneName()) .jobId(in.getJobId()) .jobStatus(in.getJobStatus()) .tags(in.getTags()); } }