protected List<Object> toData(List<Secret> secrets) throws IOException { List<Object> result = new ArrayList<>(secrets.size()); for (Secret s : secrets) { result.add(jsonMapper.readValue(s.getValue())); } return result; }
@Override public Object create(String type, ApiRequest request, ResourceManager next) { Secret s = request.proxyRequestObject(Secret.class); if (!Base64.isBase64(s.getValue())) { throw new ValidationErrorException("InvalidBase64", "value", "Invalid base64 content"); }; Base64.decodeBase64(s.getValue()); return super.create(type, request, next); }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Secret secret = (Secret)state.getResource(); try { secretsService.delete(secret.getAccountId(), secret.getValue()); } catch (IOException e) { log.error("Failed to delete secret from storage [{}]", secret.getId(), e); throw new IllegalStateException(e); } return null; }
@Override protected void generate(final ApiRequest request) throws IOException { if (!"secret".equals(request.getType()) || !"POST".equals(request.getMethod())) { return; } if (!CONTENT_TYPE.equalsIgnoreCase(request.getServletContext().getRequest().getContentType())) { return; } String token = request.proxyRequestObject(Secret.class).getValue(); Map<String, Object> value = null; try { value = tokenService.getJsonPayload(token, false); } catch (TokenException e) { throw new ClientVisibleException(ResponseCodes.FORBIDDEN); } String uuid = DataAccessor.fromMap(value).withKey("uuid").as(String.class); if (StringUtils.isBlank(uuid)) { throw new ClientVisibleException(ResponseCodes.NOT_FOUND); } InstanceAndHost ih = secretDao.getHostForInstanceUUIDAndAuthAccount(ApiUtils.getPolicy().getAccountId(), uuid); if (ih == null) { throw new ClientVisibleException(ResponseCodes.NOT_FOUND); } List<SecretReference> secrets = DataAccessor.fieldObjectList(ih.instance, InstanceConstants.FIELD_SECRETS, SecretReference.class, jsonMapper); List<SecretValue> values = secretsService.getValues(secrets, ih.host); jsonMapper.writeValue(request.getOutputStream(), values); request.setResponseObject(new Object()); }
/** * {@inheritDoc} */ @Override public void from(io.cattle.platform.core.model.Secret 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()); setValue(from.getValue()); setStackId(from.getStackId()); }