[midPoint] Custom .Net Connector

Anand Kothekar anand.kothekar at confluxsys.com
Mon Mar 2 15:27:25 CET 2015


Hi,


Thank you very much Pavol for the wonderful reply. It helped a lot.

I was actually missing *.connector (a dot)* thats why the connector was not
getting  loaded.



Thanks,
Anand

On Sat, Feb 28, 2015 at 4:01 AM, Pavol Mederly <mederly at evolveum.com> wrote:

>  Hello Anand,
>
> The problem  i can think of is in java connector we have manifest file, is
> there anything equivalent in .net connector.
>
>
> The ConnectorServer uses Windows Assembly mechanism to discover the
> connectors. I believe this is the code (LocalConnectorInfoManagerImpl in
> ApiLocal.cs)
>
> FileInfo[] files = directory.GetFiles("*.Connector.dll");
> foreach (FileInfo file in files)
> {
>   Assembly lib = Assembly.LoadFrom(file.ToString());
>   CollectionUtil.AddAll(_connectorInfo, ProcessAssembly(lib));
> }
>
> The ProcessAssembly methods gathers the type information from the
> assembly, and looks for ConnectorClassAttribute instances. That's how it
> knows that these are ICF Connectors.
>
> ---
>
> In order to help you a bit with creating your own connector, I've prepared
> a sample (empty) connector for you. Please see the latest commit to Evolveum/openicf
> project <https://github.com/Evolveum/openicf>.
>
> The connector is in the connectors\dotnet-sample directory.
>
> For building it I use the following two batch procedures - these are not
> part of the commit; please create them manually:
>
> *env.bat* - sets up an environment:
>
> set WIX_HOME=C:\Program Files (x86)\WiX Toolset v3.7
> set Path=%Path%;%WIX_HOME%\bin
> set OPENICF_HOME=c:\openicf-home
>
> Note that you should have the corresponding software installed (WiX
> Toolset in this case).
> OPENICF_HOME points to a directory where the installation of
> OpenICF/ConnId server is unpacked.
>
> For the building itself I use this one: *b.bat* :
>
> c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
> SampleDotNetConnector.sln /p:Configuration=Release /p:ZipRelease=true
>
> After building the connector, I simply unzip the file
> *Build\Sample.Connector-1.4.1.20283.zip* into the OPENICF_HOME directory
> (c:\openicf-home) and start the connector server.
>
> In midPoint I create the connector host object:
>
> <connectorHost xmlns=
> "http://midpoint.evolveum.com/xml/ns/public/common/common-3"
> <http://midpoint.evolveum.com/xml/ns/public/common/common-3>
>                oid="91919191-76e0-59e2-86d6-44cc44cc4400"
>                version="0">
>    <name>ICF Connector server on localhost:8759</name>
>    <hostname>127.0.0.1</hostname>
>    <port>8759</port>
>    <sharedSecret>...</sharedSecret>
> </connectorHost>
>
> And when I do the discovery operation on this connector host, midPoint
> creates new Connector object named "ICF
> Org.IdentityConnectors.Sample.SampleConnector v1.4.1.20283 @ICF Connector
> server on localhost:8759".
>
> Then I can import a very simple resource definition that uses this sample
> connector:
>
> <resource xmlns=
> "http://midpoint.evolveum.com/xml/ns/public/common/common-3"
> <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"
> <http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3>
>           xmlns:c=
> "http://midpoint.evolveum.com/xml/ns/public/common/common-3"
> <http://midpoint.evolveum.com/xml/ns/public/common/common-3>
>           xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3"
> <http://prism.evolveum.com/xml/ns/public/query-3>>
>    <name>Sample</name>
>    <connectorRef>
>       <filter>
>          <q:equal>
>             <q:path>c:connectorType</q:path>
>
> <q:value>Org.IdentityConnectors.Sample.SampleConnector</q:value>
>          </q:equal>
>       </filter>
>    </connectorRef>
>    <connectorConfiguration xmlns:icfc=
> "http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3"
> <http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3>
> >
>       <icfc:configurationProperties xmlns:gen780=
> "http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/bundle/Sample.Connector/Org.IdentityConnectors.Sample.SampleConnector"
> <http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/bundle/Sample.Connector/Org.IdentityConnectors.Sample.SampleConnector>
> >
>          <gen780:Username>administrator</gen780:Username>
>          <gen780:Password><clearValue>secret</clearValue></gen780:Password>
>          <gen780:Property1>P1</gen780:Property1>
>          <gen780:Property2>P2</gen780:Property2>
>       </icfc:configurationProperties>
>    </connectorConfiguration>
> </resource>
>
> Of course, it does nothing, because the sample connector even does not
> provide any schema. (I.e. Test connection from midPoint passes first three
> steps and fails the fourth, related to connector schema.) The only
> indication that something is going on is the diagnostic messages that the
> sample connector writes to the console:
>
> Press q to shutdown.
> Press t for a thread dump.
> Init called.
> CheckAlive called
> Schema called.
> CheckAlive called
> Schema called.
> CheckAlive called
> Schema called.
> CheckAlive called
> Test called
>
> Anyway, I hope this will allow you to get started developing your own
> connector.
>
> Best regards,
> Pavol
>
>
> On 27. 2. 2015 16:41, Anand Kothekar wrote:
>
> Hi,
>
>  I checked the error logs but there was no error.
>
>  The problem  i can think of is in java connector we have manifest file,
> is there anything equivalent in .net connector.
>
>
>
>
>
>
>  Thanks,
> Anand Kothekar
>
> On Fri, Feb 27, 2015 at 8:46 PM, Pavol Mederly <mederly at evolveum.com>
> wrote:
>
>>  Hello Anand,
>>
>> I don't know of any reference document for that.
>>
>> Have you got any error messages in ConnectorServer log?
>>
>> Best regards,
>> Pavol
>>
>>
>> On 27. 2. 2015 12:45, Anand Kothekar wrote:
>>
>>  Hi,
>>
>>  I have a requirement to write a custom .net connector, do you have any
>> reference document which i an refer to write it.
>>
>>  I have written some c# code and implemented the connector interfaces
>> but when i deploy the connector dll on .net connector server midpoint
>> connector host is not able to discover the connector.
>>
>>  So I think I might be missing something, a quick document on this will
>> be a great help.
>>
>>
>>  Thanks
>> Anand
>>
>>
>>  _______________________________________________
>> midPoint mailing listmidPoint at lists.evolveum.comhttp://lists.evolveum.com/mailman/listinfo/midpoint
>>
>>
>>
>> _______________________________________________
>> midPoint mailing list
>> midPoint at lists.evolveum.com
>> http://lists.evolveum.com/mailman/listinfo/midpoint
>>
>>
>
>
> _______________________________________________
> midPoint mailing listmidPoint at lists.evolveum.comhttp://lists.evolveum.com/mailman/listinfo/midpoint
>
>
>
> _______________________________________________
> 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/20150302/e7de9fd3/attachment.htm>


More information about the midPoint mailing list