)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"185f343def8771fed563b4bbc1eeae207e5a5f56","unresolved":true,"context_lines":[{"line_number":10,"context_line":"separate state-handling multi-process architecture. Subcloud state"},{"line_number":11,"context_line":"management is handled by the new state processes. This is a performance"},{"line_number":12,"context_line":"optimization, increasing the throughput of subcloud state change"},{"line_number":13,"context_line":"operations during dcmanager audits."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Refactoring. These top-level methods are moved from dcmanager"},{"line_number":16,"context_line":"SubcloudManager to SubcloudStateManager (along with associated"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ec4416b2_81b759c5","line":13,"updated":"2022-01-20 21:32:07.000000000","message":"this also optimizes performance of handling state updates from dcorch","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"separate state-handling multi-process architecture. Subcloud state"},{"line_number":11,"context_line":"management is handled by the new state processes. This is a performance"},{"line_number":12,"context_line":"optimization, increasing the throughput of subcloud state change"},{"line_number":13,"context_line":"operations during dcmanager audits."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Refactoring. These top-level methods are moved from dcmanager"},{"line_number":16,"context_line":"SubcloudManager to SubcloudStateManager (along with associated"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"03fbb8db_308ddb43","line":13,"in_reply_to":"ec4416b2_81b759c5","updated":"2022-01-20 22:00:49.000000000","message":"Done","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"53a05a14012c29cdd569d86c0292d24ece18ce64","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c9349754_e84f8d6f","updated":"2022-01-18 21:21:18.000000000","message":"a few comments, haven\u0027t reviewed the whole thing yet","commit_id":"5b8357c639bb09722ef1b178f8d6bf47154e36ce"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"2586cc47912fce602f691cee6291ca6f5ef6cab1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b8b1c91a_ac379e39","updated":"2022-01-18 21:59:10.000000000","message":"Code is ready for review. Testing is complete.\n\nSetting workflow to -1 pending review of resource analysis results.\n\nNote there are two related changes in ha and stx-puppet under this same topic - these are related to the new service.\n","commit_id":"f9879c5a7fca920d858817f68da804ab871fc321"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"9e92376b10105c3b61f65ad69a9604d1c8e14e83","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"16c07110_2ddbb585","updated":"2022-01-18 23:47:46.000000000","message":"- Caught a method that should have been from the original file as it was refactored\n\n- Proposal for Chris to allow async/sync option for update_subcloud_endpoint_status","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"e3467f95b0f24c71c8f40c3c35aa67d39101c733","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3c563cf4_c1f4a148","updated":"2022-01-18 22:58:14.000000000","message":"Responding to Chris\u0027 comments","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ccd92342_13b2a329","updated":"2022-01-20 22:00:49.000000000","message":"Patchset 4 addressing latest comments","commit_id":"08991fa782d1518713350a2ca727edcc30a3edc4"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b7d7cb6c37443a491a5bc7deeefd1c74549efedc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"567d72d8_7d5246d8","updated":"2022-01-21 18:29:46.000000000","message":"Minor tweaks based on latest comments.","commit_id":"f1e793f801d1ff82e9858bda5fd587aecb817f27"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"3795346d14ac779822f503dbff2ac8ef3b821181","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"691fda90_6f1ed7e7","updated":"2022-01-21 18:41:59.000000000","message":"Re-adding workflow in-progress -1","commit_id":"f1e793f801d1ff82e9858bda5fd587aecb817f27"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"30f4ea0031320bf2fe7320542a760febb4141f90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2b1de201_48553e11","updated":"2022-01-25 18:37:47.000000000","message":"pending responses to Tee\u0027s recent comments","commit_id":"f1e793f801d1ff82e9858bda5fd587aecb817f27"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"c1c60c6d6c2166a645d1fd3d254ec97a785d45c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"afcbad5d_0c0b2786","updated":"2022-01-25 19:05:02.000000000","message":"New patchset with responses to Tee\u0027s comments.\n\nI\u0027m not expecting any more changes from testing before removing the Workflow -1; however I\u0027m just finishing with some re-testing and data gathering before it\u0027s ready to merge.","commit_id":"e523202b57f971ea3283fc28b09885400db3f1bb"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"dbf83a20859b6adff6e31dc1ef4477fe6fdab12d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d199afca_8ddd3662","updated":"2022-01-25 22:22:38.000000000","message":"Tweaked the init code for distributedcloud/dcmanager/audit/service.py, which broke the rather useless test case test_init_tgm() in distributedcloud/dcmanager/tests/unit/audit/test_service.py. Rather than try to mock that test properly I removed the test case, since it is doing nothing anyway. \n\nI\u0027m not expecting any more changes from testing before removing the Workflow -1; however I\u0027m just finishing with some re-testing and data gathering before it\u0027s ready to merge.","commit_id":"581db685f4ece816495d3dddf795fbeb7357d8f6"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"879d162d9b705f1f8049ed1c26a05c7d556b586a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9216772e_edc775ca","updated":"2022-01-25 22:52:35.000000000","message":"Restored testcase and going with the init code as suggested by Tee, which is similar to the approach used by dcorch service.py","commit_id":"ebc0e4b3247a81cb20ac84b0bb04d5055317ab8f"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"62e70a247802a7f6ccad0d520db51a1a15891631","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"875b8bcd_4740a278","updated":"2022-01-25 23:00:36.000000000","message":"This is ready to merge","commit_id":"ebc0e4b3247a81cb20ac84b0bb04d5055317ab8f"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"3c8af8f85d4877470a2eccff83a99bbdbb07e8d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"de4c5f55_a1a40b5b","updated":"2022-01-26 15:25:54.000000000","message":"This review should have a WF-1 until the reviews depending on this one are WF\u0027d","commit_id":"ebc0e4b3247a81cb20ac84b0bb04d5055317ab8f"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"f8f23c59b844bf92efa68c991a11be81480220b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"eef598db_4733c17a","updated":"2022-01-26 15:29:13.000000000","message":"W -1 until the dependent reviews are ready to merge","commit_id":"ebc0e4b3247a81cb20ac84b0bb04d5055317ab8f"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"d1644219c91ab6869034fb929f79d9ae454b0065","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d344f8d4_cfd200f5","updated":"2022-01-27 00:24:39.000000000","message":"Re-add missing /usr/bin/dcmanager-state in distributedcloud.spec...\n\nI had this in initially, along with a systemd unit file (dcmanager-state.service). \n\nHowever, I removed the systemd unit because I believe that it\u0027s not required. When I did that I inadvertently removed the required reference to /usr/bin/dcmanager-state in the .spec. This became obvious when I did a build for the pending change in the related review in \u0027ha\u0027.\n\nI will be testing this change in a vbox environment from a fresh build, however, I would appreciate some extra scrutiny in this area as I\u0027m not yet overly familiar with RPM spec files.\n\nBTW, I don\u0027t think any of the dcmanager*.service or dcorch*.service files should be in this RPM either (since these services are not managed by systemd), but that is a different issue.\n\nWorkflow left as -1 pending change in related \u0027ha\u0027 review.","commit_id":"250fc9e72a6ca699e531d53196d20753137cfa61"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"12e18f6341149ef0e4cdc31c9c08649be494d935","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"901f6fc7_5435d517","updated":"2022-01-27 16:53:28.000000000","message":"Removing -1 workflow. Ready to merge.","commit_id":"250fc9e72a6ca699e531d53196d20753137cfa61"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"4b34fe063cad5ee19a6c5c6a174b4ba555c98469","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"e497ab9f_3612c023","updated":"2022-01-27 21:36:24.000000000","message":"Added TODO in distributedcloud.spec for systemd unit file removal.\n\n- We are not adding any .service files for dcmanager-state\n- The existing dcmanager*.service (and probably dcorch*.service) unit files are not used, and should be removed in a future commit","commit_id":"fc5afdacf26d9d0a340f025853beaab53bf54f2b"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"268df827ba4e26332cafa73e5fbce9666a31db96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"1b9f61ed_48c7a2b6","updated":"2022-01-28 14:20:01.000000000","message":"review should have WF-1 until the reviews depending on this one have WF\u0027d","commit_id":"fc5afdacf26d9d0a340f025853beaab53bf54f2b"}],"distributedcloud/centos/distributedcloud.spec":[{"author":{"_account_id":31954,"name":"Yuxing Jiang","email":"Yuxing.Jiang@windriver.com","username":"yuxing"},"change_message_id":"2ea2e395ad136bb9ae3246a05a23193999e7e63a","unresolved":true,"context_lines":[{"line_number":140,"context_line":"install -p -D -m 644 %{SOURCE2} %{buildroot}%{_unitdir}/dcmanager-manager.service"},{"line_number":141,"context_line":"install -p -D -m 644 %{SOURCE13} %{buildroot}%{_unitdir}/dcmanager-audit.service"},{"line_number":142,"context_line":"install -p -D -m 644 %{SOURCE17} %{buildroot}%{_unitdir}/dcmanager-audit-worker.service"},{"line_number":143,"context_line":"install -p -D -m 644 %{SOURCE17} %{buildroot}%{_unitdir}/dcmanager-state.service"},{"line_number":144,"context_line":"install -p -D -m 644 %{SOURCE14} %{buildroot}%{_unitdir}/dcmanager-orchestrator.service"},{"line_number":145,"context_line":"install -p -D -m 644 %{SOURCE9} %{buildroot}%{_tmpfilesdir}"},{"line_number":146,"context_line":"# install default config files"}],"source_content_type":"text/x-rpm-spec","patch_set":3,"id":"e3dc95a7_0a19df91","line":143,"range":{"start_line":143,"start_character":23,"end_line":143,"end_character":31},"updated":"2022-01-19 15:52:33.000000000","message":"This should be \"SOURCE18\"","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":140,"context_line":"install -p -D -m 644 %{SOURCE2} %{buildroot}%{_unitdir}/dcmanager-manager.service"},{"line_number":141,"context_line":"install -p -D -m 644 %{SOURCE13} %{buildroot}%{_unitdir}/dcmanager-audit.service"},{"line_number":142,"context_line":"install -p -D -m 644 %{SOURCE17} %{buildroot}%{_unitdir}/dcmanager-audit-worker.service"},{"line_number":143,"context_line":"install -p -D -m 644 %{SOURCE17} %{buildroot}%{_unitdir}/dcmanager-state.service"},{"line_number":144,"context_line":"install -p -D -m 644 %{SOURCE14} %{buildroot}%{_unitdir}/dcmanager-orchestrator.service"},{"line_number":145,"context_line":"install -p -D -m 644 %{SOURCE9} %{buildroot}%{_tmpfilesdir}"},{"line_number":146,"context_line":"# install default config files"}],"source_content_type":"text/x-rpm-spec","patch_set":3,"id":"16aaec62_e7c0dc57","line":143,"range":{"start_line":143,"start_character":23,"end_line":143,"end_character":31},"in_reply_to":"e3dc95a7_0a19df91","updated":"2022-01-20 22:00:49.000000000","message":"Actually I will remove this line and other references to dcmanager-state.service, since I didn\u0027t add a dcmanager-state.service unit file.\n\nI have no idea why these service files exist - surely they aren\u0027t used? We are using the SM framework for service lifecycle, not systemd.","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"}],"distributedcloud/dcmanager/api/controllers/v1/subclouds.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"53a05a14012c29cdd569d86c0292d24ece18ce64","unresolved":true,"context_lines":[{"line_number":1080,"context_line":"            try:"},{"line_number":1081,"context_line":"                # Inform dcmanager-state that subcloud has been updated."},{"line_number":1082,"context_line":"                # It will do all the real work..."},{"line_number":1083,"context_line":"                subcloud \u003d self.dcmanager_rpc_client.update_subcloud("},{"line_number":1084,"context_line":"                    context, subcloud_id, management_state\u003dmanagement_state,"},{"line_number":1085,"context_line":"                    description\u003ddescription, location\u003dlocation, group_id\u003dgroup_id,"},{"line_number":1086,"context_line":"                    data_install\u003ddata_install, force\u003dforce_flag)"}],"source_content_type":"text/x-python","patch_set":1,"id":"79cc088c_25a2ae53","line":1083,"range":{"start_line":1083,"start_character":27,"end_line":1083,"end_character":69},"updated":"2022-01-18 21:21:18.000000000","message":"the comment says dcmanager-state, but this is using dcmanager_rpc_client rather than dcmanager_state_rpc_client.","commit_id":"5b8357c639bb09722ef1b178f8d6bf47154e36ce"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"e3467f95b0f24c71c8f40c3c35aa67d39101c733","unresolved":false,"context_lines":[{"line_number":1080,"context_line":"            try:"},{"line_number":1081,"context_line":"                # Inform dcmanager-state that subcloud has been updated."},{"line_number":1082,"context_line":"                # It will do all the real work..."},{"line_number":1083,"context_line":"                subcloud \u003d self.dcmanager_rpc_client.update_subcloud("},{"line_number":1084,"context_line":"                    context, subcloud_id, management_state\u003dmanagement_state,"},{"line_number":1085,"context_line":"                    description\u003ddescription, location\u003dlocation, group_id\u003dgroup_id,"},{"line_number":1086,"context_line":"                    data_install\u003ddata_install, force\u003dforce_flag)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3d2eb390_05b7def0","line":1083,"range":{"start_line":1083,"start_character":27,"end_line":1083,"end_character":69},"in_reply_to":"79cc088c_25a2ae53","updated":"2022-01-18 22:58:14.000000000","message":"Ack","commit_id":"5b8357c639bb09722ef1b178f8d6bf47154e36ce"}],"distributedcloud/dcmanager/audit/service.py":[{"author":{"_account_id":28486,"name":"Tee Ngo","email":"tee.ngo@windriver.com","username":"teewrs"},"change_message_id":"78ba8471aecfe58fc8c2fccdbc45e8be8e37d0e0","unresolved":true,"context_lines":[{"line_number":68,"context_line":"    def start(self):"},{"line_number":69,"context_line":"        self.init_tgm()"},{"line_number":70,"context_line":"        self.init_audit_managers()"},{"line_number":71,"context_line":"        target \u003d oslo_messaging.Target(version\u003dself.rpc_api_version,"},{"line_number":72,"context_line":"                                       server\u003dself.host,"},{"line_number":73,"context_line":"                                       topic\u003dself.topic)"},{"line_number":74,"context_line":"        self.target \u003d target"},{"line_number":75,"context_line":"        self._rpc_server \u003d rpc_messaging.get_rpc_server(self.target, self)"},{"line_number":76,"context_line":"        self._rpc_server.start()"},{"line_number":77,"context_line":"        super(DCManagerAuditService, self).start()"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def init_tgm(self):"},{"line_number":80,"context_line":"        self.TG \u003d scheduler.ThreadGroupManager()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ae1c6c9a_55b7ba45","line":77,"range":{"start_line":71,"start_character":0,"end_line":77,"end_character":0},"updated":"2022-01-24 22:16:49.000000000","message":"Could you move this up to line 69 to be consistent with other dc services? Thx.","commit_id":"f1e793f801d1ff82e9858bda5fd587aecb817f27"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"c1c60c6d6c2166a645d1fd3d254ec97a785d45c4","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def start(self):"},{"line_number":69,"context_line":"        self.init_tgm()"},{"line_number":70,"context_line":"        self.init_audit_managers()"},{"line_number":71,"context_line":"        target \u003d oslo_messaging.Target(version\u003dself.rpc_api_version,"},{"line_number":72,"context_line":"                                       server\u003dself.host,"},{"line_number":73,"context_line":"                                       topic\u003dself.topic)"},{"line_number":74,"context_line":"        self.target \u003d target"},{"line_number":75,"context_line":"        self._rpc_server \u003d rpc_messaging.get_rpc_server(self.target, self)"},{"line_number":76,"context_line":"        self._rpc_server.start()"},{"line_number":77,"context_line":"        super(DCManagerAuditService, self).start()"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def init_tgm(self):"},{"line_number":80,"context_line":"        self.TG \u003d scheduler.ThreadGroupManager()"}],"source_content_type":"text/x-python","patch_set":6,"id":"372db015_e9079e09","line":77,"range":{"start_line":71,"start_character":0,"end_line":77,"end_character":0},"in_reply_to":"ae1c6c9a_55b7ba45","updated":"2022-01-25 19:05:02.000000000","message":"I\u0027ve fixed this up by moving the TG.start into the init_tgm() method (where you\u0027d expect it to be), and have left init_audit_managers() ahead of the oslo_messaging init block, in case there are messages in the queue.","commit_id":"f1e793f801d1ff82e9858bda5fd587aecb817f27"}],"distributedcloud/dcmanager/cmd/state.py":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"185f343def8771fed563b4bbc1eeae207e5a5f56","unresolved":true,"context_lines":[{"line_number":40,"context_line":"config.register_keystone_options()"},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(\u0027dcmanager.state\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"# CONF \u003d cfg.CONF"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":3,"id":"34918eb1_aee710aa","line":43,"updated":"2022-01-20 21:32:07.000000000","message":"nit: commented out line can be removed","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"config.register_keystone_options()"},{"line_number":41,"context_line":"LOG \u003d logging.getLogger(\u0027dcmanager.state\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"# CONF \u003d cfg.CONF"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":3,"id":"84b873e4_0852f445","line":43,"in_reply_to":"34918eb1_aee710aa","updated":"2022-01-20 22:00:49.000000000","message":"Done","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":28486,"name":"Tee Ngo","email":"tee.ngo@windriver.com","username":"teewrs"},"change_message_id":"78ba8471aecfe58fc8c2fccdbc45e8be8e37d0e0","unresolved":true,"context_lines":[{"line_number":54,"context_line":"    # Override values from /etc/dcmanager/dcmanager.conf specific"},{"line_number":55,"context_line":"    # to dcmanager-state:"},{"line_number":56,"context_line":"    cfg.CONF.set_override(\u0027max_pool_size\u0027, 10, group\u003d\u0027database\u0027)"},{"line_number":57,"context_line":"    cfg.CONF.set_override(\u0027max_overflow\u0027, 80, group\u003d\u0027database\u0027)"},{"line_number":58,"context_line":"    LOG.info(\"Starting...\")"},{"line_number":59,"context_line":"    LOG.debug(\"Configuration:\")"},{"line_number":60,"context_line":"    cfg.CONF.log_opt_values(LOG, logging.DEBUG)"}],"source_content_type":"text/x-python","patch_set":6,"id":"b127f97e_30f3b697","line":57,"range":{"start_line":57,"start_character":42,"end_line":57,"end_character":44},"updated":"2022-01-24 22:16:49.000000000","message":"I\u0027d change to 100. The pool should shrink after the \"rush\". This gives enough buffer for future scaling target. There is no harm if it is not used. Please confirm that the postgres connection setting is sufficient for worst case scenario.","commit_id":"f1e793f801d1ff82e9858bda5fd587aecb817f27"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"c1c60c6d6c2166a645d1fd3d254ec97a785d45c4","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    # Override values from /etc/dcmanager/dcmanager.conf specific"},{"line_number":55,"context_line":"    # to dcmanager-state:"},{"line_number":56,"context_line":"    cfg.CONF.set_override(\u0027max_pool_size\u0027, 10, group\u003d\u0027database\u0027)"},{"line_number":57,"context_line":"    cfg.CONF.set_override(\u0027max_overflow\u0027, 80, group\u003d\u0027database\u0027)"},{"line_number":58,"context_line":"    LOG.info(\"Starting...\")"},{"line_number":59,"context_line":"    LOG.debug(\"Configuration:\")"},{"line_number":60,"context_line":"    cfg.CONF.log_opt_values(LOG, logging.DEBUG)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ed1c780e_410d2ccc","line":57,"range":{"start_line":57,"start_character":42,"end_line":57,"end_character":44},"in_reply_to":"b127f97e_30f3b697","updated":"2022-01-25 19:05:02.000000000","message":"Done","commit_id":"f1e793f801d1ff82e9858bda5fd587aecb817f27"}],"distributedcloud/dcmanager/common/config.py":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"185f343def8771fed563b4bbc1eeae207e5a5f56","unresolved":true,"context_lines":[{"line_number":152,"context_line":"    cfg.IntOpt(\u0027orch_workers\u0027, default\u003d1,"},{"line_number":153,"context_line":"               help\u003d\u0027number of orchestrator workers\u0027),"},{"line_number":154,"context_line":"    cfg.IntOpt(\u0027state_workers\u0027, default\u003d4,"},{"line_number":155,"context_line":"               help\u003d\u0027number of audit workers\u0027),"},{"line_number":156,"context_line":"    cfg.IntOpt(\u0027audit_workers\u0027, default\u003d1,"},{"line_number":157,"context_line":"               help\u003d\u0027number of audit workers\u0027),"},{"line_number":158,"context_line":"    cfg.IntOpt(\u0027audit_worker_workers\u0027, default\u003d4,"}],"source_content_type":"text/x-python","patch_set":3,"id":"46ddf442_23624e53","line":155,"range":{"start_line":155,"start_character":31,"end_line":155,"end_character":37},"updated":"2022-01-20 21:32:07.000000000","message":"state\n\nwbn, to have some of these values configurable in the future via puppet (some other services are derived based on number of cpus, etc; though could also consider a service parameter based on size of cluster)","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    cfg.IntOpt(\u0027orch_workers\u0027, default\u003d1,"},{"line_number":153,"context_line":"               help\u003d\u0027number of orchestrator workers\u0027),"},{"line_number":154,"context_line":"    cfg.IntOpt(\u0027state_workers\u0027, default\u003d4,"},{"line_number":155,"context_line":"               help\u003d\u0027number of audit workers\u0027),"},{"line_number":156,"context_line":"    cfg.IntOpt(\u0027audit_workers\u0027, default\u003d1,"},{"line_number":157,"context_line":"               help\u003d\u0027number of audit workers\u0027),"},{"line_number":158,"context_line":"    cfg.IntOpt(\u0027audit_worker_workers\u0027, default\u003d4,"}],"source_content_type":"text/x-python","patch_set":3,"id":"21cfff85_ceab8717","line":155,"range":{"start_line":155,"start_character":31,"end_line":155,"end_character":37},"in_reply_to":"46ddf442_23624e53","updated":"2022-01-20 22:00:49.000000000","message":"As discussed, adding a TODO here - these should all be configured via puppet.","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a59bda1a86e98c8287dfd77cd8b1371fcf3d0221","unresolved":true,"context_lines":[{"line_number":155,"context_line":"    cfg.IntOpt(\u0027orch_workers\u0027, default\u003d1,"},{"line_number":156,"context_line":"               help\u003d\u0027number of orchestrator workers\u0027),"},{"line_number":157,"context_line":"    cfg.IntOpt(\u0027state_workers\u0027, default\u003d4,"},{"line_number":158,"context_line":"               help\u003d\u0027number of audit workers\u0027),"},{"line_number":159,"context_line":"    cfg.IntOpt(\u0027audit_workers\u0027, default\u003d1,"},{"line_number":160,"context_line":"               help\u003d\u0027number of audit workers\u0027),"},{"line_number":161,"context_line":"    cfg.IntOpt(\u0027audit_worker_workers\u0027, default\u003d4,"}],"source_content_type":"text/x-python","patch_set":5,"id":"77e12b0f_2f9d2e70","line":158,"range":{"start_line":158,"start_character":31,"end_line":158,"end_character":37},"updated":"2022-01-21 13:45:49.000000000","message":"\u0027state\u0027","commit_id":"e702533eb43c40bbd800aec0ca4e7d99d22157e2"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b7d7cb6c37443a491a5bc7deeefd1c74549efedc","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    cfg.IntOpt(\u0027orch_workers\u0027, default\u003d1,"},{"line_number":156,"context_line":"               help\u003d\u0027number of orchestrator workers\u0027),"},{"line_number":157,"context_line":"    cfg.IntOpt(\u0027state_workers\u0027, default\u003d4,"},{"line_number":158,"context_line":"               help\u003d\u0027number of audit workers\u0027),"},{"line_number":159,"context_line":"    cfg.IntOpt(\u0027audit_workers\u0027, default\u003d1,"},{"line_number":160,"context_line":"               help\u003d\u0027number of audit workers\u0027),"},{"line_number":161,"context_line":"    cfg.IntOpt(\u0027audit_worker_workers\u0027, default\u003d4,"}],"source_content_type":"text/x-python","patch_set":5,"id":"a3c955e2_be6a5e37","line":158,"range":{"start_line":158,"start_character":31,"end_line":158,"end_character":37},"in_reply_to":"77e12b0f_2f9d2e70","updated":"2022-01-21 18:29:46.000000000","message":"Done","commit_id":"e702533eb43c40bbd800aec0ca4e7d99d22157e2"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"38e4c6c2e30c289eb09be5ebfa6a86c782c12c6e","unresolved":true,"context_lines":[{"line_number":155,"context_line":"    cfg.IntOpt(\u0027orch_workers\u0027, default\u003d1,"},{"line_number":156,"context_line":"               help\u003d\u0027number of orchestrator workers\u0027),"},{"line_number":157,"context_line":"    cfg.IntOpt(\u0027state_workers\u0027, default\u003d4,"},{"line_number":158,"context_line":"               help\u003d\u0027number of audit workers\u0027),"},{"line_number":159,"context_line":"    cfg.IntOpt(\u0027audit_workers\u0027, default\u003d1,"},{"line_number":160,"context_line":"               help\u003d\u0027number of audit workers\u0027),"},{"line_number":161,"context_line":"    cfg.IntOpt(\u0027audit_worker_workers\u0027, default\u003d4,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5eda12c0_534627a6","line":158,"range":{"start_line":158,"start_character":31,"end_line":158,"end_character":37},"in_reply_to":"77e12b0f_2f9d2e70","updated":"2022-01-21 17:50:13.000000000","message":"Yeah, should fix this but otherwise I think it looks good.","commit_id":"e702533eb43c40bbd800aec0ca4e7d99d22157e2"},{"author":{"_account_id":28486,"name":"Tee Ngo","email":"tee.ngo@windriver.com","username":"teewrs"},"change_message_id":"78ba8471aecfe58fc8c2fccdbc45e8be8e37d0e0","unresolved":true,"context_lines":[{"line_number":154,"context_line":"               help\u003d\u0027number of workers\u0027),"},{"line_number":155,"context_line":"    cfg.IntOpt(\u0027orch_workers\u0027, default\u003d1,"},{"line_number":156,"context_line":"               help\u003d\u0027number of orchestrator workers\u0027),"},{"line_number":157,"context_line":"    cfg.IntOpt(\u0027state_workers\u0027, default\u003d4,"},{"line_number":158,"context_line":"               help\u003d\u0027number of state workers\u0027),"},{"line_number":159,"context_line":"    cfg.IntOpt(\u0027audit_workers\u0027, default\u003d1,"},{"line_number":160,"context_line":"               help\u003d\u0027number of audit workers\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"a8a7b219_433bd370","line":157,"range":{"start_line":157,"start_character":32,"end_line":157,"end_character":41},"updated":"2022-01-24 22:16:49.000000000","message":"Do we really need for 4 workers to handle state changes? Events that can lead the rush/spike are:\n  1. batch deployment (shouldn\u0027t need all 4)\n  2. hourly unconditional subcloud states update\n  3. management network outage (rare condition)\n\nMay want to check if the system is free of msg timeout error during soak test with 2 workers only and that dcmanager audit frequency is not compromised.","commit_id":"f1e793f801d1ff82e9858bda5fd587aecb817f27"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"c1c60c6d6c2166a645d1fd3d254ec97a785d45c4","unresolved":false,"context_lines":[{"line_number":154,"context_line":"               help\u003d\u0027number of workers\u0027),"},{"line_number":155,"context_line":"    cfg.IntOpt(\u0027orch_workers\u0027, default\u003d1,"},{"line_number":156,"context_line":"               help\u003d\u0027number of orchestrator workers\u0027),"},{"line_number":157,"context_line":"    cfg.IntOpt(\u0027state_workers\u0027, default\u003d4,"},{"line_number":158,"context_line":"               help\u003d\u0027number of state workers\u0027),"},{"line_number":159,"context_line":"    cfg.IntOpt(\u0027audit_workers\u0027, default\u003d1,"},{"line_number":160,"context_line":"               help\u003d\u0027number of audit workers\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"4625ce90_0ffdea8d","line":157,"range":{"start_line":157,"start_character":32,"end_line":157,"end_character":41},"in_reply_to":"a8a7b219_433bd370","updated":"2022-01-25 19:05:02.000000000","message":"It\u0027s actually quite remarkable how much difference there is between 2 and 4 workers, from the perspective of the rabbitmq queue processing for dcmanager-state as well as the total time to process the offline subclouds. And we again see message timeout errors.\n\nFor the worst-case 1000 subcloud outage:\n- The peak goes from ~70 messages in dcmanager-state queue for 4 workers up to ~700 with 2 workers.\n- The total time to process the outage climbs from ~4m up to ~28m","commit_id":"f1e793f801d1ff82e9858bda5fd587aecb817f27"}],"distributedcloud/dcmanager/manager/service.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"53a05a14012c29cdd569d86c0292d24ece18ce64","unresolved":true,"context_lines":[{"line_number":69,"context_line":"        # The following are initialized here, but assigned in start() which"},{"line_number":70,"context_line":"        # happens after the fork when spawning multiple worker processes"},{"line_number":71,"context_line":"        self.engine_id \u003d None"},{"line_number":72,"context_line":"        self.TG \u003d None"},{"line_number":73,"context_line":"        self.target \u003d None"},{"line_number":74,"context_line":"        self._rpc_server \u003d None"},{"line_number":75,"context_line":"        self.subcloud_manager \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"58b4dd3d_37167076","side":"PARENT","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":22},"updated":"2022-01-18 21:21:18.000000000","message":"might want to explain the ThreadGroupManager changes in the commit message.","commit_id":"d50ad87fe9ee2921d518f6b8de5433fc424e9fa0"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"e3467f95b0f24c71c8f40c3c35aa67d39101c733","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        # The following are initialized here, but assigned in start() which"},{"line_number":70,"context_line":"        # happens after the fork when spawning multiple worker processes"},{"line_number":71,"context_line":"        self.engine_id \u003d None"},{"line_number":72,"context_line":"        self.TG \u003d None"},{"line_number":73,"context_line":"        self.target \u003d None"},{"line_number":74,"context_line":"        self._rpc_server \u003d None"},{"line_number":75,"context_line":"        self.subcloud_manager \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b485d7c_8fc14d8e","side":"PARENT","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":22},"in_reply_to":"58b4dd3d_37167076","updated":"2022-01-18 22:58:14.000000000","message":"Added to section \u0027Other notable changes (from testing)\u0027","commit_id":"d50ad87fe9ee2921d518f6b8de5433fc424e9fa0"},{"author":{"_account_id":28486,"name":"Tee Ngo","email":"tee.ngo@windriver.com","username":"teewrs"},"change_message_id":"78ba8471aecfe58fc8c2fccdbc45e8be8e37d0e0","unresolved":true,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def start(self):"},{"line_number":85,"context_line":"        self.dcmanager_id \u003d uuidutils.generate_uuid()"},{"line_number":86,"context_line":"        self.init_tgm()"},{"line_number":87,"context_line":"        self.init_managers()"},{"line_number":88,"context_line":"        target \u003d oslo_messaging.Target(version\u003dself.rpc_api_version,"},{"line_number":89,"context_line":"                                       server\u003dself.host,"}],"source_content_type":"text/x-python","patch_set":6,"id":"70ce046a_da65c87a","side":"PARENT","line":86,"range":{"start_line":86,"start_character":0,"end_line":86,"end_character":23},"updated":"2022-01-24 22:16:49.000000000","message":"The threading is configured via executor_thread_pool_size \u003d 64 but please verify that the removal of this call does not have an impact on dcmanager performance in handling CLI requests.","commit_id":"d50ad87fe9ee2921d518f6b8de5433fc424e9fa0"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"c1c60c6d6c2166a645d1fd3d254ec97a785d45c4","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def start(self):"},{"line_number":85,"context_line":"        self.dcmanager_id \u003d uuidutils.generate_uuid()"},{"line_number":86,"context_line":"        self.init_tgm()"},{"line_number":87,"context_line":"        self.init_managers()"},{"line_number":88,"context_line":"        target \u003d oslo_messaging.Target(version\u003dself.rpc_api_version,"},{"line_number":89,"context_line":"                                       server\u003dself.host,"}],"source_content_type":"text/x-python","patch_set":6,"id":"6583a368_76d0e811","side":"PARENT","line":86,"range":{"start_line":86,"start_character":0,"end_line":86,"end_character":23},"in_reply_to":"70ce046a_da65c87a","updated":"2022-01-25 19:05:02.000000000","message":"As part of my data-gathering, I\u0027m regularly pulling data via \u0027dcmanager subcloud state\u0027 (every 30s) and have seen no degradation during the various outage and ramp-up scenarios.","commit_id":"d50ad87fe9ee2921d518f6b8de5433fc424e9fa0"}],"distributedcloud/dcmanager/manager/subcloud_manager.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"53a05a14012c29cdd569d86c0292d24ece18ce64","unresolved":true,"context_lines":[{"line_number":41,"context_line":"from dcorch.rpc import client as dcorch_rpc_client"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"from dcmanager.audit import rpcapi as dcmanager_audit_rpc_client"},{"line_number":44,"context_line":"from dcmanager.rpc import client as dcmanager_rpc_client"},{"line_number":45,"context_line":"from dcmanager.common import consts"},{"line_number":46,"context_line":"from dcmanager.common.consts import INVENTORY_FILE_POSTFIX"},{"line_number":47,"context_line":"from dcmanager.common import context"}],"source_content_type":"text/x-python","patch_set":1,"id":"7e26b316_990c61fd","line":44,"range":{"start_line":44,"start_character":5,"end_line":44,"end_character":18},"updated":"2022-01-18 21:21:18.000000000","message":"I think this should go down at line 51 to keep it alphabetical, no?","commit_id":"5b8357c639bb09722ef1b178f8d6bf47154e36ce"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"e3467f95b0f24c71c8f40c3c35aa67d39101c733","unresolved":false,"context_lines":[{"line_number":41,"context_line":"from dcorch.rpc import client as dcorch_rpc_client"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"from dcmanager.audit import rpcapi as dcmanager_audit_rpc_client"},{"line_number":44,"context_line":"from dcmanager.rpc import client as dcmanager_rpc_client"},{"line_number":45,"context_line":"from dcmanager.common import consts"},{"line_number":46,"context_line":"from dcmanager.common.consts import INVENTORY_FILE_POSTFIX"},{"line_number":47,"context_line":"from dcmanager.common import context"}],"source_content_type":"text/x-python","patch_set":1,"id":"4ea65dd0_962aa358","line":44,"range":{"start_line":44,"start_character":5,"end_line":44,"end_character":18},"in_reply_to":"7e26b316_990c61fd","updated":"2022-01-18 22:58:14.000000000","message":"Done","commit_id":"5b8357c639bb09722ef1b178f8d6bf47154e36ce"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"53a05a14012c29cdd569d86c0292d24ece18ce64","unresolved":true,"context_lines":[{"line_number":1228,"context_line":"                # set all endpoint statuses to unknown, except the dc-cert"},{"line_number":1229,"context_line":"                # endpoint which continues to be audited for unmanaged"},{"line_number":1230,"context_line":"                # subclouds"},{"line_number":1231,"context_line":"                self.state_rpc_client.update_subcloud_endpoint_status("},{"line_number":1232,"context_line":"                    context,"},{"line_number":1233,"context_line":"                    subcloud_name\u003dsubcloud.name,"},{"line_number":1234,"context_line":"                    endpoint_type\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"d3a2b3a8_1ef48d15","line":1231,"range":{"start_line":1231,"start_character":16,"end_line":1231,"end_character":70},"updated":"2022-01-18 21:21:18.000000000","message":"So previously the DB would have been updated by the time we returned in line 1267/1251 below, but now we\u0027re going to send an RPC \"cast\" message and continue on before the DB is updated.  Is that valid?\n\nIt would be safer to use an RPC call here, at least until we\u0027ve validated that a cast would not introduce race conditions.","commit_id":"5b8357c639bb09722ef1b178f8d6bf47154e36ce"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"dbf83a20859b6adff6e31dc1ef4477fe6fdab12d","unresolved":false,"context_lines":[{"line_number":1228,"context_line":"                # set all endpoint statuses to unknown, except the dc-cert"},{"line_number":1229,"context_line":"                # endpoint which continues to be audited for unmanaged"},{"line_number":1230,"context_line":"                # subclouds"},{"line_number":1231,"context_line":"                self.state_rpc_client.update_subcloud_endpoint_status("},{"line_number":1232,"context_line":"                    context,"},{"line_number":1233,"context_line":"                    subcloud_name\u003dsubcloud.name,"},{"line_number":1234,"context_line":"                    endpoint_type\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da117149_57e975f9","line":1231,"range":{"start_line":1231,"start_character":16,"end_line":1231,"end_character":70},"in_reply_to":"9d621f58_5c264229","updated":"2022-01-25 22:22:38.000000000","message":"Done","commit_id":"5b8357c639bb09722ef1b178f8d6bf47154e36ce"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"e3467f95b0f24c71c8f40c3c35aa67d39101c733","unresolved":true,"context_lines":[{"line_number":1228,"context_line":"                # set all endpoint statuses to unknown, except the dc-cert"},{"line_number":1229,"context_line":"                # endpoint which continues to be audited for unmanaged"},{"line_number":1230,"context_line":"                # subclouds"},{"line_number":1231,"context_line":"                self.state_rpc_client.update_subcloud_endpoint_status("},{"line_number":1232,"context_line":"                    context,"},{"line_number":1233,"context_line":"                    subcloud_name\u003dsubcloud.name,"},{"line_number":1234,"context_line":"                    endpoint_type\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9d621f58_5c264229","line":1231,"range":{"start_line":1231,"start_character":16,"end_line":1231,"end_character":70},"in_reply_to":"d3a2b3a8_1ef48d15","updated":"2022-01-18 22:58:14.000000000","message":"Yes, I agree. I missed the cast vs. call here. I will change this and do some more testing, as this will also affect overall timings.","commit_id":"5b8357c639bb09722ef1b178f8d6bf47154e36ce"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"9e92376b10105c3b61f65ad69a9604d1c8e14e83","unresolved":true,"context_lines":[{"line_number":1250,"context_line":"        return db_api.subcloud_db_model_to_dict(subcloud)"},{"line_number":1251,"context_line":""},{"line_number":1252,"context_line":"    def _do_update_subcloud_endpoint_status(self, context, subcloud_id,"},{"line_number":1253,"context_line":"                                            endpoint_type, sync_status,"},{"line_number":1254,"context_line":"                                            alarmable, ignore_endpoints\u003dNone):"},{"line_number":1255,"context_line":"        \"\"\"Update online/managed subcloud endpoint status"},{"line_number":1256,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"6af99448_453b0f39","line":1253,"updated":"2022-01-18 23:47:46.000000000","message":"This entire method should be deleted - it was moved into subcloud_state_manager.py","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"dbf83a20859b6adff6e31dc1ef4477fe6fdab12d","unresolved":false,"context_lines":[{"line_number":1250,"context_line":"        return db_api.subcloud_db_model_to_dict(subcloud)"},{"line_number":1251,"context_line":""},{"line_number":1252,"context_line":"    def _do_update_subcloud_endpoint_status(self, context, subcloud_id,"},{"line_number":1253,"context_line":"                                            endpoint_type, sync_status,"},{"line_number":1254,"context_line":"                                            alarmable, ignore_endpoints\u003dNone):"},{"line_number":1255,"context_line":"        \"\"\"Update online/managed subcloud endpoint status"},{"line_number":1256,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"573f889b_357c88de","line":1253,"in_reply_to":"6af99448_453b0f39","updated":"2022-01-25 22:22:38.000000000","message":"Done","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"}],"distributedcloud/dcmanager/rpc/client.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"a7feb82c3c94957e9d815b5f86795a7c418218e1","unresolved":true,"context_lines":[{"line_number":88,"context_line":"                                        sync_status\u003dconsts."},{"line_number":89,"context_line":"                                        SYNC_STATUS_OUT_OF_SYNC,"},{"line_number":90,"context_line":"                                        ignore_endpoints\u003dNone):"},{"line_number":91,"context_line":"        return self.cast(ctxt, self.make_msg(\u0027update_subcloud_endpoint_status\u0027,"},{"line_number":92,"context_line":"                                             subcloud_name\u003dsubcloud_name,"},{"line_number":93,"context_line":"                                             endpoint_type\u003dendpoint_type,"},{"line_number":94,"context_line":"                                             sync_status\u003dsync_status,"}],"source_content_type":"text/x-python","patch_set":2,"id":"4df5af32_0e93eec8","line":91,"range":{"start_line":91,"start_character":20,"end_line":91,"end_character":24},"updated":"2022-01-18 21:52:34.000000000","message":"Have we validated all callers to ensure that a cast (which results in asynchronous DB updates) is acceptable and won\u0027t cause race conditions?","commit_id":"f9879c5a7fca920d858817f68da804ab871fc321"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                        sync_status\u003dconsts."},{"line_number":89,"context_line":"                                        SYNC_STATUS_OUT_OF_SYNC,"},{"line_number":90,"context_line":"                                        ignore_endpoints\u003dNone):"},{"line_number":91,"context_line":"        return self.cast(ctxt, self.make_msg(\u0027update_subcloud_endpoint_status\u0027,"},{"line_number":92,"context_line":"                                             subcloud_name\u003dsubcloud_name,"},{"line_number":93,"context_line":"                                             endpoint_type\u003dendpoint_type,"},{"line_number":94,"context_line":"                                             sync_status\u003dsync_status,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae5e63c_fe809c8d","line":91,"range":{"start_line":91,"start_character":20,"end_line":91,"end_character":24},"in_reply_to":"19e9cb4f_62135759","updated":"2022-01-20 22:00:49.000000000","message":"Done","commit_id":"f9879c5a7fca920d858817f68da804ab871fc321"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"9e92376b10105c3b61f65ad69a9604d1c8e14e83","unresolved":true,"context_lines":[{"line_number":88,"context_line":"                                        sync_status\u003dconsts."},{"line_number":89,"context_line":"                                        SYNC_STATUS_OUT_OF_SYNC,"},{"line_number":90,"context_line":"                                        ignore_endpoints\u003dNone):"},{"line_number":91,"context_line":"        return self.cast(ctxt, self.make_msg(\u0027update_subcloud_endpoint_status\u0027,"},{"line_number":92,"context_line":"                                             subcloud_name\u003dsubcloud_name,"},{"line_number":93,"context_line":"                                             endpoint_type\u003dendpoint_type,"},{"line_number":94,"context_line":"                                             sync_status\u003dsync_status,"}],"source_content_type":"text/x-python","patch_set":2,"id":"506a1491_f9cf0ca6","line":91,"range":{"start_line":91,"start_character":20,"end_line":91,"end_character":24},"in_reply_to":"4df5af32_0e93eec8","updated":"2022-01-18 23:47:46.000000000","message":"Previously all the calls were asynchronous, so rather than force all calls to now be synchronous, I think we can modify this API to allow for both cases (cast and call).\n\nExisting RPC calls (before this commit) are all using cast so there should be no issues keeping them an asynchronous. \n\nHowever, you\u0027ve identified the one call within subcloud_manager.py which was synchronous before and should probably remain synchronous, just to be on the safe side (i.e. at subcloud_manager.py line 1230).\n\nRather than having two separate API calls, I\u0027d prefer to add an optional argument to the existing API to force a synchronous call (instead of cast). The argument would default to asynchronous since that is the main usage outside of subcloud_manager.py. Does that make sense?","commit_id":"f9879c5a7fca920d858817f68da804ab871fc321"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"6190d0557097aef3780e3c2948d9bebafda66106","unresolved":true,"context_lines":[{"line_number":88,"context_line":"                                        sync_status\u003dconsts."},{"line_number":89,"context_line":"                                        SYNC_STATUS_OUT_OF_SYNC,"},{"line_number":90,"context_line":"                                        ignore_endpoints\u003dNone):"},{"line_number":91,"context_line":"        return self.cast(ctxt, self.make_msg(\u0027update_subcloud_endpoint_status\u0027,"},{"line_number":92,"context_line":"                                             subcloud_name\u003dsubcloud_name,"},{"line_number":93,"context_line":"                                             endpoint_type\u003dendpoint_type,"},{"line_number":94,"context_line":"                                             sync_status\u003dsync_status,"}],"source_content_type":"text/x-python","patch_set":2,"id":"19e9cb4f_62135759","line":91,"range":{"start_line":91,"start_character":20,"end_line":91,"end_character":24},"in_reply_to":"506a1491_f9cf0ca6","updated":"2022-01-19 22:58:28.000000000","message":"I suggest we make a new RPC function update_subcloud_endpoint_status_sync() which does an RPC \"call\" to update_subcloud_endpoint_status.","commit_id":"f9879c5a7fca920d858817f68da804ab871fc321"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"185f343def8771fed563b4bbc1eeae207e5a5f56","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    \"\"\"Client to update subcloud availability."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    Version History:"},{"line_number":63,"context_line":"     1.0 - Initial version (Mitaka 1.0 release)"},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"90b7d60e_85c7d9ba","line":63,"range":{"start_line":63,"start_character":28,"end_line":63,"end_character":35},"updated":"2022-01-20 21:32:07.000000000","message":"\u0027Mitaka\u0027 is name for a prior Openstack release; should be removed in this comment","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    \"\"\"Client to update subcloud availability."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    Version History:"},{"line_number":63,"context_line":"     1.0 - Initial version (Mitaka 1.0 release)"},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"dd46ea01_14c9d693","line":63,"range":{"start_line":63,"start_character":28,"end_line":63,"end_character":35},"in_reply_to":"90b7d60e_85c7d9ba","updated":"2022-01-20 22:00:49.000000000","message":"Done","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":34119,"name":"Shrikumar Sharma","display_name":"Shrikumar Sharma","email":"shrikumar.sharma@windriver.com","username":"ssharma3"},"change_message_id":"36907fbe9ed5c0c49c7e36b51b12722ce1b3da07","unresolved":true,"context_lines":[{"line_number":63,"context_line":"     1.0 - Initial version (Mitaka 1.0 release)"},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def __init__(self):"},{"line_number":69,"context_line":"        super(SubcloudStateClient, self).__init__("}],"source_content_type":"text/x-python","patch_set":3,"id":"50cb2b11_a8115e30","line":66,"updated":"2022-01-19 14:41:11.000000000","message":"Suggestion: may be a good idea to store this in a common file. In future, the version can be changed in one central location rather than inside the source code itself.","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":63,"context_line":"     1.0 - Initial version (Mitaka 1.0 release)"},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def __init__(self):"},{"line_number":69,"context_line":"        super(SubcloudStateClient, self).__init__("}],"source_content_type":"text/x-python","patch_set":3,"id":"912feb1d_caeadf61","line":66,"in_reply_to":"50cb2b11_a8115e30","updated":"2022-01-20 22:00:49.000000000","message":"For now I will move this up to the top of the file and share it across the two classes.","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"185f343def8771fed563b4bbc1eeae207e5a5f56","unresolved":true,"context_lines":[{"line_number":71,"context_line":"            self.BASE_RPC_API_VERSION)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def update_subcloud_availability(self, ctxt,"},{"line_number":74,"context_line":"                                     subcloud_name,"},{"line_number":75,"context_line":"                                     availability_status,"},{"line_number":76,"context_line":"                                     update_state_only\u003dFalse,"},{"line_number":77,"context_line":"                                     audit_fail_count\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5214a15a_717752db","line":74,"updated":"2022-01-20 21:32:07.000000000","message":"a comment that this method is \u0027synchronous\u0027 wbn (and the one below is \u0027asynchronous\u0027 )\n\nnit: the sequence methods declaration here is reversed to the implementation in service.py","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            self.BASE_RPC_API_VERSION)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def update_subcloud_availability(self, ctxt,"},{"line_number":74,"context_line":"                                     subcloud_name,"},{"line_number":75,"context_line":"                                     availability_status,"},{"line_number":76,"context_line":"                                     update_state_only\u003dFalse,"},{"line_number":77,"context_line":"                                     audit_fail_count\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9011d181_3f5e6711","line":74,"in_reply_to":"5214a15a_717752db","updated":"2022-01-20 22:00:49.000000000","message":"Done","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":34119,"name":"Shrikumar Sharma","display_name":"Shrikumar Sharma","email":"shrikumar.sharma@windriver.com","username":"ssharma3"},"change_message_id":"36907fbe9ed5c0c49c7e36b51b12722ce1b3da07","unresolved":true,"context_lines":[{"line_number":102,"context_line":"     1.0 - Initial version (Mitaka 1.0 release)"},{"line_number":103,"context_line":"    \"\"\""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def __init__(self):"},{"line_number":108,"context_line":"        super(ManagerClient, self).__init__("}],"source_content_type":"text/x-python","patch_set":3,"id":"d3a41e7d_2a7d0f29","line":105,"updated":"2022-01-19 14:41:11.000000000","message":"Same as comment above.","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":102,"context_line":"     1.0 - Initial version (Mitaka 1.0 release)"},{"line_number":103,"context_line":"    \"\"\""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def __init__(self):"},{"line_number":108,"context_line":"        super(ManagerClient, self).__init__("}],"source_content_type":"text/x-python","patch_set":3,"id":"bb40a5ea_45830636","line":105,"in_reply_to":"d3a41e7d_2a7d0f29","updated":"2022-01-20 22:00:49.000000000","message":"Ack","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a59bda1a86e98c8287dfd77cd8b1371fcf3d0221","unresolved":true,"context_lines":[{"line_number":22,"context_line":"from dcmanager.common import messaging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class RPCClient(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ebc0ec20_ca219292","line":25,"updated":"2022-01-21 13:45:49.000000000","message":"ok for now, though the individual clients could diverge on rpcapi version based on the method supported in the particular release","commit_id":"e702533eb43c40bbd800aec0ca4e7d99d22157e2"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b7d7cb6c37443a491a5bc7deeefd1c74549efedc","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from dcmanager.common import messaging"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class RPCClient(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"477175f5_ca87718c","line":25,"in_reply_to":"ebc0ec20_ca219292","updated":"2022-01-21 18:29:46.000000000","message":"Good point. These versions are independent - so it doesn\u0027t make sense to have them in a common location. Moving this definition back into each class.","commit_id":"e702533eb43c40bbd800aec0ca4e7d99d22157e2"}],"distributedcloud/dcmanager/state/README.rst":[{"author":{"_account_id":31954,"name":"Yuxing Jiang","email":"Yuxing.Jiang@windriver.com","username":"yuxing"},"change_message_id":"2ea2e395ad136bb9ae3246a05a23193999e7e63a","unresolved":true,"context_lines":[{"line_number":10,"context_line":"    run DC Manager service in multi-worker mode, and establish RPC server"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"subcloud_manager.py:"},{"line_number":13,"context_line":"    Manages all subcloud related activities such as creation, deletion, "},{"line_number":14,"context_line":"    availability status, management state"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"audit_manager.py:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9e1366b5_c91d352f","line":13,"range":{"start_line":13,"start_character":71,"end_line":13,"end_character":72},"updated":"2022-01-19 15:52:33.000000000","message":"nit: remove the blanks in the end of lines in this page(line13, 17, 18)","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    run DC Manager service in multi-worker mode, and establish RPC server"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"subcloud_manager.py:"},{"line_number":13,"context_line":"    Manages all subcloud related activities such as creation, deletion, "},{"line_number":14,"context_line":"    availability status, management state"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"audit_manager.py:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7614973a_ed4ef173","line":13,"range":{"start_line":13,"start_character":71,"end_line":13,"end_character":72},"in_reply_to":"9e1366b5_c91d352f","updated":"2022-01-20 22:00:49.000000000","message":"This entire file needs to be updated to reflect that it\u0027s for the state service.","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"}],"distributedcloud/dcmanager/state/subcloud_state_manager.py":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"185f343def8771fed563b4bbc1eeae207e5a5f56","unresolved":true,"context_lines":[{"line_number":41,"context_line":"def sync_update_subcloud_endpoint_status(func):"},{"line_number":42,"context_line":"    \"\"\"Synchronized lock decorator for _update_subcloud_endpoint_status. \"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def _get_lock_and_call(*args, **kwargs):"},{"line_number":45,"context_line":"        \"\"\"Get a single fair lock per subcloud based on subcloud name. \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # subcloud name is the 3rd argument to"}],"source_content_type":"text/x-python","patch_set":3,"id":"342505dc_48b00450","line":44,"updated":"2022-01-20 21:32:07.000000000","message":"does this need to be an external lock (e.g. lockutils.synchronized(external\u003dTrue, ...) ) now that there are multiple state processes ?","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"def sync_update_subcloud_endpoint_status(func):"},{"line_number":42,"context_line":"    \"\"\"Synchronized lock decorator for _update_subcloud_endpoint_status. \"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def _get_lock_and_call(*args, **kwargs):"},{"line_number":45,"context_line":"        \"\"\"Get a single fair lock per subcloud based on subcloud name. \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # subcloud name is the 3rd argument to"}],"source_content_type":"text/x-python","patch_set":3,"id":"2eb95798_49d080c6","line":44,"in_reply_to":"342505dc_48b00450","updated":"2022-01-20 22:00:49.000000000","message":"Good catch! Looking at the oslo concurrency lockutils, external\u003dTrue is definitely required if it\u0027s multi-process.","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"}],"distributedcloud/ocf/dcmanager-state":[{"author":{"_account_id":31954,"name":"Yuxing Jiang","email":"Yuxing.Jiang@windriver.com","username":"yuxing"},"change_message_id":"2ea2e395ad136bb9ae3246a05a23193999e7e63a","unresolved":true,"context_lines":[{"line_number":5,"context_line":"#   Manages an OpenStack DC Manager State Service (dcmanager-state)"},{"line_number":6,"context_line":"#   process as an HA resource"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"# Copyright (c) 2017 Wind River Systems, Inc."},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"# SPDX-License-Identifier: Apache-2.0"},{"line_number":11,"context_line":"#"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"146fa2e0_784eb23a","line":8,"range":{"start_line":8,"start_character":16,"end_line":8,"end_character":21},"updated":"2022-01-19 15:52:33.000000000","message":"2022","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"b548464aeeed12222c5d805a950a6211893765a1","unresolved":false,"context_lines":[{"line_number":5,"context_line":"#   Manages an OpenStack DC Manager State Service (dcmanager-state)"},{"line_number":6,"context_line":"#   process as an HA resource"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"# Copyright (c) 2017 Wind River Systems, Inc."},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"# SPDX-License-Identifier: Apache-2.0"},{"line_number":11,"context_line":"#"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"cd2117ab_a6396cd8","line":8,"range":{"start_line":8,"start_character":16,"end_line":8,"end_character":21},"in_reply_to":"146fa2e0_784eb23a","updated":"2022-01-20 22:00:49.000000000","message":"Done","commit_id":"181994ff435ea53af8e23686a472b7fe66eb1d6d"}]}
