)]}'
{"actions.yaml":[{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"ea74fbb2108040d3565085275be2cc3b66378680","unresolved":true,"context_lines":[{"line_number":22,"context_line":"    description: |"},{"line_number":23,"context_line":"        Pause the neutron-openvswitch unit.  This action will stop neutron-openvswitch services."},{"line_number":24,"context_line":"        ."},{"line_number":25,"context_line":"        NOTE: Pausing a neutron-openvswitch unit does not result in data plane downtime."},{"line_number":26,"context_line":"        The openvswitch-switch service will not be stopped."},{"line_number":27,"context_line":"resume:"},{"line_number":28,"context_line":"    descrpition: |"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ff809003_939af806","line":25,"updated":"2021-01-07 20:44:51.000000000","message":"This is a strong statement. I appreciate this is the point of the bug, but are we 100% sure?","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"77b00f90a64b1c1eca293928fdd6a04a5c419c12","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    description: |"},{"line_number":23,"context_line":"        Pause the neutron-openvswitch unit.  This action will stop neutron-openvswitch services."},{"line_number":24,"context_line":"        ."},{"line_number":25,"context_line":"        NOTE: Pausing a neutron-openvswitch unit does not result in data plane downtime."},{"line_number":26,"context_line":"        The openvswitch-switch service will not be stopped."},{"line_number":27,"context_line":"resume:"},{"line_number":28,"context_line":"    descrpition: |"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"6cdb1eaf_43bb395c","line":25,"in_reply_to":"ff809003_939af806","updated":"2021-01-07 21:25:48.000000000","message":"I\u0027ll soften it to the specific service.","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"}],"config.yaml":[{"author":{"_account_id":8992,"name":"Billy Olsen","email":"billy.olsen@canonical.com","username":"billy-olsen"},"change_message_id":"ceeee3fb09c10b8f9930cfe4b3e2fe9a120507a7","unresolved":true,"context_lines":[{"line_number":412,"context_line":"      for \u0027native\u0027 driver. The default value is 10 seconds."},{"line_number":413,"context_line":"  disable-mlockall:"},{"line_number":414,"context_line":"    type: boolean"},{"line_number":415,"context_line":"    default: false"},{"line_number":416,"context_line":"    description: |"},{"line_number":417,"context_line":"      Disable Open vSwitch use of mlockall(). By default mlockall() is enabled,"},{"line_number":418,"context_line":"      locking all of ovs-vswitchd\u0027s process memory into physical RAM and"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"e7446045_8d7967d4","line":415,"updated":"2020-12-15 20:14:55.000000000","message":"Maybe we should default this to empty and have the charm determine whether it is running inside a container. If it is running inside a container, the code can disable mlockall by default and if running outside of a container leave it enabled. Then, if a user can have finer control over the essentially \"auto\" version and select whether they want it or not.","commit_id":"5b862e9c6baed05a44782f4781497af079201949"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"83a3341452f9600443982395fb1d4d98c8990fdf","unresolved":true,"context_lines":[{"line_number":412,"context_line":"      for \u0027native\u0027 driver. The default value is 10 seconds."},{"line_number":413,"context_line":"  disable-mlockall:"},{"line_number":414,"context_line":"    type: boolean"},{"line_number":415,"context_line":"    default: false"},{"line_number":416,"context_line":"    description: |"},{"line_number":417,"context_line":"      Disable Open vSwitch use of mlockall(). By default mlockall() is enabled,"},{"line_number":418,"context_line":"      locking all of ovs-vswitchd\u0027s process memory into physical RAM and"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"57d6e5ba_78108d35","line":415,"in_reply_to":"e7446045_8d7967d4","updated":"2020-12-15 21:04:39.000000000","message":"I like the idea. I was reading that mlockall() is used for perormance as well as security so I wasn\u0027t sure if that would change behavior to less secure without knowing on charm upgrade. I think the intention of mlockall() use for ovs is performance but wasn\u0027t sure if there was also a security intention.","commit_id":"5b862e9c6baed05a44782f4781497af079201949"},{"author":{"_account_id":8992,"name":"Billy Olsen","email":"billy.olsen@canonical.com","username":"billy-olsen"},"change_message_id":"ceeee3fb09c10b8f9930cfe4b3e2fe9a120507a7","unresolved":true,"context_lines":[{"line_number":418,"context_line":"      locking all of ovs-vswitchd\u0027s process memory into physical RAM and"},{"line_number":419,"context_line":"      preventing paging. This avoids network interruptions but can lead to"},{"line_number":420,"context_line":"      memory exhaustion in memory-constrained environments."},{"line_number":421,"context_line":"      (Available from Mitaka)"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"b6d9b41c_f284759f","line":421,"updated":"2020-12-15 20:14:55.000000000","message":"Since openvswitch is in the data-path, is it worth indicating that changing the value will restart openvswitch?","commit_id":"5b862e9c6baed05a44782f4781497af079201949"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"83a3341452f9600443982395fb1d4d98c8990fdf","unresolved":true,"context_lines":[{"line_number":418,"context_line":"      locking all of ovs-vswitchd\u0027s process memory into physical RAM and"},{"line_number":419,"context_line":"      preventing paging. This avoids network interruptions but can lead to"},{"line_number":420,"context_line":"      memory exhaustion in memory-constrained environments."},{"line_number":421,"context_line":"      (Available from Mitaka)"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"812b412a_d637988f","line":421,"in_reply_to":"b6d9b41c_f284759f","updated":"2020-12-15 21:04:39.000000000","message":"Yes, I\u0027ll update that. Thanks for the suggestion.","commit_id":"5b862e9c6baed05a44782f4781497af079201949"}],"hooks/neutron_ovs_context.py":[{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"ea74fbb2108040d3565085275be2cc3b66378680","unresolved":true,"context_lines":[{"line_number":167,"context_line":"        not running in a container."},{"line_number":168,"context_line":"        \u0027\u0027\u0027"},{"line_number":169,"context_line":"        disable_mlockall \u003d config(\u0027disable-mlockall\u0027)"},{"line_number":170,"context_line":"        if not isinstance(disable_mlockall, bool):"},{"line_number":171,"context_line":"            disable_mlockall \u003d False"},{"line_number":172,"context_line":"            if is_container():"},{"line_number":173,"context_line":"                disable_mlockall \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"6f1b7a93_3e27ba4c","line":170,"updated":"2021-01-07 20:44:51.000000000","message":"Nit, I tend to like checking for None in this context:\n\nif disable_mlockall is None:","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"77b00f90a64b1c1eca293928fdd6a04a5c419c12","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        not running in a container."},{"line_number":168,"context_line":"        \u0027\u0027\u0027"},{"line_number":169,"context_line":"        disable_mlockall \u003d config(\u0027disable-mlockall\u0027)"},{"line_number":170,"context_line":"        if not isinstance(disable_mlockall, bool):"},{"line_number":171,"context_line":"            disable_mlockall \u003d False"},{"line_number":172,"context_line":"            if is_container():"},{"line_number":173,"context_line":"                disable_mlockall \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f7ba62d_45d10cde","line":170,"in_reply_to":"6f1b7a93_3e27ba4c","updated":"2021-01-07 21:25:48.000000000","message":"Ack","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"}],"hooks/neutron_ovs_utils.py":[{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"ea74fbb2108040d3565085275be2cc3b66378680","unresolved":true,"context_lines":[{"line_number":462,"context_line":"    return {k: v[\u0027services\u0027] for k, v in resource_map().items()}"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"def services(exclude_services\u003d[]):"},{"line_number":466,"context_line":"    \"\"\"Returns a list of (unique) services associate with this charm"},{"line_number":467,"context_line":"    Note that we drop the os-charm-phy-nic-mtu service as it\u0027s not an actual"},{"line_number":468,"context_line":"    running service that we can check for."}],"source_content_type":"text/x-python","patch_set":5,"id":"83e7d546_6422a216","line":465,"updated":"2021-01-07 20:44:51.000000000","message":"exclude_services\u003dNone\n\nif exclude_services is None:\n    exclude_services \u003d []","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"77b00f90a64b1c1eca293928fdd6a04a5c419c12","unresolved":false,"context_lines":[{"line_number":462,"context_line":"    return {k: v[\u0027services\u0027] for k, v in resource_map().items()}"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"def services(exclude_services\u003d[]):"},{"line_number":466,"context_line":"    \"\"\"Returns a list of (unique) services associate with this charm"},{"line_number":467,"context_line":"    Note that we drop the os-charm-phy-nic-mtu service as it\u0027s not an actual"},{"line_number":468,"context_line":"    running service that we can check for."}],"source_content_type":"text/x-python","patch_set":5,"id":"b9a48fe6_76021c9d","line":465,"in_reply_to":"83e7d546_6422a216","updated":"2021-01-07 21:25:48.000000000","message":"Ack","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"ea74fbb2108040d3565085275be2cc3b66378680","unresolved":true,"context_lines":[{"line_number":1030,"context_line":"    os_application_version_set(VERSION_PACKAGE)"},{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"def assess_status_func(configs, exclude_services\u003d[]):"},{"line_number":1034,"context_line":"    \"\"\"Helper function to create the function that will assess_status() for"},{"line_number":1035,"context_line":"    the unit."},{"line_number":1036,"context_line":"    Uses charmhelpers.contrib.openstack.utils.make_assess_status_func() to"}],"source_content_type":"text/x-python","patch_set":5,"id":"a1602bbf_3319c02c","line":1033,"updated":"2021-01-07 20:44:51.000000000","message":"exclude_services\u003dNone\n\nif exclude_services is None:\n    exclude_services \u003d []","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"77b00f90a64b1c1eca293928fdd6a04a5c419c12","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"    os_application_version_set(VERSION_PACKAGE)"},{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"def assess_status_func(configs, exclude_services\u003d[]):"},{"line_number":1034,"context_line":"    \"\"\"Helper function to create the function that will assess_status() for"},{"line_number":1035,"context_line":"    the unit."},{"line_number":1036,"context_line":"    Uses charmhelpers.contrib.openstack.utils.make_assess_status_func() to"}],"source_content_type":"text/x-python","patch_set":5,"id":"38e97cb3_33dd8501","line":1033,"in_reply_to":"a1602bbf_3319c02c","updated":"2021-01-07 21:25:48.000000000","message":"Ack","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"ea74fbb2108040d3565085275be2cc3b66378680","unresolved":true,"context_lines":[{"line_number":1056,"context_line":"        services\u003dservices(exclude_services), ports\u003dNone)"},{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"def pause_unit_helper(configs, exclude_services\u003d[]):"},{"line_number":1060,"context_line":"    \"\"\"Helper function to pause a unit, and then call assess_status(...) in"},{"line_number":1061,"context_line":"    effect, so that the status is correctly updated."},{"line_number":1062,"context_line":"    Uses charmhelpers.contrib.openstack.utils.pause_unit() to do the work."}],"source_content_type":"text/x-python","patch_set":5,"id":"8caa08b1_c2c51ae2","line":1059,"updated":"2021-01-07 20:44:51.000000000","message":"exclude_services\u003dNone\n\nif exclude_services is None:\n    exclude_services \u003d []","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"77b00f90a64b1c1eca293928fdd6a04a5c419c12","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"        services\u003dservices(exclude_services), ports\u003dNone)"},{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"def pause_unit_helper(configs, exclude_services\u003d[]):"},{"line_number":1060,"context_line":"    \"\"\"Helper function to pause a unit, and then call assess_status(...) in"},{"line_number":1061,"context_line":"    effect, so that the status is correctly updated."},{"line_number":1062,"context_line":"    Uses charmhelpers.contrib.openstack.utils.pause_unit() to do the work."}],"source_content_type":"text/x-python","patch_set":5,"id":"c13881ae_5f0d9723","line":1059,"in_reply_to":"8caa08b1_c2c51ae2","updated":"2021-01-07 21:25:48.000000000","message":"Ack","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"ea74fbb2108040d3565085275be2cc3b66378680","unresolved":true,"context_lines":[{"line_number":1066,"context_line":"    _pause_resume_helper(pause_unit, configs, exclude_services)"},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":""},{"line_number":1069,"context_line":"def resume_unit_helper(configs, exclude_services\u003d[]):"},{"line_number":1070,"context_line":"    \"\"\"Helper function to resume a unit, and then call assess_status(...) in"},{"line_number":1071,"context_line":"    effect, so that the status is correctly updated."},{"line_number":1072,"context_line":"    Uses charmhelpers.contrib.openstack.utils.resume_unit() to do the work."}],"source_content_type":"text/x-python","patch_set":5,"id":"f234beaf_b44019b9","line":1069,"updated":"2021-01-07 20:44:51.000000000","message":"exclude_services\u003dNone\n\nif exclude_services is None:\n    exclude_services \u003d []","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"77b00f90a64b1c1eca293928fdd6a04a5c419c12","unresolved":false,"context_lines":[{"line_number":1066,"context_line":"    _pause_resume_helper(pause_unit, configs, exclude_services)"},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":""},{"line_number":1069,"context_line":"def resume_unit_helper(configs, exclude_services\u003d[]):"},{"line_number":1070,"context_line":"    \"\"\"Helper function to resume a unit, and then call assess_status(...) in"},{"line_number":1071,"context_line":"    effect, so that the status is correctly updated."},{"line_number":1072,"context_line":"    Uses charmhelpers.contrib.openstack.utils.resume_unit() to do the work."}],"source_content_type":"text/x-python","patch_set":5,"id":"bd506964_9e378742","line":1069,"in_reply_to":"f234beaf_b44019b9","updated":"2021-01-07 21:25:48.000000000","message":"Ack","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":20805,"name":"David Ames","email":"david@davam.net","username":"thedac"},"change_message_id":"ea74fbb2108040d3565085275be2cc3b66378680","unresolved":true,"context_lines":[{"line_number":1076,"context_line":"    _pause_resume_helper(resume_unit, configs, exclude_services)"},{"line_number":1077,"context_line":""},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"def _pause_resume_helper(f, configs, exclude_services\u003d[]):"},{"line_number":1080,"context_line":"    \"\"\"Helper function that uses the make_assess_status_func(...) from"},{"line_number":1081,"context_line":"    charmhelpers.contrib.openstack.utils to create an assess_status(...)"},{"line_number":1082,"context_line":"    function that can be used with the pause/resume of the unit"}],"source_content_type":"text/x-python","patch_set":5,"id":"a0ec242c_a6e34861","line":1079,"updated":"2021-01-07 20:44:51.000000000","message":"exclude_services\u003dNone\n\nif exclude_services is None:\n    exclude_services \u003d []","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"},{"author":{"_account_id":11805,"name":"Corey Bryant","email":"corey.bryant@canonical.com","username":"coreycb"},"change_message_id":"77b00f90a64b1c1eca293928fdd6a04a5c419c12","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"    _pause_resume_helper(resume_unit, configs, exclude_services)"},{"line_number":1077,"context_line":""},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"def _pause_resume_helper(f, configs, exclude_services\u003d[]):"},{"line_number":1080,"context_line":"    \"\"\"Helper function that uses the make_assess_status_func(...) from"},{"line_number":1081,"context_line":"    charmhelpers.contrib.openstack.utils to create an assess_status(...)"},{"line_number":1082,"context_line":"    function that can be used with the pause/resume of the unit"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d2fcf_fdd7c62c","line":1079,"in_reply_to":"a0ec242c_a6e34861","updated":"2021-01-07 21:25:48.000000000","message":"Ack","commit_id":"e81b9f883a506dcb13b54c7eb34f732dfbb5efcf"}]}
