)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"8863aa32afec5cf1d067e9d3843c64d491316e3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9b2ee34c_6a4dab3f","updated":"2023-01-31 14:18:31.000000000","message":"Mostly looks good to me. I think if lookup() is handling the Command.result RowView case, it should handle the RowView case outside of the command as well--not sure if we should do it in a separate patch or just handle it here.\n\nAs completely unrelated aside, one of these days we may need to fix RowView. In cases where there is a referenced Row as a column, it returns that Row object and should probably return a RowView--I\u0027ve held off because I didn\u0027t want to pay the price of recursively converting fields. But we can probably just make the conversion happen on-demand.","commit_id":"b3e53e799b323e5abc243900e80615f2d338d78b"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"f8fadaa2fe475db2770f8aee45d6ab7508b88a39","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"45f6f4b1_ba8bb714","updated":"2023-02-01 22:53:59.000000000","message":"LGTM. I didn\u0027t remember/realize at the time I suggested it that os-vif still had the vsctl backend. If we need to backport this I guess we can just leave out the api change.","commit_id":"c8e7e9f619ce3b00ca86d42a3b18b81251d3c815"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9d0fcc95833a03c7354676435d5ef3b3bc793d3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"d084e62e_7795c33f","updated":"2023-02-01 17:24:39.000000000","message":"os-vif patch: https://review.opendev.org/c/openstack/os-vif/+/872391","commit_id":"c8e7e9f619ce3b00ca86d42a3b18b81251d3c815"}],"ovsdbapp/backend/ovs_idl/__init__.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"8863aa32afec5cf1d067e9d3843c64d491316e3a","unresolved":true,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        # Handle commands by simply returning its result"},{"line_number":194,"context_line":"        if isinstance(record, cmd.BaseCommand):"},{"line_number":195,"context_line":"            if isinstance(record.result, (rowview.RowView, idl.Row)):"},{"line_number":196,"context_line":"                # In case the command (creation) returns an existing record."},{"line_number":197,"context_line":"                return record.result"},{"line_number":198,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ac757227_26ccdc5f","line":195,"updated":"2023-01-31 14:18:31.000000000","message":"Should we also outside of Command objects have lookup(RowView()) return the RowView?","commit_id":"b3e53e799b323e5abc243900e80615f2d338d78b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7baeb0c2787f2f117b004537dbdaca8cef4f8f80","unresolved":true,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        # Handle commands by simply returning its result"},{"line_number":194,"context_line":"        if isinstance(record, cmd.BaseCommand):"},{"line_number":195,"context_line":"            if isinstance(record.result, (rowview.RowView, idl.Row)):"},{"line_number":196,"context_line":"                # In case the command (creation) returns an existing record."},{"line_number":197,"context_line":"                return record.result"},{"line_number":198,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"cbe4fb97_db26cdab","line":195,"in_reply_to":"ac757227_26ccdc5f","updated":"2023-01-31 18:00:46.000000000","message":"Sorry, I don\u0027t get what you are trying to explain here. Does it mean that in case of type(result)\u003dRowView, we should do a lookup(RowView)?\n\nIf so, why should we need it? Because the register could have been updated?","commit_id":"b3e53e799b323e5abc243900e80615f2d338d78b"}],"ovsdbapp/schema/ovn_northbound/commands.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d8f2e492fb6fcfb80fdd34632ce0113265216cc3","unresolved":true,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"5d91fca2_f1904e4e","line":1849,"updated":"2023-01-26 18:20:57.000000000","message":"lookup() should already handle this case https://github.com/openstack/ovsdbapp/blob/5f429b72303abbad7bbd88dfc621166e3faabf90/ovsdbapp/backend/ovs_idl/__init__.py#L192\n\nDo you think it\u0027d make sense to also just add support for Rows/RowViews as being equivalent to uuid in lookup()?","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"b4d8c0c37a34f39e0681f9a8bdcf52293c9d82ee","unresolved":false,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"08759475_86821061","line":1849,"in_reply_to":"072a0572_4509f221","updated":"2023-01-30 14:33:51.000000000","message":"OK, I got it, maybe you can then fix it here:\nhttps://github.com/openstack/ovsdbapp/blob/149d7db4a70fd9c87a6b6fe8275d779babd30374/ovsdbapp/schema/ovn_northbound/commands.py#L1752\nand here:\nhttps://github.com/openstack/ovsdbapp/blob/149d7db4a70fd9c87a6b6fe8275d779babd30374/ovsdbapp/schema/ovn_northbound/commands.py#L1462\nso that everywhere there is the same behavior?","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e4e656a0bdfb9f9072bdc3e47948e65875a5f50f","unresolved":false,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"b9d760c4_bdb6ba20","line":1849,"in_reply_to":"08759475_86821061","updated":"2023-01-30 14:38:34.000000000","message":"I\u0027ll create a launchpad bug to deal with these divergent method and push a patch to fix them.","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"a739f94127d0a70a30c80324005a66a0949c87e9","unresolved":true,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"72a2f587_456d63c5","line":1849,"in_reply_to":"183d8765_14e26cc0","updated":"2023-01-27 11:52:08.000000000","message":"\u003e By default, if we create a new register, we return the UUID only\n\n@Rodolfo, can you please explain in more detail. I checked with my patch and without it, adding a new entity or adding an existing one with \u0027may_exist\u0027 option returns the RowView. This logic is in the AddCommand.post_commit(). What am I doing wrong?","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"aff5800dae78ee75922887acfb1eea74139e86fc","unresolved":false,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"90bf8f5d_04d745ef","line":1849,"in_reply_to":"1943f457_57fb5d5c","updated":"2023-01-27 18:12:36.000000000","message":"But then post_commit() makes sure that the result contains a RowView https://github.com/openstack/ovsdbapp/blob/149d7db4a70fd9c87a6b6fe8275d779babd30374/ovsdbapp/backend/ovs_idl/command.py#L81","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"529ab5627da14167c9797807cb632fcfc875c30b","unresolved":true,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"0c2430c0_b0faa9d9","line":1849,"in_reply_to":"5d91fca2_f1904e4e","updated":"2023-01-27 10:01:36.000000000","message":"I also solved this problem for LoadBalancers, NATs and Routes, but I have not had time to send a request yet. To make it work I changed the assignment of the result here: https://github.com/openstack/ovsdbapp/blob/5f429b72303abbad7bbd88dfc621166e3faabf90/ovsdbapp/schema/ovn_northbound/commands.py#L1776\n\nI wrote like this:\nself.result \u003d hcg\n\nIf the *Command class is inherited from AddCommand class, and the entire result of the transaction is stored in a \"result\", and this *Command can be passed as an argument to any other commands. At the same time, in the add command, you need to specify all the columns that will be modified by subsequent commands, otherwise you will have to write a \u0027getattr()\u0027 for all columns in all commands.\nBut maybe i\u0027m wrong.","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"949cbce0ce0650a45eb871b9673eca2506c50945","unresolved":true,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfada449_e7288e76","line":1849,"in_reply_to":"5d91fca2_f1904e4e","updated":"2023-01-27 10:16:57.000000000","message":"Right, if can handle UUID, BaseCommand and RowViews in the _lookup method, that will simplify any other command. I\u0027ll test that.","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1c17fd317dbeef69e04f09cb27bfdd342290fec3","unresolved":false,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"1943f457_57fb5d5c","line":1849,"in_reply_to":"72a2f587_456d63c5","updated":"2023-01-27 17:07:55.000000000","message":"Check any \"add\" command. The result returned is the UUID of the new register. For example: https://github.com/openstack/ovsdbapp/blob/149d7db4a70fd9c87a6b6fe8275d779babd30374/ovsdbapp/schema/ovn_northbound/commands.py#L1776","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"066e35728efd47cd9d1d0638f190e715867e6849","unresolved":false,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"072a0572_4509f221","line":1849,"in_reply_to":"90bf8f5d_04d745ef","updated":"2023-01-30 09:20:47.000000000","message":"But this is after the \"run_idl\" execution. During a transaction, the add command will return in \"result\" the UUID of the new register. This is what we\u0027ll read in the next command that accepts the add command as input.\n\nIf we read the add command output when the transaction is finished, we receive the RewView object. But in this case, we need to differentiate if the add command returns an UUID (the register is being added within this transaction) or returns a RowView (the register already exists during this transaction).\n\nThis is why I did this: https://review.opendev.org/c/openstack/ovsdbapp/+/871836/8/ovsdbapp/backend/ovs_idl/__init__.py#195","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"147a38f7316b6ee9928463ef78b9a131d68c022f","unresolved":false,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"d66dd357_7d510fbc","line":1849,"in_reply_to":"b9d760c4_bdb6ba20","updated":"2023-01-30 15:04:52.000000000","message":"https://bugs.launchpad.net/ovsdbapp/+bug/2004170","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"66df618f79ed98a711e12774ed81ea1101db6fe9","unresolved":true,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"9d171b9a_85d92d06","line":1849,"in_reply_to":"bfada449_e7288e76","updated":"2023-01-27 10:19:44.000000000","message":"@Anton, I don\u0027t think we should change what an add command returns right now. By default, if we create a new register, we return the UUID only. If the register is already created, we return the RowView.\n\nWhat we need to adapt is the lookup method.","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"0c7869b69f14a5dc023e82d753a9fa5abc43396a","unresolved":true,"context_lines":[{"line_number":1846,"context_line":"        self.if_exists \u003d if_exists"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    def run_idl(self, txn):"},{"line_number":1849,"context_line":"        if isinstance(self.hcg_cmd_or_id, cmd.BaseCommand):"},{"line_number":1850,"context_line":"            hcg_id \u003d self.hcg_cmd_or_id.result"},{"line_number":1851,"context_line":"            if isinstance(hcg_id, rowview.RowView):"},{"line_number":1852,"context_line":"                hcg_id \u003d hcg_id.uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"183d8765_14e26cc0","line":1849,"in_reply_to":"bfada449_e7288e76","updated":"2023-01-27 10:27:58.000000000","message":"It seems that all these cases are already processed in the AddCommand.post_commit(), and in order to be able to pass the HAChassisGroupAdd command to another command, you need to change the assignment of the result as I wrote above.","commit_id":"7a569109255e4174b4a0c4314823046f966ce566"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0dc77d53daf83dd07e41369bbf2f722881cbdd32","unresolved":true,"context_lines":[{"line_number":1802,"context_line":"class HAChassisGroupAddChassisCommand(cmd.AddCommand):"},{"line_number":1803,"context_line":"    table_name \u003d \u0027HA_Chassis\u0027"},{"line_number":1804,"context_line":""},{"line_number":1805,"context_line":"    def __init__(self, api, hcg, chassis, priority, **columns):"},{"line_number":1806,"context_line":"        super().__init__(api)"},{"line_number":1807,"context_line":"        self.hcg \u003d hcg"},{"line_number":1808,"context_line":"        self.chassis \u003d chassis"}],"source_content_type":"text/x-python","patch_set":8,"id":"e4cece33_6abaefc7","line":1805,"range":{"start_line":1805,"start_character":28,"end_line":1805,"end_character":31},"updated":"2023-01-30 19:23:55.000000000","message":"One thing that concerns me is that ovsdbapp is a general purpose library and changing name of an argument can break users who use keyword arguments. Perhaps we should get hcg_id from **columns and print a deprecation message?","commit_id":"9fe20cb4ccaf13c73da56afc13b9aa7ac09c35c6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"05b18187e2566873563ee41c3dbd2d162257eee4","unresolved":false,"context_lines":[{"line_number":1802,"context_line":"class HAChassisGroupAddChassisCommand(cmd.AddCommand):"},{"line_number":1803,"context_line":"    table_name \u003d \u0027HA_Chassis\u0027"},{"line_number":1804,"context_line":""},{"line_number":1805,"context_line":"    def __init__(self, api, hcg, chassis, priority, **columns):"},{"line_number":1806,"context_line":"        super().__init__(api)"},{"line_number":1807,"context_line":"        self.hcg \u003d hcg"},{"line_number":1808,"context_line":"        self.chassis \u003d chassis"}],"source_content_type":"text/x-python","patch_set":8,"id":"d12f979d_062010c2","line":1805,"range":{"start_line":1805,"start_character":28,"end_line":1805,"end_character":31},"in_reply_to":"dbeb4beb_9c02f60e","updated":"2023-01-31 12:27:43.000000000","message":"Good point","commit_id":"9fe20cb4ccaf13c73da56afc13b9aa7ac09c35c6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f75f8dffc2b84ace8c598c1d41e3bf44ba66b0e3","unresolved":false,"context_lines":[{"line_number":1802,"context_line":"class HAChassisGroupAddChassisCommand(cmd.AddCommand):"},{"line_number":1803,"context_line":"    table_name \u003d \u0027HA_Chassis\u0027"},{"line_number":1804,"context_line":""},{"line_number":1805,"context_line":"    def __init__(self, api, hcg, chassis, priority, **columns):"},{"line_number":1806,"context_line":"        super().__init__(api)"},{"line_number":1807,"context_line":"        self.hcg \u003d hcg"},{"line_number":1808,"context_line":"        self.chassis \u003d chassis"}],"source_content_type":"text/x-python","patch_set":8,"id":"dbeb4beb_9c02f60e","line":1805,"range":{"start_line":1805,"start_character":28,"end_line":1805,"end_character":31},"in_reply_to":"e4cece33_6abaefc7","updated":"2023-01-31 09:00:39.000000000","message":"I\u0027ll keep the previous name.","commit_id":"9fe20cb4ccaf13c73da56afc13b9aa7ac09c35c6"}],"ovsdbapp/utils.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0dc77d53daf83dd07e41369bbf2f722881cbdd32","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import netaddr"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from ovs.db import idl"},{"line_number":18,"context_line":"from ovsdbapp.backend.ovs_idl import command"},{"line_number":19,"context_line":"from ovsdbapp.backend.ovs_idl import rowview"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1858981f_c8f635e6","line":17,"updated":"2023-01-30 19:23:55.000000000","message":"ovs is in this case 3rd party library","commit_id":"9fe20cb4ccaf13c73da56afc13b9aa7ac09c35c6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f75f8dffc2b84ace8c598c1d41e3bf44ba66b0e3","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import netaddr"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from ovs.db import idl"},{"line_number":18,"context_line":"from ovsdbapp.backend.ovs_idl import command"},{"line_number":19,"context_line":"from ovsdbapp.backend.ovs_idl import rowview"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"72527aff_a326589b","line":17,"in_reply_to":"1858981f_c8f635e6","updated":"2023-01-31 09:00:39.000000000","message":"Done","commit_id":"9fe20cb4ccaf13c73da56afc13b9aa7ac09c35c6"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"8863aa32afec5cf1d067e9d3843c64d491316e3a","unresolved":true,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def get_uuid(reg_uuid_or_cmd):"},{"line_number":87,"context_line":"    \"\"\"Return the UUID of a UUID itself or a BaseCommand\"\"\""},{"line_number":88,"context_line":"    if isinstance(reg_uuid_or_cmd, command.BaseCommand):"},{"line_number":89,"context_line":"        reg_uuid \u003d reg_uuid_or_cmd.result"},{"line_number":90,"context_line":"        if isinstance(reg_uuid, (rowview.RowView, idl.Row)):"},{"line_number":91,"context_line":"            reg_uuid \u003d reg_uuid.uuid"}],"source_content_type":"text/x-python","patch_set":9,"id":"2c2a48ad_1ce5bebe","line":88,"range":{"start_line":88,"start_character":35,"end_line":88,"end_character":54},"updated":"2023-01-31 14:18:31.000000000","message":"Since this file is outside of a Backend, this should be ovsdbapp.api.Command.","commit_id":"b3e53e799b323e5abc243900e80615f2d338d78b"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"cb6252c8a9b07d23c98049c5c6d9b2ccfcc074e7","unresolved":true,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def get_uuid(reg_uuid_or_cmd):"},{"line_number":87,"context_line":"    \"\"\"Return the UUID of a UUID itself or a BaseCommand\"\"\""},{"line_number":88,"context_line":"    if isinstance(reg_uuid_or_cmd, command.BaseCommand):"},{"line_number":89,"context_line":"        reg_uuid \u003d reg_uuid_or_cmd.result"},{"line_number":90,"context_line":"        if isinstance(reg_uuid, (rowview.RowView, idl.Row)):"},{"line_number":91,"context_line":"            reg_uuid \u003d reg_uuid.uuid"}],"source_content_type":"text/x-python","patch_set":9,"id":"f92399a9_5a96e6e8","line":88,"range":{"start_line":88,"start_character":35,"end_line":88,"end_character":54},"in_reply_to":"2c2a48ad_1ce5bebe","updated":"2023-01-31 14:24:25.000000000","message":"api.Command should probably also specify a \"result\" abstract property if it is something that other Backends should be required to support. (Just in case some day we get to resurrect the vsctl backend into an ovn-sbctl daemon mode backend, etc.)","commit_id":"b3e53e799b323e5abc243900e80615f2d338d78b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7baeb0c2787f2f117b004537dbdaca8cef4f8f80","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def get_uuid(reg_uuid_or_cmd):"},{"line_number":87,"context_line":"    \"\"\"Return the UUID of a UUID itself or a BaseCommand\"\"\""},{"line_number":88,"context_line":"    if isinstance(reg_uuid_or_cmd, command.BaseCommand):"},{"line_number":89,"context_line":"        reg_uuid \u003d reg_uuid_or_cmd.result"},{"line_number":90,"context_line":"        if isinstance(reg_uuid, (rowview.RowView, idl.Row)):"},{"line_number":91,"context_line":"            reg_uuid \u003d reg_uuid.uuid"}],"source_content_type":"text/x-python","patch_set":9,"id":"e2933e24_a35733b5","line":88,"range":{"start_line":88,"start_character":35,"end_line":88,"end_character":54},"in_reply_to":"f92399a9_5a96e6e8","updated":"2023-01-31 18:00:46.000000000","message":"Done\n\nActually checking some implementations for api.Command, I found [1] (incorrectly implemented, because this class should be abstract).\n\nIn order to implement this abstract property, I would need first to change the os-vif code.\n\n[1]https://github.com/openstack/os-vif/blob/03417ac879533f7c4b75b0834afec52bef17a74f/vif_plug_ovs/ovsdb/impl_vsctl.py#L124","commit_id":"b3e53e799b323e5abc243900e80615f2d338d78b"}]}
