aboutsummaryrefslogtreecommitdiffstats
path: root/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/api/ParticipantIntermediaryApi.java
blob: 79f5259bf7a0887ea7d09b38b2259cd6a893a786 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*-
 * ============LICENSE_START=======================================================
 *  Copyright (C) 2021 Nordix Foundation.
 *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * SPDX-License-Identifier: Apache-2.0
 * ============LICENSE_END=========================================================
 */

package org.onap.policy.clamp.acm.participant.intermediary.api;

import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.onap.policy.clamp.models.acm.concepts.AcElementStatistics;
import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElement;
import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionOrderedState;
import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionState;
import org.onap.policy.clamp.models.acm.concepts.AutomationCompositions;
import org.onap.policy.clamp.models.acm.concepts.Participant;
import org.onap.policy.clamp.models.acm.concepts.ParticipantState;
import org.onap.policy.clamp.models.acm.concepts.ParticipantStatistics;
import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantMessageType;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty;

/**
 * This interface is used by participant implementations to use the participant intermediary.
 */
public interface ParticipantIntermediaryApi {

    /**
     * Register a listener for automation composition elements that are mediated by the intermediary.
     *
     * @param automationCompositionElementListener The automation composition element listener to register
     */
    void registerAutomationCompositionElementListener(
        AutomationCompositionElementListener automationCompositionElementListener);

    /**
     * Get participants loops from the intermediary API.
     *
     * @param name the participant name, null for all
     * @param version the participant version, null for all
     * @return the participants
     */
    List<Participant> getParticipants(String name, String version);

    /**
     * Get common properties of a automation composition element.
     *
     * @param acElementDef the automation composition element definition
     * @return the common properties
     */
    Map<String, ToscaProperty> getAcElementDefinitionCommonProperties(ToscaConceptIdentifier acElementDef);

    /**
     * Update the state of a participant.
     *
     * @param definition the definition of the participant to update the state on
     * @param state the state of the participant
     * @return the participant
     */
    Participant updateParticipantState(ToscaConceptIdentifier definition, ParticipantState state);

    /**
     * Update the statistics of a participant.
     *
     * @param participantStatistics the statistics of the participant
     */
    void updateParticipantStatistics(ParticipantStatistics participantStatistics);

    /**
     * Get automation compositions from the intermediary API.
     *
     * @param name the automation composition element name, null for all
     * @param version the automation composition element version, null for all
     * @return the automation composition elements
     */
    AutomationCompositions getAutomationCompositions(String name, String version);

    /**
     * Get automation composition elements from the intermediary API.
     *
     * @param name the automation composition element name, null for all
     * @param version the automation composition element version, null for all
     * @return the automation composition elements
     */
    Map<UUID, AutomationCompositionElement> getAutomationCompositionElements(String name, String version);

    /**
     * Get automation composition element from the intermediary API.
     *
     * @param id automation composition element ID
     * @return the automation composition element
     */
    AutomationCompositionElement getAutomationCompositionElement(UUID id);

    /**
     * Update the state of a automation composition element.
     *
     * @param id the ID of the automation composition element to update the state on
     * @param currentState the state of the automation composition element
     * @param newState the state of the automation composition element
     * @return AutomationCompositionElement updated automation composition element
     */
    AutomationCompositionElement updateAutomationCompositionElementState(ToscaConceptIdentifier automationCompositionId,
        UUID id, AutomationCompositionOrderedState currentState, AutomationCompositionState newState,
        ParticipantMessageType messageType);

    /**
     * Update the automation composition element statistics.
     *
     * @param id the ID of the automation composition element to update the state on
     * @param elementStatistics the updated statistics
     */
    void updateAutomationCompositionElementStatistics(UUID id, AcElementStatistics elementStatistics);
}