Metadata-Version: 2.0
Name: openbrokerapi
Version: 0.3.0
Summary: A python package for the V2 CF Service Broker API and Open Broker API (version 2.10+)
Home-page: https://github.com/eruvanos/openbrokerapi
Author: Maic Siemering
Author-email: eruvanos@ewetel.net
License: MIT
Keywords: cloudfoundry,cfbrokerapi,openbrokerapi,openservicebrokerapi,servicebroker,flask
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.6
Requires-Dist: flask

|Build Status| |Coverage Status|

Service Broker API
==================

A Python package for building Service Brokers supporting API version
2.10+.

Following `CF Service Broker
API <https://docs.cloudfoundry.org/services/api.html>`__ and `Open
Service Broker API <https://www.openservicebrokerapi.org/>`__

Installation
------------

This package is available for Python 3.6+.

.. code:: bash

    pip3 install openbrokerapi

Or install the development version from github:

.. code:: bash

    pip3 install git+https://github.com/eruvanos/openbrokerapi.git

Getting started
---------------

.. code:: python

    from flask import Flask
    from openbrokerapi import service_broker
    from openbrokerapi.api import *
    from openbrokerapi.log_util import *

    # Implement a service broker by overriding methods of ServiceBroker
    class CustomServiceBroker(service_broker.ServiceBroker):
        def catalog(self) -> List[Service]:
            pass

        def provision(self, instance_id: str, service_details: ProvisionDetails, async_allowed: bool) -> ProvisionedServiceSpec:
            pass

        def unbind(self, instance_id: str, binding_id: str, details: UnbindDetails):
            pass

        def update(self, instance_id: str, details: UpdateDetails, async_allowed: bool) -> UpdateServiceSpec:
            pass

        def bind(self, instance_id: str, binding_id: str, details: BindDetails) -> Binding:
            pass

        def deprovision(self, instance_id: str, details: DeprovisionDetails, async_allowed: bool) -> DeprovisionServiceSpec:
            pass

        def last_operation(self, instance_id: str, operation_data: str) -> LastOperation:
            pass

    # Simpely start the server
    serve(CustomServiceBroker(), BrokerCredentials("", ""))

    # or register blueprint to your own FlaskApp instance
    app = Flask(__name__)
    logger = basic_config() #  Use root logger with a basic configuration provided by openbrokerapi.log_utils
    openbroker_bp = get_blueprint(CustomServiceBroker(), BrokerCredentials("",""), logger)
    app.register_blueprint(openbroker_bp)
    app.run("0.0.0.0")

Error Types
-----------

Openbrokerapi defines a handful of error types in errors.py for some
common error cases that your service broker may encounter. Raise these
from your ServiceBroker methods where appropriate, and openbrokerapi
will do the "right thing" (™), and give Cloud Foundry an appropriate
status code, as per the Service Broker API specification.

Not Planned To Support
----------------------

-  Provisioning

   -  Response: 200 - If service already exists, a 409-Conflict will be
      returned

-  Bind

   -  Response: 200 - If binding already exists, a 409-Conflict will be
      returned

Bugs or Issues
--------------

Please report bugs, issues or feature requests to `Github
Issues <https://github.com/eruvanos/openbrokerapi/issues>`__

Release Notes
-------------

v0.3


-  use LastOperationResponse for last\_operation response
-  fix: catalog response was not convertible to json
-  fix: not required fields were still in catalog response
-  add missing tests for catalog endpoint
-  support for VolumeMounts is tested

v0.2


-  improve testing
-  fix: Bind and update getting dict instead of expected objects
-  support async for provision, update and deprovision
-  Handle unexpected exception with global error\_handler (responding
   with 500)
-  get\_blueprint() now expects a logger
-  add log\_utils with basic\_config()

v0.1


-  initial version
-  supported operations
-  provision
-  update
-  bind
-  unbind
-  deprovision

.. |Build Status| image:: https://travis-ci.org/eruvanos/openbrokerapi.svg?branch=master
   :target: https://travis-ci.org/eruvanos/openbrokerapi
.. |Coverage Status| image:: https://coveralls.io/repos/github/eruvanos/openbrokerapi/badge.svg?branch=master
   :target: https://coveralls.io/github/eruvanos/openbrokerapi?branch=master


