@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Object now = state.getData().get("now"); Long nowLong = System.currentTimeMillis(); if (now instanceof Number) { nowLong = ((Number) now).longValue(); } else { state.getData().put("now", nowLong); } return new HandlerResult(INSTANCE.HEALTH_UPDATED, new Date(nowLong)); } }
public static List<ConfigUpdateRequest> getRequests(JsonMapper jsonMapper, ProcessState state) { List<ConfigUpdateRequest> result = new ArrayList<ConfigUpdateRequest>(); Map<String, Object> requests = CollectionUtils.toMap(state.getData().get(ConfigUpdateRequest.class.getName())); for (Object obj : requests.values()) { result.add(jsonMapper.convertValue(obj, ConfigUpdateRequest.class)); } return result; }
@Override protected Object getDataResource(ProcessState state, ProcessInstance process) { if (process.getName().equalsIgnoreCase(VolumeConstants.PROCESS_REVERT)) { Snapshot snapshot = objectManager.loadResource(Snapshot.class, state.getData().get("snapshotId").toString()); return snapshot; } else if (process.getName().equalsIgnoreCase(VolumeConstants.PROCESS_RESTORE_FROM_BACKUP)) { Backup backup = objectManager.loadResource(Backup .class, state.getData().get("backupId").toString()); return backup; } throw new IllegalStateException("Unsupported process: " + process.getName()); } }
protected String getConfiguredChainProcess() { ProcessState state = instanceContext.getState(); ProcessDefinition processDefinition = instanceContext.getProcessDefinition(); if (state.getData().containsKey(processDefinition.getName() + ProcessLogic.CHAIN_PROCESS)) { return state.getData().get(processDefinition.getName() + ProcessLogic.CHAIN_PROCESS).toString(); } return null; }
public static void setRequest(ConfigUpdateRequest request, ProcessState state, Object id) { DataAccessor data = DataAccessor.fromMap(state.getData()).withScope(ConfigUpdateRequest.class).withKey( id instanceof String ? id.toString() : id.getClass().getName()); data.set(request); }
public static ConfigUpdateRequest getRequest(JsonMapper jsonMapper, ProcessState state, Object id) { DataAccessor data = DataAccessor.fromMap(state.getData()).withScope(ConfigUpdateRequest.class).withKey( id instanceof String ? id.toString() : id.getClass().getName()); return data.as(jsonMapper, ConfigUpdateRequest.class); }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Region region = (Region) state.getResource(); Object oldObj = state.getData().get("old"); if(oldObj == null || regionUpdated(oldObj, region)) { cleanupExternalLinks(region); } return null; }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Volume volume = (Volume) state.getResource(); if (Boolean.TRUE.equals(state.getData().get(VolumeConstants.REMOVE_OPTION))) { String chainProcess = objectProcessManager.getStandardProcessName(StandardProcess.REMOVE, volume); return new HandlerResult().withChainProcessName(chainProcess); } return null; }
protected void compute(Instance instance, ProcessState state) { for (InstanceHostMap map : mapDao.findNonRemoved(InstanceHostMap.class, Instance.class, instance.getId())) { activate(map, state.getData()); } }
protected void storage(Instance instance, ProcessState state) { List<Volume> volumes = getObjectManager().children(instance, Volume.class); for (Volume volume : volumes) { activate(volume, state.getData()); } }
protected HandlerResult afterDeallocate(ProcessState state, ProcessInstance process, Map<Object, Object> result) { Instance instance = (Instance) state.getResource(); for (InstanceHostMap map : mapDao.findToRemove(InstanceHostMap.class, Instance.class, instance.getId())) { if (CommonStatesConstants.ACTIVATING.equals(map.getState()) || CommonStatesConstants.ACTIVE.equals(map.getState())) { deactivate(map, state.getData()); } remove(map, state.getData()); } return new HandlerResult(result); } }
protected void activatePorts(Instance instance, ProcessState state) { for (Port port : getObjectManager().children(instance, Port.class)) { // ports can be removed while instance is still present (lb instance is an example) if (port.getRemoved() == null && !(port.getState().equalsIgnoreCase(CommonStatesConstants.REMOVED) || port.getState() .equalsIgnoreCase(CommonStatesConstants.REMOVING))) { createThenActivate(port, state.getData()); } } }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Map<String, Object> result = new HashMap<String, Object>(); Map<String, Set<Long>> allocationData = new HashMap<String, Set<Long>>(); result.put("_allocationData", allocationData); Volume volume = (Volume) state.getResource(); for (VolumeStoragePoolMap map : mapDao.findNonRemoved(VolumeStoragePoolMap.class, Volume.class, volume.getId())) { CollectionUtils.addToMap(allocationData, "volume:" + volume.getId(), map.getVolumeId(), HashSet.class); create(map, state.getData()); } return new HandlerResult(result); }
public static boolean isCreateStart(ProcessState state) { Boolean startOnCreate = DataAccessor.fromMap(state.getData()).withScope(InstanceCreate.class).withKey(InstanceConstants.FIELD_START_ON_CREATE).as( Boolean.class); return startOnCreate == null ? false : startOnCreate; }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Map<String, Object> result = new HashMap<String, Object>(); Volume volume = (Volume) state.getResource(); allocatorService.volumeDeallocate(volume); for (VolumeStoragePoolMap map : mapDao.findToRemove(VolumeStoragePoolMap.class, Volume.class, volume.getId())) { deactivateThenScheduleRemove(map, state.getData()); } return new HandlerResult(result); } }
protected HandlerResult checkDisconnect(ProcessState state) { DataAccessor acc = DataAccessor.fromMap(state.getData()).withScope(AgentActivate.class).withKey("start"); Long startTime = acc.as(Long.class); if (startTime == null) { startTime = System.currentTimeMillis(); acc.set(startTime); } if (PING_DISCONNECT_TIMEOUT.get() * 1000L < (System.currentTimeMillis() - startTime)) { return new HandlerResult().withChainProcessName(AgentConstants.PROCESS_DECONNECT).withShouldContinue(false); } return null; }
@Override public void init(ProcessState state, int... checkpointWeights) { DataAccessor value = DataAccessor.fromMap(state.getData()).withKey("progress"); progressState = value.as(jsonMapper, ProcessProgressState.class); if (progressState == null) { progressState = new ProcessProgressState(checkpointWeights); value.set(progressState); } }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { /* Release requested IPs on delete, not on purge */ Nic nic = (Nic) state.getResource(); for (IpAddressNicMap map : mapDao.findToRemove(IpAddressNicMap.class, Nic.class, nic.getId())) { IpAddress ipAddress = getObjectManager().loadResource(IpAddress.class, map.getIpAddressId()); if (DockerIpAddressConstants.KIND_DOCKER.equals(ipAddress.getKind())) { /* Deactivate Docker IPs on stop */ deactivate(ipAddress, state.getData()); } } return null; }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { DataAccessor.fromMap(state.getData()).withScope(InstanceProcessOptions.class).withKey(InstanceProcessOptions.START).set(true); return new HandlerResult().withChainProcessName(InstanceConstants.PROCESS_STOP); }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { /* Release requested IPs on delete, not on purge */ Nic nic = (Nic) state.getResource(); for (IpAddressNicMap map : mapDao.findToRemove(IpAddressNicMap.class, Nic.class, nic.getId())) { IpAddress ipAddress = getObjectManager().loadResource(IpAddress.class, map.getIpAddressId()); /* Deactivate to release the IP address */ deactivate(ipAddress, state.getData()); } return null; }