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: 268 lines (+145/-1)
10 files modified
hooks/nova_cc_context.py (+25/-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
Edward Hope-Morley Needs Fixing
Jorge Niedbalski Pending
James Troup Pending
OpenStack Charmers Pending
Review via email: mp+244763@code.launchpad.net

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

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

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

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
Revision history for this message
Felipe Reyes (freyes) wrote :

@niedbalski, updated MP to address your comment.

Thanks for reviewing it :)

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

Felipe, this mostly lgtm but I have a couple of nits. This is top of my list of reviews though!

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

charm_lint_check #183 nova-cloud-controller-next for freyes mp244763
    LINT OK: passed

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

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

charm_unit_test #216 nova-cloud-controller-next for freyes mp244763
    UNIT OK: passed

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

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

charm_amulet_test #236 nova-cloud-controller-next for freyes mp244763
    AMULET FAIL: amulet-test failed

AMULET Results (max last 2 lines):
  ERROR subprocess encountered error code 1
  make: *** [test] Error 1

Full amulet test output: http://paste.ubuntu.com/9535877/
Build: http://10.245.162.77:8080/job/charm_amulet_test/236/

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

Subscribers

People subscribed via source and target branches