@Override public LifecycleEntity saveInstanceLogLifecycle(final String instanceId, final DateTime instanceBootTime, final String userdataPath, final String region, final String logData, final String accountId) { final Optional<TaupageYaml> taupageYaml = Optional.ofNullable(logData) .map(base64Decoder::decode) .map(String::new) .map(TaupageYamlUtil::parseTaupageYaml); final Optional<ApplicationEntity> application = taupageYaml .map(TaupageYaml::getApplicationId) .map(ApplicationEntity::new); final Optional<VersionEntity> version = taupageYaml .map(TaupageYaml::getApplicationVersion) .map(VersionEntity::new); if (application.isPresent() && version.isPresent()) { final LifecycleEntity lifecycleEntity = new LifecycleEntity(); lifecycleEntity.setInstanceBootTime(instanceBootTime); lifecycleEntity.setInstanceId(instanceId); lifecycleEntity.setAccountId(accountId); lifecycleEntity.setRegion(region); lifecycleEntity.setUserdataPath(userdataPath); return self.saveLifecycle(application.get(), version.get(), lifecycleEntity); } else { log.warn("Empty or invalid taupage yaml."); return null; } }
@Override public Optional<Boolean> isPubliclyAccessible(final String accountId, final String region, final List<String> instanceIds) { try { return Optional.ofNullable(applicationLifecycleService.findAppByInstanceIds(accountId, region, instanceIds)) .map(ApplicationEntity::getName) .map(kioOperations::getApplicationById) .map(Application::isPubliclyAccessible); } catch (final NotFoundException e) { log.warn(e.toString()); return Optional.empty(); } } }
@RequestMapping(value = "/applications/{name}/versions/{version}", method = GET) @ApiOperation(value = "Shows a list of all rules", response = LifecylceDTO.class, responseContainer = "List", authorizations = {@Authorization(value = "oauth", scopes = {@AuthorizationScope(scope = "uid", description = "")})}) @ApiImplicitParams({ @ApiImplicitParam(name = "page", dataType = "integer", paramType = "query", value = "Results page you want to retrieve (0..N)"), @ApiImplicitParam(name = "size", dataType = "integer", paramType = "query", value = "Number of records per page."), @ApiImplicitParam(name = "sort", allowMultiple = true, dataType = "string", paramType = "query", value = "Sorting criteria in the format: \"property,[asc|desc]\". " + "Default sort order is ascending. " + "Multiple sort criteria are supported.") }) @ApiResponses(@ApiResponse(code = 200, message = "the list of violations grouped by version, instance, created; Ordered by date")) public Page<LifecylceDTO> findByApplicationName(@PathVariable("name") final String name, @PathVariable("version") final String version, @ApiIgnore @PageableDefault(page = 0, size = 10, sort = "created", direction = ASC) final Pageable pageable) { final Page<LifecycleEntity> lifecycleEntities = applicationLifecycleService.findByApplicationNameAndVersion(name, version, pageable); return mapToDto(lifecycleEntities); }
private void saveLog(final LogObj instanceLog) { if (instanceLog.getLogType() == null) { log.error("You should use one of the allowed types."); throw new IllegalArgumentException("You should use one of the allowed types."); } final String userdataPath = s3Writer.writeToS3( instanceLog.getAccountId(), instanceLog.getRegion(), instanceLog.getInstanceBootTime(), instanceLog.getLogData(), instanceLog.getLogType().toString(), instanceLog.getInstanceId()); log.debug("Saved S3 logs with userdatapath: {}", userdataPath); if (instanceLog.getLogType() == LogType.USER_DATA) { final LifecycleEntity lifecycleEntity = applicationLifecycleService.saveInstanceLogLifecycle( instanceLog.getInstanceId(), new DateTime(instanceLog.getInstanceBootTime(), UTC), userdataPath, instanceLog.getRegion(), instanceLog.getLogData(), instanceLog.getAccountId()); log.info("Saving Lifecycle Entity: {}", lifecycleEntity); } } }
@Override protected void process(final EC2InstanceContext context) { final LifecycleEntity lifecycleEntity = new LifecycleEntity(); lifecycleEntity.setEventType(context.getEventName()); lifecycleEntity.setEventDate(getLifecycleDate(context)); lifecycleEntity.setAccountId(context.getAccountId()); lifecycleEntity.setRegion(context.getRegionAsString()); lifecycleEntity.setInstanceId(context.getInstanceId()); context.getAmiId().ifPresent(lifecycleEntity::setImageId); context.getAmi().map(Image::getName).ifPresent(lifecycleEntity::setImageName); final Optional<ApplicationEntity> application = context.getApplicationId().map(ApplicationEntity::new); if (!application.isPresent()) { log.warn("Could not determine applicationId. Skip processing of LifecyclePlugin."); return; } final Optional<VersionEntity> version = context.getVersionId().map(VersionEntity::new); if (!version.isPresent()) { log.warn("Could not determine versionId. Skip processing of LifecyclePlugin."); return; } applicationLifecycleService.saveLifecycle(application.get(), version.get(), lifecycleEntity); }
@RequestMapping(value = "/applications/{name}/versions", method = GET) @ApiOperation(value = "Shows a list of all rules", response = LifecylceDTO.class, responseContainer = "List", authorizations = {@Authorization(value = "oauth", scopes = {@AuthorizationScope(scope = "uid", description = "")})}) @ApiImplicitParams({ @ApiImplicitParam(name = "page", dataType = "integer", paramType = "query", value = "Results page you want to retrieve (0..N)"), @ApiImplicitParam(name = "size", dataType = "integer", paramType = "query", value = "Number of records per page."), @ApiImplicitParam(name = "sort", allowMultiple = true, dataType = "string", paramType = "query", value = "Sorting criteria in the format: \"property,[asc|desc]\". " + "Default sort order is ascending. " + "Multiple sort criteria are supported.") }) @ApiResponses(@ApiResponse(code = 200, message = "the list of violations grouped by version, instance, created; Ordered by date")) public Page<LifecylceDTO> findByApplicationName(@PathVariable("name") final String name, @ApiIgnore @PageableDefault(page = 0, size = 10, sort = "created", direction = ASC) final Pageable pageable) { final Page<LifecycleEntity> lifecycleEntities = applicationLifecycleService.findByApplicationNameAndVersion(name, null, pageable); return mapToDto(lifecycleEntities); }