From 06f492983bd11ca3f6f0c450d54e75de7ecb664a Mon Sep 17 00:00:00 2001 From: James Page Date: Wed, 4 Nov 2015 12:20:42 +0000 Subject: [PATCH] Initial code drop --- copyright | 9 +++++++++ interface.yaml | 3 +++ requires.py | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 copyright create mode 100644 interface.yaml create mode 100644 requires.py diff --git a/copyright b/copyright new file mode 100644 index 0000000..afa853f --- /dev/null +++ b/copyright @@ -0,0 +1,9 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0 + +Files: * +Copyright: 2015, Canonical Ltd. +License: GPL-3 + +License: GPL-3 + On Debian GNU/Linux system you can find the complete text of the + GPL-3 license in '/usr/share/common-licenses/GPL-3' diff --git a/interface.yaml b/interface.yaml new file mode 100644 index 0000000..d758e22 --- /dev/null +++ b/interface.yaml @@ -0,0 +1,3 @@ +name: odl-controller-api +summary: Interface for intergrating with an OpenDayLight Controller RESTful API +maintainer: James Page diff --git a/requires.py b/requires.py new file mode 100644 index 0000000..e5bf348 --- /dev/null +++ b/requires.py @@ -0,0 +1,38 @@ +from charmhelpers.core.reactive import hook +from charmhelpers.core.reactive import RelationBase +from charmhelpers.core.reactive import scopes + + +class ControllerAPIRequires(RelationBase): + scope = scopes.GLOBAL + auto_accessors = ['private-address', 'host', 'port', + 'username', 'password'] + + @hook('{requires:odl-controller-api}-relation-{joined,changed,departed}') + def changed(self): + self.set_state('{relation_name}.connected') + if self.connection(): + self.set_state('{relation_name}.access.available') + else: + self.remove_state('{relation_name}.access.available') + + @hook('{requires:odl-controller-api}-relation-broken') + def broken(self): + self.remove_state('{relation_name}.connected') + self.remove_state('{relation_name}.access.available') + + def connection(self): + """OpenDayLight Controller Access Details + + Returns a dict of key value pairs for accessing the ODL controller API. + """ + data = { + 'host': self.host() or self.private_address(), + 'port': self.port() or '8181', + 'username': self.username(), + 'password': self.password(), + } + if all(data.values()): + return data + else: + return None