Centralize readthedocs docs
[ccsdk/distribution.git] / docs / platform / plugins / pgaas.rst
diff --git a/docs/platform/plugins/pgaas.rst b/docs/platform/plugins/pgaas.rst
new file mode 100644 (file)
index 0000000..d27436f
--- /dev/null
@@ -0,0 +1,130 @@
+PGaaS Plugin
+============
+
+Cloudify PGaaS plugin description and configuraiton # Description The
+PGaaS plugin allows users to deploy PostgreSQL application databases,
+and retrieve access credentials for such databases, as part of a
+Cloudify blueprint. # Plugin Requirements \* Python versions \* 2.7.x \*
+System dependencies \* psycopg2
+
+Note: These requirements apply to the VM where Cloudify Manager itself
+runs.
+
+Note: The psycopg2 requirement is met by running "yum install
+python-psycopg2" on the Cloudify Manager VM.
+
+Note: Cloudify Manager, itself, requires Python 2.7.x (and Centos 7).
+
+Types
+=====
+
+dcae.nodes.pgaas.cluster
+------------------------
+
+**Derived From:** cloudify.nodes.Root
+
+**Properties:**
+
+-  ``writerfqdn`` (required string) The FQDN used for read-write access
+   to the cluster containing the postgres database instance. This is
+   used to identify and access a particular database instance and to
+   record information about that instance on Cloudify Manager.
+-  ``use_existing`` (optional boolean default=false) This is used to
+   reference a database instance, in one blueprint, that was deployed in
+   a different one. If it is ``true``, then the ``readerfqdn`` property
+   must not be set and this node must not have any
+   ``dcae.relationships.pgaas_cluster_uses_sshkeypair`` relationships.
+   If it is ``false``, then this node must have exactly one
+   ``dcae.relationships.pgaas_cluster_uses_sshkeypair`` relationship.
+-  ``readerfqdn`` (optional string default=value of ``writerfqdn``) The
+   FQDN used for read-only access to the cluster containing the postgres
+   database instance, if different than the FQDN used for read-write
+   access. This will be used by viewer roles.
+
+**Mapped Operations:**
+
+-  ``cloudify.interfaces.lifecycle.create`` validates and records
+   information about the cluster on the Cloudify Manager server in
+   /opt/manager/resources/pgaas/``writerfqdn``.
+-  ``cloudify.interfaces.lifecycle.delete`` deletes previously recorded
+   information from the Cloudify Manager server.
+
+Note: When ``use_existing`` is ``true``, the create operation validates
+but does not record, and delete does nothing. Delete also does nothing
+when validation has failed.
+
+**Attributes:** This type has no runtime attributes
+
+dcae.nodes.pgaas.database
+-------------------------
+
+**Derived From:** cloudify.nodes.Root
+
+**Properties:** \* ``name`` (required string) The name of the
+application database, in postgres. This name is also used to create the
+names of the roles used to access the database, and the schema made
+available to users of the database. \* ``use_existing`` (optional
+boolean default=false) This is used to reference an application
+database, in one blueprint, that was deployed in a different one. If
+true, and this node has a
+dcae.relationships.database\_runson\_pgaas\_cluster relationship, the
+dcae.nodes.pgaas.cluster node that is the target of that relationship
+must also have it's ``use_existing`` property set to true. \*
+``writerfqdn`` (optional string) This can be used as an alternative to
+specifying the cluster, for the application database, with a
+dcae.relationships.database\_runson\_pgaas\_cluster relationship to a
+dcae.nodes.pgaas.cluster node. Exactly one of the two options must be
+used. The relationship method must be used if this blueprint is
+deploying both the cluster and the application database on the cluster.
+
+**Mapped Operations:**
+
+-  ``cloudify.interfaces.lifecycle.create`` creates the application
+   database, and various roles for admin/user/viewer access to it.
+-  ``cloudify.interfaces.lifecycle.delete`` deletes the application
+   database and roles
+
+Note: When ``use_existing`` is true, create and delete do not create or
+delete the application database or associated roles. Create still sets
+runtime attributes (see below).
+
+**Attributes:**
+
+-  ``admin`` a dict containing access information for adminstrative
+   access to the application database.
+-  ``user`` a dict containing access information for user access to the
+   application database.
+-  ``viewer`` a dict containing access information for read-only access
+   to the application database.
+
+The keys in the access information dicts are as follows:
+
+-  ``database`` the name of the application database.
+-  ``host`` the appropriate FQDN for accessing the application database,
+   (writerfqdn or readerfqdn, based on the type of access).
+-  ``user`` the user role for accessing the database.
+-  ``password`` the password corresponding to the user role.
+
+Relationships
+=============
+
+dcae.relationships.pgaas\_cluster\_uses\_sshkeypair
+---------------------------------------------------
+
+**Description:** A relationship for binding a dcae.nodes.pgaas.cluster
+node to the dcae.nodes.ssh.keypair used by the cluster to initialize the
+database access password for the postgres role. The password for the
+postgres role is expected to be the hex representation of the MD5 hash
+of 'postgres' and the contents of the id\_rsa (private key) file for the
+ssh keypair. A dcae.nodes.pgaas.cluster node must have such a
+relationship if and only if it's use\_existing property is false. ##
+dcae.relationships.dcae.relationships.database\_runson\_pgaas\_cluster
+**Description:** A relationship for binding a dcae.nodes.pgaas.database
+node to the dcae.nodes.pgaas.cluster node that contains the application
+database. A dcae.nodes.pgaas.database node must have either such a
+relationship or a writerfqdn property. The writerfqdn property cannot be
+used if the cluster is created in the same blueprint as the application
+database. ## dcae.relationships.application\_uses\_pgaas\_database
+**Description:** A relationship for binding a node that needs
+application database access information to the dcae.nodes.pgaas.database
+node for that application database.