/** * Retrieves all services registered with the Agent. * <p> * GET /v1/agent/services * * @return Map of Service ID to Services. */ public Map<String, Service> getServices() { final URI uri = createURI("/services"); final HTTP.Response response = HTTP.getResponse(uri.toString()); final JsonParserAndMapper jsonParserAndMapper = new JsonParserFactory().create(); if (response.status() == 200) { final Map<String, Object> map = jsonParserAndMapper.parseMap(response.payloadAsString()); final Map<String, Service> returnMap = new HashMap<>(map.size()); map.entrySet().forEach(entry -> { @SuppressWarnings("unchecked") Service service = fromMap((Map<String, Object>) entry.getValue(), Service.class); returnMap.put(entry.getKey(), service); }); return returnMap; } die("Unable to get list of services", uri, response.status(), response.payloadAsString()); return null; }
public static <T> ConsulResponse<List<T>> consulResponseList(final Class<T> responseType, final HTTP.Response response) { List<T> responseObject = null; if (response.code() == 200) { if (!Str.isEmpty(response.body())) { responseObject = fromJsonArray(response.body(), responseType); } } else { die("Unable to read response", response.code(), response.body()); } List<String> strings = response.headers().get("X-Consul-Index"); int index = Integer.valueOf(strings.get(0)); strings = response.headers().get("X-Consul-Lastcontact"); long lastContact = Long.valueOf(strings.get(0)); strings = response.headers().get("X-Consul-Knownleader"); boolean knownLeader = Boolean.valueOf(strings.get(0)); //noinspection UnnecessaryLocalVariable @SuppressWarnings("UnnecessaryLocalVariable") ConsulResponse<List<T>> consulResponse = new ConsulResponse<>(responseObject, lastContact, knownLeader, index); return consulResponse; }
/** * Retrieves the healthchecks for a node in a given datacenter with {@link io.advantageous.consul.domain.option.RequestOptions}. * <p> * GET /v1/health/node/{node}?dc={datacenter} * * @param node node * @param datacenter datacenter * @param tag tag * @param requestOptions The Query Options to use. * @return A {@link io.advantageous.consul.domain.ConsulResponse} containing a list of * {@link io.advantageous.consul.domain.HealthCheck} objects. */ public ConsulResponse<List<HealthCheck>> getNodeChecks(final String node, final String datacenter, final String tag, final RequestOptions requestOptions) { final URI uri = createURI("/node/" + node); final HttpRequestBuilder httpRequestBuilder = RequestUtils .getHttpRequestBuilder(datacenter, tag, requestOptions, ""); final HTTP.Response httpResponse = HTTP.getResponse(uri.toString() + "?" + httpRequestBuilder.paramString()); if (httpResponse == null || httpResponse.code() != 200) { die("Unable to retrieve the service", uri, httpResponse); } return RequestUtils.consulResponseList(HealthCheck.class, httpResponse); }
/** * Retrieves the healthchecks for a state in a given datacenter with {@link io.advantageous.consul.domain.option.RequestOptions}. * <p> * GET /v1/health/state/{state}?dc={datacenter} * * @param status The state to query. * @param datacenter datacenter * @param tag tag * @param requestOptions The Query Options to use. * @return A {@link io.advantageous.consul.domain.ConsulResponse} containing a list of * {@link io.advantageous.consul.domain.HealthCheck} objects. */ public ConsulResponse<List<HealthCheck>> getChecksByState(final Status status, final String datacenter, final String tag, final RequestOptions requestOptions) { final URI uri = createURI("/state/" + status.getName()); final HttpRequestBuilder httpRequestBuilder = RequestUtils .getHttpRequestBuilder(datacenter, tag, requestOptions, ""); final HTTP.Response httpResponse = HTTP.getResponse(uri.toString() + "?" + httpRequestBuilder.paramString()); if (httpResponse.code() != 200) { die("Unable to retrieve the service", uri, httpResponse.code(), httpResponse.body()); } return RequestUtils.consulResponseList(HealthCheck.class, httpResponse); }
/** * Retrieves the healthchecks for a service in a given datacenter with {@link io.advantageous.consul.domain.option.RequestOptions}. * <p> * GET /v1/health/service/{service}?dc={datacenter} * * @param service service * @param datacenter datacenter * @param tag tag * @param requestOptions The Query Options to use. * @return A {@link io.advantageous.consul.domain.ConsulResponse} containing a list of * {@link io.advantageous.consul.domain.HealthCheck} objects. */ public ConsulResponse<List<HealthCheck>> getServiceChecks(String service, final String datacenter, final String tag, RequestOptions requestOptions) { final URI uri = createURI("/checks/" + service); final HttpRequestBuilder httpRequestBuilder = RequestUtils .getHttpRequestBuilder(datacenter, tag, requestOptions, ""); final HTTP.Response httpResponse = HTTP.getResponse(uri.toString() + "?" + httpRequestBuilder.paramString()); if (httpResponse.code() != 200) { die("Unable to retrieve the service", uri, httpResponse.code(), httpResponse.body()); } return RequestUtils.consulResponseList(HealthCheck.class, httpResponse); }
/** * Retrieves a single node for a given datacenter with {@link io.advantageous.consul.domain.option.RequestOptions}. * <p> * GET /v1/catalog/node/{node}?dc={datacenter} * * @param node node * @param datacenter dc * @param tag tag * @param requestOptions The Query Options to use. * @return A list of matching {@link io.advantageous.consul.domain.CatalogService} objects. */ public ConsulResponse<CatalogNode> getNode(final String node, final String datacenter, final String tag, final RequestOptions requestOptions) { final URI uri = createURI("/node/" + node); final HttpRequestBuilder httpRequestBuilder = RequestUtils .getHttpRequestBuilder(datacenter, tag, requestOptions, ""); final HTTP.Response httpResponse = HTTP.getResponse(uri + "?" + httpRequestBuilder.paramString()); if (httpResponse.code() != 200) { die("Unable to retrieve the node", uri, httpResponse.code(), httpResponse.body()); } return RequestUtils.consulResponse(CatalogNode.class, httpResponse); }
/** * Retrieves all checks registered with the Agent. * <p> * GET /v1/agent/checks * * @return Map of Check ID to Checks. */ public Map<String, HealthCheck> getChecks() { final URI uri = createURI("/checks"); final HTTP.Response response = HTTP.getResponse(uri.toString()); final JsonParserAndMapper jsonParserAndMapper = new JsonParserFactory().create(); if (response.status() == 200) { final Map<String, Object> map = jsonParserAndMapper.parseMap(response.payloadAsString()); final Map<String, HealthCheck> returnMap = new HashMap<>(map.size()); map.entrySet().forEach(entry -> { @SuppressWarnings("unchecked") HealthCheck healthCheck = fromMap((Map<String, Object>) entry.getValue(), HealthCheck.class); returnMap.put(entry.getKey(), healthCheck); }); return returnMap; } die("Unable to get health checks", uri, response.status(), response.statusMessageAsString(), response.payloadAsString()); return null; }
/** * Retrieves a single service for a given datacenter with {@link io.advantageous.consul.domain.option.RequestOptions}. * <p> * GET /v1/catalog/service/{service}?dc={datacenter} * * @param serviceName service name * @param datacenter datacenter * @param tag tag * @param requestOptions The Query Options to use. * @return A {@link io.advantageous.consul.domain.ConsulResponse} containing * {@link io.advantageous.consul.domain.CatalogService} objects. */ public ConsulResponse<List<CatalogService>> getService(final String serviceName, final String datacenter, final String tag, RequestOptions requestOptions) { final URI uri = createURI("/service/" + serviceName); final HttpRequestBuilder httpRequestBuilder = RequestUtils .getHttpRequestBuilder(datacenter, tag, requestOptions, "/"); HTTP.Response httpResponse = HTTP.getResponse(uri.toString() + "?" + httpRequestBuilder.paramString()); if (httpResponse.code() != 200) { die("Unable to retrieve the service", uri, httpResponse.code(), httpResponse.body()); } return RequestUtils.consulResponseList(CatalogService.class, httpResponse); }
/** * Retrieves all services registered with the Agent. * <p> * GET /v1/agent/services * * @return Map of Service ID to Services. */ public Map<String, Service> getServices() { final URI uri = createURI("/services"); final HTTP.Response response = HTTP.getResponse(uri.toString()); final JsonParserAndMapper jsonParserAndMapper = new JsonParserFactory().create(); if (response.status() == 200) { final Map<String, Object> map = jsonParserAndMapper.parseMap(response.payloadAsString()); final Map<String, Service> returnMap = new HashMap<>(map.size()); map.entrySet().forEach(entry -> { @SuppressWarnings("unchecked") Service service = fromMap((Map<String, Object>) entry.getValue(), Service.class); returnMap.put(entry.getKey(), service); }); return returnMap; } die("Unable to get list of services", uri, response.status(), response.payloadAsString()); return null; }
/** * Retrieves all services for a given datacenter with {@link io.advantageous.consul.domain.option.RequestOptions}. * <p> * GET /v1/catalog/services?dc={datacenter} * * @param datacenter datacenter * @param tag tag * @param requestOptions The Query Options to use. * @return A {@link io.advantageous.consul.domain.ConsulResponse} containing a map of service name to list of tags. */ public ConsulResponse<Map<String, List<String>>> getServices( @SuppressWarnings("SameParameterValue") final String datacenter, @SuppressWarnings("SameParameterValue") final String tag, final RequestOptions requestOptions) { final URI uri = createURI("/services"); final HttpRequestBuilder httpRequestBuilder = RequestUtils.getHttpRequestBuilder(datacenter, tag, requestOptions, "/"); HTTP.Response httpResponse = HTTP.getResponse(uri.toString() + "?" + httpRequestBuilder.paramString()); if (httpResponse.code() != 200) { die("Unable to retrieve the datacenters", uri, httpResponse.code(), httpResponse.body()); } //noinspection unchecked return (ConsulResponse<Map<String, List<String>>>) (Object) RequestUtils.consulResponse(Map.class, httpResponse); }
/** * Retrieves a {@link io.advantageous.consul.domain.KeyValue} for a specific key * from the key/value store. * <p> * GET /v1/keyValueStore/{key} * * @param key The key to retrieve. * @param requestOptions The query options. * @return An {@link Optional} containing the value or {@link java.util.Optional#empty()} */ public Optional<KeyValue> getValue(final String key, RequestOptions requestOptions) { final URI uri = createURI("/" + key); final HttpRequestBuilder httpRequestBuilder = RequestUtils .getHttpRequestBuilder(null, null, requestOptions, ""); final HTTP.Response httpResponse = HTTP.getResponse(uri.toString() + "?" + httpRequestBuilder.paramString()); if (httpResponse.code() == 404) { return Optional.empty(); } if (httpResponse.code() != 200) { die("Unable to retrieve the key", key, uri, httpResponse.code(), httpResponse.body()); } return getKeyValueOptional(httpResponse); }
/** * Retrieves a list of {@link io.advantageous.consul.domain.KeyValue} objects for a specific key * from the key/value store. * <p> * GET /v1/keyValueStore/{key}?recurse * * @param key The key to retrieve. * @return A list of zero to many {@link io.advantageous.consul.domain.KeyValue} objects. */ public List<KeyValue> getValues(String key) { final URI uri = createURI("/" + key); final HttpRequestBuilder httpRequestBuilder = RequestUtils .getHttpRequestBuilder(null, null, RequestOptions.BLANK, ""); httpRequestBuilder.addParam("recurse", "true"); final HTTP.Response httpResponse = HTTP.getResponse(uri.toString() + "?" + httpRequestBuilder.paramString()); if (httpResponse.code() != 200) { die("Unable to retrieve the service", uri, httpResponse.code(), httpResponse.body()); } return fromJsonArray(httpResponse.body(), KeyValue.class); }
/** * Retrieves a list of matching keys for the given key. * <p> * GET /v1/keyValueStore/{key}?keys * * @param key The key to retrieve. * @return A list of zero to many keys. */ public List<String> getKeys(String key) { final URI uri = createURI("/" + key); final HttpRequestBuilder httpRequestBuilder = RequestUtils .getHttpRequestBuilder(null, null, RequestOptions.BLANK, ""); httpRequestBuilder.addParam("keys", "true"); final HTTP.Response httpResponse = HTTP.getResponse(uri.toString() + "?" + httpRequestBuilder.paramString()); if (httpResponse.code() == 200) { return fromJsonArray(httpResponse.body(), String.class); } else { die("Unable to get nested keys", uri, key, httpResponse.code(), httpResponse.body()); return Collections.emptyList(); } }
public static <T> ConsulResponse<List<T>> consulResponseList(final Class<T> responseType, final HTTP.Response response) { List<T> responseObject = null; if (response.code() == 200) { if (!Str.isEmpty(response.body())) { responseObject = fromJsonArray(response.body(), responseType); } } else { die("Unable to read response", response.code(), response.body()); } List<String> strings = response.headers().get("X-Consul-Index"); int index = Integer.valueOf(strings.get(0)); strings = response.headers().get("X-Consul-Lastcontact"); long lastContact = Long.valueOf(strings.get(0)); strings = response.headers().get("X-Consul-Knownleader"); boolean knownLeader = Boolean.valueOf(strings.get(0)); //noinspection UnnecessaryLocalVariable @SuppressWarnings("UnnecessaryLocalVariable") ConsulResponse<List<T>> consulResponse = new ConsulResponse<>(responseObject, lastContact, knownLeader, index); return consulResponse; }
public static <T> ConsulResponse<T> consulResponse(final Class<T> responseType, final HTTP.Response response) { T responseObject = null; if (response.code() == 200) { if (!Str.isEmpty(response.body())) { responseObject = fromJson(response.body(), responseType); } } else { die("Unable to read response", response.code(), response.body()); } List<String> strings = response.headers().get("X-Consul-Index"); int index = Integer.valueOf(strings.get(0)); strings = response.headers().get("X-Consul-Lastcontact"); long lastContact = Long.valueOf(strings.get(0)); strings = response.headers().get("X-Consul-Knownleader"); boolean knownLeader = Boolean.valueOf(strings.get(0)); //noinspection UnnecessaryLocalVariable @SuppressWarnings("UnnecessaryLocalVariable") ConsulResponse<T> consulResponse = new ConsulResponse<>(responseObject, lastContact, knownLeader, index); return consulResponse; }