#### Implementing support as a cloud provider

Cloud providers need to create `CloudProvidersAccountExporter` objects for every account they like to expose to the API and use the `CloudProvidersAccountExporter` API to set the properties of the accounts. Also a `CloudProvidersProviderExporter` needs to be created in order to hold all the `CloudProvidersAccountExporter` objects that will be added to the provider when created. `CloudProvidersProviderExporter` also exports properties that define the provider that can be set using the `CloudProvidersProviderExporter` API.

To register your cloud provider, you need to expose the interface it is implementing in its desktop file

Example desktop file to register a cloud provider:

    [Desktop Entry]
    Type=Application
    Name=mycloudprovider example server
    NoDisplay=true
    Implements=org.freedesktop.CloudProviders

    [org.freedesktop.CloudProviders]
    BusName=org.mycloudprovider.CloudProviders.ServerExample
    ObjectPath=/org/mycloudprovider/CloudProviders/ServerExample

In previous versions, to register your cloud provider you needed to provide a file in DATADIR/cloud-providers. This way of registering providers is still working but is not compatible with containerization.

Example file to register a cloud provider in previous versions:

    [Cloud Provider]
    BusName=org.mycloudprovider.CloudProviders.ServerExample
    ObjectPath=/org/mycloudprovider/CloudProviders/ServerExample
    Version=1