7db220095d66fe49138309cf4a618957dad6c693
[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
40         implements AutomationCompositionElementListener, AutomationCompositionElementListenerV2 {
41     protected final ParticipantIntermediaryApi intermediaryApi;
42
43     private static final String NOT_SUPPORTED = "not supported!";
44
45     protected AcElementListenerV2(ParticipantIntermediaryApi intermediaryApi) {
46         this.intermediaryApi = intermediaryApi;
47     }
48
49     @Override
50     public void lock(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
51         throws PfModelException {
52         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
53             instanceElement.elementId(), null, LockState.LOCKED, StateChangeResult.NO_ERROR, "Locked");
54     }
55
56     @Override
57     public void unlock(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
58         throws PfModelException {
59         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
60             instanceElement.elementId(), null, LockState.UNLOCKED, StateChangeResult.NO_ERROR, "Unlocked");
61     }
62
63     @Override
64     public void delete(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
65         throws PfModelException {
66         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
67             instanceElement.elementId(), DeployState.DELETED, null, StateChangeResult.NO_ERROR, "Deleted");
68     }
69
70     @Override
71     public void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
72                        InstanceElementDto instanceElementUpdated) throws PfModelException {
73         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
74             instanceElement.elementId(), DeployState.DEPLOYED, null,
75             StateChangeResult.NO_ERROR, "Update not supported");
76
77     }
78
79     @Override
80     public void prime(CompositionDto composition) throws PfModelException {
81         intermediaryApi.updateCompositionState(composition.compositionId(), AcTypeState.PRIMED,
82             StateChangeResult.NO_ERROR, "Primed");
83     }
84
85     @Override
86     public void deprime(CompositionDto composition) throws PfModelException {
87         intermediaryApi.updateCompositionState(composition.compositionId(), AcTypeState.COMMISSIONED,
88             StateChangeResult.NO_ERROR, "Deprimed");
89     }
90
91     public void handleRestartComposition(CompositionDto composition, AcTypeState state) throws PfModelException {
92         throw new PfModelException(Response.Status.BAD_REQUEST, NOT_SUPPORTED);
93     }
94
95     public void handleRestartInstance(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
96                                       DeployState deployState, LockState lockState) throws PfModelException {
97         throw new PfModelException(Response.Status.BAD_REQUEST, NOT_SUPPORTED);
98     }
99
100     @Override
101     public void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget,
102                         InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate, int stage)
103         throws PfModelException {
104         migrate(compositionElement, compositionElementTarget, instanceElement, instanceElementMigrate);
105     }
106
107     @Override
108     public void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget,
109                         InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate)
110         throws PfModelException {
111         intermediaryApi.updateAutomationCompositionElementState(instanceElementMigrate.instanceId(),
112             instanceElementMigrate.elementId(), DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Migrated");
113     }
114
115     @Override
116     public void migratePrecheck(CompositionElementDto compositionElement,
117                                 CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement,
118                                 InstanceElementDto instanceElementMigrate) throws PfModelException {
119         intermediaryApi.updateAutomationCompositionElementState(instanceElementMigrate.instanceId(),
120             instanceElementMigrate.elementId(), DeployState.DEPLOYED, null,
121             StateChangeResult.NO_ERROR, "Migration Precheck completed");
122     }
123
124     @Override
125     public void review(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
126         throws PfModelException {
127         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
128             instanceElement.elementId(), DeployState.DEPLOYED, null,
129             StateChangeResult.NO_ERROR, "Review completed");
130     }
131
132     @Override
133     public void prepare(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
134         throws PfModelException {
135         intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(),
136             instanceElement.elementId(), DeployState.UNDEPLOYED, null,
137             StateChangeResult.NO_ERROR, "Prepare completed");
138     }
139 }