diff options
author | Ittay Stern <ittay.stern@att.com> | 2018-12-31 17:21:27 +0200 |
---|---|---|
committer | Ittay Stern <ittay.stern@att.com> | 2019-01-09 20:19:55 +0200 |
commit | 6ad41e3ccd398a2721f41ad61c80b7bb03f7d127 (patch) | |
tree | 3bd672dff83e3218232cd8665680416b7fc26a5d /vid-app-common/src/main/java/org/onap/vid/job/command/WatchChildrenJobsBL.kt | |
parent | 5ec29ff5e3864f1ba6ecac71f8bffbefa400cf27 (diff) |
Merge from ECOMP's repository
Main Features
--------------
- Async-Instantiation jobs mechanism major update; still WIP (package
`org.onap.vid.job`)
- New features in View/Edit: Activate fabric configuration; show
related networks; soft delete
- Support AAI service-tree traversal (`AAIServiceTree`)
- In-memory cache for SDC models and certain A&AI queries
(`CacheProviderWithLoadingCache`)
- Upgrade TOSCA Parser and add parsing options; fix malformed TOSCA
models
- Resolve Cloud-Owner values for MSO
- Pass X-ONAP headers to MSO
Infrastructure
--------------
- Remove codehaus' jackson mapper; use soley fasterxml 2.9.7
- Surefire invokes both TestNG and JUnit tests
- Support Kotlin source files
- AaiController2 which handles errors in a "Spring manner"
- Inline generated-sources and remove jsonschema2pojo
Quality
--------
- Cumulative bug fixes (A&AI API, UI timeouts, and many more)
- Many Sonar issues cleaned-up
- Some unused classes removed
- Minor changes in vid-automation project, allowing some API
verification to run
Hard Merges
------------
- HTTP Clients (MSO, A&AI, WebConfig, OutgoingRequestHeadersTest)
- Moved `package org.onap.vid.controllers` to `controller`, without
plural -- just to keep semantic sync with ECOMP.
Reference commit in ECOMP: 3d1141625
Issue-ID: VID-378
Change-Id: I9c8d1e74caa41815891d441fc0760bb5f29c5788
Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/job/command/WatchChildrenJobsBL.kt')
-rw-r--r-- | vid-app-common/src/main/java/org/onap/vid/job/command/WatchChildrenJobsBL.kt | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/job/command/WatchChildrenJobsBL.kt b/vid-app-common/src/main/java/org/onap/vid/job/command/WatchChildrenJobsBL.kt new file mode 100644 index 00000000..b31e7f92 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/job/command/WatchChildrenJobsBL.kt @@ -0,0 +1,61 @@ +package org.onap.vid.job.command + +import org.apache.commons.lang3.StringUtils +import org.onap.portalsdk.core.service.DataAccessService +import org.onap.vid.job.Job +import org.onap.vid.job.Job.JobStatus.* +import org.onap.vid.job.impl.JobDaoImpl +import org.onap.vid.utils.DaoUtils +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service +import java.util.* +import java.util.stream.Collectors +import java.util.stream.Stream + + +@Service +class WatchChildrenJobsBL @Autowired +constructor(private val dataAccessService: DataAccessService) { + + fun retrieveChildrenJobsStatus(childrenJobsIds: List<String>): Job.JobStatus { + val jobs = getAllChildrenJobs(childrenJobsIds) + + val jobsStatuses = childrenJobsIds.stream() + .map<JobDaoImpl> { jobId -> jobs[UUID.fromString(jobId)] } + .map {when { + (it == null || it.status == null) -> Job.JobStatus.FAILED + else -> it.status + }} + + return cumulateJobStatus(jobsStatuses) + + } + + fun cumulateJobStatus(childrenComulatedStatus: Job.JobStatus, fatherJobStatus: Job.JobStatus): Job.JobStatus { + return cumulateJobStatus(Stream.of(childrenComulatedStatus, fatherJobStatus)) + } + + private fun cumulateJobStatus(jobsStatuses: Stream<Job.JobStatus>): Job.JobStatus { + + return jobsStatuses.reduce{ a, b -> + when { + !a.isFinal || !b.isFinal -> IN_PROGRESS + a == COMPLETED_WITH_ERRORS || b == COMPLETED_WITH_ERRORS-> COMPLETED_WITH_ERRORS + a == COMPLETED && b.isFailure -> COMPLETED_WITH_ERRORS + b == COMPLETED && a.isFailure -> COMPLETED_WITH_ERRORS + a == COMPLETED || b == COMPLETED -> COMPLETED + a.isFailure || b.isFailure -> FAILED + else -> COMPLETED_WITH_NO_ACTION + } + } .orElse(COMPLETED_WITH_NO_ACTION) + } + + private fun getAllChildrenJobs(childrenJobsIds: List<String>): Map<UUID, JobDaoImpl> { + val jobs:MutableList<JobDaoImpl> = dataAccessService.getList(JobDaoImpl::class.java, filterByJobIds(childrenJobsIds), null, DaoUtils.getPropsMap()) as MutableList<JobDaoImpl> + return jobs.stream().collect(Collectors.toMap( { it.uuid }, { it })) + } + + private fun filterByJobIds(childrenJobsIds: List<String>): String { + return " WHERE JOB_ID IN('" + StringUtils.join(childrenJobsIds, "', '") + "')" + } +} |