public Tenant build() { tenant.isCoLocated(); return tenant; } }
private PinotResourceManagerResponse scaleUpServerTenant(Tenant serverTenant, String realtimeServerTag, List<String> taggedRealtimeServers, String offlineServerTag, List<String> taggedOfflineServers, Set<String> allServingServers) { int incInstances = serverTenant.getNumberOfInstances() - allServingServers.size(); List<String> unTaggedInstanceList = getOnlineUnTaggedServerInstanceList(); if (unTaggedInstanceList.size() < incInstances) { String message = "Failed to allocate hardware resources with tenant info: " + serverTenant + ", Current number of untagged instances : " + unTaggedInstanceList.size() + ", Current number of serving instances : " + allServingServers.size() + ", Current number of tagged offline server instances : " + taggedOfflineServers.size() + ", Current number of tagged realtime server instances : " + taggedRealtimeServers.size(); LOGGER.error(message); return PinotResourceManagerResponse.failure(message); } if (serverTenant.isCoLocated()) { return updateColocatedServerTenant(serverTenant, realtimeServerTag, taggedRealtimeServers, offlineServerTag, taggedOfflineServers, incInstances, unTaggedInstanceList); } else { return updateIndependentServerTenant(serverTenant, realtimeServerTag, taggedRealtimeServers, offlineServerTag, taggedOfflineServers, incInstances, unTaggedInstanceList); } }
public PinotResourceManagerResponse updateServerTenant(Tenant serverTenant) { String realtimeServerTag = TagNameUtils.getRealtimeTagForTenant(serverTenant.getTenantName()); List<String> taggedRealtimeServers = HelixHelper.getInstancesWithTag(_helixZkManager, realtimeServerTag); String offlineServerTag = TagNameUtils.getOfflineTagForTenant(serverTenant.getTenantName()); List<String> taggedOfflineServers = HelixHelper.getInstancesWithTag(_helixZkManager, offlineServerTag); Set<String> allServingServers = new HashSet<>(); allServingServers.addAll(taggedOfflineServers); allServingServers.addAll(taggedRealtimeServers); boolean isCurrentTenantColocated = (allServingServers.size() < taggedOfflineServers.size() + taggedRealtimeServers.size()); if (isCurrentTenantColocated != serverTenant.isCoLocated()) { String message = "Not support different colocated type request for update request: " + serverTenant; LOGGER.error(message); return PinotResourceManagerResponse.failure(message); } if (serverTenant.getNumberOfInstances() < allServingServers.size() || serverTenant.getOfflineInstances() < taggedOfflineServers.size() || serverTenant.getRealtimeInstances() < taggedRealtimeServers.size()) { return scaleDownServer(serverTenant, taggedRealtimeServers, taggedOfflineServers, allServingServers); } return scaleUpServerTenant(serverTenant, realtimeServerTag, taggedRealtimeServers, offlineServerTag, taggedOfflineServers, allServingServers); }
public PinotResourceManagerResponse createServerTenant(Tenant serverTenant) { int numberOfInstances = serverTenant.getNumberOfInstances(); List<String> unTaggedInstanceList = getOnlineUnTaggedServerInstanceList(); if (unTaggedInstanceList.size() < numberOfInstances) { String message = "Failed to allocate server instances to Tag : " + serverTenant.getTenantName() + ", Current number of untagged server instances : " + unTaggedInstanceList.size() + ", Request asked number is : " + serverTenant.getNumberOfInstances(); LOGGER.error(message); return PinotResourceManagerResponse.failure(message); } else { if (serverTenant.isCoLocated()) { assignColocatedServerTenant(serverTenant, numberOfInstances, unTaggedInstanceList); } else { assignIndependentServerTenant(serverTenant, numberOfInstances, unTaggedInstanceList); } } return PinotResourceManagerResponse.SUCCESS; }