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__(
description='Moniker Client',
version=version.version_string(),
command_manager=CommandManager('moniker.cli'),
command_manager=CommandManager('monikerclient.cli'),
)
self.log = logging.getLogger(__name__)

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

@ -47,7 +47,13 @@ setup(
],
cmdclass=common_setup.get_cmdclass(),
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-get = monikerclient.cli.domains:GetDomainCommand
domain-create = monikerclient.cli.domains:CreateDomainCommand

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