@Override protected Long getId(Object obj) { if (obj instanceof Host) { return ((Host) obj).getId(); } return null; }
@Override public StoragePool mapNewPool(Host host, Map<String, Object> properties) { return mapNewPool(host.getId(), properties); }
protected List<Long> getHostsSatisfyingHostAffinityInternal(boolean includeRemoved, Long accountId, Map<String, String> labelConstraints) { List<? extends Host> hosts = includeRemoved ? allocatorDao.getNonPurgedHosts(accountId) : allocatorDao.getActiveHosts(accountId); List<Constraint> hostAffinityConstraints = getHostAffinityConstraintsFromLabels(labelConstraints); List<Long> acceptableHostIds = new ArrayList<Long>(); for (Host host : hosts) { if (hostSatisfiesHostAffinity(host.getId(), hostAffinityConstraints)) { acceptableHostIds.add(host.getId()); } } return acceptableHostIds; }
protected void removeHealthCheckHostMaps(Host host) { List<? extends HealthcheckInstanceHostMap> healthHostMaps = mapDao.findNonRemoved( HealthcheckInstanceHostMap.class, Host.class, host.getId()); for (HealthcheckInstanceHostMap healthHostMap : healthHostMaps) { objectProcessManager.scheduleStandardProcess(StandardProcess.REMOVE, healthHostMap, null); } }
@Override public Object perform(String name, Object obj, ApiRequest request) { if (obj instanceof Host) { Host host = (Host) obj; resourceDao.createAndSchedule(ExternalEvent.class, EXTERNAL_EVENT.KIND, ExternalEventConstants.KIND_EXTERNAL_HOST_EVENT, EXTERNAL_EVENT.EVENT_TYPE, ExternalEventConstants.TYPE_HOST_EVACUATE, ExternalEventConstants.FIELD_HOST_ID, host.getId(), EXTERNAL_EVENT.ACCOUNT_ID, host.getAccountId()); return host; } else { return null; } }
protected Map<Long, StoragePoolHostMap> constructStoragePoolMaps(StoragePool storagePool, List<String> hostUuids) { List<? extends Host> hosts = hostDao.getHosts(storagePool.getAccountId(), hostUuids); Map<Long, StoragePoolHostMap> maps = new HashMap<Long, StoragePoolHostMap>(); for (Host h : hosts) { StoragePoolHostMap sphm = objectManager.newRecord(StoragePoolHostMap.class); sphm.setHostId(h.getId()); sphm.setStoragePoolId(storagePool.getId()); maps.put(h.getId(), sphm); } return maps; } }
void storagePoolToHostConstraint(List<Constraint> constraints, Collection<? extends StoragePool> pools) { ValidHostsConstraint hostSet = new ValidHostsConstraint(); for (Host host : allocatorDao.getHosts(pools)) { hostSet.addHost(host.getId()); } constraints.add(hostSet); }
@Override protected HandlerResult postHandle(ProcessState state, ProcessInstance process) { Agent agent = (Agent)state.getResource(); String newState = transitioningToDone.get(state.getState()); if (newState == null) { return null; } for (Host host : objectManager.children(agent, Host.class)) { log.debug("Setting host [{}] agentState to [{}] on post", host.getId(), newState); setState(host, newState); } return null; }
@Override public Collection<? extends Service> getServices(Object obj) { if (!(obj instanceof Host)) { return null; } Host host = (Host) obj; List<Service> services = new ArrayList<>(); // add all services on host services.addAll(svcDao.getServicesOnHost(host.getId())); // add all services with scale policy List<? extends Service> allServices = objMgr.find(Service.class, SERVICE.ACCOUNT_ID, host.getAccountId(), SERVICE.REMOVED, null); for (Service service : allServices) { if (sdService.isScalePolicyService(service)) { services.add(service); } } return services; }
protected void reconcileHostEndpointsImpl(final Host host) { final List<PublicEndpoint> newData = instanceDao.getPublicEndpoints(host.getAccountId(), null, host.getId()); if (host != null && host.getRemoved() == null) { updateObjectEndPoints(host, host.getKind(), host.getId(), host.getAccountId(), newData); } }
protected void trigger(Host host) { Map<String, Object> data = new HashMap<>(); data.put(ObjectMetaDataManager.ACCOUNT_FIELD, host.getAccountId()); Event event = EventVO.newEvent(FrameworkEvents.STATE_CHANGE) .withData(data) .withResourceType(HostConstants.TYPE) .withResourceId(host.getId().toString()); eventService.publish(event); }
@Override protected HandlerResult preHandle(ProcessState state, ProcessInstance process) { for (Host host : objectManager.children(state.getResource(), Host.class)) { log.debug("Setting host [{}] agentState to [{}] on pre", host.getId(), state.getState()); setState(host, state.getState()); } return null; }
@Override public Object perform(String name, Object obj, ApiRequest request) { if (obj == null) { return null; } Host host = (Host)obj; HostApiAccess apiAccess = apiService.getAccess(request, host.getId(), new HashMap<String, Object>(), SOCKET_PROXY_PATH.get()); if (apiAccess == null) { return null; } HostAccess access = new HostAccess(apiAccess.getUrl(), apiAccess.getAuthenticationToken()); return access; }
protected void removeInstances(Host host) { for (Instance instance : instanceDao.getNonRemovedInstanceOn(host.getId())) { try { objectProcessManager.scheduleStandardProcess(StandardProcess.REMOVE, instance, null); } catch (ProcessCancelException e) { objectProcessManager.scheduleProcessInstance(InstanceConstants.PROCESS_STOP, instance, CollectionUtils.asMap(InstanceConstants.REMOVE_OPTION, true)); } } }
@Override public void reconcileHostEndpoints(Host host) { ConfigUpdateRequest request = ConfigUpdateRequest.forResource(Host.class, host.getId()); request.addItem(HOST_ENDPOINTS_UPDATE); request.withDeferredTrigger(false); itemManager.updateConfig(request); }
protected void publishChanged(Host host) { Map<String, Object> eventData = CollectionUtils.asMap(ObjectMetaDataManager.ACCOUNT_FIELD, host.getAccountId()); // send host update event Event event = EventVO.newEvent(FrameworkEvents.STATE_CHANGE) .withData(eventData) .withResourceType(HostConstants.TYPE) .withResourceId(host.getId().toString()); eventService.publish(event); }
protected AgentAndHost loadAgentAndHostData(ImmutablePair<Long, String> agentIdAndHostUuid) { Long agentId = agentIdAndHostUuid.left; String hostUuid = agentIdAndHostUuid.right; Agent agent = objectManager.loadResource(Agent.class, agentId); Host host = null; Map<String, Host> hosts = null; if (agent != null) { hosts = agentDao.getHosts(agent.getId()); host = hosts.get(hostUuid); } if (agent == null || agent.getAccountId() == null || host == null) throw new CantFindAgentAndHostException(); return new AgentAndHost(agent.getAccountId(), host.getId()); }
@Override public void updateHealthState(final Stack stack) { if (stack == null) { return; } List<Service> services = objectManager.find(Service.class, SERVICE.STACK_ID, stack.getId(), SERVICE.REMOVED, null); List<? extends Host> ActiveHosts = allocatorDao.getActiveHosts(stack.getAccountId()); HashSet<Long> activeHosts = new HashSet<Long>(); for(Host host: ActiveHosts){ activeHosts.add(host.getId()); } setServiceHealthState(services, activeHosts); setStackHealthState(stack); setEnvironmentHealthState(objectManager.loadResource(Account.class, stack.getAccountId())); }
@Override public IpAddress assignAndActivateNewAddress(Host host, String ipAddress) { IpAddress ipAddressObj = objectManager.create(IpAddress.class, IP_ADDRESS.ADDRESS, ipAddress, IP_ADDRESS.ACCOUNT_ID, host.getAccountId()); HostIpAddressMap map = objectManager.create(HostIpAddressMap.class, HOST_IP_ADDRESS_MAP.IP_ADDRESS_ID, ipAddressObj.getId(), HOST_IP_ADDRESS_MAP.HOST_ID, host.getId()); processManager.scheduleStandardProcess(StandardProcess.CREATE, ipAddressObj, null); processManager.scheduleStandardProcess(StandardProcess.CREATE, map, null); return ipAddressObj; }
@Override public List<? extends StoragePool> getAssociatedUnmanagedPools(Host host) { return create() .select(STORAGE_POOL.fields()) .from(STORAGE_POOL) .join(STORAGE_POOL_HOST_MAP) .on(STORAGE_POOL_HOST_MAP.STORAGE_POOL_ID.eq(STORAGE_POOL.ID)) .where( STORAGE_POOL_HOST_MAP.REMOVED.isNull() .and(STORAGE_POOL_HOST_MAP.HOST_ID.eq(host.getId()) .and(STORAGE_POOL.KIND.in(AllocatorUtils.UNMANGED_STORAGE_POOLS)))) .fetchInto(StoragePoolRecord.class); }