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: 277 lines (+146/-3)
10 files modified
hooks/nova_cc_context.py (+26/-2)
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 (+87/-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
James Troup (community) Needs Information
Jorge Niedbalski Pending
Edward Hope-Morley Pending
Review via email: mp+242980@code.launchpad.net

This proposal supersedes a proposal from 2014-11-20.

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

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 : Posted in a previous version of this proposal

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 : Posted in a previous version of this proposal

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 : Posted in a previous version of this proposal

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 : Posted in a previous version of this proposal

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 : Posted in a previous version of this proposal

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,

Revision history for this message
uosci-testing-bot (uosci-testing-bot) wrote : Posted in a previous version of this proposal

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 : Posted in a previous version of this proposal

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 : Posted in a previous version of this proposal

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/

Revision history for this message
uosci-testing-bot (uosci-testing-bot) wrote : Posted in a previous version of this proposal

UOSCI bot says:
charm_lint_check #1159 nova-cloud-controller-next for freyes mp242384
    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/9127053/
Build: http://10.98.191.181:8080/job/charm_lint_check/1159/

Revision history for this message
uosci-testing-bot (uosci-testing-bot) wrote : Posted in a previous version of this proposal

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

UNIT Results (max last 5 lines):
  hooks/nova_cc_hooks 445 146 67% 132-135, 148-149, 173, 184-185, 189, 221, 226-231, 242, 322-325, 333-336, 342-345, 355-371, 380-382, 392-406, 410-419, 505, 515, 519-520, 573, 579-589, 594-605, 615-625, 630-669, 679-694, 702-706, 731-740, 764, 769-777, 803, 858, 862-865
  hooks/nova_cc_utils 445 112 75% 298-303, 314-317, 327-328, 384, 386, 432-434, 438, 452-460, 467-472, 476-490, 546, 595-597, 602-605, 610, 614, 638-639, 653-655, 676-677, 683-706, 710-716, 720-726, 732, 738, 745, 756-760, 845, 905-911, 915-917, 921-924, 928-940
  TOTAL 1055 370 65%
  Ran 98 tests in 10.450s
  OK

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

Revision history for this message
uosci-testing-bot (uosci-testing-bot) wrote : Posted in a previous version of this proposal

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

AMULET Results (max last 5 lines):
  subprocess.CalledProcessError: Command '['juju-deployer', '-W', '-L', '-c', '/tmp/amulet-juju-deployer-bskSEW.json', '-e', 'osci-sv05', '-t', '1000', 'osci-sv05']' returned non-zero exit status 1
  WARNING cannot delete security group "juju-osci-sv05-0". Used by another environment?
  juju-test INFO : Results: 0 passed, 2 failed, 1 errored
  ERROR subprocess encountered error code 2
  make: *** [test] Error 2

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

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

> 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) : Posted in a previous version of this proposal
review: Abstain
Revision history for this message
Felipe Reyes (freyes) wrote : Posted in a previous version of this proposal

By the way, this patch can be tested using the bundler file available at https://code.launchpad.net/~openstack-charm-testers/+junk/nova-memcached

Thanks,

Revision history for this message
James Troup (elmo) wrote :

memcache (by design) has no ACLs and is not safe to deploy without some sort of protection (e.g. local iptables rules or being run on a private network not accessible to anything but trusted machines). How is this MP dealing with that?

review: Needs Information
Revision history for this message
Edward Hope-Morley (hopem) wrote :
Revision history for this message
uosci-testing-bot (uosci-testing-bot) wrote :

UOSCI bot says:
charm_lint_check #1236 nova-cloud-controller-next for freyes mp242980
    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/9256250/
Build: http://10.98.191.181:8080/job/charm_lint_check/1236/

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

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

UNIT Results (max last 5 lines):
  hooks/nova_cc_hooks 445 146 67% 132-135, 148-149, 173, 184-185, 189, 221, 226-231, 242, 322-325, 333-336, 342-345, 355-371, 380-382, 392-406, 410-419, 505, 515, 519-520, 573, 579-589, 594-605, 615-625, 630-669, 679-694, 702-706, 731-740, 764, 769-777, 803, 858, 862-865
  hooks/nova_cc_utils 445 112 75% 298-303, 314-317, 327-328, 384, 386, 432-434, 438, 452-460, 467-472, 476-490, 546, 595-597, 602-605, 610, 614, 638-639, 653-655, 676-677, 683-706, 710-716, 720-726, 732, 738, 745, 756-760, 845, 905-911, 915-917, 921-924, 928-940
  TOTAL 1057 370 65%
  Ran 99 tests in 10.551s
  OK

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

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

We should already be leveraging split network support here e.g. have memcached running on the os-admin-network if defined. That should suffice.

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

See inline comment

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

UOSCI bot says:
charm_amulet_test #539 nova-cloud-controller-next for freyes mp242980
    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/9256538/
Build: http://10.98.191.181:8080/job/charm_amulet_test/539/

Revision history for this message
Jorge Niedbalski (niedbalski) wrote :

Will not be so easy to enable SASL support on the proposal, mostly since the memcache client requires to support it, and the default python-memcache module seems to not support it. We could use python-binary-memcached or pylibmc-sasl and that will require changes on openstack upstream and packages .. I think the best we could do now is make some iptables assertions based on the related ncc hosts ..

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

@elmo, I'm addressing your concerns about memcached security adding iptables rules to allow access only to related machines, I would like to get your feedback on that MP[0]

[0] https://code.launchpad.net/~freyes/charms/trusty/memcached/python-rewrite/+merge/243407

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
1=== added symlink 'hooks/memcache-relation-broken'
2=== target is u'nova_cc_hooks.py'
3=== added symlink 'hooks/memcache-relation-changed'
4=== target is u'nova_cc_hooks.py'
5=== added symlink 'hooks/memcache-relation-departed'
6=== target is u'nova_cc_hooks.py'
7=== added symlink 'hooks/memcache-relation-joined'
8=== target is u'nova_cc_hooks.py'
9=== modified file 'hooks/nova_cc_context.py'
10--- hooks/nova_cc_context.py 2014-10-13 16:18:58 +0000
11+++ hooks/nova_cc_context.py 2014-11-26 21:26:13 +0000
12@@ -1,6 +1,6 @@
13 from charmhelpers.core.hookenv import (
14 config, relation_ids, relation_set, log, ERROR,
15- unit_get, related_units, relation_get)
16+ unit_get, related_units, relation_get, relations_for_id)
17
18 from charmhelpers.fetch import apt_install, filter_installed_packages
19 from charmhelpers.contrib.openstack import context, neutron, utils
20@@ -13,7 +13,8 @@
21 )
22
23 from charmhelpers.contrib.network.ip import (
24- get_ipv6_addr
25+ get_ipv6_addr,
26+ format_ipv6_addr
27 )
28
29
30@@ -281,3 +282,26 @@
31 ctxt = super(NovaIPv6Context, self).__call__()
32 ctxt['use_ipv6'] = config('prefer-ipv6')
33 return ctxt
34+
35+
36+class InstanceConsoleContext(context.OSContextGenerator):
37+ interfaces = []
38+
39+ def __call__(self):
40+ ctxt = {}
41+ servers = []
42+ try:
43+ for rid in relation_ids('memcache'):
44+ for rel in relations_for_id(rid):
45+ priv_addr = rel['private-address']
46+ # format it as IPv6 address if neeeded
47+ priv_addr = format_ipv6_addr(priv_addr) or priv_addr
48+ servers.append({'private-address': priv_addr,
49+ 'port': rel['port']})
50+ except Exception as ex:
51+ log("Couldn't get caching servers: {}".format(str(ex)),
52+ level='WARNING')
53+ servers = []
54+
55+ ctxt['memcached_servers'] = servers
56+ return ctxt
57
58=== modified file 'hooks/nova_cc_hooks.py'
59--- hooks/nova_cc_hooks.py 2014-10-23 07:32:45 +0000
60+++ hooks/nova_cc_hooks.py 2014-11-26 21:26:13 +0000
61@@ -849,6 +849,15 @@
62 quantum_joined(rid=rid)
63
64
65+@hooks.hook('memcache-relation-joined',
66+ 'memcache-relation-departed',
67+ 'memcache-relation-changed',
68+ 'memcache-relation-broken')
69+@restart_on_change(restart_map())
70+def memcached_joined():
71+ CONFIGS.write(NOVA_CONF)
72+
73+
74 def main():
75 try:
76 hooks.execute(sys.argv)
77
78=== modified file 'hooks/nova_cc_utils.py'
79--- hooks/nova_cc_utils.py 2014-11-14 09:55:10 +0000
80+++ hooks/nova_cc_utils.py 2014-11-26 21:26:13 +0000
81@@ -68,6 +68,7 @@
82 'python-psycopg2',
83 'python-psutil',
84 'uuid',
85+ 'python-memcache',
86 ]
87
88 BASE_SERVICES = [
89@@ -123,7 +124,8 @@
90 nova_cc_context.VolumeServiceContext(),
91 nova_cc_context.NovaIPv6Context(),
92 nova_cc_context.NeutronCCContext(),
93- nova_cc_context.NovaConfigContext()],
94+ nova_cc_context.NovaConfigContext(),
95+ nova_cc_context.InstanceConsoleContext()],
96 }),
97 (NOVA_API_PASTE, {
98 'services': [s for s in BASE_SERVICES if 'api' in s],
99
100=== modified file 'metadata.yaml'
101--- metadata.yaml 2014-07-11 09:14:57 +0000
102+++ metadata.yaml 2014-11-26 21:26:13 +0000
103@@ -40,6 +40,8 @@
104 nova-vmware:
105 interface: nova-vmware
106 scope: container
107+ memcache:
108+ interface: memcache
109 peers:
110 cluster:
111 interface: nova-ha
112
113=== modified file 'templates/folsom/nova.conf'
114--- templates/folsom/nova.conf 2014-04-16 08:25:14 +0000
115+++ templates/folsom/nova.conf 2014-11-26 21:26:13 +0000
116@@ -21,6 +21,11 @@
117 enabled_apis=ec2,osapi_compute,metadata
118 auth_strategy=keystone
119 compute_driver=libvirt.LibvirtDriver
120+
121+{% if memcached_servers %}
122+memcached_servers = {%for s in memcached_servers %}{% if loop.index0 != 0 %},{% endif %}{{s['private-address']}}:{{s['port']}}{% endfor %}
123+{% endif %}
124+
125 {% if keystone_ec2_url -%}
126 keystone_ec2_url = {{ keystone_ec2_url }}
127 {% endif -%}
128
129=== modified file 'templates/grizzly/nova.conf'
130--- templates/grizzly/nova.conf 2014-03-31 11:56:09 +0000
131+++ templates/grizzly/nova.conf 2014-11-26 21:26:13 +0000
132@@ -20,6 +20,11 @@
133 enabled_apis=ec2,osapi_compute,metadata
134 auth_strategy=keystone
135 compute_driver=libvirt.LibvirtDriver
136+
137+{% if memcached_servers %}
138+memcached_servers = {%for s in memcached_servers %}{% if loop.index0 != 0 %},{% endif %}{{s['private-address']}}:{{s['port']}}{% endfor %}
139+{% endif %}
140+
141 {% if keystone_ec2_url -%}
142 keystone_ec2_url = {{ keystone_ec2_url }}
143 {% endif -%}
144
145=== modified file 'templates/havana/nova.conf'
146--- templates/havana/nova.conf 2014-08-08 09:31:32 +0000
147+++ templates/havana/nova.conf 2014-11-26 21:26:13 +0000
148@@ -26,6 +26,10 @@
149 cpu_allocation_ratio = {{ cpu_allocation_ratio }}
150 use_syslog={{ use_syslog }}
151
152+{% if memcached_servers %}
153+memcached_servers = {%for s in memcached_servers %}{% if loop.index0 != 0 %},{% endif %}{{s['private-address']}}:{{s['port']}}{% endfor %}
154+{% endif %}
155+
156 {% if keystone_ec2_url -%}
157 keystone_ec2_url = {{ keystone_ec2_url }}
158 {% endif -%}
159
160=== modified file 'templates/icehouse/nova.conf'
161--- templates/icehouse/nova.conf 2014-10-07 11:37:20 +0000
162+++ templates/icehouse/nova.conf 2014-11-26 21:26:13 +0000
163@@ -38,6 +38,10 @@
164
165 use_syslog={{ use_syslog }}
166
167+{% if memcached_servers %}
168+memcached_servers = {%for s in memcached_servers %}{% if loop.index0 != 0 %},{% endif %}{{s['private-address']}}:{{s['port']}}{% endfor %}
169+{% endif %}
170+
171 {% if keystone_ec2_url -%}
172 keystone_ec2_url = {{ keystone_ec2_url }}
173 {% endif -%}
174
175=== added file 'unit_tests/test_nova_cc_contexts.py'
176--- unit_tests/test_nova_cc_contexts.py 1970-01-01 00:00:00 +0000
177+++ unit_tests/test_nova_cc_contexts.py 2014-11-26 21:26:13 +0000
178@@ -0,0 +1,87 @@
179+from __future__ import print_function
180+
181+import mock
182+
183+#####
184+# NOTE(freyes): this is a workaround to patch config() function imported by
185+# nova_cc_utils before it gets a reference to the actual config() provided by
186+# hookenv module.
187+from charmhelpers.core import hookenv
188+_conf = hookenv.config
189+hookenv.config = mock.MagicMock()
190+import nova_cc_utils as _utils
191+# this assert is a double check + to avoid pep8 warning
192+assert _utils.config == hookenv.config
193+hookenv.config = _conf
194+#####
195+
196+import nova_cc_context as context
197+
198+from charmhelpers.contrib.openstack import utils
199+
200+from test_utils import CharmTestCase
201+
202+
203+TO_PATCH = [
204+ 'apt_install',
205+ 'filter_installed_packages',
206+ 'relation_ids',
207+ 'relation_get',
208+ 'related_units',
209+ 'config',
210+ 'log',
211+ 'unit_get',
212+ 'relations_for_id',
213+]
214+
215+
216+def fake_log(msg, level=None):
217+ level = level or 'INFO'
218+ print('[juju test log (%s)] %s' % (level, msg))
219+
220+
221+class NovaComputeContextTests(CharmTestCase):
222+ def setUp(self):
223+ super(NovaComputeContextTests, self).setUp(context, TO_PATCH)
224+ self.relation_get.side_effect = self.test_relation.get
225+ self.config.side_effect = self.test_config.get
226+ self.log.side_effect = fake_log
227+
228+ @mock.patch.object(utils, 'os_release')
229+ @mock.patch('charmhelpers.contrib.network.ip.log')
230+ def test_instance_console_context_without_memcache(self, os_release, log_):
231+ self.unit_get.return_value = '127.0.0.1'
232+ self.relation_ids.return_value = 'cache:0'
233+ self.related_units.return_value = 'memcached/0'
234+ instance_console = context.InstanceConsoleContext()
235+ os_release.return_value = 'icehouse'
236+ self.assertEqual({'memcached_servers': []},
237+ instance_console())
238+
239+ @mock.patch.object(utils, 'os_release')
240+ @mock.patch('charmhelpers.contrib.network.ip.log')
241+ def test_instance_console_context_with_memcache(self, os_release, log_):
242+ self.check_instance_console_context_with_memcache(os_release,
243+ '127.0.1.1',
244+ '127.0.1.1')
245+
246+ @mock.patch.object(utils, 'os_release')
247+ @mock.patch('charmhelpers.contrib.network.ip.log')
248+ def test_instance_console_context_with_memcache_ipv6(self, os_release,
249+ log_):
250+ self.check_instance_console_context_with_memcache(os_release, '::1',
251+ '[::1]')
252+
253+ def check_instance_console_context_with_memcache(self, os_release, ip,
254+ formated_ip):
255+ memcached_servers = [{'private-address': formated_ip,
256+ 'port': '11211'}]
257+ self.unit_get.return_value = ip
258+ self.relation_ids.return_value = ['cache:0']
259+ self.relations_for_id.return_value = memcached_servers
260+ self.related_units.return_value = 'memcached/0'
261+ instance_console = context.InstanceConsoleContext()
262+ os_release.return_value = 'icehouse'
263+ self.maxDiff = None
264+ self.assertEqual({'memcached_servers': memcached_servers},
265+ instance_console())
266
267=== modified file 'unit_tests/test_nova_cc_hooks.py'
268--- unit_tests/test_nova_cc_hooks.py 2014-10-21 13:18:47 +0000
269+++ unit_tests/test_nova_cc_hooks.py 2014-11-26 21:26:13 +0000
270@@ -1,6 +1,7 @@
271 from mock import MagicMock, patch, call
272 from test_utils import CharmTestCase, patch_open
273 import os
274+
275 with patch('charmhelpers.core.hookenv.config') as config:
276 config.return_value = 'neutron'
277 import nova_cc_utils as utils

Subscribers

People subscribed via source and target branches