[midPoint] Scripted SQL Connector

Pavol Mederly mederly at evolveum.com
Wed Mar 16 17:15:12 CET 2016


Hello Stephen,

please replace *gen808:searchScript* start and end tags by 
*gen808:searchScriptFileName*. Currently, 
"/opt/midpoint/config/scripted_connectors/uic_iam_scripts/SearchScript.groovy" 
is interpreted as the actual script (not its file name).

Best regards,
Pavol



On 16.03.2016 15:39, Stephen Barker wrote:
> Sure Thing! It's really basic. The password has been stripped out of 
> this configuration.
>
> <resource 
> xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
>
> xmlns:icfs="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3" 
>
> xmlns:t="http://prism.evolveum.com/xml/ns/public/types-3"
>
> xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
> xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3"
>
> xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3"
>           oid="fe1b0541-9b77-4019-9c76-384839cc09aa"
>           version="15">
>    <name>UIC IAM Sim</name>
>    <metadata>
> <modifyTimestamp>2016-03-16T08:51:09.824-05:00</modifyTimestamp>
>       <modifierRef 
> xmlns:tns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
>                    oid="00000000-0000-0000-0000-000000000002"
>                    type="tns:UserType"/>
>
> <modifyChannel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</modifyChannel> 
>
>    </metadata>
>    <operationalState>
> <lastAvailabilityStatus>up</lastAvailabilityStatus>
>    </operationalState>
>    <connectorRef oid="3bd53df6-3b55-4aa8-a163-7522424926ea" 
> type="c:ConnectorType"><!-- ICF 
> net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector v2.2.3 
> --></connectorRef>
>    <connectorConfiguration 
> xmlns:icfc="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3">
>       <icfc:configurationProperties 
> xmlns:gen808="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/bundle/net.tirasa.connid.bundles.db.scriptedsql/net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector">
>
> <gen808:searchScript>/opt/midpoint/config/scripted_connectors/uic_iam_scripts/SearchScript.groovy</gen808:searchScript> 
>
>
> <gen808:schemaScriptFileName>/opt/midpoint/config/scripted_connectors/uic_iam_scripts/SchemaScript.groovy</gen808:schemaScriptFileName> 
>
>
> <gen808:reloadScriptOnExecution>true</gen808:reloadScriptOnExecution>
> <gen808:scriptingLanguage>GROOVY</gen808:scriptingLanguage>
>          <gen808:user>simuser1</gen808:user>
>          <gen808:password>
>          </gen808:password>
> <gen808:jdbcDriver>com.mysql.jdbc.Driver</gen808:jdbcDriver>
>
> <gen808:jdbcUrlTemplate>jdbc:mysql://localhost/uiciam</gen808:jdbcUrlTemplate> 
>
> <gen808:enableEmptyString>true</gen808:enableEmptyString>
>
> <gen808:rethrowAllSQLExceptions>true</gen808:rethrowAllSQLExceptions>
> <gen808:nativeTimestamps>true</gen808:nativeTimestamps>
>          <gen808:allNative>true</gen808:allNative>
>       </icfc:configurationProperties>
>    </connectorConfiguration>
>    <schema>
>       <cachingMetadata>
>
> <retrievalTimestamp>2016-03-16T07:50:43.289-05:00</retrievalTimestamp>
> <serialNumber>79d159e001005ada-ff062151864db51c</serialNumber>
>       </cachingMetadata>
>       <definition>
>          <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
> xmlns:ra="http://midpoint.evolveum.com/xml/ns/public/resource/annotation-3" 
>
>
> xmlns:tns="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3" 
>
>
> xmlns:a="http://prism.evolveum.com/xml/ns/public/annotation-3"
>                      elementFormDefault="qualified"
>
> targetNamespace="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3"> 
>
>             <xsd:import 
> namespace="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3"/>
>             <xsd:import 
> namespace="http://prism.evolveum.com/xml/ns/public/annotation-3"/>
>             <xsd:import 
> namespace="http://midpoint.evolveum.com/xml/ns/public/resource/annotation-3"/>
>             <xsd:complexType name="AccountObjectClass">
>                <xsd:annotation>
>                   <xsd:appinfo>
>                      <ra:resourceObject/>
> <ra:identifier>icfs:uid</ra:identifier>
>
> <ra:secondaryIdentifier>icfs:name</ra:secondaryIdentifier>
>
> <ra:displayNameAttribute>icfs:name</ra:displayNameAttribute>
> <ra:namingAttribute>icfs:name</ra:namingAttribute>
>
> <ra:nativeObjectClass>__ACCOUNT__</ra:nativeObjectClass>
>                      <ra:kind>account</ra:kind>
>                      <ra:default>true</ra:default>
>                   </xsd:appinfo>
>                </xsd:annotation>
>                <xsd:sequence>
>                   <xsd:element minOccurs="0" name="netid" 
> type="xsd:string">
>                      <xsd:annotation>
>                         <xsd:appinfo>
> <a:displayOrder>120</a:displayOrder>
>
> <ra:frameworkAttributeName>netid</ra:frameworkAttributeName>
>                         </xsd:appinfo>
>                      </xsd:annotation>
>                   </xsd:element>
>                   <xsd:element ref="icfs:name">
>                      <xsd:annotation>
>                         <xsd:appinfo>
>                            <a:displayName>ConnId Name</a:displayName>
> <a:displayOrder>110</a:displayOrder>
>
> <ra:frameworkAttributeName>__NAME__</ra:frameworkAttributeName>
>                         </xsd:appinfo>
>                      </xsd:annotation>
>                   </xsd:element>
>                   <xsd:element minOccurs="0" name="identity_id" 
> type="xsd:string">
>                      <xsd:annotation>
>                         <xsd:appinfo>
> <a:displayOrder>130</a:displayOrder>
>
> <ra:frameworkAttributeName>identity_id</ra:frameworkAttributeName>
>                         </xsd:appinfo>
>                      </xsd:annotation>
>                   </xsd:element>
>                   <xsd:element minOccurs="0" name="uin" 
> type="xsd:string">
>                      <xsd:annotation>
>                         <xsd:appinfo>
> <a:displayOrder>140</a:displayOrder>
>
> <ra:frameworkAttributeName>uin</ra:frameworkAttributeName>
>                         </xsd:appinfo>
>                      </xsd:annotation>
>                   </xsd:element>
>                   <xsd:element minOccurs="0" name="netid_id" 
> type="xsd:string">
>                      <xsd:annotation>
>                         <xsd:appinfo>
> <a:displayOrder>150</a:displayOrder>
>
> <ra:frameworkAttributeName>netid_id</ra:frameworkAttributeName>
>                         </xsd:appinfo>
>                      </xsd:annotation>
>                   </xsd:element>
>                   <xsd:element minOccurs="0" ref="icfs:uid">
>                      <xsd:annotation>
>                         <xsd:appinfo>
>                            <a:displayName>ConnId UID</a:displayName>
> <a:displayOrder>100</a:displayOrder>
>                            <a:access>read</a:access>
>                         </xsd:appinfo>
>                      </xsd:annotation>
>                   </xsd:element>
>                </xsd:sequence>
>             </xsd:complexType>
>          </xsd:schema>
>       </definition>
>    </schema>
>    <capabilities>
>       <cachingMetadata>
>
> <retrievalTimestamp>2016-03-16T07:50:43.293-05:00</retrievalTimestamp>
> <serialNumber>b830b522bf88fde3-65dceef39aa140d</serialNumber>
>       </cachingMetadata>
>       <native 
> xmlns:cap="http://midpoint.evolveum.com/xml/ns/public/resource/capabilities-3">
>          <cap:addRemoveAttributeValues/>
>          <cap:activation>
>             <cap:status/>
>             <cap:lockoutStatus/>
>          </cap:activation>
>          <cap:credentials>
>             <cap:password>
> <cap:returnedByDefault>false</cap:returnedByDefault>
>             </cap:password>
>          </cap:credentials>
>          <cap:liveSync/>
>          <cap:testConnection/>
>          <cap:create/>
>          <cap:read/>
>          <cap:update/>
>          <cap:delete/>
>          <cap:script>
>             <cap:host>
>                <cap:type>connector</cap:type>
>             </cap:host>
>          </cap:script>
>       </native>
>    </capabilities>
> </resource>
>
> Thanks,
> Stephen Barker
> Senior Software Engineer - AITS
> University of Illinois
> sbarker at uillinois.edu
> 265-0942
> -- 
> "we tend to be masters of our own fate, the only thing that stops us 
> from doing really cool things is time." -- Monty Oum
>
> On 03/16/2016 09:36 AM, Ivan Noris wrote:
>> Hi Stephen,
>>
>> could you please also share the resource XML? (Anonymized if needed).
>> Thank you.
>>
>> Regards,
>> Ivan
>>
>> On 03/16/2016 03:03 PM, Stephen Barker wrote:
>>> Hi All,
>>>
>>> I could use some help with the scripted SQL Connector.
>>>
>>> I am using midpoint 3.3 and the scripted connector from
>>> net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector.
>>>
>>> I have created a very simple schema and search script of which I can
>>> see the schema script is working well. When I go to "Accounts" though
>>> in the List Resources menu I get the error:
>>>
>>> 2016-03-16 08:28:58,305 [MODEL] [http-bio-8080-exec-7] ERROR
>>> (com.evolveum.midpo
>>> int.model.impl.controller.ModelController): Couldn't search objects in
>>> provision
>>> ing, reason: Generic error in the connector:
>>> org.identityconnectors.framework.co
>>> mmon.exceptions.ConnectorException(Search script
>>> error)->groovy.lang.MissingProp
>>> ertyException(No such property: midpoint for class: Script1) (class
>>> com.evolveum
>>> .midpoint.util.exception.SystemException)
>>>
>>>
>>> My search script is pretty simple basically just returning all results
>>> from a table.
>>>
>>> I'll include the contents at the bottom of this email.
>>>
>>> What am I missing in getting this set up?
>>>
>>> -----
>>> SEARCH SCRIPT
>>> -----
>>>
>>> import groovy.sql.Sql;
>>> import groovy.sql.DataSet;
>>> import groovy.text.SimpleTemplateEngine;
>>>
>>> log.info("Entering " + action + " Script");
>>>
>>> def sql = new Sql(connection);
>>> def result = []
>>> def where = "";
>>>
>>> if (query != null){
>>>
>>> //To implement...
>>>
>>> }
>>>
>>> switch ( objectClass ) {
>>>
>>> case "__ACCOUNT__":
>>>    sql.eachRow("SELECT * from identity",
>>> {result.add([__ENABLE__:true,__UID__:it.id, __NAME__:it.uin,
>>> uin:it.uin)} );
>>>    break;
>>>
>>> case "__GROUP__":
>>>    log.info("Search Group");
>>>    break;
>>>
>>> default:
>>>    result;
>>> }
>>>
>>> return result;
>>>
>>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20160316/44de691e/attachment.htm>


More information about the midPoint mailing list