private ScriptContext convertToScriptContext(ExecuteProvisioningScriptOperation executeOp) { // creating script arguments map form the execute script operation // arguments Map<String, Object> scriptArguments = new HashMap<>(); for (ExecuteScriptArgument argument : executeOp.getArgument()) { scriptArguments.put(argument.getArgumentName(), argument.getArgumentValue()); } ScriptContext scriptContext = new ScriptContext(executeOp.getLanguage(), executeOp.getTextCode(), scriptArguments); return scriptContext; }
public static ExecuteProvisioningScriptOperation convertToScriptOperation( ProvisioningScriptType scriptType, String desc, PrismContext prismContext) throws SchemaException { ExecuteProvisioningScriptOperation scriptOperation = new ExecuteProvisioningScriptOperation(); MutablePrismPropertyDefinition scriptArgumentDefinition = prismContext.definitionFactory().createPropertyDefinition( FAKE_SCRIPT_ARGUMENT_NAME, DOMUtil.XSD_STRING); scriptArgumentDefinition.setMinOccurs(0); scriptArgumentDefinition.setMaxOccurs(-1); for (ProvisioningScriptArgumentType argument : scriptType.getArgument()) { ExecuteScriptArgument arg = new ExecuteScriptArgument(argument.getName(), StaticExpressionUtil.getStaticOutput(argument, scriptArgumentDefinition, desc, ExpressionReturnMultiplicityType.SINGLE, prismContext)); scriptOperation.getArgument().add(arg); } scriptOperation.setLanguage(scriptType.getLanguage()); scriptOperation.setTextCode(scriptType.getCode()); if (scriptType.getHost() != null && scriptType.getHost().equals(ProvisioningScriptHostType.CONNECTOR)) { scriptOperation.setConnectorHost(true); scriptOperation.setResourceHost(false); } if (scriptType.getHost() == null || scriptType.getHost().equals(ProvisioningScriptHostType.RESOURCE)) { scriptOperation.setConnectorHost(false); scriptOperation.setResourceHost(true); } scriptOperation.setCriticality(scriptType.getCriticality()); return scriptOperation; }
private Object executeScriptIcf(StateReporter reporter, ExecuteProvisioningScriptOperation scriptOperation, OperationResult parentResult) throws CommunicationException, GenericFrameworkException { if (scriptOperation.isConnectorHost()) { icfOpName = "runScriptOnConnector"; } else if (scriptOperation.isResourceHost()) { icfOpName = "runScriptOnResource"; } else { if (scriptOperation.isConnectorHost()) { InternalMonitor.recordConnectorOperation("runScriptOnConnector"); output = connIdConnectorFacade.runScriptOnConnector(scriptContext, new OperationOptionsBuilder().build()); } else if (scriptOperation.isResourceHost()) { InternalMonitor.recordConnectorOperation("runScriptOnResource"); output = connIdConnectorFacade.runScriptOnResource(scriptContext, new OperationOptionsBuilder().build()); CriticalityType criticality = scriptOperation.getCriticality(); if (criticality == null || criticality == CriticalityType.FATAL) { parentResult.computeStatus();
/** * check additional operation order, according to the order are script * executed before or after operation.. */ private void checkAndExecuteAdditionalOperations(StateReporter reporter, Collection<Operation> additionalOperations, BeforeAfterType order, OperationResult result) throws CommunicationException, GenericFrameworkException { if (additionalOperations == null) { // TODO: add warning to the result return; } for (Operation op : additionalOperations) { if (op instanceof ExecuteProvisioningScriptOperation) { ExecuteProvisioningScriptOperation executeOp = (ExecuteProvisioningScriptOperation) op; LOGGER.trace("Find execute script operation: {}", SchemaDebugUtil.prettyPrint(executeOp)); // execute operation in the right order.. if (order.equals(executeOp.getScriptOrder())) { executeScriptIcf(reporter, executeOp, result); } } } }