Add an Interface to configure LDAP name service daemon

It defines interfaces to create and to update LDAP config file.

It defines two interfaces - one is to create a config file and
the another one is to allow updates to happen to individual
properties.

Change-Id: I2f8182ad6d6d6945650d6ff0865c40106973fdec
Signed-off-by: Nagaraju Goruganti <ngorugan@in.ibm.com>
diff --git a/xyz/openbmc_project/User/Ldap/Config.interface.yaml b/xyz/openbmc_project/User/Ldap/Config.interface.yaml
new file mode 100644
index 0000000..1f921dd
--- /dev/null
+++ b/xyz/openbmc_project/User/Ldap/Config.interface.yaml
@@ -0,0 +1,57 @@
+description: >
+    Implement to update LDAP mandatory properties.
+
+properties:
+    - name: SecureLDAP
+      type: boolean
+      description: >
+          Specifies whether to use SSL or not.
+      default: false
+    - name: LDAPServerURI
+      type: string
+      description: >
+          Specifies the LDAP URI of the server to connect to.
+    - name: LDAPBindDN
+      type: string
+      description: >
+          Specifies the distinguished name with which to bind to the directory
+          server for lookups.
+    - name: LDAPBaseDN
+      type: string
+      description: >
+          Specifies the base distinguished name to use as search base.
+    - name: LDAPBINDDNpassword
+      type: string
+      description: >
+          Specifies the clear text credentials with which to bind. This option
+          is only applicable when used with LDAPBindDN.
+    - name: LDAPSearchScope
+      type: enum[self.SearchScope]
+      description: >
+          Specifies the search scope:subtree, one level or base object.
+      default: 0
+    - name: LDAPType
+      type: enum[self.Type]
+      description: >
+          Specifies the the configured server is ActiveDirectory(AD) or
+          OpenLdap. It's just an indication for the LDAP stack running on
+          the BMC, in case the app is implemented in such a way that it has
+          to react differently for AD vs openldap.
+
+enumerations:
+    - name: SearchScope
+      description: >
+          Possible base scopes.
+      values:
+        - name: sub
+        - name: one
+        - name: base
+
+    - name: Type
+      description: >
+          Possible LDAP Types.
+      values:
+        - name: ActiveDirectory
+        - name: OpenLdap
+
+# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
diff --git a/xyz/openbmc_project/User/Ldap/Create.interface.yaml b/xyz/openbmc_project/User/Ldap/Create.interface.yaml
new file mode 100644
index 0000000..24f5d28
--- /dev/null
+++ b/xyz/openbmc_project/User/Ldap/Create.interface.yaml
@@ -0,0 +1,72 @@
+description: >
+    Implement to create LDAP name service daemon configuration file.
+
+methods:
+    - name: CreateConfig
+      description: >
+          This method always creates a new config file as well as a D-Bus 
+          object to represent the config, it will destroy an existing one,
+          if found. In other words, this is not an update API. Individual
+          properties can be updated as per the
+          xyz/openbmc_project/User/Ldap/Config.interface.yaml.
+      parameters:
+        - name: SecureLDAP
+          type: boolean
+          description: >
+              Specifies whether to use SSL or not.
+        - name: LDAPServerURI
+          type: string
+          description: >
+              Specifies the LDAP URI of the server to connect to.
+        - name: LDAPBindDN
+          type: string
+          description: >
+              Specifies the distinguished name with which to bind to the
+              directory server for lookups.
+        - name: LDAPBaseDN
+          type: string
+          description: >
+              Specifies the base distinguished name to use as search base.
+        - name: LDAPBINDDNpassword
+          type: string
+          description: >
+              Specifies the clear text credentials with which to bind. This
+              option is only applicable when used with LDAPBindDN.
+        - name: LDAPSearchScope
+          type: enum[self.SearchScope]
+          description: >
+              Specifies the search scope:subtree, one level or base object.
+        - name: LDAPType
+          type: enum[self.Type]
+          description: >
+              Specifies the the configured server is ActiveDirectory(AD) or
+              OpenLdap. It's just an indication for the LDAP stack running on
+              the BMC, in case the app is implemented in such a way that it has
+              to react differently for AD vs openldap.
+      returns:
+        - name: path
+          type: string
+          description: >
+              The object path of the D-Bus object representing the config.
+
+      errors:
+        - xyz.openbmc_project.Common.Error.InternalFailure
+        - xyz.openbmc_project.Common.Error.InvalidArgument
+
+enumerations:
+    - name: SearchScope
+      description: >
+          Possible base scopes.
+      values:
+        - name: sub
+        - name: one
+        - name: base
+
+    - name: Type
+      description: >
+          Possible LDAP Types.
+      values:
+        - name: ActiveDirectory
+        - name: OpenLdap
+
+# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4