@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 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); }