Merge lp:~andreserl/maas/lp1604169 into lp:~maas-committers/maas/trunk

Proposed by Andres Rodriguez
Status: Merged
Approved by: Andres Rodriguez
Approved revision: no longer in the source branch.
Merged at revision: 5189
Proposed branch: lp:~andreserl/maas/lp1604169
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 78 lines (+33/-10)
2 files modified
src/maascli/cli.py (+7/-1)
src/maascli/tests/test_cli.py (+26/-9)
To merge this branch: bzr merge lp:~andreserl/maas/lp1604169
Reviewer Review Type Date Requested Status
Gavin Panella (community) Approve
Review via email: mp+300552@code.launchpad.net

Commit message

Ensure maasserver is available before allowing maas cli to run with extra commands, otherwise don't show maasserver related commands

To post a comment you must log in.
Revision history for this message
Gavin Panella (allenap) wrote :

Looks good. One suggestion to tidy it up a bit, but only a suggestion.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/maascli/cli.py'
--- src/maascli/cli.py 2016-06-13 15:48:16 +0000
+++ src/maascli/cli.py 2016-07-20 12:43:06 +0000
@@ -9,6 +9,7 @@
99
10from functools import partial10from functools import partial
11import os11import os
12import pkgutil
12import sys13import sys
13from textwrap import fill14from textwrap import fill
1415
@@ -187,7 +188,7 @@
187188
188 # Setup and the allowed django commands into the maascli.189 # Setup and the allowed django commands into the maascli.
189 management = get_django_management()190 management = get_django_management()
190 if management is not None:191 if management is not None and is_maasserver_available():
191 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "maas.settings")192 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "maas.settings")
192 sys.path.append('/usr/share/maas')193 sys.path.append('/usr/share/maas')
193 load_regiond_commands(management, parser)194 load_regiond_commands(management, parser)
@@ -204,6 +205,11 @@
204 return management205 return management
205206
206207
208def is_maasserver_available():
209 """Ensure that 'maasserver' module is available."""
210 return pkgutil.find_loader("maasserver") is not None
211
212
207def run_regiond_command(management, parser):213def run_regiond_command(management, parser):
208 """Called to run the regiond command.214 """Called to run the regiond command.
209215
210216
=== modified file 'src/maascli/tests/test_cli.py'
--- src/maascli/tests/test_cli.py 2016-07-13 11:22:20 +0000
+++ src/maascli/tests/test_cli.py 2016-07-20 12:43:06 +0000
@@ -43,15 +43,32 @@
43 cli.cmd_login)43 cli.cmd_login)
4444
45 def test_doesnt_call_load_regiond_commands_if_no_management(self):45 def test_doesnt_call_load_regiond_commands_if_no_management(self):
46 self.patch(cli, "get_django_management").return_value = None46 self.patch(
47 mock_load_regiond_commands = self.patch(cli, "load_regiond_commands")47 cli, "get_django_management").return_value = None
48 parser = ArgumentParser()48 self.patch(
49 cli.register_cli_commands(parser)49 cli,
50 self.assertThat(mock_load_regiond_commands, MockNotCalled())50 "is_maasserver_available").return_value = sentinel.pkg_util
5151 mock_load_regiond_commands = self.patch(cli, "load_regiond_commands")
52 def test_calls_load_regiond_commands_when_management(self):52 parser = ArgumentParser()
53 self.patch(53 cli.register_cli_commands(parser)
54 cli, "get_django_management").return_value = sentinel.management54 self.assertThat(mock_load_regiond_commands, MockNotCalled())
55
56 def test_doesnt_call_load_regiond_commands_if_no_maasserver(self):
57 self.patch(
58 cli, "get_django_management").return_value = sentinel.management
59 self.patch(
60 cli, "is_maasserver_available").return_value = None
61 mock_load_regiond_commands = self.patch(cli, "load_regiond_commands")
62 parser = ArgumentParser()
63 cli.register_cli_commands(parser)
64 self.assertThat(mock_load_regiond_commands, MockNotCalled())
65
66 def test_calls_load_regiond_commands_when_management_and_maasserver(self):
67 self.patch(
68 cli, "get_django_management").return_value = sentinel.management
69 self.patch(
70 cli,
71 "is_maasserver_available").return_value = sentinel.pkg_util
55 mock_load_regiond_commands = self.patch(cli, "load_regiond_commands")72 mock_load_regiond_commands = self.patch(cli, "load_regiond_commands")
56 parser = ArgumentParser()73 parser = ArgumentParser()
57 cli.register_cli_commands(parser)74 cli.register_cli_commands(parser)