@WriteOperation public Map<String, Object> shutdown() throws Exception { Map<String, Object> shutdownCountData = new LinkedHashMap<>(); // registries int registriesCount = getRegistries().size(); // protocols int protocolsCount = getProtocolConfigsBeanMap().size(); ProtocolConfig.destroyAll(); shutdownCountData.put("registries", registriesCount); shutdownCountData.put("protocols", protocolsCount); // Service Beans Map<String, ServiceBean> serviceBeansMap = getServiceBeansMap(); if (!serviceBeansMap.isEmpty()) { for (ServiceBean serviceBean : serviceBeansMap.values()) { serviceBean.destroy(); } } shutdownCountData.put("services", serviceBeansMap.size()); // Reference Beans ReferenceAnnotationBeanPostProcessor beanPostProcessor = getReferenceAnnotationBeanPostProcessor(); int referencesCount = beanPostProcessor.getReferenceBeans().size(); beanPostProcessor.destroy(); shutdownCountData.put("references", referencesCount); // Set Result to complete Map<String, Object> shutdownData = new TreeMap<>(); shutdownData.put("shutdown.count", shutdownCountData); return shutdownData; }
@WriteOperation public Object restart() { Thread thread = new Thread(this::safeRestart); thread.setDaemon(false); thread.start(); return Collections.singletonMap("message", "Restarting"); }
@WriteOperation public Map<String, String> shutdown() { if (this.context == null) { return NO_CONTEXT_MESSAGE; } try { return SHUTDOWN_MESSAGE; } finally { Thread thread = new Thread(this::performShutdown); thread.setContextClassLoader(getClass().getClassLoader()); thread.start(); } }
@WriteOperation public Collection<String> refresh() { Set<String> keys = contextRefresher.refresh(); return keys; }
@WriteOperation public Object write(String name, String value) { environment.setProperty(name, value); return Collections.singletonMap(name, value); }
@WriteOperation public void rebuild() { this.graphServer.rebuild(); }
@WriteOperation public void configureLogLevel(@Selector String name, @Nullable LogLevel configuredLevel) { Assert.notNull(name, "Name must not be empty"); this.loggingSystem.setLogLevel(name, configuredLevel); }
@WriteOperation public ResponseEntity<?> setStatus(String status) { Assert.notNull(status, "status may not by null"); if (this.registration == null) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body("no registration found"); } this.serviceRegistry.setStatus(this.registration, status); return ResponseEntity.ok().build(); }
@WriteOperation public Boolean resume() { if (!isRunning()) { doResume(); return true; } return false; } }
@WriteOperation public Boolean pause() { if (isRunning()) { doPause(); return true; } return false; } }
@WriteOperation public Collection<String> refresh() { Set<String> keys = contextRefresher.refresh(); return keys; }
@WriteOperation public String enableChaosMonkey() { this.chaosMonkeySettings.getChaosMonkeyProperties().setEnabled(true); return "Chaos Monkey is enabled"; }
@WriteOperation public String disableChaosMonkey() { this.chaosMonkeySettings.getChaosMonkeyProperties().setEnabled(false); return "Chaos Monkey is disabled"; }
@WriteOperation public String disableChaosMonkey() { this.chaosMonkeySettings.getChaosMonkeyProperties().setEnabled(false); return "Chaos Monkey is disabled"; }
@WriteOperation public Boolean resume() { if (!isRunning()) { doResume(); return true; } return false; } }
@WriteOperation public void busEnv(String name, String value) { //TODO: document params Map<String, String> params = Collections.singletonMap(name, value); publish(new EnvironmentChangeRemoteApplicationEvent(this, getInstanceId(), null, params)); }
@WriteOperation public String toggleExceptionAssault() { this.chaosMonkeySettings.getAssaultProperties().setExceptionsActive(!this.getAssaultProperties().isExceptionsActive()); return String.valueOf(this.getAssaultProperties().isExceptionsActive()); }
@WriteOperation public String toggleLatencyAssault() { this.chaosMonkeySettings.getAssaultProperties().setLatencyActive(!this.getAssaultProperties().isLatencyActive()); return String.valueOf(this.getAssaultProperties().isLatencyActive()); }
@WriteOperation public String toggleKillApplicationAssault() { this.chaosMonkeySettings.getAssaultProperties().setKillApplicationActive(!this.getAssaultProperties().isKillApplicationActive()); return String.valueOf(this.getAssaultProperties().isKillApplicationActive()); }
@WriteOperation public String toggleLatencyAssault() { this.chaosMonkeySettings.getAssaultProperties().setLatencyActive(!this.getAssaultProperties().isLatencyActive()); return String.valueOf(this.getAssaultProperties().isLatencyActive()); }