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: 267 lines (+144/-1)
10 files modified
hooks/nova_cc_context.py (+24/-0)
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
Jorge Niedbalski (community) Approve
OpenStack Charmers Pending
Edward Hope-Morley Pending
James Troup Pending
Review via email: mp+244730@code.launchpad.net

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

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

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 secure memcached access this relies in the memcached charm ability to use iptables rules to only allow access to related machines[0]

This patch can be tested using the deployer file available at https://code.launchpad.net/~openstack-charm-testers/+junk/nova-memcached

[0] http://bazaar.launchpad.net/~charmers/charms/trusty/memcached/trunk/revision/61

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

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

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

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

See inline comment

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

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

@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

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

charm_lint_check #202 nova-cloud-controller-next for freyes mp244432
    LINT OK: passed

Build: http://10.230.18.80:8080/job/charm_lint_check/202/

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

charm_unit_test #165 nova-cloud-controller-next for freyes mp244432
    UNIT OK: passed

Build: http://10.230.18.80:8080/job/charm_unit_test/165/

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

charm_amulet_test #120 nova-cloud-controller-next for freyes mp244432
    AMULET OK: passed

Build: http://10.230.18.80:8080/job/charm_amulet_test/120/

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

charm_lint_check #83 nova-cloud-controller-next for freyes mp244432
    LINT OK: passed

Build: http://10.245.162.77:8080/job/charm_lint_check/83/

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

charm_lint_check #89 nova-cloud-controller-next for freyes mp244432
    LINT OK: passed

Build: http://10.245.162.77:8080/job/charm_lint_check/89/

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

charm_unit_test #118 nova-cloud-controller-next for freyes mp244432
    UNIT OK: passed

Build: http://10.245.162.77:8080/job/charm_unit_test/118/

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

charm_unit_test #121 nova-cloud-controller-next for freyes mp244432
    UNIT OK: passed

Build: http://10.245.162.77:8080/job/charm_unit_test/121/

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

All LGTM. Unit and Amulet tests passing, the python written memcache charm has already landed. So just a very minor string refactor required.

Thanks Felipe

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

Subscribers

People subscribed via source and target branches