/**
* Wrapper of AutomationCompositionElementListener.
* Valid since 7.1.1 release.
*/
public abstract class AcElementListenerV1 implements AutomationCompositionElementListener {
protected final ParticipantIntermediaryApi intermediaryApi;
protected AcElementListenerV1(ParticipantIntermediaryApi intermediaryApi) {
this.intermediaryApi = intermediaryApi;
}
@Override
public void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
throws PfModelException {
var element = new AcElementDeploy();
element.setId(instanceElement.elementId());
element.setDefinition(compositionElement.elementDefinitionId());
element.setToscaServiceTemplateFragment(instanceElement.toscaServiceTemplateFragment());
element.setProperties(instanceElement.inProperties());
Map<String, Object> properties = new HashMap<>(instanceElement.inProperties());
properties.putAll(compositionElement.inProperties());
deploy(instanceElement.instanceId(), element, properties);
}
public abstract void deploy(UUID instanceId, AcElementDeploy element, Map<String, Object> properties)
throws PfModelException;
@Override
public void undeploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
throws PfModelException {
undeploy(instanceElement.instanceId(), instanceElement.elementId());
}
public abstract void undeploy(UUID instanceId, UUID elementId) throws PfModelException;
@Override
public void lock(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
throws PfModelException {
lock(instanceElement.instanceId(), instanceElement.elementId());
}
public abstract void lock(UUID instanceId, UUID elementId) throws PfModelException;
@Override
public void unlock(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
throws PfModelException {
unlock(instanceElement.instanceId(), instanceElement.elementId());
}
public abstract void unlock(UUID instanceId, UUID elementId) throws PfModelException;
@Override
public void delete(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
throws PfModelException {
delete(instanceElement.instanceId(), instanceElement.elementId());
}
public abstract void delete(UUID instanceId, UUID elementId) throws PfModelException;
@Override
public void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
InstanceElementDto instanceElementUpdated) throws PfModelException {
var element = new AcElementDeploy();
element.setId(instanceElementUpdated.elementId());
element.setDefinition(compositionElement.elementDefinitionId());
element.setProperties(instanceElementUpdated.inProperties());
update(instanceElementUpdated.instanceId(), element, element.getProperties());
}
public abstract void update(UUID instanceId, AcElementDeploy element, Map<String, Object> properties)
throws PfModelException;
private List<AutomationCompositionElementDefinition> createAcElementDefinitionList(CompositionDto composition) {
List<AutomationCompositionElementDefinition> elementDefinitionList = new ArrayList<>();
for (var entry : composition.inPropertiesMap().entrySet()) {
elementDefinitionList.add(createAcElementDefinition(entry.getKey(), entry.getValue(),
composition.outPropertiesMap().get(entry.getKey())));
}
return elementDefinitionList;
}
private AutomationCompositionElementDefinition createAcElementDefinition(
ToscaConceptIdentifier toscaConceptIdentifier, Map<String, Object> property,
Map<String, Object> outProperties) {
var acElementDefinition = new AutomationCompositionElementDefinition();
acElementDefinition.setAcElementDefinitionId(toscaConceptIdentifier);
var toscaNodeTemplate = new ToscaNodeTemplate();
toscaNodeTemplate.setProperties(property);
acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(toscaNodeTemplate);
acElementDefinition.setOutProperties(outProperties);
return acElementDefinition;
}
@Override
public void prime(CompositionDto composition) throws PfModelException {
prime(composition.compositionId(), createAcElementDefinitionList(composition));
}
public abstract void prime(UUID compositionId, List<AutomationCompositionElementDefinition> elementDefinitionList)
throws PfModelException;
@Override
public void deprime(CompositionDto composition) throws PfModelException {
deprime(composition.compositionId());
}
public abstract void deprime(UUID compositionId) throws PfModelException;
@Override
public void handleRestartComposition(CompositionDto composition, AcTypeState state) throws PfModelException {
handleRestartComposition(composition.compositionId(), createAcElementDefinitionList(composition), state);
}
//public abstract void handleRestartComposition(UUID compositionId,
// List<AutomationCompositionElementDefinition> elementDefinitionList,
// AcTypeState state) throws PfModelException;
public void handleRestartComposition(UUID compositionId,
List<AutomationCompositionElementDefinition> elementDefinitionList, AcTypeState state) throws PfModelException {
List<AutomationCompositionElementDefinition> elementDefinitionList, switch (state) {
case PRIMING -> prime(compositionId, elementDefinitionList);
case DEPRIMING -> deprime(compositionId);
AcTypeStatedefault state)->
throws PfModelException intermediaryApi.updateCompositionState(compositionId, state, StateChangeResult.NO_ERROR, "Restarted");
}
}
@Override
public void handleRestartInstance(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
DeployState deployState, LockState lockState) throws PfModelException {
var element = new AcElementDeploy();
element.setId(instanceElement.elementId());
element.setDefinition(compositionElement.elementDefinitionId());
element.setProperties(instanceElement.inProperties());
Map<String, Object> properties = new HashMap<>(instanceElement.inProperties());
properties.putAll(compositionElement.inProperties());
handleRestartInstance(instanceElement.instanceId(), element, properties, deployState, lockState);
}
//public abstract void handleRestartInstance(UUID instanceId, AcElementDeploy element,
// Map<String, Object> properties, DeployState deployState, LockState lockState) throws PfModelException;
@Override
public void migratehandleRestartInstance(CompositionElementDtoUUID compositionElementinstanceId, CompositionElementDtoAcElementDeploy compositionElementTargetelement,
InstanceElementDto instanceElementMap<String, Object> properties, DeployState deployState, InstanceElementDtoLockState instanceElementMigratelockState) throws PfModelException {
if var element = new AcElementDeploy();(DeployState.DEPLOYING.equals(deployState)) {
deploy(instanceId, element.setId(instanceElement.elementId(), properties);
element.setDefinition(compositionElement.elementDefinitionId()); return;
element.setProperties(instanceElement.inProperties());}
if migrate(instanceElementMigrateDeployState.UNDEPLOYING.instanceIdequals(deployState)), element, compositionElementTarget.compositionId(),{
undeploy(instanceId, element.getPropertiesgetId());
} public abstract voidreturn;
migrate(UUID instanceId, AcElementDeploy element, UUID compositionTargetId, }
if (DeployState.UPDATING.equals(deployState)) {
Map<String, Object>update(instanceId, element, properties) throws PfModelException;
@Override public voidreturn;
migratePrecheck(CompositionElementDto compositionElement, }
CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, if (DeployState.DELETING.equals(deployState)) {
InstanceElementDto instanceElementMigrate) throws PfModelException { intermediaryApi.updateAutomationCompositionElementState(instanceElementMigrate.instanceId(),delete(instanceId, element.getId());
instanceElementMigrate.elementId(), DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR,return;
}
"Migrate precheck not supported");if (LockState.LOCKING.equals(lockState)) {
} }
|