public static boolean equal(DataCenterInfo first, DataCenterInfo second) { if (first == second) { return true; } if (first == null || first == null && second != null) { return false; } if (first.getClass() != second.getClass()) { return false; } if (first instanceof AmazonInfo) { return equal((AmazonInfo) first, (AmazonInfo) second); } return first.getName() == second.getName(); }
public static boolean subsetOf(DataCenterInfo first, DataCenterInfo second) { if (first == second) { return true; } if (first == null || first == null && second != null) { return false; } if (first.getClass() != second.getClass()) { return false; } if (first instanceof AmazonInfo) { return subsetOf((AmazonInfo) first, (AmazonInfo) second); } return first.getName() == second.getName(); }
protected boolean isAws(InstanceInfo selfInstanceInfo) { boolean result = DataCenterInfo.Name.Amazon == selfInstanceInfo.getDataCenterInfo().getName(); logger.info("isAws returned {}", result); return result; }
@Override public void serializeWithType(DataCenterInfo dataCenterInfo, JsonGenerator jgen, SerializerProvider provider, TypeSerializer typeSer) throws IOException, JsonProcessingException { jgen.writeStartObject(); // XStream encoded adds this for backwards compatibility issue. Not sure if needed anymore if (dataCenterInfo.getName() == Name.Amazon) { jgen.writeStringField("@class", "com.netflix.appinfo.AmazonInfo"); } else { jgen.writeStringField("@class", "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"); } jgen.writeStringField(ELEM_NAME, dataCenterInfo.getName().name()); if (dataCenterInfo.getName() == Name.Amazon) { AmazonInfo aInfo = (AmazonInfo) dataCenterInfo; jgen.writeObjectField(DATACENTER_METADATA, aInfo.getMetadata()); } jgen.writeEndObject(); }
@Override public void openForTraffic(ApplicationInfoManager applicationInfoManager, int count) { // Renewals happen every 30 seconds and for a minute it should be a factor of 2. this.expectedNumberOfClientsSendingRenews = count; updateRenewsPerMinThreshold(); logger.info("Got {} instances from neighboring DS node", count); logger.info("Renew threshold is: {}", numberOfRenewsPerMinThreshold); this.startupTime = System.currentTimeMillis(); if (count > 0) { this.peerInstancesTransferEmptyOnStartup = false; } DataCenterInfo.Name selfName = applicationInfoManager.getInfo().getDataCenterInfo().getName(); boolean isAws = Name.Amazon == selfName; if (isAws && serverConfig.shouldPrimeAwsReplicaConnections()) { logger.info("Priming AWS connections for all replicas.."); primeAwsReplicas(applicationInfoManager); } logger.info("Changing status to UP"); applicationInfoManager.setInstanceStatus(InstanceStatus.UP); super.postInit(); }
private EurekaMonitors(String name, String description) { this.name = name; this.description = description; DataCenterInfo dcInfo = ApplicationInfoManager.getInstance().getInfo().getDataCenterInfo(); if (dcInfo.getName() == Name.Amazon) { myZoneCounterName = ((AmazonInfo) dcInfo).get(MetaDataKey.availabilityZone) + "." + name; } else { myZoneCounterName = "dcmaster." + name; } }
private void doMyDataCenterInfoEncodeDecodeTest(AbstractEurekaJacksonCodec codec) throws Exception { DataCenterInfo myDataCenterInfo = new DataCenterInfo() { @Override public Name getName() { return Name.MyOwn; } }; String encodedString = codec.getObjectMapper(DataCenterInfo.class).writeValueAsString(myDataCenterInfo); DataCenterInfo decodedValue = codec.getObjectMapper(DataCenterInfo.class).readValue(encodedString, DataCenterInfo.class); assertThat(decodedValue.getName(), is(equalTo(Name.MyOwn))); }
@Nullable public String getInstanceRegion(InstanceInfo instanceInfo) { if (instanceInfo.getDataCenterInfo() == null || instanceInfo.getDataCenterInfo().getName() == null) { logger.warn("Cannot get region for instance id:{}, app:{} as dataCenterInfo is null. Returning local:{} by default", instanceInfo.getId(), instanceInfo.getAppName(), localRegion); return localRegion; } if (DataCenterInfo.Name.Amazon.equals(instanceInfo.getDataCenterInfo().getName())) { AmazonInfo amazonInfo = (AmazonInfo) instanceInfo.getDataCenterInfo(); Map<String, String> metadata = amazonInfo.getMetadata(); String availabilityZone = metadata.get(AmazonInfo.MetaDataKey.availabilityZone.getName()); if (null != availabilityZone) { return azToRegionMapper.getRegionForAvailabilityZone(availabilityZone); } } return null; }
} else if (info.getDataCenterInfo() == null) { return Response.status(400).entity("Missing dataCenterInfo").build(); } else if (info.getDataCenterInfo().getName() == null) { return Response.status(400).entity("Missing dataCenterInfo Name").build();
/** * Get the zone that a particular instance is in. * Note that for AWS deployments, myInfo should contain AWS dataCenterInfo which should contain * the AWS zone of the instance, and availZones is ignored. * * @param availZones the list of available zones for non-AWS deployments * @param myInfo * - The InstanceInfo object of the instance. * @return - The zone in which the particular instance belongs to. */ public static String getZone(String[] availZones, InstanceInfo myInfo) { String instanceZone = ((availZones == null || availZones.length == 0) ? "default" : availZones[0]); if (myInfo != null && myInfo.getDataCenterInfo().getName() == DataCenterInfo.Name.Amazon) { String awsInstanceZone = ((AmazonInfo) myInfo.getDataCenterInfo()) .get(AmazonInfo.MetaDataKey.availabilityZone); if (awsInstanceZone != null) { instanceZone = awsInstanceZone; } } return instanceZone; } }
if (info.getName() == Name.Amazon) { Map<String, String> metadataMap = (Map<String, String>) context .convertAnother(info, Map.class);
@Override public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { DataCenterInfo info = (DataCenterInfo) source; writer.startNode(ELEM_NAME); // For backward compat. for now writer.setValue(info.getName().name()); writer.endNode(); if (info.getName() == Name.Amazon) { AmazonInfo aInfo = (AmazonInfo) info; writer.startNode(NODE_METADATA); // for backward compat. for now if (aInfo.getMetadata().size() == 0) { writer.addAttribute("class", "java.util.Collections$EmptyMap"); } context.convertAnother(aInfo.getMetadata()); writer.endNode(); } }
if (DataCenterInfo.Name.Amazon != dcInfo.getName() || !(dcInfo instanceof AmazonInfo)) { log.error("This is not an AWSDataCenter. You will not be able to use Discovery Nodelist Provider. Cannot proceed. " + "DataCenterInfo : {}; appName - {}. Please use SimpleNodeList provider and specify the server groups manually.",
String myPublicIP = null; if (myInfo != null && myInfo.getDataCenterInfo().getName() == Name.Amazon) { myPublicIP = ((AmazonInfo) myInfo.getDataCenterInfo()) .get(MetaDataKey.publicIpv4);
writer.startNode(NODE_DATACENTER); if (info.getDataCenterInfo().getName() == Name.Amazon) { writer.addAttribute("class", "com.netflix.appinfo.AmazonInfo");
@SuppressWarnings("deprecation") @Test public void testDI() { InstanceInfo instanceInfo = injector.getInstance(InstanceInfo.class); Assert.assertEquals(ApplicationInfoManager.getInstance().getInfo(), instanceInfo); VipAddressResolver vipAddressResolver = injector.getInstance(VipAddressResolver.class); Assert.assertTrue(vipAddressResolver instanceof Archaius2VipAddressResolver); EurekaClient eurekaClient = injector.getInstance(EurekaClient.class); DiscoveryClient discoveryClient = injector.getInstance(DiscoveryClient.class); Assert.assertEquals(DiscoveryManager.getInstance().getEurekaClient(), eurekaClient); Assert.assertEquals(DiscoveryManager.getInstance().getDiscoveryClient(), discoveryClient); Assert.assertEquals(eurekaClient, discoveryClient); EurekaClientConfig eurekaClientConfig = injector.getInstance(EurekaClientConfig.class); Assert.assertEquals(DiscoveryManager.getInstance().getEurekaClientConfig(), eurekaClientConfig); EurekaInstanceConfig eurekaInstanceConfig = injector.getInstance(EurekaInstanceConfig.class); Assert.assertEquals(DiscoveryManager.getInstance().getEurekaInstanceConfig(), eurekaInstanceConfig); Assert.assertTrue(eurekaInstanceConfig instanceof EurekaArchaius2InstanceConfig); ApplicationInfoManager applicationInfoManager = injector.getInstance(ApplicationInfoManager.class); InstanceInfo myInfo = applicationInfoManager.getInfo(); Assert.assertEquals(DataCenterInfo.Name.MyOwn, myInfo.getDataCenterInfo().getName()); } }
@SuppressWarnings("deprecation") @Test public void testDI() { InstanceInfo instanceInfo = injector.getInstance(InstanceInfo.class); Assert.assertEquals(ApplicationInfoManager.getInstance().getInfo(), instanceInfo); VipAddressResolver vipAddressResolver = injector.getInstance(VipAddressResolver.class); Assert.assertTrue(vipAddressResolver instanceof Archaius2VipAddressResolver); EurekaClient eurekaClient = injector.getInstance(EurekaClient.class); DiscoveryClient discoveryClient = injector.getInstance(DiscoveryClient.class); Assert.assertEquals(DiscoveryManager.getInstance().getEurekaClient(), eurekaClient); Assert.assertEquals(DiscoveryManager.getInstance().getDiscoveryClient(), discoveryClient); Assert.assertEquals(eurekaClient, discoveryClient); EurekaClientConfig eurekaClientConfig = injector.getInstance(EurekaClientConfig.class); Assert.assertEquals(DiscoveryManager.getInstance().getEurekaClientConfig(), eurekaClientConfig); EurekaInstanceConfig eurekaInstanceConfig = injector.getInstance(EurekaInstanceConfig.class); Assert.assertEquals(DiscoveryManager.getInstance().getEurekaInstanceConfig(), eurekaInstanceConfig); Assert.assertTrue(eurekaInstanceConfig instanceof Ec2EurekaArchaius2InstanceConfig); ApplicationInfoManager applicationInfoManager = injector.getInstance(ApplicationInfoManager.class); InstanceInfo myInfo = applicationInfoManager.getInfo(); Assert.assertTrue(myInfo.getDataCenterInfo() instanceof AmazonInfo); Assert.assertEquals(DataCenterInfo.Name.Amazon, myInfo.getDataCenterInfo().getName()); } }
protected boolean isAws(InstanceInfo selfInstanceInfo) { boolean result = DataCenterInfo.Name.Amazon == selfInstanceInfo .getDataCenterInfo().getName(); log.info("isAws returned " + result); return result; }
protected boolean isAws(InstanceInfo selfInstanceInfo) { boolean result = DataCenterInfo.Name.Amazon == selfInstanceInfo.getDataCenterInfo().getName(); logger.info("isAws returned {}", result); return result; }
private EurekaMonitors(String name, String description) { this.name = name; this.description = description; DataCenterInfo dcInfo = ApplicationInfoManager.getInstance().getInfo().getDataCenterInfo(); if (dcInfo.getName() == Name.Amazon) { myZoneCounterName = ((AmazonInfo) dcInfo).get(MetaDataKey.availabilityZone) + "." + name; } else { myZoneCounterName = "dcmaster." + name; } }