Allow for controllers to be loaded dynamically.

Change-Id: If85de4c02406e8ffd49da3c04c23db58ad2df119
This commit is contained in:
Kiall Mac Innes 2013-04-12 13:11:46 +01:00
parent 63c3a1a785
commit 84d326920f
4 changed files with 17 additions and 10 deletions

@ -27,7 +27,7 @@ class MonikerShell(App):
super(MonikerShell, self).__init__( super(MonikerShell, self).__init__(
description='Moniker Client', description='Moniker Client',
version=version.version_string(), version=version.version_string(),
command_manager=CommandManager('moniker.cli'), command_manager=CommandManager('monikerclient.cli'),
) )
self.log = logging.getLogger(__name__) self.log = logging.getLogger(__name__)

@ -14,12 +14,9 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import requests import requests
from stevedore import extension
from monikerclient import exceptions from monikerclient import exceptions
from monikerclient.auth import KeystoneAuth from monikerclient.auth import KeystoneAuth
from monikerclient.v1 import diagnostics
from monikerclient.v1 import domains
from monikerclient.v1 import records
from monikerclient.v1 import servers
class Client(object): class Client(object):
@ -56,10 +53,13 @@ class Client(object):
self.requests.auth = auth self.requests.auth = auth
self.requests.headers.update(headers) self.requests.headers.update(headers)
self.diagnostics = diagnostics.DiagnosticsController(client=self) def _load_controller(ext):
self.domains = domains.DomainsController(client=self) controller = ext.plugin(client=self)
self.records = records.RecordsController(client=self) setattr(self, ext.name, controller)
self.servers = servers.ServersController(client=self)
# Load all controllers
mgr = extension.ExtensionManager('monikerclient.v1.controllers')
mgr.map(_load_controller)
def wrap_api_call(self, func, *args, **kw): def wrap_api_call(self, func, *args, **kw):
""" """

@ -47,7 +47,13 @@ setup(
], ],
cmdclass=common_setup.get_cmdclass(), cmdclass=common_setup.get_cmdclass(),
entry_points=textwrap.dedent(""" entry_points=textwrap.dedent("""
[moniker.cli] [monikerclient.v1.controllers]
diagnostics = monikerclient.v1.diagnostics:DiagnosticsController
domains = monikerclient.v1.domains:DomainsController
records = monikerclient.v1.records:RecordsController
servers = monikerclient.v1.servers:ServersController
[monikerclient.cli]
domain-list = monikerclient.cli.domains:ListDomainsCommand domain-list = monikerclient.cli.domains:ListDomainsCommand
domain-get = monikerclient.cli.domains:GetDomainCommand domain-get = monikerclient.cli.domains:GetDomainCommand
domain-create = monikerclient.cli.domains:CreateDomainCommand domain-create = monikerclient.cli.domains:CreateDomainCommand

@ -1,5 +1,6 @@
cliff>=1.2.1 cliff>=1.2.1
jsonschema>=0.8,<1 jsonschema>=0.8,<1
stevedore
requests>=0.8.3,<1.0 requests>=0.8.3,<1.0
python-keystoneclient>=0.2.0 python-keystoneclient>=0.2.0
keyring keyring