Skip to content

Commit

Permalink
Basic resource configuration expressions seems to work.
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed May 12, 2017
1 parent 01b9420 commit 5a66514
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 12 deletions.
Expand Up @@ -682,7 +682,7 @@ public void testConnection(PrismObject<ResourceType> resource, Task task, Operat
connectorTestResult.addParam(OperationResult.PARAM_NAME, connectorSpec.getConnectorName());
connectorTestResult.addParam(OperationResult.PARAM_OID, connectorSpec.getConnectorOid());

testConnectionConnector(connectorSpec, capabilityMap, connectorTestResult);
testConnectionConnector(connectorSpec, capabilityMap, task, connectorTestResult);

connectorTestResult.computeStatus();
}
Expand Down Expand Up @@ -776,7 +776,7 @@ public void testConnection(PrismObject<ResourceType> resource, Task task, Operat

}

public void testConnectionConnector(ConnectorSpec connectorSpec, Map<String,Collection<Object>> capabilityMap, OperationResult parentResult) {
public void testConnectionConnector(ConnectorSpec connectorSpec, Map<String,Collection<Object>> capabilityMap, Task task, OperationResult parentResult) {

// === test INITIALIZATION ===

Expand Down Expand Up @@ -824,7 +824,11 @@ public void testConnectionConnector(ConnectorSpec connectorSpec, Map<String,Coll
.createSubresult(ConnectorTestOperation.CONNECTOR_CONFIGURATION.getOperation());

try {
connector.configure(connectorSpec.getConnectorConfiguration().getValue(), configResult);
PrismObject<ResourceType> resource = connectorSpec.getResource();
PrismObjectDefinition<ResourceType> newResourceDefinition = resource.getDefinition().clone();
applyConnectorSchemaToResource(connectorSpec, newResourceDefinition, resource, task, configResult);
PrismContainerValue<ConnectorConfigurationType> connectorConfiguration = connectorSpec.getConnectorConfiguration().getValue();
connector.configure(connectorConfiguration, configResult);
configResult.recordSuccess();
} catch (CommunicationException e) {
modifyResourceAvailabilityStatus(connectorSpec.getResource(), AvailabilityStatusType.BROKEN, parentResult);
Expand All @@ -842,6 +846,14 @@ public void testConnectionConnector(ConnectorSpec connectorSpec, Map<String,Coll
modifyResourceAvailabilityStatus(connectorSpec.getResource(), AvailabilityStatusType.BROKEN, parentResult);
configResult.recordFatalError("Configuration error", e);
return;
} catch (ObjectNotFoundException e) {
modifyResourceAvailabilityStatus(connectorSpec.getResource(), AvailabilityStatusType.BROKEN, parentResult);
configResult.recordFatalError("Object not found", e);
return;
} catch (ExpressionEvaluationException e) {
modifyResourceAvailabilityStatus(connectorSpec.getResource(), AvailabilityStatusType.BROKEN, parentResult);
configResult.recordFatalError("Expression error", e);
return;
} catch (RuntimeException | Error e) {
modifyResourceAvailabilityStatus(connectorSpec.getResource(), AvailabilityStatusType.BROKEN, parentResult);
configResult.recordFatalError("Unexpected runtime error", e);
Expand Down Expand Up @@ -1264,7 +1276,8 @@ private <T extends CapabilityType> boolean supportsCapability(ConnectorInstanceS
}

private ConnectorSpec getDefaultConnectorSpec(PrismObject<ResourceType> resource) {
return new ConnectorSpec(resource, null, ResourceTypeUtil.getConnectorOid(resource), resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION));
PrismContainer<ConnectorConfigurationType> connectorConfiguration = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION);
return new ConnectorSpec(resource, null, ResourceTypeUtil.getConnectorOid(resource), connectorConfiguration);
}


Expand Down
Expand Up @@ -62,7 +62,7 @@ protected <T> void assertConfigurationProperty(PrismProperty<T> confProp) {
break;

case "uselessString":
assertEquals("Wrong value for "+confProp, null, val);
assertEquals("Wrong value for "+confProp, "Shiver me timbers!", val);
assertExpression(confProp, "value");
break;

Expand Down
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2010-2016 Evolveum
~ Copyright (c) 2010-2017 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -195,9 +195,5 @@
<objectClass>ri:CustomprivilegeObjectClass</objectClass>
</objectType>
</schemaHandling>

<caching>
<cachingStategy>passive</cachingStategy>
</caching>


</resource>
Expand Up @@ -245,6 +245,10 @@ public void configure(PrismContainerValue<?> configuration, OperationResult pare

OperationResult result = parentResult.createSubresult(ConnectorInstance.OPERATION_CONFIGURE);
result.addParam("configuration", configuration);

if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Configuring connector {}, provided configuration:\n{}", connectorType, configuration.debugDump(1));
}

try {
// Get default configuration for the connector. This is important,
Expand Down Expand Up @@ -274,7 +278,7 @@ public void configure(PrismContainerValue<?> configuration, OperationResult pare
}

if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Configuring connector {}", connectorType);
LOGGER.trace("Configuring connector {}, transformed configuration:", connectorType);
for (String propName : apiConfig.getConfigurationProperties().getPropertyNames()) {
LOGGER.trace("P: {} = {}", propName,
apiConfig.getConfigurationProperties().getProperty(propName).getValue());
Expand Down

0 comments on commit 5a66514

Please sign in to comment.