6e6f96eca722de857e314da4cb3a84f961c09582
[policy/clamp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2024 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.clamp.acm.participant.intermediary.api.impl;
22
23 import jakarta.ws.rs.core.Response;
24 import org.onap.policy.clamp.acm.participant.intermediary.api.AutomationCompositionElementListener;
25 import org.onap.policy.clamp.acm.participant.intermediary.api.CompositionDto;
26 import org.onap.policy.clamp.acm.participant.intermediary.api.CompositionElementDto;
27 import org.onap.policy.clamp.acm.participant.intermediary.api.InstanceElementDto;
28 import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
29 import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
30 import org.onap.policy.clamp.models.acm.concepts.DeployState;
31 import org.onap.policy.clamp.models.acm.concepts.LockState;
32 import org.onap.policy.clamp.models.acm.concepts.StateChangeResult;
33 import org.onap.policy.models.base.PfModelException;
34
35 /**
36  * Wrapper of AutomationCompositionElementListener.
37  * Valid since 7.1.1 release.
38  */
39 public abstract class AcElementListenerV2 implements AutomationCompositionElementListener {
40     protected final ParticipantIntermediaryApi intermediaryApi;
41
42     private static final String NOT_SUPPORTED = "not supported!";
43
44     protected AcElementListenerV2(ParticipantIntermediaryApi intermediaryApi) {
45         this.intermediaryApi = intermediaryApi;
46     }
47
48     @Override
49     public void lock(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
50         throws PfModelException {
51         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
52             instanceElement.elementId(), null, LockState.LOCKED, StateChangeResult.NO_ERROR, "Locked");
53     }
54
55     @Override
56     public void unlock(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
57         throws PfModelException {
58         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
59             instanceElement.elementId(), null, LockState.UNLOCKED, StateChangeResult.NO_ERROR, "Unlocked");
60     }
61
62     @Override
63     public void delete(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
64         throws PfModelException {
65         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
66             instanceElement.elementId(), DeployState.DELETED, null, StateChangeResult.NO_ERROR, "Deleted");
67     }
68
69     @Override
70     public void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
71                        InstanceElementDto instanceElementUpdated) throws PfModelException {
72         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
73             instanceElement.elementId(), DeployState.DEPLOYED, null,
74             StateChangeResult.NO_ERROR, "Update not supported");
75
76     }
77
78     @Override
79     public void prime(CompositionDto composition) throws PfModelException {
80         intermediaryApi.updateCompositionState(composition.compositionId(), AcTypeState.PRIMED,
81             StateChangeResult.NO_ERROR, "Primed");
82     }
83
84     @Override
85     public void deprime(CompositionDto composition) throws PfModelException {
86         intermediaryApi.updateCompositionState(composition.compositionId(), AcTypeState.COMMISSIONED,
87             StateChangeResult.NO_ERROR, "Deprimed");
88     }
89
90     public void handleRestartComposition(CompositionDto composition, AcTypeState state) throws PfModelException {
91         throw new PfModelException(Response.Status.BAD_REQUEST, NOT_SUPPORTED);
92     }
93
94     public void handleRestartInstance(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
95                                       DeployState deployState, LockState lockState) throws PfModelException {
96         throw new PfModelException(Response.Status.BAD_REQUEST, NOT_SUPPORTED);
97     }
98
99     @Override
100     public void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget,
101                         InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate)
102         throws PfModelException {
103         intermediaryApi.updateAutomationCompositionElementState(instanceElementMigrate.instanceId(),
104             instanceElementMigrate.elementId(), DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Migrated");
105     }
106
107     @Override
108     public void migratePrecheck(CompositionElementDto compositionElement,
109                                 CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement,
110                                 InstanceElementDto instanceElementMigrate) throws PfModelException {
111         intermediaryApi.updateAutomationCompositionElementState(instanceElementMigrate.instanceId(),
112             instanceElementMigrate.elementId(), DeployState.DEPLOYED, null,
113             StateChangeResult.NO_ERROR, "Migration Precheck completed");
114     }
115
116     @Override
117     public void review(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
118         throws PfModelException {
119         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
120             instanceElement.elementId(), DeployState.DEPLOYED, null,
121             StateChangeResult.NO_ERROR, "Review completed");
122     }
123
124     @Override
125     public void prepare(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
126         throws PfModelException {
127         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
128             instanceElement.elementId(), DeployState.UNDEPLOYED, null,
129             StateChangeResult.NO_ERROR, "Prepare completed");
130     }
131 }