package org.openstack.atlas.api.mgmt.helpers; import org.openstack.atlas.docs.loadbalancers.api.management.v1.*; import org.openstack.atlas.docs.loadbalancers.api.management.v1.Cluster; import org.openstack.atlas.docs.loadbalancers.api.management.v1.IpVersion; import org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancer; import org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIp; import org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIps; import org.openstack.atlas.docs.loadbalancers.api.v1.*; import org.openstack.atlas.docs.loadbalancers.api.v1.Created; import org.openstack.atlas.docs.loadbalancers.api.v1.LoadBalancerUsageRecord; import java.text.ParseException; import java.util.Calendar; import java.util.List; import java.util.Random; public class StubFactory { private static Random rnd = new Random(); public static Clusters getClustersDetails() { Cluster cluster = new Cluster(); cluster.setDataCenter(DataCenter.DFW); cluster.setDescription("aDesc"); cluster.setName("aClusterName"); Cluster cluster2 = new Cluster(); cluster2.setDataCenter((DataCenter) rndChoice(DataCenter.values())); cluster2.setDescription("aDesc"); cluster2.setName("aSecondCluster"); Clusters clusters = new Clusters(); clusters.getClusters().add(cluster); clusters.getClusters().add(cluster2); return clusters; } public static VirtualIps getVirtualIpsDetails() { VirtualIp vip1 = new VirtualIp(); vip1.setClusterId(rndInt(0, 1000)); vip1.setAddress(rndIp()); vip1.setType((VipType) rndChoice(VipType.values())); vip1.setId(rndInt(0, 1000)); vip1.setLoadBalancerId(rndInt(0, 1000)); VirtualIp vip2 = new VirtualIp(); vip2.setClusterId(2); vip2.setLoadBalancerId(2); vip2.setType(VipType.SERVICENET); vip2.setId(1); VirtualIps vips = new VirtualIps(); vips.getVirtualIps().add(vip2); vips.getVirtualIps().add(vip1); return vips; } public static VirtualIpAvailabilityReport retrieveRndVipsAvailabilityReport() { VirtualIpAvailabilityReport vipar = new VirtualIpAvailabilityReport(); vipar.setAllocatedPublicIpAddressesInLastSevenDays(rndLong(0, 1000)); vipar.setAllocatedServiceNetIpAddressesInLastSevenDays(rndLong(0, 1000)); vipar.setClusterId(rndInt(0, 1000)); vipar.setClusterName("aClusterName"); vipar.setFreeAndClearPublicIpAddresses(rndLong(0, 1000)); vipar.setFreeAndClearServiceNetIpAddresses(rndLong(0, 1000)); vipar.setPublicIpAddressesAllocatedToday(rndLong(0, 1000)); vipar.setPublicIpAddressesInHolding(rndLong(0, 1000)); vipar.setRemainingDaysOfPublicIpAddresses(rndDouble(10.0, 20.0)); vipar.setRemainingDaysOfServiceNetIpAddresses(rndDouble(10.0, 20.0)); vipar.setServiceNetIpAddressesAllocatedToday(rndLong(0, 1000)); vipar.setServiceNetIpAddressesInHolding(rndLong(0, 1000)); vipar.setTotalPublicIpAddresses(rndLong(0, 1000)); vipar.setTotalServiceNetAddresses(rndLong(0, 1000)); return vipar; } public static VirtualIpAvailabilityReport retrieveVipsAvailabilityReport(int id) { VirtualIpAvailabilityReport vipar = new VirtualIpAvailabilityReport(); vipar.setAllocatedPublicIpAddressesInLastSevenDays(rndLong(0, 1000)); vipar.setAllocatedServiceNetIpAddressesInLastSevenDays(rndLong(0, 1000)); vipar.setClusterId(id); vipar.setClusterName("aClusterName"); vipar.setFreeAndClearPublicIpAddresses(rndLong(0, 1000)); vipar.setFreeAndClearServiceNetIpAddresses(rndLong(0, 1000)); vipar.setPublicIpAddressesAllocatedToday(rndLong(0, 1000)); vipar.setPublicIpAddressesInHolding(rndLong(0, 1000)); vipar.setRemainingDaysOfPublicIpAddresses(rndDouble(10.0, 20.0)); vipar.setRemainingDaysOfServiceNetIpAddresses(rndDouble(10.0, 20.0)); vipar.setServiceNetIpAddressesAllocatedToday(rndLong(0, 1000)); vipar.setServiceNetIpAddressesInHolding(rndLong(0, 1000)); vipar.setTotalPublicIpAddresses(rndLong(0, 1000)); vipar.setTotalServiceNetAddresses(rndLong(0, 1000)); return vipar; } public static VirtualIpAvailabilityReports retrieveRndVipsAvailabilityReports(int max) { VirtualIpAvailabilityReports vipars = new VirtualIpAvailabilityReports(); int nreports = max; for (int i = nreports; i >= 0; i--) { VirtualIpAvailabilityReport vipar = retrieveRndVipsAvailabilityReport(); vipars.getVirtualIpAvailabilityReports().add(vipar); } return vipars; } public static VirtualIpAvailabilityReports retrieveVipsAvailabilityReports(int id) { VirtualIpAvailabilityReports vipars = new VirtualIpAvailabilityReports(); int viparid = id; VirtualIpAvailabilityReport vipar = retrieveVipsAvailabilityReport(viparid); vipars.getVirtualIpAvailabilityReports().add(vipar); return vipars; } public static VirtualIp getClusterVirtualIpDetails(int id, int lbid, int cid, String address, IpVersion version, VipType vipType) { VirtualIp vip = new VirtualIp(); vip.setId(id); vip.setLoadBalancerId(lbid); vip.setClusterId(cid); vip.setAddress(address); vip.setType(vipType); return vip; } public static Suspension getLoadBalancerSuspensionDetails(String reason, int ticketId, String user) { Suspension suspension = new Suspension(); Ticket ticket = new Ticket(); ticket.setTicketId("1234"); ticket.setComment("My first ticket! Yuppee!"); suspension.setReason(reason); suspension.setTicket(ticket); suspension.setUser(user); return suspension; } public static Backup getLoadbalancerBackupDetails() { return new Backup(); } public static Host getHostDetails() { return new Host(); } public static VirtualIp getLoadbalancerVirtualIpDetails(int id, int loadBalancerId, int clusterId, String address, VipType vipType) { VirtualIp vip = new VirtualIp(); VirtualIp vip2 = new VirtualIp(); vip.setId(id); vip.setLoadBalancerId(loadBalancerId); vip.setClusterId(clusterId); vip.setAddress(address); vip.setType(vipType); vip2.setType(vipType.PUBLIC); vip2.setLoadBalancerId(1); vip2.setClusterId(1); vip2.setAddress("127.0.0.1"); vip2.setId(1); return vip; } public static RateLimit getRateLimitDetails(int ticketId, int maxRequestsPerSecond) throws ParseException { RateLimit rl = new RateLimit(); Ticket ticket = new Ticket(); ticket.setTicketId("1234"); ticket.setComment("My first ticket! Yuppee!"); rl.setExpirationTime(Calendar.getInstance()); rl.setMaxRequestsPerSecond(ticketId); rl.setTicket(ticket); return rl; } public static Integer rndInt(int lo, int hi) { int ri = rnd.nextInt(); ri = ri < 0 ? 0 - ri : ri; return new Integer(ri % (hi - lo + 1) + lo); } public static Long rndLong(int lo,int hi) { return new Long(rndInt(lo,hi)); } public static String rndIp() { String out = String.format("%s.%s.%s.%s", rndInt(0, 255), rndInt(0, 255), rndInt(0, 255), rndInt(0, 255)); return out; } public static Double rndDouble(double lo, double hi) { double d = rnd.nextDouble(); return (Double) (hi - lo) * d + lo; } public static Object rndChoice(List oList) { int ri = rndInt(0, oList.size() - 1); return oList.get(ri); } public static Object rndChoice(Object[] oArray) { int ri = rndInt(0, oArray.length - 1); return oArray[ri]; } public static Backup rndBackup() { Backup b = new Backup(); int ri = rndInt(0, 10000); b.setName(String.format("Backup.%d", ri)); b.setId(ri); b.setBackupTime(Calendar.getInstance()); return b; } public static Backups rndBackups() { Backups backups = new Backups(); int nbackups = rndInt(1, 5); for (int i = 0; i <= nbackups; i++) { backups.getBackups().add(rndBackup()); } return backups; } // public static Customer rndCustomer() { // Customer c = new Customer(); // LoadBalancer l; // for (int ri = rndInt(3, 7); ri >= 0; ri--) { // l = new LoadBalancer(); // l.setHosts(new Hosts()); // l.getHosts().getHosts().add(rndHostPost()); // l.getHosts().setSticky((Boolean) rndChoice(new Boolean[]{true, false})); // l.setName(String.format("rndLB.%d", ri)); // l.setId(rndInt(0, 10000)); // c.getLoadBalancers().add(l); // } // c.setAccountId(rndInt(0, 10000)); // return c; // } // // public static CustomerList rndCustomerList(int max) { // // CustomerList cl = new CustomerList(); // for (int i = rndInt(1, max); i >= 0; i--) { // cl.getCustomers().add(rndCustomer()); // } // return cl; // } public static HostMachineDetails newHostMachineDetails(){ HostMachineDetails hmd = new HostMachineDetails(); hmd.setActiveLBConfigurations(new Long(5)); hmd.setAvailableConcurrentConnections(20); hmd.setCurrentUtilization("12%"); Host host = rndHostPost(); hmd.setHost(host); hmd.setTotalConcurrentConnections(25); hmd.setUniqueCustomers(3); return hmd; } public static HostCapacityReport rndHostCapacityReport() { HostCapacityReport h = new HostCapacityReport(); h.setAllocatedConcurrentConnections(rndInt(0, 10000)); h.setAllocatedConcurrentConnectionsInLastSevenDays(rndInt(0, 250)); h.setAllocatedConcurrentConnectionsToday(rndInt(0, 1000)); h.setAvailableConcurrentConnections(rndInt(0, 64)); h.setHostId(rndInt(0, 10000)); h.setHostName(String.format("Host.%d", h.getHostId())); h.setRemainingDaysOfCapacity(rndDouble(0, 31)); h.setTotalConcurrentConnectionCapacity(rndInt(0, 400)); return h; } public static Host rndHostPut() { Host h; h = new Host(); h.setName(String.format("Host.%s", rndInt(0, 10000))); return h; } public static HostCapacityReports rndHostCapacityReports(int max) { HostCapacityReports hs = new HostCapacityReports(); int nreports = rndInt(1, max); for (int i = nreports; i >= 0; i--) { HostCapacityReport h = rndHostCapacityReport(); hs.getHostCapacityReports().add(h); } return hs; } public static Host rndHostPost() { Host h; h = new Host(); h.setName(String.format("Host.%s", rndInt(0, 10000))); h.setClusterId(rndInt(0, 10000)); h.setCoreDeviceId(rndInt(0, 10000).toString()); h.setStatus((HostStatus) rndChoice(HostStatus.values())); h.setManagementIp(rndIp()); h.setManagementSoapInterface(String.format("http://%s:8080/soap", rndIp())); h.setManagementRestInterface(String.format("http://%s:8080/rest", rndIp())); h.setMaxConcurrentConnections(rndInt(0, 900)); h.setType((HostType) rndChoice(HostType.values())); return h; } public static ConnectionThrottle rndConnectionThrottle() { ConnectionThrottle cl = new ConnectionThrottle(); cl.setMaxConnectionRate(rndInt(0, 1000)); cl.setMaxConnections(rndInt(0, 256)); cl.setMinConnections(rndInt(0, 24)); cl.setMaxConnectionRate(rndInt(0, 32)); return cl; } public static LoadBalancerUsageRecord rndCurrentUsage() { LoadBalancerUsageRecord usage = new LoadBalancerUsageRecord(); usage.setIncomingTransfer((long) rndInt(0, 1000000000)); usage.setOutgoingTransfer((long) rndInt(0, 1000000000)); return usage; } public static Hosts rndHosts(int max) { int nhosts = rndInt(0, max); Hosts hosts = new Hosts(); hosts.setSticky((Boolean) StubFactory.rndChoice((new Boolean[]{true, false}))); for (int i = nhosts; i <= StubFactory.rndInt(1, 5); i++) { Host h = StubFactory.rndHostPost(); h.setId(rndInt(0, 10000)); hosts.getHosts().add(h); } return hosts; } public static Node rndNode() { Node n = new Node(); n.setCondition((NodeCondition) rndChoice(NodeCondition.values())); n.setId(rndInt(0, 10000)); n.setAddress(rndIp()); n.setPort(rndInt(1, 32000)); n.setStatus((NodeStatus) rndChoice(NodeStatus.values())); return n; } public static Nodes rndNodes(int max) { int nnodes = rndInt(0, 5); Nodes ns = new Nodes(); for (int i = nnodes; i >= 0; i--) { Node n = rndNode(); ns.getNodes().add(n); } return ns; } public static RateLimit rndRateLimit() { Ticket ticket = new Ticket(); ticket.setTicketId("1234"); ticket.setComment("My first ticket! Yuppee!"); RateLimit rl = new RateLimit(); rl.setExpirationTime(Calendar.getInstance()); rl.setMaxRequestsPerSecond(rndInt(0, 60)); rl.setTicket(ticket); return rl; } public static SessionPersistence rndSessionPersistance() { SessionPersistence sp = new SessionPersistence(); sp.setPersistenceType((PersistenceType) rndChoice(PersistenceType.values())); return sp; } public static LoadBalancer rndLoadBalancer() { int ri = rndInt(0, 10000); LoadBalancer l = new LoadBalancer(); l.setAlgorithm((String) rndChoice(AlgorithmType.values())); org.openstack.atlas.docs.loadbalancers.api.v1.Cluster c; c = new org.openstack.atlas.docs.loadbalancers.api.v1.Cluster(); c.setName(String.format("Cluster for LB.%d", ri)); l.setCluster(c); ConnectionThrottle cl = rndConnectionThrottle(); l.setConnectionThrottle(cl); ConnectionLogging conLog = new ConnectionLogging(); conLog.setEnabled(true); l.setConnectionLogging(conLog); Created created = new Created(); created.setTime(Calendar.getInstance()); l.setCreated(created); // l.getCurrentUsage().add(rndCurrentUsage()); // l.setHosts(rndHosts(3)); l.setId(rndInt(0, 10000)); l.setName(String.format("LB.%d", l.getId())); l.getNodes().addAll(StubFactory.rndNodes(10).getNodes()); l.setPort(rndInt(0, 32000)); List<String> protocolNames = ProtocolPortBindings.getKeys(); l.setProtocol((String)rndChoice(protocolNames)); l.setRateLimit(rndRateLimit()); l.setSessionPersistence(rndSessionPersistance()); l.setStatus((String) rndChoice(LoadBalancerStatus.values())); l.setTotalActiveConnections(rndInt(0, 10000)); return l; } public static VirtualIpBlock getVirtualIpBlock(String lo, String hi) { VirtualIpBlock virtualIpBlock = new VirtualIpBlock(); virtualIpBlock.setFirstIp(lo); virtualIpBlock.setLastIp(hi); return virtualIpBlock; } public static VirtualIpBlocks getVirtualIpBlocks() { VirtualIpBlocks virtualIpBlocks = new VirtualIpBlocks(); virtualIpBlocks.setType(VipType.SERVICENET); virtualIpBlocks.getVirtualIpBlocks().add(getVirtualIpBlock("10.0.0.5", "10.0.0.253")); virtualIpBlocks.getVirtualIpBlocks().add(getVirtualIpBlock("172.16.0.64", "172.16.0.128")); virtualIpBlocks.getVirtualIpBlocks().add(getVirtualIpBlock("192.168.0.3", "192.168.0.100")); return virtualIpBlocks; } public static NetInterface newNetInterface(String name, String... blocks) { int i; NetInterface iface = new NetInterface(); Cidr cidr; iface.setName(name); for (i = 0; i < blocks.length; i++) { cidr = new Cidr(); cidr.setBlock(blocks[i]); iface.getCidrs().add(cidr); } return iface; } }