NodeConductor SugarCRM ====================== NodeConductor SugarCRM /api/sugarcrm/ -------------- A filter backend that uses django-filter. Supported actions and methods: .. topic:: ``/api/sugarcrm/`` Methods: ``GET``, ``POST`` Supported fields for creation: * **name** -- ``string`` * project -- ``link to /api/projects//`` * **customer** -- ``link to /api/customers//`` * **settings** -- ``link to /api/service-settings//`` * backend_url -- ``URL`` (URL of template group that describes OpenStack instance provision with default parameters(required, e.g.: http://example.com/api/template-groups/16c7675752244f5d9e870a2cb0cfeb02/)) * username -- ``string`` (NodeConductor user username (e.g. Username)) * password -- ``string`` (NodeConductor user password (e.g. Password)) * available_for_all -- ``boolean`` (Service will be automatically added to all customers projects if it is available for all) * scope -- ``link to any: /api/sugarcrm-crms//, /api/openstack-instances//, /api/openstack-tenants//, /api/openstack-volumes//, /api/openstack-snapshots//, /api/openstack-dr-backups//`` (VM that contains service) * protocol -- ``string`` (CRMs access protocol (default: "http")) * sms_email_rcpt -- ``string`` (Name of SMS email recipient) * sms_email_from -- ``string`` (Name of SMS email sender) * license_code -- ``string`` (License code that will be used for SugarCRM activation) * user_data -- ``string`` (User data that will be passed to CRMs OpenStack instance on creationWord {password} will be replaced with auto-generated admin password (default: "#cloud-config:\nruncmd:\n - [ bootstrap, -p, {password}, -k, {license_code}, -v]")) * phone_regex -- ``string`` (RegEx for phone validation) Filter fields: * ?customer = ``UUIDFilter`` * ?name = ``string`` * ?settings = ``link`` * ?project_uuid = ``UUIDFilter`` * ?project = ``link`` * ?tag = ``ModelMultipleChoiceField`` * ?rtag = ``ModelMultipleChoiceField`` * ?shared = ``boolean`` * ?type = ``ServiceTypeFilter`` To list all services without regard to its type, run **GET** against */api/services/* as an authenticated user. To list services of specific type issue **GET** to specific endpoint from a list above as a customer owner. Individual endpoint used for every service type. To create a service, issue a **POST** to specific endpoint from a list above as a customer owner. Individual endpoint used for every service type. You can create service based on shared service settings. Example: .. code-block:: http POST /api/digitalocean/ HTTP/1.1 Content-Type: application/json Accept: application/json Authorization: Token c84d653b9ec92c6cbac41c706593e66f567a7fa4 Host: example.com { "name": "Common DigitalOcean", "customer": "http://example.com/api/customers/1040561ca9e046d2b74268600c7e1105/", "settings": "http://example.com/api/service-settings/93ba615d6111466ebe3f792669059cb4/" } Or provide your own credentials. Example: .. code-block:: http POST /api/oracle/ HTTP/1.1 Content-Type: application/json Accept: application/json Authorization: Token c84d653b9ec92c6cbac41c706593e66f567a7fa4 Host: example.com { "name": "My Oracle", "customer": "http://example.com/api/customers/1040561ca9e046d2b74268600c7e1105/", "backend_url": "https://oracle.example.com:7802/em", "username": "admin", "password": "secret" } .. topic:: ``/api/sugarcrm//`` Methods: ``GET``, ``PUT``, ``PATCH``, ``DELETE`` Supported fields for update: * **name** -- ``string`` * available_for_all -- ``boolean`` (Service will be automatically added to all customers projects if it is available for all) .. topic:: ``/api/sugarcrm//link/`` Methods: ``GET``, ``POST`` To get a list of resources available for import, run **GET** against *//link/* as an authenticated user. Optionally project_uuid parameter can be supplied for services requiring it like OpenStack. To import (link with NodeConductor) resource issue **POST** against the same endpoint with resource id. .. code-block:: http POST /api/openstack/08039f01c9794efc912f1689f4530cf0/link/ HTTP/1.1 Content-Type: application/json Accept: application/json Authorization: Token c84d653b9ec92c6cbac41c706593e66f567a7fa4 Host: example.com { "backend_id": "bd5ec24d-9164-440b-a9f2-1b3c807c5df3", "project": "http://example.com/api/projects/e5f973af2eb14d2d8c38d62bcbaccb33/" } .. topic:: ``/api/sugarcrm//managed_resources/`` Methods: ``GET`` .. topic:: ``/api/sugarcrm//unlink/`` Methods: ``POST`` Unlink all related resources, service project link and service itself. /api/sugarcrm-service-project-link/ ----------------------------------- A filter backend that uses django-filter. Supported actions and methods: .. topic:: ``/api/sugarcrm-service-project-link/`` Methods: ``GET``, ``POST`` Supported fields for creation: * **project** -- ``link to /api/projects//`` * **service** -- ``link to /api/sugarcrm//`` Filter fields: * ?project = ``link`` * ?service_uuid = ``UUIDFilter`` * ?customer_uuid = ``UUIDFilter`` * ?project_uuid = ``UUIDFilter`` To get a list of connections between a project and an service, run **GET** against service_project_link_url as authenticated user. Note that a user can only see connections of a project where a user has a role. If service has `available_for_all` flag, project-service connections are created automatically. Otherwise, in order to be able to provision resources, service must first be linked to a project. To do that, **POST** a connection between project and a service to service_project_link_url as stuff user or customer owner. .. topic:: ``/api/sugarcrm-service-project-link//`` Methods: ``GET``, ``DELETE`` To remove a link, issue **DELETE** to URL of the corresponding connection as stuff user or customer owner. /api/sugarcrm-crms/ ------------------- SLA filter ^^^^^^^^^^ Allows to filter or sort resources by actual_sla Default period is current year and month. Example query parameters for filtering list of OpenStack instances: .. code-block:: http /api/openstack-instances/?actual_sla=90&period=2016-02 Example query parameters for sorting list of OpenStack instances: .. code-block:: http /api/openstack-instances/?o=actual_sla&period=2016-02 Monitoring filter ^^^^^^^^^^^^^^^^^ Filter and order resources by monitoring item. For example, given query dictionary .. code-block:: http { 'monitoring__installation_state': True } it produces following query .. code-block:: http { 'monitoring_item__name': 'installation_state', 'monitoring_item__value': True } Example query parameters for sorting list of OpenStack instances: .. code-block:: http /api/openstack-instances/?o=monitoring__installation_state Tags ordering. Filtering for complex tags. Example: ?tag__license-os=centos7 - will filter objects with tag "license-os:centos7". Allow to define next parameters in view: - tags_filter_db_field - name of tags field in database. Default: tags. - tags_filter_request_field - name of tags in request. Default: tag. In PostgreSQL NULL values come *last* with ascending sort order. In MySQL NULL values come *first* with ascending sort order. This filter provides unified sorting for both databases. Supported actions and methods: .. topic:: ``/api/sugarcrm-crms/`` Methods: ``GET``, ``POST`` Supported fields for creation: * **name** -- ``string`` * description -- ``string`` * **service_project_link** -- ``link to /api/sugarcrm-service-project-link//`` * user_count -- ``integer`` Filter fields: * ?customer = ``UUIDFilter`` * ?customer_native_name = ``string`` * ?project_name = ``string`` * ?service_settings_name = ``string`` * ?project_group = ``UUIDFilter`` * ?project_uuid = ``UUIDFilter`` * ?service_uuid = ``UUIDFilter`` * ?service_settings_uuid = ``UUIDFilter`` * ?customer_uuid = ``UUIDFilter`` * ?uuid = ``UUIDFilter`` * ?customer_abbreviation = ``string`` * ?name = ``string`` * ?project = ``UUIDFilter`` * ?state = ``choice('Deleting', 'Deletion Scheduled', 'Erred', 'Offline', 'Online', 'Provisioning', 'Provisioning Scheduled', 'Resizing', 'Resizing Scheduled', 'Restarting', 'Restarting Scheduled', 'Starting', 'Starting Scheduled', 'Stopping', 'Stopping Scheduled')`` * ?tag = ``ModelMultipleChoiceField`` * ?project_group_uuid = ``UUIDFilter`` * ?rtag = ``ModelMultipleChoiceField`` * ?service_name = ``string`` * ?project_group_name = ``string`` * ?description = ``string`` * ?customer_name = ``string`` Order fields: ``created``, ``customer_abbreviation``, ``customer_name``, ``customer_native_name``, ``name``, ``project_group_name``, ``project_name``, ``state`` .. topic:: ``/api/sugarcrm-crms//`` Methods: ``GET``, ``PUT``, ``PATCH``, ``DELETE`` Supported fields for update: * **name** -- ``string`` * description -- ``string`` Optional `field` query parameter (can be list) allows to limit what fields are returned. For example, given request /api/openstack-instances//?field=uuid&field=name you get response like this: .. code-block:: javascript { "uuid": "90bcfe38b0124c9bbdadd617b5d739f5", "name": "Azure Virtual Machine" } .. topic:: ``/api/sugarcrm-crms//unlink/`` Methods: ``POST`` .. topic:: ``/api/sugarcrm-crms//users/`` Methods: ``GET``, ``POST``, ``PUT``, ``PATCH``, ``DELETE`` .. topic:: ``/api/sugarcrm-crms//users//`` Methods: ``GET``, ``POST``, ``PUT``, ``PATCH``, ``DELETE`` .. topic:: ``/api/sugarcrm-crms//users//password/`` Methods: ``POST``