/** * {@inheritDoc} */ @Override public void from(io.cattle.platform.core.model.HealthcheckInstance from) { setId(from.getId()); setName(from.getName()); setAccountId(from.getAccountId()); setKind(from.getKind()); setUuid(from.getUuid()); setDescription(from.getDescription()); setState(from.getState()); setCreated(from.getCreated()); setRemoved(from.getRemoved()); setRemoveTime(from.getRemoveTime()); setData(from.getData()); setInstanceId(from.getInstanceId()); }
/** * {@inheritDoc} */ @Override public <E extends io.cattle.platform.core.model.HealthcheckInstance> E into(E into) { into.from(this); return into; }
@Override public List<? extends Instance> getInstances(Object obj) { if (!(obj instanceof HealthcheckInstanceHostMap)) { return null; } HealthcheckInstanceHostMap hostMap = (HealthcheckInstanceHostMap) obj; List<Instance> instances = new ArrayList<>(); HealthcheckInstance hInstance = objectManager.loadResource(HealthcheckInstance.class, hostMap.getHealthcheckInstanceId()); if (hInstance == null || hInstance.getRemoved() != null) { return instances; } Instance instance = objectManager.loadResource(Instance.class, hInstance.getInstanceId()); if (instance != null && instance.getRemoved() == null) { instances.add(instance); } return instances; } }
throw new ClientVisibleException(ResponseCodes.FORBIDDEN, VERIFY_AGENT); if(isNetworkStack(resourceAccId, healthcheckInstance.getInstanceId())) { if(!ENABLE_HEALTHCHECK.get()) { event.setReportedHealth("UP"); event.setInstanceId(healthcheckInstance.getInstanceId()); event.setHealthcheckInstanceId(healthcheckInstance.getId()); event.setHostId(healthcheckInstanceHostMap.getHostId());
protected String determineNewHealthState(HealthcheckInstance hcInstance, HealthcheckInstanceHostMap hcihm, String healthState) { List<HealthcheckInstanceHostMap> others = objectManager.find(HealthcheckInstanceHostMap.class, HEALTHCHECK_INSTANCE_HOST_MAP.HEALTHCHECK_INSTANCE_ID, hcInstance.getId(), HEALTHCHECK_INSTANCE_HOST_MAP.STATE, CommonStatesConstants.ACTIVE);
HealthcheckInstance.class, healthInstance.getId()); List<? extends Host> availableActiveHosts = allocatorDao.getActiveHosts(healthInstance.getAccountId());
protected String getHealthState(HealthcheckInstance hcInstance) { Instance instance = objectManager.loadResource(Instance.class, hcInstance.getInstanceId()); return instance == null ? null : instance.getHealthState(); }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { ServiceEvent event = (ServiceEvent)state.getResource(); HealthcheckInstance hcInstance = objectManager.loadResource(HealthcheckInstance.class, event.getHealthcheckInstanceId()); if (hcInstance != null) { return new HandlerResult( ObjectMetaDataManager.ACCOUNT_FIELD, hcInstance.getAccountId() ); } return null; }
@Override public void healthCheckReconcile(final HealthcheckInstanceHostMap hcihm, final String healthState) { final HealthcheckInstance hcInstance = objectManager.loadResource(HealthcheckInstance.class, hcihm.getHealthcheckInstanceId()); lockManager.lock(new HealthcheckInstanceLock(hcInstance.getId()), new LockCallbackNoReturn() { @Override public void doWithLockNoResult() { processHealthcheckInstance(hcihm, healthState); } }); }
protected void processHealthcheckInstance(HealthcheckInstanceHostMap hcihm, String healthState) { HealthcheckInstance hcInstance = objectManager.loadResource(HealthcheckInstance.class, hcihm.getHealthcheckInstanceId()); String updateWithState = determineNewHealthState(hcInstance, hcihm, healthState); if (updateWithState == null) { return; } Instance instance = objectManager.loadResource(Instance.class, hcInstance.getInstanceId()); updateInstanceHealthState(instance, updateWithState); }
protected void createHealthCheckHostMaps(HealthcheckInstanceType instanceType, long id, Long accountId, HealthcheckInstance healthInstance) { Long inferiorHostId = getInstanceHostId(instanceType, id); List<Long> healthCheckHostIds = getHealthCheckHostIds(healthInstance, inferiorHostId); List<HealthcheckInstanceHostMap> healthHostMaps = objectManager.find(HealthcheckInstanceHostMap.class, HEALTHCHECK_INSTANCE_HOST_MAP.HEALTHCHECK_INSTANCE_ID, healthInstance.getId(), HEALTHCHECK_INSTANCE_HOST_MAP.REMOVED, null); for (Long healthCheckHostId : healthCheckHostIds) { HealthcheckInstanceHostMap healthHostMap = null; for(HealthcheckInstanceHostMap hostMap : healthHostMaps) { if(!hostMap.getHostId().equals(healthCheckHostId)) { continue; } if (healthHostMap == null) { healthHostMap = hostMap; } else if (!hostMap.getState().equals(CommonStatesConstants.REMOVING)) { objectProcessManager.scheduleStandardProcess(StandardProcess.REMOVE, hostMap, null); } } Long instanceId = (instanceType == HealthcheckInstanceType.INSTANCE ? id : null); if (healthHostMap == null) { resourceDao.createAndSchedule(HealthcheckInstanceHostMap.class, HEALTHCHECK_INSTANCE_HOST_MAP.HOST_ID, healthCheckHostId, HEALTHCHECK_INSTANCE_HOST_MAP.HEALTHCHECK_INSTANCE_ID, healthInstance.getId(), HEALTHCHECK_INSTANCE_HOST_MAP.ACCOUNT_ID, accountId, HEALTHCHECK_INSTANCE_HOST_MAP.INSTANCE_ID, instanceId); } } }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Instance instance = (Instance) state.getResource(); HealthcheckInstance hi = objectManager.findAny(HealthcheckInstance.class, HEALTHCHECK_INSTANCE.INSTANCE_ID, instance.getId(), HEALTHCHECK_INSTANCE.REMOVED, null); if (hi == null) { return null; } List<? extends HealthcheckInstanceHostMap> hostMaps = objectManager.find(HealthcheckInstanceHostMap.class, HEALTHCHECK_INSTANCE_HOST_MAP.HEALTHCHECK_INSTANCE_ID, hi.getId(), HEALTHCHECK_INSTANCE_HOST_MAP.REMOVED, null); for (HealthcheckInstanceHostMap hostMap : hostMaps) { objectProcessManager.scheduleStandardProcess(StandardProcess.REMOVE, hostMap, null); } objectProcessManager.scheduleStandardProcess(StandardProcess.REMOVE, hi, null); return null; }