Implant vid-app-common org.onap.vid.job (main and test)
[vid.git] / vid-app-common / src / main / java / org / onap / vid / job / command / NetworkCommand.kt
1 package org.onap.vid.job.command
2
3 import org.onap.vid.job.Job
4 import org.onap.vid.job.JobAdapter
5 import org.onap.vid.job.JobCommand
6 import org.onap.vid.job.JobsBrokerService
7 import org.onap.vid.model.Action
8 import org.onap.vid.model.serviceInstantiation.Network
9 import org.onap.vid.mso.RestMsoImplementation
10 import org.onap.vid.services.AsyncInstantiationBusinessLogic
11 import org.springframework.beans.factory.annotation.Autowired
12 import org.springframework.beans.factory.config.ConfigurableBeanFactory
13 import org.springframework.context.annotation.Scope
14 import org.springframework.http.HttpMethod
15 import org.springframework.stereotype.Component
16 import java.util.*
17
18
19 @Component
20 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
21 class NetworkCommand @Autowired constructor(
22         private val asyncInstantiationBL: AsyncInstantiationBusinessLogic,
23         restMso: RestMsoImplementation,
24         private val msoRequestBuilder: MsoRequestBuilder,
25         msoResultHandlerService: MsoResultHandlerService,
26         inProgressStatusService:InProgressStatusService,
27         watchChildrenJobsBL: WatchChildrenJobsBL,
28         jobsBrokerService: JobsBrokerService,
29         jobAdapter: JobAdapter
30         ) : ResourceCommand(restMso, inProgressStatusService, msoResultHandlerService,
31         watchChildrenJobsBL, jobsBrokerService, jobAdapter), JobCommand {
32     override fun createChildren(): Job.JobStatus {
33         return Job.JobStatus.COMPLETED_WITH_NO_ACTION
34     }
35
36     override fun planCreateMyselfRestCall(commandParentData: CommandParentData, request: JobAdapter.AsyncJobRequest, userId: String, testApi: String?): MsoRestCallPlan {
37         val serviceInstanceId = commandParentData.getInstanceId(CommandParentData.CommandDataKey.SERVICE_INSTANCE_ID)
38         val serviceModelInfo = commandParentData.getModelInfo(CommandParentData.CommandDataKey.SERVICE_MODEL_INFO)
39
40         val instantiatePath = asyncInstantiationBL.getNetworkInstantiationPath(serviceInstanceId)
41         val requestDetailsWrapper = msoRequestBuilder.generateNetworkInstantiationRequest(
42                 request as Network,
43                 serviceModelInfo,
44                 serviceInstanceId,
45                 userId,
46                 testApi
47         )
48
49         val actionDescription = "create network in $serviceInstanceId"
50
51         return MsoRestCallPlan(HttpMethod.POST, instantiatePath, Optional.of(requestDetailsWrapper), Optional.empty(), actionDescription)
52     }
53
54     override fun planDeleteMyselfRestCall(commandParentData: CommandParentData, request: JobAdapter.AsyncJobRequest, userId: String): MsoRestCallPlan {
55         val serviceInstanceId = commandParentData.getInstanceId(CommandParentData.CommandDataKey.SERVICE_INSTANCE_ID)
56         val path = asyncInstantiationBL.getNetworkDeletePath(serviceInstanceId, getRequest().instanceId)
57         val requestDetailsWrapper = msoRequestBuilder.generateDeleteNetworkRequest(getRequest() as Network, userId)
58         return MsoRestCallPlan(HttpMethod.DELETE, path, Optional.of(requestDetailsWrapper), Optional.of(userId),
59                 "delete network ${getRequest().instanceId} from service instance $serviceInstanceId")
60     }
61
62     override fun isDescendantHasAction(phase: Action): Boolean {
63         return false
64     }
65 }