Merge lp:~freyes/charms/trusty/nova-cloud-controller/bug-989337 into lp:~openstack-charmers-archive/charms/trusty/nova-cloud-controller/next

Proposed by Felipe Reyes
Status: Superseded
Proposed branch: lp:~freyes/charms/trusty/nova-cloud-controller/bug-989337
Merge into: lp:~openstack-charmers-archive/charms/trusty/nova-cloud-controller/next
Diff against target: 249 lines (+126/-2)
10 files modified
hooks/nova_cc_context.py (+21/-1)
hooks/nova_cc_hooks.py (+9/-0)
hooks/nova_cc_utils.py (+3/-1)
metadata.yaml (+2/-0)
templates/folsom/nova.conf (+5/-0)
templates/grizzly/nova.conf (+5/-0)
templates/havana/nova.conf (+4/-0)
templates/icehouse/nova.conf (+4/-0)
unit_tests/test_nova_cc_contexts.py (+72/-0)
unit_tests/test_nova_cc_hooks.py (+1/-0)
To merge this branch: bzr merge lp:~freyes/charms/trusty/nova-cloud-controller/bug-989337
Reviewer Review Type Date Requested Status
Felipe Reyes Abstain
Edward Hope-Morley Needs Fixing
OpenStack Charmers Pending
Review via email: mp+241318@code.launchpad.net

This proposal supersedes a proposal from 2014-10-26.

This proposal has been superseded by a proposal from 2014-11-20.

Description of the change

This branch extends the charm to install python-memcache, and configure nova.conf adding the key memcached_servers when a relationship with memcached service is established.

If multiple units of memcached are available, all of them are used (memcached_servers = host1:port1,host2:port,host3:port3)

To post a comment you must log in.
Revision history for this message
Ryan Beisner (1chb1n) wrote : Posted in a previous version of this proposal

UOSCI bot says:
charm_lint_check #771 nova-cloud-controller-next for freyes mp239671
    LINT OK: believed to pass, but you should confirm results

LINT Results (max last 4 lines) from
/var/lib/jenkins/workspace/charm_lint_check/make-lint.771:
I: config.yaml: option haproxy-client-timeout has no default value
I: config.yaml: option ssl_cert has no default value
I: config.yaml: option nvp-l3-uuid has no default value
I: config.yaml: option os-internal-network has no default value

Full lint output: http://paste.ubuntu.com/8694351/
Build: http://10.98.191.181:8080/job/charm_lint_check/771/

Revision history for this message
Ryan Beisner (1chb1n) wrote : Posted in a previous version of this proposal

UOSCI bot says:
charm_unit_test #579 nova-cloud-controller-next for freyes mp239671
    UNIT FAIL: unit-test failed

UNIT Results (max last 4 lines) from
/var/lib/jenkins/workspace/charm_unit_test/unit-test.579:
Ran 4 tests in 0.150s

FAILED (errors=2)
make: *** [unit_test] Error 1

Full unit output: http://paste.ubuntu.com/8694352/
Build: http://10.98.191.181:8080/job/charm_unit_test/579/

Revision history for this message
Ryan Beisner (1chb1n) wrote : Posted in a previous version of this proposal

UOSCI bot says:
charm_amulet_test #304 nova-cloud-controller-next for freyes mp239671
    AMULET OK: believed to pass, but you should confirm results

AMULET Results (max last 4 lines) from
/var/lib/jenkins/workspace/charm_amulet_test/make-test.304:
juju-test.conductor DEBUG : Tearing down osci-sv05 juju environment
juju-test.conductor DEBUG : Calling "juju destroy-environment -y osci-sv05"
WARNING cannot delete security group "juju-osci-sv05-0". Used by another environment?
juju-test INFO : Results: 3 passed, 0 failed, 0 errored

Full amulet output: http://paste.ubuntu.com/8694683/
Build: http://10.98.191.181:8080/job/charm_amulet_test/304/

Revision history for this message
Ryan Beisner (1chb1n) wrote : Posted in a previous version of this proposal

UOSCI bot says:
charm_unit_test #582 nova-cloud-controller-next for freyes mp239671
    UNIT FAIL: unit-test failed

UNIT Results (max last 4 lines) from
/var/lib/jenkins/workspace/charm_unit_test/unit-test.582:
Ran 4 tests in 0.153s

FAILED (errors=2)
make: *** [unit_test] Error 1

Full unit output: http://paste.ubuntu.com/8705925/
Build: http://10.98.191.181:8080/job/charm_unit_test/582/

Revision history for this message
Ryan Beisner (1chb1n) wrote : Posted in a previous version of this proposal

UOSCI bot says:
charm_lint_check #774 nova-cloud-controller-next for freyes mp239671
    LINT OK: believed to pass, but you should confirm results

LINT Results (max last 4 lines) from
/var/lib/jenkins/workspace/charm_lint_check/make-lint.774:
I: config.yaml: option haproxy-client-timeout has no default value
I: config.yaml: option ssl_cert has no default value
I: config.yaml: option nvp-l3-uuid has no default value
I: config.yaml: option os-internal-network has no default value

Full lint output: http://paste.ubuntu.com/8705924/
Build: http://10.98.191.181:8080/job/charm_lint_check/774/

Revision history for this message
Ryan Beisner (1chb1n) wrote : Posted in a previous version of this proposal

UOSCI bot says:
charm_amulet_test #307 nova-cloud-controller-next for freyes mp239671
    AMULET FAIL: amulet-test failed

AMULET Results (max last 4 lines) from
/var/lib/jenkins/workspace/charm_amulet_test/make-test.307:
    return self.read(buflen)
  File "/usr/lib/python2.7/ssl.py", line 260, in read
    return self._sslobj.read(len)
socket.error: [Errno 110] Connection timed out

Full amulet output: http://paste.ubuntu.com/8706467/
Build: http://10.98.191.181:8080/job/charm_amulet_test/307/

Revision history for this message
Edward Hope-Morley (hopem) wrote : Posted in a previous version of this proposal

I'm getting a couple of unit test failures here. Looks like a couple of extra mocks needed - see attached u/t output.

review: Needs Fixing
Revision history for this message
Edward Hope-Morley (hopem) wrote : Posted in a previous version of this proposal
Download full text (3.7 KiB)

Hmm can't attach so pasting:

$ make unit_test
Starting unit tests...
nose.plugins.cover: ERROR: Coverage not available: unable to import coverage module
test_instance_console_context_with_memcache (unit_tests.test_nova_cc_contexts.NovaComputeContextTests) ... ok
test_instance_console_context_without_memcache (unit_tests.test_nova_cc_contexts.NovaComputeContextTests) ... ok
Failure: OSError ([Errno 2] No such file or directory) ... ERROR
Failure: OSError ([Errno 2] No such file or directory) ... ERROR

======================================================================
ERROR: Failure: OSError ([Errno 2] No such file or directory)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 411, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/gizmo/Documents/reviews/nova-cloud-controller/bug-989337/unit_tests/test_nova_cc_hooks.py", line 6, in <module>
    import nova_cc_utils as utils
  File "hooks/nova_cc_utils.py", line 142, in <module>
    nova_cc_context.NeutronPostgresqlDBContext(),
  File "hooks/nova_cc_context.py", line 268, in __init__
    self).__init__(config('neutron-database'))
  File "hooks/charmhelpers/core/hookenv.py", line 44, in wrapper
    res = func(*args, **kwargs)
  File "hooks/charmhelpers/core/hookenv.py", line 281, in config
    config_data = json.loads(subprocess.check_output(config_cmd_line))
  File "/usr/lib/python2.7/subprocess.py", line 566, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

======================================================================
ERROR: Failure: OSError ([Errno 2] No such file or directory)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 411, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/gizmo/Documents/reviews/nova-cloud-controller/bug-989337/unit_tests/test_nova_cc_utils.py", line 11, in <module>
    import nova_cc_utils as utils
  File "hooks/nova_cc_utils.py", line 142, in <module>
    nova_cc_context.NeutronPostgresqlDBContext(),
  File "hooks/nova_cc_context.py", line 268, in __init__
    self).__init__(config('neutron-database'))
  File "hooks/charmhelpers/core/hookenv.py", line 44, in wrapper
    res = func(*args, **kwa...

Read more...

Revision history for this message
Edward Hope-Morley (hopem) wrote : Posted in a previous version of this proposal

FWIW, other than the above this lgtm

Revision history for this message
Felipe Reyes (freyes) wrote : Posted in a previous version of this proposal

Edward, I fixed the broken tests, the patch was a little bit larger than what I expected, but they are working OK now.

Name Stmts Miss Cover Missing
-----------------------------------------------------
hooks/nova_cc_context 166 112 33% 21-28, 39-41, 48-59, 65-79, 86-104, 116-169, 180-195, 203-204, 208, 212-214, 219, 222-236, 242-256, 273-276, 281-283, 297-299
hooks/nova_cc_hooks 447 146 67% 132-135, 148-149, 173, 184-185, 189, 224, 229-234, 245, 325-328, 336-339, 345-348, 358-374, 383-385, 395-409, 413-422, 508, 518, 522-523, 576, 582-592, 597-608, 618-628, 633-672, 682-697, 705-709, 734-743, 767, 772-780, 806, 861, 865-868
hooks/nova_cc_utils 442 111 75% 296-301, 312-315, 325-326, 382, 384, 428-430, 434, 448-456, 463-468, 472-486, 592-594, 599-602, 607, 611, 635-636, 650-652, 673-674, 680-703, 707-713, 717-723, 729, 735, 742, 753-757, 842, 902-908, 912-914, 918-921, 925-937
-----------------------------------------------------
TOTAL 1055 369 65%
----------------------------------------------------------------------
Ran 99 tests in 7.518s

Revision history for this message
Ryan Beisner (1chb1n) wrote : Posted in a previous version of this proposal

UOSCI bot says:
charm_lint_check #922 nova-cloud-controller-next for freyes mp239671
    LINT OK: passed

LINT Results (max last 5 lines):
  I: config.yaml: option os-admin-network has no default value
  I: config.yaml: option haproxy-client-timeout has no default value
  I: config.yaml: option ssl_cert has no default value
  I: config.yaml: option nvp-l3-uuid has no default value
  I: config.yaml: option os-internal-network has no default value

Full lint test output: http://paste.ubuntu.com/8822840/
Build: http://10.98.191.181:8080/job/charm_lint_check/922/

Revision history for this message
Ryan Beisner (1chb1n) wrote : Posted in a previous version of this proposal

UOSCI bot says:
charm_unit_test #757 nova-cloud-controller-next for freyes mp239671
    UNIT OK: passed

UNIT Results (max last 5 lines):
  hooks/nova_cc_hooks 447 146 67% 132-135, 148-149, 173, 184-185, 189, 224, 229-234, 245, 325-328, 336-339, 345-348, 358-374, 383-385, 395-409, 413-422, 508, 518, 522-523, 576, 582-592, 597-608, 618-628, 633-672, 682-697, 705-709, 734-743, 767, 772-780, 806, 861, 865-868
  hooks/nova_cc_utils 442 111 75% 296-301, 312-315, 325-326, 382, 384, 428-430, 434, 448-456, 463-468, 472-486, 592-594, 599-602, 607, 611, 635-636, 650-652, 673-674, 680-703, 707-713, 717-723, 729, 735, 742, 753-757, 842, 902-908, 912-914, 918-921, 925-937
  TOTAL 1055 369 65%
  Ran 99 tests in 8.707s
  OK

Full unit test output: http://paste.ubuntu.com/8822843/
Build: http://10.98.191.181:8080/job/charm_unit_test/757/

Revision history for this message
Ryan Beisner (1chb1n) wrote : Posted in a previous version of this proposal

UOSCI bot says:
charm_amulet_test #340 nova-cloud-controller-next for freyes mp239671
    AMULET OK: passed

AMULET Results (max last 5 lines):
  juju-test.conductor.15-basic-trusty-icehouse RESULT :
  juju-test.conductor DEBUG : Tearing down osci-sv07 juju environment
  juju-test.conductor DEBUG : Calling "juju destroy-environment -y osci-sv07"
  WARNING cannot delete security group "juju-osci-sv07-0". Used by another environment?
  juju-test INFO : Results: 3 passed, 0 failed, 0 errored

Full amulet test output: http://paste.ubuntu.com/8823194/
Build: http://10.98.191.181:8080/job/charm_amulet_test/340/

Revision history for this message
Ryan Beisner (1chb1n) wrote :

UOSCI bot says:
charm_lint_check #979 nova-cloud-controller-next for freyes mp241318
    LINT OK: passed

LINT Results (max last 5 lines):
  I: config.yaml: option os-admin-network has no default value
  I: config.yaml: option haproxy-client-timeout has no default value
  I: config.yaml: option ssl_cert has no default value
  I: config.yaml: option nvp-l3-uuid has no default value
  I: config.yaml: option os-internal-network has no default value

Full lint test output: http://paste.ubuntu.com/8925102/
Build: http://10.98.191.181:8080/job/charm_lint_check/979/

Revision history for this message
Ryan Beisner (1chb1n) wrote :

UOSCI bot says:
charm_unit_test #814 nova-cloud-controller-next for freyes mp241318
    UNIT OK: passed

UNIT Results (max last 5 lines):
  hooks/nova_cc_hooks 447 146 67% 132-135, 148-149, 173, 184-185, 189, 224, 229-234, 245, 325-328, 336-339, 345-348, 358-374, 383-385, 395-409, 413-422, 508, 518, 522-523, 576, 582-592, 597-608, 618-628, 633-672, 682-697, 705-709, 734-743, 767, 772-780, 806, 861, 865-868
  hooks/nova_cc_utils 442 111 75% 296-301, 312-315, 325-326, 382, 384, 428-430, 434, 448-456, 463-468, 472-486, 592-594, 599-602, 607, 611, 635-636, 650-652, 673-674, 680-703, 707-713, 717-723, 729, 735, 742, 753-757, 842, 902-908, 912-914, 918-921, 925-937
  TOTAL 1055 369 65%
  Ran 99 tests in 8.712s
  OK

Full unit test output: http://paste.ubuntu.com/8925116/
Build: http://10.98.191.181:8080/job/charm_unit_test/814/

Revision history for this message
Ryan Beisner (1chb1n) wrote :

UOSCI bot says:
charm_amulet_test #359 nova-cloud-controller-next for freyes mp241318
    AMULET OK: passed

AMULET Results (max last 5 lines):
  juju-test.conductor.15-basic-trusty-icehouse RESULT :
  juju-test.conductor DEBUG : Tearing down osci-sv07 juju environment
  juju-test.conductor DEBUG : Calling "juju destroy-environment -y osci-sv07"
  WARNING cannot delete security group "juju-osci-sv07-0". Used by another environment?
  juju-test INFO : Results: 3 passed, 0 failed, 0 errored

Full amulet test output: http://paste.ubuntu.com/8925544/
Build: http://10.98.191.181:8080/job/charm_amulet_test/359/

Revision history for this message
Edward Hope-Morley (hopem) wrote :

Felipe, thanks for working on this it is much needed.

So some initial comments;

  * could you please rename the cache-relation-* to memcache-relation-*
  * is there are reason for replacing config() with hookenv.config()? I know it is not the nicest coding style but it is the same across all charms so to do it differently here would be breaking convention.
  * some more comments inline

review: Needs Fixing
Revision history for this message
Felipe Reyes (freyes) wrote :

Hi,

> * could you please rename the cache-relation-* to memcache-relation-*
I initially used memcache-relation-* hooks, but they weren't triggered, a quick look to mediawiki charm also uses cache-relation-* for memcache, I'll give it another try to double check this.

> * is there are reason for replacing config() with hookenv.config()? I know
> it is not the nicest coding style but it is the same across all charms so to
> do it differently here would be breaking convention.
I know, but importing config() function made fail the mocking due to the way the modules are imported, if this is a blocker I totally understand and I can revisit this to find a way to make the tests happy.

Best,

125. By Felipe Reyes

Revert "Changed the way charmhelpers.core.hookenv.config is imported"

126. By Felipe Reyes

Patch nova_cc_utils config() before it's imported by nova_cc_context

127. By Felipe Reyes

Format message, set proper level and include exception

Revision history for this message
uosci-testing-bot (uosci-testing-bot) wrote :

UOSCI bot says:
charm_lint_check #1151 nova-cloud-controller-next for freyes mp241318
    LINT OK: passed

LINT Results (max last 5 lines):
  I: config.yaml: option os-admin-network has no default value
  I: config.yaml: option haproxy-client-timeout has no default value
  I: config.yaml: option ssl_cert has no default value
  I: config.yaml: option nvp-l3-uuid has no default value
  I: config.yaml: option os-internal-network has no default value

Full lint test output: http://paste.ubuntu.com/9125387/
Build: http://10.98.191.181:8080/job/charm_lint_check/1151/

Revision history for this message
uosci-testing-bot (uosci-testing-bot) wrote :

UOSCI bot says:
charm_unit_test #985 nova-cloud-controller-next for freyes mp241318
    UNIT OK: passed

UNIT Results (max last 5 lines):
  hooks/nova_cc_hooks 447 146 67% 132-135, 148-149, 173, 184-185, 189, 224, 229-234, 245, 325-328, 336-339, 345-348, 358-374, 383-385, 395-409, 413-422, 508, 518, 522-523, 576, 582-592, 597-608, 618-628, 633-672, 682-697, 705-709, 734-743, 767, 772-780, 806, 861, 865-868
  hooks/nova_cc_utils 442 111 75% 296-301, 312-315, 325-326, 382, 384, 428-430, 434, 448-456, 463-468, 472-486, 592-594, 599-602, 607, 611, 635-636, 650-652, 673-674, 680-703, 707-713, 717-723, 729, 735, 742, 753-757, 842, 902-908, 912-914, 918-921, 925-937
  TOTAL 1054 369 65%
  Ran 99 tests in 9.596s
  OK

Full unit test output: http://paste.ubuntu.com/9125402/
Build: http://10.98.191.181:8080/job/charm_unit_test/985/

Revision history for this message
uosci-testing-bot (uosci-testing-bot) wrote :

UOSCI bot says:
charm_amulet_test #493 nova-cloud-controller-next for freyes mp241318
    AMULET FAIL: amulet-test failed

AMULET Results (max last 5 lines):
"
  WARNING cannot delete security group "juju-osci-sv07-0". Used by another environment?
  juju-test INFO : Results: 2 passed, 0 failed, 1 errored
  ERROR subprocess encountered error code 124
  make: *** [test] Error 124

Full amulet test output: http://paste.ubuntu.com/9125932/
Build: http://10.98.191.181:8080/job/charm_amulet_test/493/

128. By Felipe Reyes

Renamed relation from 'cache' to 'memcache'

129. By Felipe Reyes

Commit after merge

130. By Felipe Reyes

Commit after pulling changes from upstream

Revision history for this message
Felipe Reyes (freyes) wrote :

> juju-test.conductor.15-basic-trusty-icehouse RESULT : ✔
> juju-test.conductor DEBUG : Tearing down osci-sv07 juju environment
> juju-test.conductor DEBUG : Calling "juju destroy-environment -y osci-sv07ERROR:root:Make target returned non-zero.
> "
> WARNING cannot delete security group "juju-osci-sv07-0". Used by another environment?
> juju-test INFO : Results: 2 passed, 0 failed, 1 errored
> ERROR subprocess encountered error code 124

Should I do something with this error?

review: Needs Resubmitting
Revision history for this message
Felipe Reyes (freyes) :
review: Abstain
131. By Felipe Reyes

Added IPv6 support

Added test to check that IPv6 addresses are properly formatted.

132. By Felipe Reyes

Commit after merge

133. By Felipe Reyes

Replace "Couldn't get caching servers" with "Couldn't get memcache servers"

134. By Felipe Reyes

Refactor the way memcached_servers config is put in the templates

Instead of formatting the string with Jinja2, it's formatted with python
and passed to the template as a string.

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added symlink 'hooks/memcache-relation-broken'
=== target is u'nova_cc_hooks.py'
=== added symlink 'hooks/memcache-relation-changed'
=== target is u'nova_cc_hooks.py'
=== added symlink 'hooks/memcache-relation-departed'
=== target is u'nova_cc_hooks.py'
=== added symlink 'hooks/memcache-relation-joined'
=== target is u'nova_cc_hooks.py'
=== modified file 'hooks/nova_cc_context.py'
--- hooks/nova_cc_context.py 2014-10-13 16:18:58 +0000
+++ hooks/nova_cc_context.py 2014-11-20 16:59:41 +0000
@@ -1,6 +1,6 @@
1from charmhelpers.core.hookenv import (1from charmhelpers.core.hookenv import (
2 config, relation_ids, relation_set, log, ERROR,2 config, relation_ids, relation_set, log, ERROR,
3 unit_get, related_units, relation_get)3 unit_get, related_units, relation_get, relations_for_id)
44
5from charmhelpers.fetch import apt_install, filter_installed_packages5from charmhelpers.fetch import apt_install, filter_installed_packages
6from charmhelpers.contrib.openstack import context, neutron, utils6from charmhelpers.contrib.openstack import context, neutron, utils
@@ -281,3 +281,23 @@
281 ctxt = super(NovaIPv6Context, self).__call__()281 ctxt = super(NovaIPv6Context, self).__call__()
282 ctxt['use_ipv6'] = config('prefer-ipv6')282 ctxt['use_ipv6'] = config('prefer-ipv6')
283 return ctxt283 return ctxt
284
285
286class InstanceConsoleContext(context.OSContextGenerator):
287 interfaces = []
288
289 def __call__(self):
290 ctxt = {}
291 servers = []
292 try:
293 for rid in relation_ids('memcache'):
294 for rel in relations_for_id(rid):
295 servers.append({'private-address': rel['private-address'],
296 'port': rel['port']})
297 except Exception as ex:
298 log("Couldn't get caching servers: {}".format(str(ex)),
299 level='WARNING')
300 servers = []
301
302 ctxt['memcached_servers'] = servers
303 return ctxt
284304
=== modified file 'hooks/nova_cc_hooks.py'
--- hooks/nova_cc_hooks.py 2014-10-23 07:32:45 +0000
+++ hooks/nova_cc_hooks.py 2014-11-20 16:59:41 +0000
@@ -849,6 +849,15 @@
849 quantum_joined(rid=rid)849 quantum_joined(rid=rid)
850850
851851
852@hooks.hook('memcache-relation-joined',
853 'memcache-relation-departed',
854 'memcache-relation-changed',
855 'memcache-relation-broken')
856@restart_on_change(restart_map())
857def memcached_joined():
858 CONFIGS.write(NOVA_CONF)
859
860
852def main():861def main():
853 try:862 try:
854 hooks.execute(sys.argv)863 hooks.execute(sys.argv)
855864
=== modified file 'hooks/nova_cc_utils.py'
--- hooks/nova_cc_utils.py 2014-11-14 09:55:10 +0000
+++ hooks/nova_cc_utils.py 2014-11-20 16:59:41 +0000
@@ -68,6 +68,7 @@
68 'python-psycopg2',68 'python-psycopg2',
69 'python-psutil',69 'python-psutil',
70 'uuid',70 'uuid',
71 'python-memcache',
71]72]
7273
73BASE_SERVICES = [74BASE_SERVICES = [
@@ -123,7 +124,8 @@
123 nova_cc_context.VolumeServiceContext(),124 nova_cc_context.VolumeServiceContext(),
124 nova_cc_context.NovaIPv6Context(),125 nova_cc_context.NovaIPv6Context(),
125 nova_cc_context.NeutronCCContext(),126 nova_cc_context.NeutronCCContext(),
126 nova_cc_context.NovaConfigContext()],127 nova_cc_context.NovaConfigContext(),
128 nova_cc_context.InstanceConsoleContext()],
127 }),129 }),
128 (NOVA_API_PASTE, {130 (NOVA_API_PASTE, {
129 'services': [s for s in BASE_SERVICES if 'api' in s],131 'services': [s for s in BASE_SERVICES if 'api' in s],
130132
=== modified file 'metadata.yaml'
--- metadata.yaml 2014-07-11 09:14:57 +0000
+++ metadata.yaml 2014-11-20 16:59:41 +0000
@@ -40,6 +40,8 @@
40 nova-vmware:40 nova-vmware:
41 interface: nova-vmware41 interface: nova-vmware
42 scope: container42 scope: container
43 memcache:
44 interface: memcache
43peers:45peers:
44 cluster:46 cluster:
45 interface: nova-ha47 interface: nova-ha
4648
=== modified file 'templates/folsom/nova.conf'
--- templates/folsom/nova.conf 2014-04-16 08:25:14 +0000
+++ templates/folsom/nova.conf 2014-11-20 16:59:41 +0000
@@ -21,6 +21,11 @@
21enabled_apis=ec2,osapi_compute,metadata21enabled_apis=ec2,osapi_compute,metadata
22auth_strategy=keystone22auth_strategy=keystone
23compute_driver=libvirt.LibvirtDriver23compute_driver=libvirt.LibvirtDriver
24
25{% if memcached_servers %}
26memcached_servers = {%for s in memcached_servers %}{% if loop.index0 != 0 %},{% endif %}{{s['private-address']}}:{{s['port']}}{% endfor %}
27{% endif %}
28
24{% if keystone_ec2_url -%}29{% if keystone_ec2_url -%}
25keystone_ec2_url = {{ keystone_ec2_url }}30keystone_ec2_url = {{ keystone_ec2_url }}
26{% endif -%}31{% endif -%}
2732
=== modified file 'templates/grizzly/nova.conf'
--- templates/grizzly/nova.conf 2014-03-31 11:56:09 +0000
+++ templates/grizzly/nova.conf 2014-11-20 16:59:41 +0000
@@ -20,6 +20,11 @@
20enabled_apis=ec2,osapi_compute,metadata20enabled_apis=ec2,osapi_compute,metadata
21auth_strategy=keystone21auth_strategy=keystone
22compute_driver=libvirt.LibvirtDriver22compute_driver=libvirt.LibvirtDriver
23
24{% if memcached_servers %}
25memcached_servers = {%for s in memcached_servers %}{% if loop.index0 != 0 %},{% endif %}{{s['private-address']}}:{{s['port']}}{% endfor %}
26{% endif %}
27
23{% if keystone_ec2_url -%}28{% if keystone_ec2_url -%}
24keystone_ec2_url = {{ keystone_ec2_url }}29keystone_ec2_url = {{ keystone_ec2_url }}
25{% endif -%}30{% endif -%}
2631
=== modified file 'templates/havana/nova.conf'
--- templates/havana/nova.conf 2014-08-08 09:31:32 +0000
+++ templates/havana/nova.conf 2014-11-20 16:59:41 +0000
@@ -26,6 +26,10 @@
26cpu_allocation_ratio = {{ cpu_allocation_ratio }}26cpu_allocation_ratio = {{ cpu_allocation_ratio }}
27use_syslog={{ use_syslog }}27use_syslog={{ use_syslog }}
2828
29{% if memcached_servers %}
30memcached_servers = {%for s in memcached_servers %}{% if loop.index0 != 0 %},{% endif %}{{s['private-address']}}:{{s['port']}}{% endfor %}
31{% endif %}
32
29{% if keystone_ec2_url -%}33{% if keystone_ec2_url -%}
30keystone_ec2_url = {{ keystone_ec2_url }}34keystone_ec2_url = {{ keystone_ec2_url }}
31{% endif -%}35{% endif -%}
3236
=== modified file 'templates/icehouse/nova.conf'
--- templates/icehouse/nova.conf 2014-10-07 11:37:20 +0000
+++ templates/icehouse/nova.conf 2014-11-20 16:59:41 +0000
@@ -38,6 +38,10 @@
3838
39use_syslog={{ use_syslog }}39use_syslog={{ use_syslog }}
4040
41{% if memcached_servers %}
42memcached_servers = {%for s in memcached_servers %}{% if loop.index0 != 0 %},{% endif %}{{s['private-address']}}:{{s['port']}}{% endfor %}
43{% endif %}
44
41{% if keystone_ec2_url -%}45{% if keystone_ec2_url -%}
42keystone_ec2_url = {{ keystone_ec2_url }}46keystone_ec2_url = {{ keystone_ec2_url }}
43{% endif -%}47{% endif -%}
4448
=== added file 'unit_tests/test_nova_cc_contexts.py'
--- unit_tests/test_nova_cc_contexts.py 1970-01-01 00:00:00 +0000
+++ unit_tests/test_nova_cc_contexts.py 2014-11-20 16:59:41 +0000
@@ -0,0 +1,72 @@
1from __future__ import print_function
2
3import mock
4
5#####
6# NOTE(freyes): this is a workaround to patch config() function imported by
7# nova_cc_utils before it gets a reference to the actual config() provided by
8# hookenv module.
9from charmhelpers.core import hookenv
10_conf = hookenv.config
11hookenv.config = mock.MagicMock()
12import nova_cc_utils as _utils
13# this assert is a double check + to avoid pep8 warning
14assert _utils.config == hookenv.config
15hookenv.config = _conf
16#####
17
18import nova_cc_context as context
19
20from charmhelpers.contrib.openstack import utils
21
22from test_utils import CharmTestCase
23
24
25TO_PATCH = [
26 'apt_install',
27 'filter_installed_packages',
28 'relation_ids',
29 'relation_get',
30 'related_units',
31 'config',
32 'log',
33 'unit_get',
34 'relations_for_id',
35]
36
37
38def fake_log(msg, level=None):
39 level = level or 'INFO'
40 print('[juju test log (%s)] %s' % (level, msg))
41
42
43class NovaComputeContextTests(CharmTestCase):
44 def setUp(self):
45 super(NovaComputeContextTests, self).setUp(context, TO_PATCH)
46 self.relation_get.side_effect = self.test_relation.get
47 self.config.side_effect = self.test_config.get
48 self.log.side_effect = fake_log
49
50 @mock.patch.object(utils, 'os_release')
51 def test_instance_console_context_without_memcache(self, os_release):
52 self.unit_get.return_value = '127.0.0.1'
53 self.relation_ids.return_value = 'cache:0'
54 self.related_units.return_value = 'memcached/0'
55 instance_console = context.InstanceConsoleContext()
56 os_release.return_value = 'icehouse'
57 self.assertEqual({'memcached_servers': []},
58 instance_console())
59
60 @mock.patch.object(utils, 'os_release')
61 def test_instance_console_context_with_memcache(self, os_release):
62 memcached_servers = [{'private-address': '127.0.1.1',
63 'port': '11211'}]
64 self.unit_get.return_value = '127.0.0.1'
65 self.relation_ids.return_value = ['cache:0']
66 self.relations_for_id.return_value = memcached_servers
67 self.related_units.return_value = 'memcached/0'
68 instance_console = context.InstanceConsoleContext()
69 os_release.return_value = 'icehouse'
70 self.maxDiff = None
71 self.assertEqual({'memcached_servers': memcached_servers},
72 instance_console())
073
=== modified file 'unit_tests/test_nova_cc_hooks.py'
--- unit_tests/test_nova_cc_hooks.py 2014-10-21 13:18:47 +0000
+++ unit_tests/test_nova_cc_hooks.py 2014-11-20 16:59:41 +0000
@@ -1,6 +1,7 @@
1from mock import MagicMock, patch, call1from mock import MagicMock, patch, call
2from test_utils import CharmTestCase, patch_open2from test_utils import CharmTestCase, patch_open
3import os3import os
4
4with patch('charmhelpers.core.hookenv.config') as config:5with patch('charmhelpers.core.hookenv.config') as config:
5 config.return_value = 'neutron'6 config.return_value = 'neutron'
6 import nova_cc_utils as utils7 import nova_cc_utils as utils

Subscribers

People subscribed via source and target branches