)]}'
{"hooks/nova_cc_context.py":[{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"a223edc30da04970078615386469caa370668ee3","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            del port_mapping[\u0027nova-api-ec2\u0027]"},{"line_number":219,"context_line":"            del port_mapping[\u0027nova-objectstore\u0027]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        rids \u003d [rid for rid in hookenv.relation_ids(\u0027placement\u0027)]"},{"line_number":222,"context_line":"        if (rids or"},{"line_number":223,"context_line":"                cmp_os_rel \u003c \u0027ocata\u0027 or"},{"line_number":224,"context_line":"                cmp_os_rel \u003e \u0027stein\u0027):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_cd7633a5","line":221,"updated":"2019-10-11 17:36:51.000000000","message":"relation_ids already returns a list of rids is there a reason for the list comprehension?","commit_id":"f4e0a814115024e50ac8fda126bc370d86f6f81b"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"6c0032aebf849789eada4bffe1998cf7b7c7adc8","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            del port_mapping[\u0027nova-api-ec2\u0027]"},{"line_number":219,"context_line":"            del port_mapping[\u0027nova-objectstore\u0027]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        rids \u003d [rid for rid in hookenv.relation_ids(\u0027placement\u0027)]"},{"line_number":222,"context_line":"        if (rids or"},{"line_number":223,"context_line":"                cmp_os_rel \u003c \u0027ocata\u0027 or"},{"line_number":224,"context_line":"                cmp_os_rel \u003e \u0027stein\u0027):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_ad3c17e1","line":221,"in_reply_to":"3fa7e38b_cd7633a5","updated":"2019-10-11 18:20:16.000000000","message":"Good point this is probably not needed. Will fix that up.","commit_id":"f4e0a814115024e50ac8fda126bc370d86f6f81b"}],"hooks/nova_cc_hooks.py":[{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"a223edc30da04970078615386469caa370668ee3","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"@hooks.hook(\u0027placement-relation-joined\u0027)"},{"line_number":1296,"context_line":"def placement_relation_joined(rid\u003dNone, unit\u003dNone):"},{"line_number":1297,"context_line":"    # Should we leave pause/resume to operator via actions?"},{"line_number":1298,"context_line":"    # ncc_utils.pause_unit_helper(ncc_utils.register_configs())"},{"line_number":1299,"context_line":"    ncc_utils.disable_deprecated_nova_placement_apache_site()"},{"line_number":1300,"context_line":"    hookenv.relation_set(nova_placement_disabled\u003dTrue, relation_id\u003drid)"},{"line_number":1301,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_4dd1e3fa","line":1298,"updated":"2019-10-11 17:36:51.000000000","message":"See below.","commit_id":"f4e0a814115024e50ac8fda126bc370d86f6f81b"},{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"a223edc30da04970078615386469caa370668ee3","unresolved":false,"context_lines":[{"line_number":1311,"context_line":"        identity_joined(rid)"},{"line_number":1312,"context_line":"    # kick compute_joined() to restart services on nova compute"},{"line_number":1313,"context_line":"    for rid in hookenv.relation_ids(\u0027cloud-compute\u0027):"},{"line_number":1314,"context_line":"        compute_joined(rid\u003drid, remote_restart\u003dTrue)"},{"line_number":1315,"context_line":"    # Should we leave pause/resume to operator via actions?"},{"line_number":1316,"context_line":"    # It works ok when adding placement to existing deployment"},{"line_number":1317,"context_line":"    # but on new deployment fails with:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_2ded87b6","line":1314,"updated":"2019-10-11 17:36:51.000000000","message":"Does the placement charm wait until it has registered the nova placement catalog entry in keystone before responding on the relation with placement_enabled? If not, there is a race, where the compute node can be restarted but there is as yet no placement URL in keystone.","commit_id":"f4e0a814115024e50ac8fda126bc370d86f6f81b"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"6c0032aebf849789eada4bffe1998cf7b7c7adc8","unresolved":false,"context_lines":[{"line_number":1311,"context_line":"        identity_joined(rid)"},{"line_number":1312,"context_line":"    # kick compute_joined() to restart services on nova compute"},{"line_number":1313,"context_line":"    for rid in hookenv.relation_ids(\u0027cloud-compute\u0027):"},{"line_number":1314,"context_line":"        compute_joined(rid\u003drid, remote_restart\u003dTrue)"},{"line_number":1315,"context_line":"    # Should we leave pause/resume to operator via actions?"},{"line_number":1316,"context_line":"    # It works ok when adding placement to existing deployment"},{"line_number":1317,"context_line":"    # but on new deployment fails with:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_b071caaa","line":1314,"in_reply_to":"3fa7e38b_2ded87b6","updated":"2019-10-11 18:20:16.000000000","message":"I\u0027ll dig in to this some more. I think it does need some additional work to wait until new endpoints are registered. Currently it does a db_sync, starts services, and then sets placement_enabled.","commit_id":"f4e0a814115024e50ac8fda126bc370d86f6f81b"},{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"a223edc30da04970078615386469caa370668ee3","unresolved":false,"context_lines":[{"line_number":1317,"context_line":"    # but on new deployment fails with:"},{"line_number":1318,"context_line":"    #   Exception: Couldn\u0027t resume: Incomplete relations:"},{"line_number":1319,"context_line":"    #               neutron-api, identity, messaging"},{"line_number":1320,"context_line":"    # ncc_utils.resume_unit_helper(ncc_utils.register_configs())"},{"line_number":1321,"context_line":"    for s in ncc_utils.services():"},{"line_number":1322,"context_line":"        ch_host.service_restart(s)"},{"line_number":1323,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_ede20fd5","line":1320,"updated":"2019-10-11 17:36:51.000000000","message":"Thanks for calling this out to the reviewer. But this seems problematic. There is a chicken/egg problem. I\u0027d like to see this land. Can I suggest you file a bug and release note this and we can address the pause/resume in a subsequent change? I just don\u0027t want to lose track of this. We will also want to add an eoan-train functional test as soon as possible.","commit_id":"f4e0a814115024e50ac8fda126bc370d86f6f81b"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"6c0032aebf849789eada4bffe1998cf7b7c7adc8","unresolved":false,"context_lines":[{"line_number":1317,"context_line":"    # but on new deployment fails with:"},{"line_number":1318,"context_line":"    #   Exception: Couldn\u0027t resume: Incomplete relations:"},{"line_number":1319,"context_line":"    #               neutron-api, identity, messaging"},{"line_number":1320,"context_line":"    # ncc_utils.resume_unit_helper(ncc_utils.register_configs())"},{"line_number":1321,"context_line":"    for s in ncc_utils.services():"},{"line_number":1322,"context_line":"        ch_host.service_restart(s)"},{"line_number":1323,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_7048322c","line":1320,"in_reply_to":"3fa7e38b_ede20fd5","updated":"2019-10-11 18:20:16.000000000","message":"What I really want to be careful about is ensuring the nova_api database is not updated during the API transition from from nova-cc to placement, because placement migrates the nova_api placement tables to the placement database and then starts up the API. So nova-cc really needs to be paused to make for a clean upgrade. The pause/resume could be documented but too but ideally that would be coded.","commit_id":"f4e0a814115024e50ac8fda126bc370d86f6f81b"}],"hooks/nova_cc_utils.py":[{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"a223edc30da04970078615386469caa370668ee3","unresolved":false,"context_lines":[{"line_number":1756,"context_line":""},{"line_number":1757,"context_line":"def placement_api_enabled():"},{"line_number":1758,"context_line":"    \"\"\"Return true if nova-placement-api is enabled in this release\"\"\""},{"line_number":1759,"context_line":"    rids \u003d [rid for rid in hookenv.relation_ids(\u0027placement\u0027)]"},{"line_number":1760,"context_line":"    release \u003d ch_utils.os_release(\u0027nova-common\u0027)"},{"line_number":1761,"context_line":"    return ("},{"line_number":1762,"context_line":"        not rids and"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_2d1587e5","line":1759,"updated":"2019-10-11 17:36:51.000000000","message":"relation_ids already returns a list. Is the list comprehension for some other reason?","commit_id":"f4e0a814115024e50ac8fda126bc370d86f6f81b"},{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"a223edc30da04970078615386469caa370668ee3","unresolved":false,"context_lines":[{"line_number":1819,"context_line":"    if ch_utils.CompareOpenStackReleases(release) \u003e\u003d \u0027stein\u0027:"},{"line_number":1820,"context_line":"        if os.path.exists(WSGI_NOVA_PLACEMENT_API_CONF):"},{"line_number":1821,"context_line":"            os.remove(WSGI_NOVA_PLACEMENT_API_CONF)"},{"line_number":1822,"context_line":"            # ch_host.service_reload(\u0027apache2\u0027, restart_on_failure\u003dTrue)"},{"line_number":1823,"context_line":""},{"line_number":1824,"context_line":""},{"line_number":1825,"context_line":"def get_shared_metadatasecret():"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_6dcdbf83","line":1822,"updated":"2019-10-11 17:36:51.000000000","message":"Let\u0027s remove or uncomment","commit_id":"f4e0a814115024e50ac8fda126bc370d86f6f81b"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"6c0032aebf849789eada4bffe1998cf7b7c7adc8","unresolved":false,"context_lines":[{"line_number":1819,"context_line":"    if ch_utils.CompareOpenStackReleases(release) \u003e\u003d \u0027stein\u0027:"},{"line_number":1820,"context_line":"        if os.path.exists(WSGI_NOVA_PLACEMENT_API_CONF):"},{"line_number":1821,"context_line":"            os.remove(WSGI_NOVA_PLACEMENT_API_CONF)"},{"line_number":1822,"context_line":"            # ch_host.service_reload(\u0027apache2\u0027, restart_on_failure\u003dTrue)"},{"line_number":1823,"context_line":""},{"line_number":1824,"context_line":""},{"line_number":1825,"context_line":"def get_shared_metadatasecret():"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_106a1e80","line":1822,"in_reply_to":"3fa7e38b_6dcdbf83","updated":"2019-10-11 18:20:16.000000000","message":"This bit depends on decisions with pause/resume. I think if we agree that we need to pause nova-cc until placement endpoints are provided then I can remove this.","commit_id":"f4e0a814115024e50ac8fda126bc370d86f6f81b"}]}
