)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduces the client bindings for the trunk"},{"line_number":10,"context_line":"extension. It uses the openstackclient framework, and"},{"line_number":11,"context_line":"thus requires the openstack client to work."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I6fe1dbd81813fae234801a61c0e3d89f9e7c791e"},{"line_number":14,"context_line":"Co-authored-by: SongmingYan \u003cyan.songming@zte.com.cn\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dada55a8_4fa28faf","line":11,"updated":"2016-07-19 21:57:26.000000000","message":"maybe adds a [1] in case the server side patch takes a little longer to merge?\n\nDepends-on: Ibe39378d43b1d63c2b006c2da574f52d9934a0df","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduces the client bindings for the trunk"},{"line_number":10,"context_line":"extension. It uses the openstackclient framework, and"},{"line_number":11,"context_line":"thus requires the openstack client to work."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I6fe1dbd81813fae234801a61c0e3d89f9e7c791e"},{"line_number":14,"context_line":"Co-authored-by: SongmingYan \u003cyan.songming@zte.com.cn\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dada55a8_93f4ad87","line":11,"in_reply_to":"dada55a8_4fa28faf","updated":"2016-07-20 02:44:37.000000000","message":"Done","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":11,"context_line":"thus requires the openstack client to work."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I6fe1dbd81813fae234801a61c0e3d89f9e7c791e"},{"line_number":14,"context_line":"Co-authored-by: SongmingYan \u003cyan.songming@zte.com.cn\u003e"},{"line_number":15,"context_line":"Partial-implements: blueprint vlan-aware-vms"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dada55a8_afe34b04","line":14,"updated":"2016-07-19 21:57:26.000000000","message":"consider adding yourself as coauthor.","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"thus requires the openstack client to work."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I6fe1dbd81813fae234801a61c0e3d89f9e7c791e"},{"line_number":14,"context_line":"Co-authored-by: SongmingYan \u003cyan.songming@zte.com.cn\u003e"},{"line_number":15,"context_line":"Partial-implements: blueprint vlan-aware-vms"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dada55a8_b3f9f182","line":14,"in_reply_to":"dada55a8_afe34b04","updated":"2016-07-20 02:44:37.000000000","message":"Done","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b9062883e6d64a1b8c9a3fa1440935fc65fb2304","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Abhishek Raut \u003crauta@vmware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-07-11 09:25:57 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add trunk commands to neutronclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduces the client bindings for the trunk"},{"line_number":10,"context_line":"extension. It uses the openstackclient framework, and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"dada55a8_ccd92824","line":7,"updated":"2016-07-21 00:41:09.000000000","message":"I guess this should be to openstackclient, actually","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"79bb17fdaf735b9101477fa80ff210f553e9a274","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Abhishek Raut \u003crauta@vmware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-07-11 09:25:57 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add trunk commands to neutronclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduces the client bindings for the trunk"},{"line_number":10,"context_line":"extension. It uses the openstackclient framework, and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"dada55a8_4256a1ce","line":7,"in_reply_to":"dada55a8_ccd92824","updated":"2016-07-21 01:42:45.000000000","message":"Done","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"82b40fc16466da40251f9e57a2bd044f9fe46ab9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch introduces the client bindings for the trunk"},{"line_number":10,"context_line":"extension. It uses the openstackclient framework, and"},{"line_number":11,"context_line":"thus requires the openstack client to work."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I6fe1dbd81813fae234801a61c0e3d89f9e7c791e"},{"line_number":14,"context_line":"Co-authored-by: SongmingYan \u003cyan.songming@zte.com.cn\u003e"},{"line_number":15,"context_line":"Co-authored-by: Abhishek Raut \u003crauta@vmware.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"bacf61ea_760edce5","line":12,"updated":"2016-08-02 00:05:32.000000000","message":"docimpact/release note?","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"}],"neutronclient/osc/v2/trunk/__init__.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"dada55a8_15a1caa3","line":1,"updated":"2016-07-19 21:57:26.000000000","message":"One comment/question I had in general is how we deal with extensions or lack thereof. So say for instances that the trunk plugin is not configured, today when using the neutron client we get the \u0027nasty\u0027\n\nThe resource could not be found.\u003cbr /\u003e\u003cbr /\u003e\n\nI was wondering if we could do something cleaner here, and perhaps check for the extension prior to issuing the command? Thoughts?","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"dada55a8_5387d5d6","line":1,"in_reply_to":"dada55a8_15a1caa3","updated":"2016-07-20 02:44:37.000000000","message":"sounds like a plan.. will get onto this after adding subports","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"}],"neutronclient/osc/v2/trunk/network_trunk.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"c07060285fbc49e392a19fb83e7375a6b19bfc09","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                ) for s in data[SUB_PORTS]))"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"class RemoveSubports(command.Command):"},{"line_number":254,"context_line":"    \"\"\"Remove sub-ports for a given network trunk.\"\"\""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":15,"id":"bacf61ea_c46d1a34","line":253,"updated":"2016-07-28 02:35:52.000000000","message":"if I do:\n\nopenstack network trunk remove subport $TRUNK_NAME\n\nI was expecting to complain to tell me about missing arguments but apparently the request is sent to the server without a body. Can you confirm?","commit_id":"aea9348234872d1a1fa464f437021e36c4b56f48"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"5774de96707a45492299957bf4c4cd72364c530c","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                ) for s in data[SUB_PORTS]))"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"class RemoveSubports(command.Command):"},{"line_number":254,"context_line":"    \"\"\"Remove sub-ports for a given network trunk.\"\"\""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":15,"id":"bacf61ea_8dab4589","line":253,"in_reply_to":"bacf61ea_c46d1a34","updated":"2016-07-28 04:29:55.000000000","message":"yes.. made them required.. also added a couple of tests\nthanks for checking this out","commit_id":"aea9348234872d1a1fa464f437021e36c4b56f48"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"40c9a0d792c5a062114c502099047fa8f9cf8c36","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from osc_lib import exceptions"},{"line_number":22,"context_line":"from osc_lib import utils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutronclient._i18n import _"},{"line_number":27,"context_line":"from neutronclient.common import utils as n_utils"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_1f3f57d7","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":62},"updated":"2016-07-28 15:45:34.000000000","message":"We discussed the usage of identity.common like this in this week OSC meeting. We agreed that this kind of things is a potential export of osc-lib. Until it is exported via osc_lib, it is better to collect our requirements to osc-lib. I proposed a patch https://review.openstack.org/#/c/348097/1 to collect these kinds of inputs. These modules in my patch works as a transient solution. You can use functions in neutronclient.osc.utils or osc.v2.utils, and you can also feel free to update my patch.\n\nI copied add_project_domain_option_to_parser(), but I haven\u0027t mirrored find_project() yet.","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"765d9af6ae6267716c17dd94f79abfea3b0b80d7","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from osc_lib import exceptions"},{"line_number":22,"context_line":"from osc_lib import utils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutronclient._i18n import _"},{"line_number":27,"context_line":"from neutronclient.common import utils as n_utils"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_f0854d59","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":62},"in_reply_to":"bacf61ea_1f3f57d7","updated":"2016-07-28 17:10:30.000000000","message":"I like the idea of avoiding explicit openstaclient imports in non-test code and wrap those into a single place like neutronclient.osc.utils. It\u0027ll make the switch less painful later. But are you suggesting here that the local utils module is an actual clone of the osc functionality? Or is it wrapping functionality not yet available in osc_lib?","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e8d07f1e03f8e002e971f572c743ee70cd522c02","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from osc_lib import exceptions"},{"line_number":22,"context_line":"from osc_lib import utils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutronclient._i18n import _"},{"line_number":27,"context_line":"from neutronclient.common import utils as n_utils"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_57c4045e","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":62},"in_reply_to":"bacf61ea_f0854d59","updated":"2016-07-28 21:26:41.000000000","message":"will get to this in the next patch","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"40c9a0d792c5a062114c502099047fa8f9cf8c36","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutronclient._i18n import _"},{"line_number":27,"context_line":"from neutronclient.common import utils as n_utils"},{"line_number":28,"context_line":"from neutronclient.neutron import v2_0 as neutronV20"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_1678f6c3","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":52},"updated":"2016-07-28 15:45:34.000000000","message":"I proposed a patch to move find_resource variants to client.Client class.\nhttps://review.openstack.org/#/c/348096/\n\nWe can refactor the code later, but your eye would be appreciated.","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e8d07f1e03f8e002e971f572c743ee70cd522c02","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutronclient._i18n import _"},{"line_number":27,"context_line":"from neutronclient.common import utils as n_utils"},{"line_number":28,"context_line":"from neutronclient.neutron import v2_0 as neutronV20"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_d7ae3497","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":52},"in_reply_to":"bacf61ea_1678f6c3","updated":"2016-07-28 21:26:41.000000000","message":"will get to this in the next patch","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"40c9a0d792c5a062114c502099047fa8f9cf8c36","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class CreateNetworkTrunk(command.ShowOne):"},{"line_number":38,"context_line":"    \"\"\"Create a network trunk for a given project.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def get_parser(self, prog_name):"},{"line_number":41,"context_line":"        parser \u003d super(CreateNetworkTrunk, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_5630ae01","line":38,"range":{"start_line":38,"start_character":49,"end_line":38,"end_character":50},"updated":"2016-07-28 15:45:34.000000000","message":"OSC command help does not contain a period.","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"765d9af6ae6267716c17dd94f79abfea3b0b80d7","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class CreateNetworkTrunk(command.ShowOne):"},{"line_number":38,"context_line":"    \"\"\"Create a network trunk for a given project.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def get_parser(self, prog_name):"},{"line_number":41,"context_line":"        parser \u003d super(CreateNetworkTrunk, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_70f5ddc9","line":38,"range":{"start_line":38,"start_character":49,"end_line":38,"end_character":50},"in_reply_to":"bacf61ea_5630ae01","updated":"2016-07-28 17:10:30.000000000","message":"oh, the help is taken from the docstring? That\u0027s rather confusing because I am used to end the docstring with a period!","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e8d07f1e03f8e002e971f572c743ee70cd522c02","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class CreateNetworkTrunk(command.ShowOne):"},{"line_number":38,"context_line":"    \"\"\"Create a network trunk for a given project.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def get_parser(self, prog_name):"},{"line_number":41,"context_line":"        parser \u003d super(CreateNetworkTrunk, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_fc4d269a","line":38,"range":{"start_line":38,"start_character":49,"end_line":38,"end_character":50},"in_reply_to":"bacf61ea_70f5ddc9","updated":"2016-07-28 21:26:41.000000000","message":"so was i.. i removed the periods everywhere","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"40c9a0d792c5a062114c502099047fa8f9cf8c36","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"class AddSubports(command.ShowOne):"},{"line_number":199,"context_line":"    \"\"\"Add sub-ports for a given network trunk.\"\"\""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def get_parser(self, prog_name):"},{"line_number":202,"context_line":"        parser \u003d super(AddSubports, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_f609e232","line":199,"range":{"start_line":199,"start_character":21,"end_line":199,"end_character":24},"updated":"2016-07-28 15:45:34.000000000","message":"for -\u003e to?","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e8d07f1e03f8e002e971f572c743ee70cd522c02","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"class AddSubports(command.ShowOne):"},{"line_number":199,"context_line":"    \"\"\"Add sub-ports for a given network trunk.\"\"\""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def get_parser(self, prog_name):"},{"line_number":202,"context_line":"        parser \u003d super(AddSubports, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_bc544e21","line":199,"range":{"start_line":199,"start_character":21,"end_line":199,"end_character":24},"in_reply_to":"bacf61ea_5ad27ad3","updated":"2016-07-28 21:26:41.000000000","message":"Done","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"5a8ba2c199252cf8c7e32271c1a9901d293dfaee","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"class AddSubports(command.ShowOne):"},{"line_number":199,"context_line":"    \"\"\"Add sub-ports for a given network trunk.\"\"\""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def get_parser(self, prog_name):"},{"line_number":202,"context_line":"        parser \u003d super(AddSubports, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_5ad27ad3","line":199,"range":{"start_line":199,"start_character":21,"end_line":199,"end_character":24},"in_reply_to":"bacf61ea_f609e232","updated":"2016-07-28 17:02:39.000000000","message":"+1","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"5a8ba2c199252cf8c7e32271c1a9901d293dfaee","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        return columns, data"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"class ListSubports(command.Lister):"},{"line_number":231,"context_line":"    \"\"\"List all sub-ports for a given network trunk.\"\"\""},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_6d36aae8","line":230,"updated":"2016-07-28 17:02:39.000000000","message":"It looks like there is UT coverage for all but this class.","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e8d07f1e03f8e002e971f572c743ee70cd522c02","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        return columns, data"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"class ListSubports(command.Lister):"},{"line_number":231,"context_line":"    \"\"\"List all sub-ports for a given network trunk.\"\"\""},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_3c3fbed7","line":230,"in_reply_to":"bacf61ea_6d36aae8","updated":"2016-07-28 21:26:41.000000000","message":"Done","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"40c9a0d792c5a062114c502099047fa8f9cf8c36","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"class RemoveSubports(command.Command):"},{"line_number":255,"context_line":"    \"\"\"Remove sub-ports for a given network trunk.\"\"\""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def get_parser(self, prog_name):"},{"line_number":258,"context_line":"        parser \u003d super(RemoveSubports, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_36041a16","line":255,"range":{"start_line":255,"start_character":24,"end_line":255,"end_character":27},"updated":"2016-07-28 15:45:34.000000000","message":"for -\u003e from ?","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"5a8ba2c199252cf8c7e32271c1a9901d293dfaee","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"class RemoveSubports(command.Command):"},{"line_number":255,"context_line":"    \"\"\"Remove sub-ports for a given network trunk.\"\"\""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def get_parser(self, prog_name):"},{"line_number":258,"context_line":"        parser \u003d super(RemoveSubports, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_3ad506b9","line":255,"range":{"start_line":255,"start_character":24,"end_line":255,"end_character":27},"in_reply_to":"bacf61ea_36041a16","updated":"2016-07-28 17:02:39.000000000","message":"+1","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e8d07f1e03f8e002e971f572c743ee70cd522c02","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"class RemoveSubports(command.Command):"},{"line_number":255,"context_line":"    \"\"\"Remove sub-ports for a given network trunk.\"\"\""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def get_parser(self, prog_name):"},{"line_number":258,"context_line":"        parser \u003d super(RemoveSubports, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_7c2136b4","line":255,"range":{"start_line":255,"start_character":24,"end_line":255,"end_character":27},"in_reply_to":"bacf61ea_3ad506b9","updated":"2016-07-28 21:26:41.000000000","message":"Done","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a64d7f6c1586f231f8e384ef33f04bd996f69e77","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            help\u003d_(\"Parent port belonging to this trunk (name or ID)\")"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":59,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_b8c9be5b","line":56,"range":{"start_line":56,"start_character":15,"end_line":56,"end_character":23},"updated":"2016-07-29 19:25:05.000000000","message":"It probably makes sense to use --subport instead of --sub-port throughout since it matches the command object used on other commands.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a9373c7ac8dda5cd8037ebccf568f0cc01a6a1e5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            help\u003d_(\"Parent port belonging to this trunk (name or ID)\")"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":59,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_6a33e9ab","line":56,"range":{"start_line":56,"start_character":15,"end_line":56,"end_character":23},"in_reply_to":"bacf61ea_b8c9be5b","updated":"2016-07-29 22:47:00.000000000","message":"Done","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"d34368acd95ccae065b2771b235e90d22cf94cf1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":59,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":60,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027 \""},{"line_number":61,"context_line":"                   \"(--sub-port) option can be repeated)\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_3f6ad8ee","line":58,"range":{"start_line":58,"start_character":55,"end_line":58,"end_character":71},"updated":"2016-07-29 18:28:19.000000000","message":"FYI: osc-lib has parser actions for key\u003dvalue strings.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a9373c7ac8dda5cd8037ebccf568f0cc01a6a1e5","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":59,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":60,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027 \""},{"line_number":61,"context_line":"                   \"(--sub-port) option can be repeated)\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_8d011708","line":58,"range":{"start_line":58,"start_character":55,"end_line":58,"end_character":71},"in_reply_to":"bacf61ea_3f6ad8ee","updated":"2016-07-29 22:47:00.000000000","message":"Done","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"d34368acd95ccae065b2771b235e90d22cf94cf1","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            raise exceptions.CommandError(msg)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class ListNetworkTrunks(command.Lister):"},{"line_number":129,"context_line":"    \"\"\"List all network trunks\"\"\""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_5f4cec9d","line":128,"range":{"start_line":128,"start_character":6,"end_line":128,"end_character":23},"updated":"2016-07-29 18:28:19.000000000","message":"ListNetworkTrunk matches the command name.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a9373c7ac8dda5cd8037ebccf568f0cc01a6a1e5","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            raise exceptions.CommandError(msg)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class ListNetworkTrunks(command.Lister):"},{"line_number":129,"context_line":"    \"\"\"List all network trunks\"\"\""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_cd078f16","line":128,"range":{"start_line":128,"start_character":6,"end_line":128,"end_character":23},"in_reply_to":"bacf61ea_5f4cec9d","updated":"2016-07-29 22:47:00.000000000","message":"Done","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"d34368acd95ccae065b2771b235e90d22cf94cf1","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        return columns, data"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"class AddSubports(command.ShowOne):"},{"line_number":201,"context_line":"    \"\"\"Add sub-ports to a given network trunk\"\"\""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_ff1b20c8","line":200,"range":{"start_line":200,"start_character":5,"end_line":200,"end_character":17},"updated":"2016-07-29 18:28:19.000000000","message":"Similar to the classes above, I suggest that the class name align with the full command name.  This comment applies to commands below as well.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a9373c7ac8dda5cd8037ebccf568f0cc01a6a1e5","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        return columns, data"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"class AddSubports(command.ShowOne):"},{"line_number":201,"context_line":"    \"\"\"Add sub-ports to a given network trunk\"\"\""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_2d190b7a","line":200,"range":{"start_line":200,"start_character":5,"end_line":200,"end_character":17},"in_reply_to":"bacf61ea_ff1b20c8","updated":"2016-07-29 22:47:00.000000000","message":"Done","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"d34368acd95ccae065b2771b235e90d22cf94cf1","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_a2c86fa9","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"updated":"2016-07-29 18:28:19.000000000","message":"This doesn\u0027t really align with the OSC command structure \"\u003cobject-1\u003e \u003caction\u003e \u003cobject-2\u003e\".  Another is to merge this into the \"network trunk set\" command.  Otherwise I suggest changing this to \"network trunk add subport \u003ctrunk\u003e \u003cport\u003e --segmentation-type\u003d\u003csegmentation-type\u003e --segmentation-id\u003dsegmentation-id\".  But this is not something that you can repeat for adding multiple subports in one command.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"068e8e48f6a552e8d4866c968f48ff73ea14b9ab","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_29fbc248","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"in_reply_to":"bacf61ea_09687e86","updated":"2016-07-29 20:52:50.000000000","message":"OSC commands aren\u0027t required to map directly to APIs since the goal is to abstract some of the API and DB details so users can focus on objects and actions.\n\nRepeating the positional args is fine, but the problem is how do you set segmentation type and ID for each subport?\n\nIn addition, options found on the create action are usually available on the set action too when supported.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"50eee5bbeefe1ff5cdf7be820de2d04b6f00c329","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_ce014c3a","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"in_reply_to":"bacf61ea_0eba440a","updated":"2016-07-29 20:23:29.000000000","message":"I\u0027ll try to clarify.\n\nThe OSC \"add\" and \"remove\" actions would normally look like the following with 2 positional arguments for the 2 objects being operated on.\n\nnetwork trunk add subport \u003ctrunk\u003e \u003csubport\u003e\nnetwork trunk remove subport \u003ctrunk\u003e \u003csubport\u003e\n\nThat is why I was suggesting the following as an alternative:\n\nnetwork trunk set \u003ctrunk\u003e --subport\u003d\u003c\u003e --subport\u003d\u003c\u003e ...\nnetwork trunk unset \u003ctrunk\u003e --subport\u003d\u003c\u003e --subport\u003d\u003c\u003e ...\n\nDo you prefer the add and remove actions with a single positional argument?","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"5a727b43814b0a242e958517102b62945bd283a1","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_c495ab87","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"in_reply_to":"bacf61ea_29fbc248","updated":"2016-07-29 21:25:20.000000000","message":"\u003e Repeating the positional args is fine, but the problem is how do you set segmentation type and ID for each subport?\n\nFor example, adding two subports at once:\n\n \nnetwork trunk add subport mytrunk port\u003dport1,seg-type\u003dvlan,seg-id\u003d100 port\u003dport2,seg-type\u003dvlan,seg-id\u003d200\n\nIs that too outlandish?\n\n\u003e In addition, options found on the create action are usually available on the set action too when supported.\n\nThat is a good point. If the above example doesn\u0027t really fit into OSC, then I would be okay with \"trunk (un)set [--subport \u003csubport\u003e]...\" to add/remove subports.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"73ddf0f113fba9acf1fcaf7d58459eee75185a07","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_0eba440a","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"in_reply_to":"bacf61ea_a2c86fa9","updated":"2016-07-29 20:06:11.000000000","message":"I\u0027m not sure I understand this, so bare with me. What we want is to be able pass N subports with a single command. How would you envision that translating to CLI? Here\u0027s what I envision:\n\nnetwork trunk add subports --subport\u003d\u003c\u003e --subport\u003d\u003c\u003e ...\n\nDoes this not translate to something along those lines?","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"f790b28f8c4df216136836cc1bd6a272e7cb3655","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_c2af6328","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"in_reply_to":"bacf61ea_a2c86fa9","updated":"2016-07-29 18:40:06.000000000","message":"If using \"network trunk set\" then you can add a mutually exclusive --no-sub-port option.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"be2aa9b470636038dc38057076a74ed3eab9278f","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_caf13503","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"in_reply_to":"bacf61ea_c495ab87","updated":"2016-07-29 21:49:12.000000000","message":"I suspect the above example would be confusing to users. I think OSC users would try the set action for an option they could specify on create.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"642165101b36c2c8653623f80fe6cd4cbe51c8ed","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_ea019939","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"in_reply_to":"bacf61ea_caf13503","updated":"2016-07-29 21:56:33.000000000","message":"As long as I can pass \"--subport \u003cport_id,seg_id,seg_type\u003e\" N number of times on a command, I don\u0027t have strong feelings about the actual syntax. All I want to ensure is that we can support creation of multiple subports by issuing a single client command.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"90a6f592e295f2f119d859018c020d535241dbb8","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_09687e86","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"in_reply_to":"bacf61ea_ce014c3a","updated":"2016-07-29 20:42:14.000000000","message":"using \"network trunk set\" would mean we\u0027re mixing\n\n \nPUT /trunks/\u003cid\u003e\nPUT /trunks/\u003cid\u003e/add_subports\n\ninto the same command. \"network trunk add subport \u003ctrunk\u003e \u003csubport\u003e\" makes the most sense from an API standpoint, but the API was designed to accept a list of subports. If we\u0027re always just passing a single subport in that list, that seems like a waste.\n\nCan we make the \u003csubport\u003e positional arg repeatable? For example:\n\n \nnetwork trunk add subport \u003ctrunk\u003e [\u003csubport\u003e...]","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a9373c7ac8dda5cd8037ebccf568f0cc01a6a1e5","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_ed0b7328","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"in_reply_to":"bacf61ea_ea019939","updated":"2016-07-29 22:47:00.000000000","message":"ill get back to this in the next patch.. i also want a CLI where in i can pass the subports in a repeated fashion","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"5f1732c1e389e0949573d89f6e64e9c699be3196","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":208,"context_line":"            help\u003d_(\"Add sub-ports to this trunk (name or ID)\")"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":213,"context_line":"            required\u003dTrue,"},{"line_number":214,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":215,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":216,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,segmentation-type\u003d,segmentation-ID\u003d\\\u0027\""},{"line_number":217,"context_line":"                   \"(--sub-port) option can be repeated)\")"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_cbeba5da","line":218,"range":{"start_line":210,"start_character":0,"end_line":218,"end_character":9},"in_reply_to":"bacf61ea_ed0b7328","updated":"2016-08-01 23:23:54.000000000","message":"Merged with Set command.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"d34368acd95ccae065b2771b235e90d22cf94cf1","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                ) for s in data[SUB_PORTS]))"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"class RemoveSubports(command.Command):"},{"line_number":257,"context_line":"    \"\"\"Remove sub-ports from a given network trunk\"\"\""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_02ba1b0a","line":256,"updated":"2016-07-29 18:28:19.000000000","message":"Similar comment as above.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a9373c7ac8dda5cd8037ebccf568f0cc01a6a1e5","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                ) for s in data[SUB_PORTS]))"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"class RemoveSubports(command.Command):"},{"line_number":257,"context_line":"    \"\"\"Remove sub-ports from a given network trunk\"\"\""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_cda94f92","line":256,"in_reply_to":"bacf61ea_02ba1b0a","updated":"2016-07-29 22:47:00.000000000","message":"Done","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"d34368acd95ccae065b2771b235e90d22cf94cf1","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":264,"context_line":"            help\u003d_(\"Remove sub-ports from this trunk (name or ID)\")"},{"line_number":265,"context_line":"        )"},{"line_number":266,"context_line":"        parser.add_argument("},{"line_number":267,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":268,"context_line":"            metavar\u003d\"\u003csub-port\u003e\","},{"line_number":269,"context_line":"            required\u003dTrue,"},{"line_number":270,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027remove_subports\u0027,"},{"line_number":271,"context_line":"            help\u003d_(\"Sub-port to delete (name or ID of the port) \""},{"line_number":272,"context_line":"                   \"(--sub-port) option can be repeated\")"},{"line_number":273,"context_line":"        )"},{"line_number":274,"context_line":"        return parser"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_623957a4","line":273,"range":{"start_line":266,"start_character":0,"end_line":273,"end_character":9},"updated":"2016-07-29 18:28:19.000000000","message":"Similar comment as above.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"f790b28f8c4df216136836cc1bd6a272e7cb3655","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":264,"context_line":"            help\u003d_(\"Remove sub-ports from this trunk (name or ID)\")"},{"line_number":265,"context_line":"        )"},{"line_number":266,"context_line":"        parser.add_argument("},{"line_number":267,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":268,"context_line":"            metavar\u003d\"\u003csub-port\u003e\","},{"line_number":269,"context_line":"            required\u003dTrue,"},{"line_number":270,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027remove_subports\u0027,"},{"line_number":271,"context_line":"            help\u003d_(\"Sub-port to delete (name or ID of the port) \""},{"line_number":272,"context_line":"                   \"(--sub-port) option can be repeated\")"},{"line_number":273,"context_line":"        )"},{"line_number":274,"context_line":"        return parser"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_82a28b49","line":273,"range":{"start_line":266,"start_character":0,"end_line":273,"end_character":9},"in_reply_to":"bacf61ea_623957a4","updated":"2016-07-29 18:40:06.000000000","message":"I should note that a \"network trunk unset\" command can be provided to remove specific subports.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"5f1732c1e389e0949573d89f6e64e9c699be3196","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":264,"context_line":"            help\u003d_(\"Remove sub-ports from this trunk (name or ID)\")"},{"line_number":265,"context_line":"        )"},{"line_number":266,"context_line":"        parser.add_argument("},{"line_number":267,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":268,"context_line":"            metavar\u003d\"\u003csub-port\u003e\","},{"line_number":269,"context_line":"            required\u003dTrue,"},{"line_number":270,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027remove_subports\u0027,"},{"line_number":271,"context_line":"            help\u003d_(\"Sub-port to delete (name or ID of the port) \""},{"line_number":272,"context_line":"                   \"(--sub-port) option can be repeated\")"},{"line_number":273,"context_line":"        )"},{"line_number":274,"context_line":"        return parser"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_0bd93d57","line":273,"range":{"start_line":266,"start_character":0,"end_line":273,"end_character":9},"in_reply_to":"bacf61ea_7006361e","updated":"2016-08-01 23:23:54.000000000","message":"Done","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a9373c7ac8dda5cd8037ebccf568f0cc01a6a1e5","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":264,"context_line":"            help\u003d_(\"Remove sub-ports from this trunk (name or ID)\")"},{"line_number":265,"context_line":"        )"},{"line_number":266,"context_line":"        parser.add_argument("},{"line_number":267,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":268,"context_line":"            metavar\u003d\"\u003csub-port\u003e\","},{"line_number":269,"context_line":"            required\u003dTrue,"},{"line_number":270,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027remove_subports\u0027,"},{"line_number":271,"context_line":"            help\u003d_(\"Sub-port to delete (name or ID of the port) \""},{"line_number":272,"context_line":"                   \"(--sub-port) option can be repeated\")"},{"line_number":273,"context_line":"        )"},{"line_number":274,"context_line":"        return parser"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_7006361e","line":273,"range":{"start_line":266,"start_character":0,"end_line":273,"end_character":9},"in_reply_to":"bacf61ea_82a28b49","updated":"2016-07-29 22:47:00.000000000","message":"will get to this in the next patch. Thanks!","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"82b40fc16466da40251f9e57a2bd044f9fe46ab9","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            help\u003d_(\"Parent port belonging to this trunk (name or ID)\")"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--subport\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003dparseractions.MultiKeyValueAction, dest\u003d\u0027add_subports\u0027,"},{"line_number":59,"context_line":"            help\u003d_(\"Subport to add. Subport is of form \""}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_560bd823","line":56,"updated":"2016-08-02 00:05:32.000000000","message":"I wonder if this should be sub-port, was it discussed? I don\u0027t feel strongly one way or another.","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6345e084aa3b35c80033bcaf725fe1842639c7fc","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            help\u003d_(\"Parent port belonging to this trunk (name or ID)\")"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--subport\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003dparseractions.MultiKeyValueAction, dest\u003d\u0027add_subports\u0027,"},{"line_number":59,"context_line":"            help\u003d_(\"Subport to add. Subport is of form \""}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_44c64a17","line":56,"in_reply_to":"bacf61ea_045572c5","updated":"2016-08-02 21:41:48.000000000","message":"First of all, let me say that I am not strongly opinionated one way or another.\n\n@Rawlin: honestly I am not sure I understand your argument, whether the parameter is a tuple or an ID, the name is what counts. All I know is that in the API [1] we use use sub_ports and everywhere in the plugin [2] model [3].\n\nGranted we use subport occasionally in the code, but that\u0027s not user visible.\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/extensions/trunk.py#L109\n[2] https://github.com/openstack/neutron/blob/master/neutron/services/trunk/plugin.py\n[3] https://github.com/openstack/neutron/blob/master/neutron/services/trunk/models.py","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"7da6d3216b625dbbf7eef385e05dd22f6072dc35","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            help\u003d_(\"Parent port belonging to this trunk (name or ID)\")"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--subport\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003dparseractions.MultiKeyValueAction, dest\u003d\u0027add_subports\u0027,"},{"line_number":59,"context_line":"            help\u003d_(\"Subport to add. Subport is of form \""}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_46e771ac","line":56,"in_reply_to":"bacf61ea_06d29934","updated":"2016-08-02 21:21:08.000000000","message":"I wouldn\u0027t really say that\u0027s an inconsistency with \"parent-port\". If it was \"childport\" rather than \"subport\", I\u0027d say that was inconsistent, but \"childport\" wouldn\u0027t make sense here because we\u0027re talking about the full subport tuple.\n\nI think this is better because it matches \"network subport list\".","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"89b06571d998eb07ed93fb79308f7bbbdd2fb7df","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            help\u003d_(\"Parent port belonging to this trunk (name or ID)\")"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--subport\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003dparseractions.MultiKeyValueAction, dest\u003d\u0027add_subports\u0027,"},{"line_number":59,"context_line":"            help\u003d_(\"Subport to add. Subport is of form \""}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_a7f46887","line":56,"in_reply_to":"bacf61ea_44c64a17","updated":"2016-08-02 22:10:09.000000000","message":"@Armando: I\u0027ve always thought it should be \u0027subport\u0027 because the spec [1] is littered with that term as well as the devref [2]. My argument basically stems from that. We\u0027ve written \"subports\" as a single word, whereas we\u0027ve written \"parent port\" and \"child port\" as two words. Hence, I\u0027d expect \u0027parent-port\u0027, \u0027child-port\u0027, and \u0027subport\u0027 to be used.\n\nGranted, the documentation could always be amended...\n\n[1] https://specs.openstack.org/openstack/neutron-specs/specs/backlog/mitaka/vlan-aware-vms.html\n[2] http://docs.openstack.org/developer/neutron/devref/openvswitch_agent.html#tackling-the-network-trunking-use-case","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"889a0ae4d2a5e4d42fd5f000a2035657a06502fd","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            help\u003d_(\"Parent port belonging to this trunk (name or ID)\")"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--subport\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003dparseractions.MultiKeyValueAction, dest\u003d\u0027add_subports\u0027,"},{"line_number":59,"context_line":"            help\u003d_(\"Subport to add. Subport is of form \""}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_045572c5","line":56,"in_reply_to":"bacf61ea_46e771ac","updated":"2016-08-02 21:29:26.000000000","message":"does \n\"openstack network sub port list\" sound good enough? that way we can have a dash and match the object name as well","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"3e209627b448243c3c2b84ba1eb5512dbf95398e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            help\u003d_(\"Parent port belonging to this trunk (name or ID)\")"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--subport\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003dparseractions.MultiKeyValueAction, dest\u003d\u0027add_subports\u0027,"},{"line_number":59,"context_line":"            help\u003d_(\"Subport to add. Subport is of form \""}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_d502e9b3","line":56,"in_reply_to":"bacf61ea_560bd823","updated":"2016-08-02 20:25:57.000000000","message":"\u0027--subport\u0027 matches the command object used on the other commands - see comment here on PS18. Personally I like it better without the dash because it\u0027s shorter :)","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"2dfbb5d5b8f056c55c352b7eb944a9a37dbc6bdf","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            help\u003d_(\"Parent port belonging to this trunk (name or ID)\")"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--subport\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003dparseractions.MultiKeyValueAction, dest\u003d\u0027add_subports\u0027,"},{"line_number":59,"context_line":"            help\u003d_(\"Subport to add. Subport is of form \""}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_aae38f04","line":56,"in_reply_to":"bacf61ea_a7f46887","updated":"2016-08-02 22:24:28.000000000","message":"API and code is king when they ship. One can argue the spec should be aligned with the code, or one should have complained during core review, it\u0027s too little too late now. There\u0027s still time to align this up though but I am tired of this bike shedding. As I said, I am not fussed, my -1 has nothing to do with my initial comment.","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"e87c9b620b4be2024615290113392707f074c079","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            help\u003d_(\"Parent port belonging to this trunk (name or ID)\")"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027--subport\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":58,"context_line":"            action\u003dparseractions.MultiKeyValueAction, dest\u003d\u0027add_subports\u0027,"},{"line_number":59,"context_line":"            help\u003d_(\"Subport to add. Subport is of form \""}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_06d29934","line":56,"in_reply_to":"bacf61ea_d502e9b3","updated":"2016-08-02 21:02:03.000000000","message":"the dyslexic in me makes me write/read support, but to me it\u0027s more a matter of consistency with parent-port. It\u0027s either parentport and subport or parent-port and sub-port.","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"3e209627b448243c3c2b84ba1eb5512dbf95398e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":85,"context_line":"        attrs \u003d _get_attrs_for_trunk(self.app.client_manager,"},{"line_number":86,"context_line":"                                     parsed_args)"},{"line_number":87,"context_line":"        body \u003d {}"},{"line_number":88,"context_line":"        body[TRUNK] \u003d attrs"},{"line_number":89,"context_line":"        obj \u003d client.create_trunk(body)"},{"line_number":90,"context_line":"        columns \u003d _get_columns(obj[TRUNK])"},{"line_number":91,"context_line":"        data \u003d utils.get_dict_properties(obj[TRUNK], columns,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_75217db4","line":88,"range":{"start_line":87,"start_character":8,"end_line":88,"end_character":27},"updated":"2016-08-02 20:25:57.000000000","message":"nit: body \u003d {TRUNK: attrs}","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"889a0ae4d2a5e4d42fd5f000a2035657a06502fd","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":85,"context_line":"        attrs \u003d _get_attrs_for_trunk(self.app.client_manager,"},{"line_number":86,"context_line":"                                     parsed_args)"},{"line_number":87,"context_line":"        body \u003d {}"},{"line_number":88,"context_line":"        body[TRUNK] \u003d attrs"},{"line_number":89,"context_line":"        obj \u003d client.create_trunk(body)"},{"line_number":90,"context_line":"        columns \u003d _get_columns(obj[TRUNK])"},{"line_number":91,"context_line":"        data \u003d utils.get_dict_properties(obj[TRUNK], columns,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_4baf7c7d","line":88,"range":{"start_line":87,"start_character":8,"end_line":88,"end_character":27},"in_reply_to":"bacf61ea_75217db4","updated":"2016-08-02 21:29:26.000000000","message":"Done. Coming up in next patch","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"08738f6ebb9fdf6ae53095ea6db5a06e2141a8e8","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    def take_action(self, parsed_args):"},{"line_number":132,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":133,"context_line":"        data \u003d client.list_trunks()"},{"line_number":134,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027State\u0027, \u0027Parent Port\u0027)"},{"line_number":135,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027admin_state_up\u0027, \u0027port_id\u0027)"},{"line_number":136,"context_line":"        return (headers,"},{"line_number":137,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_d6d508e5","line":134,"updated":"2016-08-02 00:06:31.000000000","message":"I think we want to call \u0027State\u0027 \u0027Admin State\u0027 and also include \u0027Status\u0027 and have the status field displayed. I thinking the status is at least, if not more, relevant than the admin state.","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"82b40fc16466da40251f9e57a2bd044f9fe46ab9","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    def take_action(self, parsed_args):"},{"line_number":132,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":133,"context_line":"        data \u003d client.list_trunks()"},{"line_number":134,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027State\u0027, \u0027Parent Port\u0027)"},{"line_number":135,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027admin_state_up\u0027, \u0027port_id\u0027)"},{"line_number":136,"context_line":"        return (headers,"},{"line_number":137,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_36bd84d8","line":134,"updated":"2016-08-02 00:05:32.000000000","message":"should this be Admin State? There\u0027s also a status, should you have that displayed here? What about the tenant/project id? I guess this last one is not easy to display based on what the server returns?","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3dd66a5d1489f392e44a4235b37e98aa55414412","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    def take_action(self, parsed_args):"},{"line_number":132,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":133,"context_line":"        data \u003d client.list_trunks()"},{"line_number":134,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027State\u0027, \u0027Parent Port\u0027)"},{"line_number":135,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027admin_state_up\u0027, \u0027port_id\u0027)"},{"line_number":136,"context_line":"        return (headers,"},{"line_number":137,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_2d3b399e","line":134,"in_reply_to":"bacf61ea_c4e1a19c","updated":"2016-08-02 22:57:39.000000000","message":"ok, let\u0027s see what sticks.","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"889a0ae4d2a5e4d42fd5f000a2035657a06502fd","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    def take_action(self, parsed_args):"},{"line_number":132,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":133,"context_line":"        data \u003d client.list_trunks()"},{"line_number":134,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027State\u0027, \u0027Parent Port\u0027)"},{"line_number":135,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027admin_state_up\u0027, \u0027port_id\u0027)"},{"line_number":136,"context_line":"        return (headers,"},{"line_number":137,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_c4e1a19c","line":134,"in_reply_to":"bacf61ea_d6d508e5","updated":"2016-08-02 21:29:26.000000000","message":"The reason why it is called State is because all the other OSC network commands call \u0027Admin State\u0027 as \u0027State\u0027. eg. port, network, subnets etc..So consistency. Perhaps we can take this up to OSC and fix it in all the places together?\nAdded Status Done. Coming up in next patch","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"82b40fc16466da40251f9e57a2bd044f9fe46ab9","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            help\u003d_(\"Set trunk name\")"},{"line_number":157,"context_line":"        )"},{"line_number":158,"context_line":"        parser.add_argument("},{"line_number":159,"context_line":"            \u0027--subport\u0027,"},{"line_number":160,"context_line":"            metavar\u003d\u0027\u003cport\u003d,segmentation-type\u003d,segmentation-id\u003d\u003e\u0027,"},{"line_number":161,"context_line":"            action\u003dparseractions.MultiKeyValueAction, dest\u003d\u0027set_subports\u0027,"},{"line_number":162,"context_line":"            help\u003d_(\"Subport to add. Subport is of form \""}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_9611d054","line":159,"updated":"2016-08-02 00:05:32.000000000","message":"ditto","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"82b40fc16466da40251f9e57a2bd044f9fe46ab9","unresolved":false,"context_lines":[{"line_number":245,"context_line":"            help\u003d_(\"Unset subports from this trunk (name or ID)\")"},{"line_number":246,"context_line":"        )"},{"line_number":247,"context_line":"        parser.add_argument("},{"line_number":248,"context_line":"            \u0027--subport\u0027,"},{"line_number":249,"context_line":"            metavar\u003d\"\u003csubport\u003e\","},{"line_number":250,"context_line":"            required\u003dTrue,"},{"line_number":251,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027unset_subports\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_f61c8c6b","line":248,"updated":"2016-08-02 00:05:32.000000000","message":"ditto","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"3e209627b448243c3c2b84ba1eb5512dbf95398e","unresolved":false,"context_lines":[{"line_number":331,"context_line":"    if \u0027set_subports\u0027 in parsed_args and parsed_args.set_subports is not None:"},{"line_number":332,"context_line":"        attrs[SUB_PORTS] \u003d _format_subports(client_manager,"},{"line_number":333,"context_line":"                                            parsed_args.set_subports)"},{"line_number":334,"context_line":"    if(\u0027unset_subports\u0027 in parsed_args and"},{"line_number":335,"context_line":"       parsed_args.unset_subports is not None):"},{"line_number":336,"context_line":"        subports_list \u003d []"},{"line_number":337,"context_line":"        for subport in parsed_args.unset_subports:"}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_305b9330","line":334,"range":{"start_line":334,"start_character":6,"end_line":334,"end_character":7},"updated":"2016-08-02 20:25:57.000000000","message":"nit: space before this","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"889a0ae4d2a5e4d42fd5f000a2035657a06502fd","unresolved":false,"context_lines":[{"line_number":331,"context_line":"    if \u0027set_subports\u0027 in parsed_args and parsed_args.set_subports is not None:"},{"line_number":332,"context_line":"        attrs[SUB_PORTS] \u003d _format_subports(client_manager,"},{"line_number":333,"context_line":"                                            parsed_args.set_subports)"},{"line_number":334,"context_line":"    if(\u0027unset_subports\u0027 in parsed_args and"},{"line_number":335,"context_line":"       parsed_args.unset_subports is not None):"},{"line_number":336,"context_line":"        subports_list \u003d []"},{"line_number":337,"context_line":"        for subport in parsed_args.unset_subports:"}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_0b1104b0","line":334,"range":{"start_line":334,"start_character":6,"end_line":334,"end_character":7},"in_reply_to":"bacf61ea_305b9330","updated":"2016-08-02 21:29:26.000000000","message":"Done. Coming up in next patch","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"3e209627b448243c3c2b84ba1eb5512dbf95398e","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        attrs[SUB_PORTS] \u003d _format_subports(client_manager,"},{"line_number":333,"context_line":"                                            parsed_args.set_subports)"},{"line_number":334,"context_line":"    if(\u0027unset_subports\u0027 in parsed_args and"},{"line_number":335,"context_line":"       parsed_args.unset_subports is not None):"},{"line_number":336,"context_line":"        subports_list \u003d []"},{"line_number":337,"context_line":"        for subport in parsed_args.unset_subports:"},{"line_number":338,"context_line":"            port_id \u003d _get_id(client_manager.neutronclient,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_b08ca380","line":335,"range":{"start_line":335,"start_character":7,"end_line":335,"end_character":8},"updated":"2016-08-02 20:25:57.000000000","message":"This indentation is not a multiple of 4. I would recommend 8 spaces so that the 2nd half of the conditional is not at the same indentation level as the block below it.","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"889a0ae4d2a5e4d42fd5f000a2035657a06502fd","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        attrs[SUB_PORTS] \u003d _format_subports(client_manager,"},{"line_number":333,"context_line":"                                            parsed_args.set_subports)"},{"line_number":334,"context_line":"    if(\u0027unset_subports\u0027 in parsed_args and"},{"line_number":335,"context_line":"       parsed_args.unset_subports is not None):"},{"line_number":336,"context_line":"        subports_list \u003d []"},{"line_number":337,"context_line":"        for subport in parsed_args.unset_subports:"},{"line_number":338,"context_line":"            port_id \u003d _get_id(client_manager.neutronclient,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bacf61ea_abe1d89c","line":335,"range":{"start_line":335,"start_character":7,"end_line":335,"end_character":8},"in_reply_to":"bacf61ea_b08ca380","updated":"2016-08-02 21:29:26.000000000","message":"Done. Coming up in next patch","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4c1d2783b19e8306873b866c11659aebef26a59d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def take_action(self, parsed_args):"},{"line_number":131,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":132,"context_line":"        data \u003d client.list_trunks()"},{"line_number":133,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027State\u0027, \u0027Status\u0027, \u0027Parent Port\u0027)"},{"line_number":134,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027admin_state_up\u0027, \u0027status\u0027, \u0027port_id\u0027)"},{"line_number":135,"context_line":"        return (headers,"},{"line_number":136,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":21,"id":"bacf61ea_2d30599e","line":133,"updated":"2016-08-02 23:00:41.000000000","message":"depending on user feedback perhaps we may want to revise fields being shown in the list command, e.g. we could restrict this to ID, name, and parent port. That\u0027s what openstack network list does, but this can be iterated on.","commit_id":"a27defddda3784c836199754fc9f573ea37fc1d6"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"9f8359e8ecaa4b6c26315b58156cfae7d17294c7","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def take_action(self, parsed_args):"},{"line_number":131,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":132,"context_line":"        data \u003d client.list_trunks()"},{"line_number":133,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027State\u0027, \u0027Status\u0027, \u0027Parent Port\u0027)"},{"line_number":134,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027admin_state_up\u0027, \u0027status\u0027, \u0027port_id\u0027)"},{"line_number":135,"context_line":"        return (headers,"},{"line_number":136,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":21,"id":"bacf61ea_8d98656c","line":133,"in_reply_to":"bacf61ea_2d30599e","updated":"2016-08-02 23:07:05.000000000","message":"actually we could do that.. use ID name and parent port for trunk list and use --long flag to list all of the above.. thoughts?\nor add a TODO and follow up?","commit_id":"a27defddda3784c836199754fc9f573ea37fc1d6"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7c352fd03532d173e8f59c996c63f655cb3d2ce8","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def take_action(self, parsed_args):"},{"line_number":131,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":132,"context_line":"        data \u003d client.list_trunks()"},{"line_number":133,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027State\u0027, \u0027Status\u0027, \u0027Parent Port\u0027)"},{"line_number":134,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027admin_state_up\u0027, \u0027status\u0027, \u0027port_id\u0027)"},{"line_number":135,"context_line":"        return (headers,"},{"line_number":136,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":21,"id":"bacf61ea_93a40209","line":133,"in_reply_to":"bacf61ea_585f4975","updated":"2016-08-03 00:21:13.000000000","message":"Done. added a TODO for --long listing. Will follow up with a patch to address remaining TODOs","commit_id":"a27defddda3784c836199754fc9f573ea37fc1d6"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"734f4c960924ab796750db07daadd98f9262d68d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def take_action(self, parsed_args):"},{"line_number":131,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":132,"context_line":"        data \u003d client.list_trunks()"},{"line_number":133,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027State\u0027, \u0027Status\u0027, \u0027Parent Port\u0027)"},{"line_number":134,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027admin_state_up\u0027, \u0027status\u0027, \u0027port_id\u0027)"},{"line_number":135,"context_line":"        return (headers,"},{"line_number":136,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":21,"id":"bacf61ea_585f4975","line":133,"in_reply_to":"bacf61ea_8d98656c","updated":"2016-08-02 23:53:28.000000000","message":"if we go with fewer fields now we won\u0027t go wrong and people might complain that they want to see more. Adding is backward compatible. If we go with more fields now and people get confused, and we remove/tweak them, people might complain we messed up with their CLI, so perhaps we should err on the side of caution and have only ID, Name and Parent Port.","commit_id":"a27defddda3784c836199754fc9f573ea37fc1d6"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f353fb90357f5de34eb9f9f70f248613f10480d5","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                client.delete_trunk(trunk_id)"},{"line_number":115,"context_line":"            except Exception as e:"},{"line_number":116,"context_line":"                result +\u003d 1"},{"line_number":117,"context_line":"                LOG.error(_(\"Failed to delete trunk with name \""},{"line_number":118,"context_line":"                          \"or ID \u0027%(trunk)s\u0027: %(e)s\")"},{"line_number":119,"context_line":"                          % {\u0027trunk\u0027: trunk, \u0027e\u0027: e})"},{"line_number":120,"context_line":"        if result \u003e 0:"}],"source_content_type":"text/x-python","patch_set":22,"id":"bacf61ea_5f5c48ed","line":117,"updated":"2016-08-03 05:41:59.000000000","message":"this is missing a log translation hint - _LE. I think that we can add in a follow up patch for this.","commit_id":"449a1f7d13b0983ea39aa21c3d5423a984f8ad12"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"1edcd1a2ddf31eb0807966fac1bde01fd27622f1","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                client.delete_trunk(trunk_id)"},{"line_number":115,"context_line":"            except Exception as e:"},{"line_number":116,"context_line":"                result +\u003d 1"},{"line_number":117,"context_line":"                LOG.error(_(\"Failed to delete trunk with name \""},{"line_number":118,"context_line":"                          \"or ID \u0027%(trunk)s\u0027: %(e)s\")"},{"line_number":119,"context_line":"                          % {\u0027trunk\u0027: trunk, \u0027e\u0027: e})"},{"line_number":120,"context_line":"        if result \u003e 0:"}],"source_content_type":"text/x-python","patch_set":22,"id":"bacf61ea_f10b887b","line":117,"in_reply_to":"bacf61ea_5f5c48ed","updated":"2016-08-04 00:29:20.000000000","message":"looks like you are taking care of this one. Thanks","commit_id":"449a1f7d13b0983ea39aa21c3d5423a984f8ad12"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"50c11f2bd0e976f7090cfd56dbfa8226430317de","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        )"},{"line_number":177,"context_line":"        return parser"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def take_action(self, parsed_args):"},{"line_number":180,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":181,"context_line":"        trunk_id \u003d _get_id(client, parsed_args.trunk, TRUNK)"},{"line_number":182,"context_line":"        attrs \u003d _get_attrs_for_trunk(self.app.client_manager, parsed_args)"}],"source_content_type":"text/x-python","patch_set":22,"id":"bacf61ea_222049f7","line":179,"updated":"2016-08-03 12:12:37.000000000","message":"Since there are multiple API calls, consider following https://github.com/openstack/python-openstackclient/blob/master/doc/source/command-errors.rst to handle errors.","commit_id":"449a1f7d13b0983ea39aa21c3d5423a984f8ad12"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"1edcd1a2ddf31eb0807966fac1bde01fd27622f1","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        )"},{"line_number":177,"context_line":"        return parser"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def take_action(self, parsed_args):"},{"line_number":180,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":181,"context_line":"        trunk_id \u003d _get_id(client, parsed_args.trunk, TRUNK)"},{"line_number":182,"context_line":"        attrs \u003d _get_attrs_for_trunk(self.app.client_manager, parsed_args)"}],"source_content_type":"text/x-python","patch_set":22,"id":"bacf61ea_12f9f080","line":179,"in_reply_to":"bacf61ea_222049f7","updated":"2016-08-04 00:29:20.000000000","message":"https://review.openstack.org/#/c/350837/1","commit_id":"449a1f7d13b0983ea39aa21c3d5423a984f8ad12"}],"neutronclient/osc/v2/trunk/subport.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"cd51fc8fc71188416c44477817c1ad08671d6e4f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                \u0027port\u0027, subport[\u0027port\u0027])"},{"line_number":34,"context_line":"            subport_attrs[\u0027port_id\u0027] \u003d port_id"},{"line_number":35,"context_line":"        if \u0027seg-id\u0027 in subport and subport[\u0027seg-id\u0027] is not None:"},{"line_number":36,"context_line":"            subport_attrs[\u0027segmentation_id\u0027] \u003d subport[\u0027seg-id\u0027]"},{"line_number":37,"context_line":"        if \u0027seg-type\u0027 in subport and subport[\u0027seg-type\u0027] is not None:"},{"line_number":38,"context_line":"            subport_attrs[\u0027segmentation_type\u0027] \u003d subport[\u0027seg-type\u0027]"},{"line_number":39,"context_line":"        attrs.append(subport_attrs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_f19cc1c1","line":36,"updated":"2016-07-21 06:20:51.000000000","message":"this should be converted to int, but I\u0027ll strengthen the server side code just in case someone else makes the same mistake ;)","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8a09f730736376b75ee34189dee2bcf6f427c776","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                \u0027port\u0027, subport[\u0027port\u0027])"},{"line_number":34,"context_line":"            subport_attrs[\u0027port_id\u0027] \u003d port_id"},{"line_number":35,"context_line":"        if \u0027seg-id\u0027 in subport and subport[\u0027seg-id\u0027] is not None:"},{"line_number":36,"context_line":"            subport_attrs[\u0027segmentation_id\u0027] \u003d subport[\u0027seg-id\u0027]"},{"line_number":37,"context_line":"        if \u0027seg-type\u0027 in subport and subport[\u0027seg-type\u0027] is not None:"},{"line_number":38,"context_line":"            subport_attrs[\u0027segmentation_type\u0027] \u003d subport[\u0027seg-type\u0027]"},{"line_number":39,"context_line":"        attrs.append(subport_attrs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_1a57b7ca","line":36,"in_reply_to":"dada55a8_f19cc1c1","updated":"2016-07-22 02:16:37.000000000","message":"Done","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"cd51fc8fc71188416c44477817c1ad08671d6e4f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        if \u0027seg-type\u0027 in subport and subport[\u0027seg-type\u0027] is not None:"},{"line_number":38,"context_line":"            subport_attrs[\u0027segmentation_type\u0027] \u003d subport[\u0027seg-type\u0027]"},{"line_number":39,"context_line":"        attrs.append(subport_attrs)"},{"line_number":40,"context_line":"    return attrs"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"_formatters \u003d {}"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_717e111a","line":40,"updated":"2016-07-21 06:20:51.000000000","message":"I think we should return {\u0027sub_ports\u0027: attrs} instead. I have rectified the server side with [1]\n\n[1] https://review.openstack.org/#/c/345185/","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8a09f730736376b75ee34189dee2bcf6f427c776","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        if \u0027seg-type\u0027 in subport and subport[\u0027seg-type\u0027] is not None:"},{"line_number":38,"context_line":"            subport_attrs[\u0027segmentation_type\u0027] \u003d subport[\u0027seg-type\u0027]"},{"line_number":39,"context_line":"        attrs.append(subport_attrs)"},{"line_number":40,"context_line":"    return attrs"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"_formatters \u003d {}"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_fa5903fe","line":40,"in_reply_to":"dada55a8_717e111a","updated":"2016-07-22 02:16:37.000000000","message":"Done","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"cd51fc8fc71188416c44477817c1ad08671d6e4f","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"class ListSubports(command.Lister):"},{"line_number":54,"context_line":"    \"\"\"List all subports.\"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def get_parser(self, prog_name):"},{"line_number":57,"context_line":"        parser \u003d super(ListSubports, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_160ceb39","line":54,"updated":"2016-07-21 06:20:51.000000000","message":"I\u0027d add \u0027for a given trunk\u0027, unless we can support a CLI where the trunk can be omitted.","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8a09f730736376b75ee34189dee2bcf6f427c776","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"class ListSubports(command.Lister):"},{"line_number":54,"context_line":"    \"\"\"List all subports.\"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def get_parser(self, prog_name):"},{"line_number":57,"context_line":"        parser \u003d super(ListSubports, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_b7a681be","line":54,"in_reply_to":"dada55a8_160ceb39","updated":"2016-07-22 02:16:37.000000000","message":"Done","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"cd51fc8fc71188416c44477817c1ad08671d6e4f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":67,"context_line":"        trunk_id \u003d trunk._get_trunk_id(client, parsed_args.trunk)"},{"line_number":68,"context_line":"        data \u003d client.trunk_get_subports(trunk_id)"},{"line_number":69,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Port ID\u0027, \u0027Segmentation Type\u0027, \u0027Segmentation ID\u0027)"},{"line_number":70,"context_line":"        columns \u003d (\u0027id\u0027, \u0027port_id\u0027, \u0027segmentation_type\u0027, \u0027segmentation_id\u0027)"},{"line_number":71,"context_line":"        return (headers,"},{"line_number":72,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_16718ba8","line":69,"updated":"2016-07-21 06:20:51.000000000","message":"what\u0027s the ID column for? Trunk UUID? If so, do we make the command accept no trunk and thus show *all* subports as owned by the user?","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8a09f730736376b75ee34189dee2bcf6f427c776","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":67,"context_line":"        trunk_id \u003d trunk._get_trunk_id(client, parsed_args.trunk)"},{"line_number":68,"context_line":"        data \u003d client.trunk_get_subports(trunk_id)"},{"line_number":69,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Port ID\u0027, \u0027Segmentation Type\u0027, \u0027Segmentation ID\u0027)"},{"line_number":70,"context_line":"        columns \u003d (\u0027id\u0027, \u0027port_id\u0027, \u0027segmentation_type\u0027, \u0027segmentation_id\u0027)"},{"line_number":71,"context_line":"        return (headers,"},{"line_number":72,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_7aecf3ba","line":69,"in_reply_to":"dada55a8_16718ba8","updated":"2016-07-22 02:16:37.000000000","message":"my bad here.. fixed","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"cd51fc8fc71188416c44477817c1ad08671d6e4f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        return (headers,"},{"line_number":72,"context_line":"                (utils.get_dict_properties("},{"line_number":73,"context_line":"                    s, columns,"},{"line_number":74,"context_line":"                ) for s in data))"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class CreateSubports(command.ShowOne):"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_7643a742","line":74,"updated":"2016-07-21 06:20:51.000000000","message":"something is not quite right, but no content is rendered.","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8a09f730736376b75ee34189dee2bcf6f427c776","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        return (headers,"},{"line_number":72,"context_line":"                (utils.get_dict_properties("},{"line_number":73,"context_line":"                    s, columns,"},{"line_number":74,"context_line":"                ) for s in data))"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class CreateSubports(command.ShowOne):"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_9a6ba784","line":74,"in_reply_to":"dada55a8_7643a742","updated":"2016-07-22 02:16:37.000000000","message":"Done","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":20000,"name":"Songming Yan","email":"yan.songming@zte.com.cn","username":"SonmingYan.zte"},"change_message_id":"c9026a6e213dadd30c482c68711bc3a915252a11","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class CreateSubports(command.ShowOne):"},{"line_number":78,"context_line":"    \"\"\"Create a subport for a given trunk.\"\"\""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def get_parser(self, prog_name):"},{"line_number":81,"context_line":"        parser \u003d super(CreateSubports, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_e5efdf1b","line":78,"updated":"2016-07-21 02:49:11.000000000","message":"\"Create subports\" is better because (--sub-port) option can be repeated","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8a09f730736376b75ee34189dee2bcf6f427c776","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class CreateSubports(command.ShowOne):"},{"line_number":78,"context_line":"    \"\"\"Create a subport for a given trunk.\"\"\""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def get_parser(self, prog_name):"},{"line_number":81,"context_line":"        parser \u003d super(CreateSubports, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_7a66b3bb","line":78,"in_reply_to":"dada55a8_e5efdf1b","updated":"2016-07-22 02:16:37.000000000","message":"Done","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"cd51fc8fc71188416c44477817c1ad08671d6e4f","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        )"},{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":89,"context_line":"            metavar\u003d\u0027\u003cport\u003d,seg-type\u003d,seg-id\u003d\u003e\u0027,"},{"line_number":90,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":91,"context_line":"            help\u003d_(\"Sub-port to add. Subiport is of form \""},{"line_number":92,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,seg-type\u003d,seg-ID\u003d\\\u0027\""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_d6889373","line":89,"updated":"2016-07-21 06:20:51.000000000","message":"I personally hate the abbreviation, but I\u0027d hate to write the whole segmentation word. I am not strongly opinionated here and we can bike shed for ever.","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8a09f730736376b75ee34189dee2bcf6f427c776","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        )"},{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":89,"context_line":"            metavar\u003d\u0027\u003cport\u003d,seg-type\u003d,seg-id\u003d\u003e\u0027,"},{"line_number":90,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":91,"context_line":"            help\u003d_(\"Sub-port to add. Subiport is of form \""},{"line_number":92,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,seg-type\u003d,seg-ID\u003d\\\u0027\""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_97c7fd62","line":89,"in_reply_to":"dada55a8_d6889373","updated":"2016-07-22 02:16:37.000000000","message":"yeah i dont like much either.. and thats how i started off.. but then typing segmentation whole twice got painful..","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"}],"neutronclient/osc/v2/trunk/trunk.py":[{"author":{"_account_id":20000,"name":"Songming Yan","email":"yan.songming@zte.com.cn","username":"SonmingYan.zte"},"change_message_id":"94facacf621425b2da80ea0339e8b56a3e13d9bc","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        return columns, data"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"class DeleteTrunk(command.Command):"},{"line_number":109,"context_line":"    \"\"\"Delete a given trunk.\"\"\""},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_f0cfcc53","line":107,"updated":"2016-07-12 00:59:28.000000000","message":"Mybe we should add updatetrunk","commit_id":"4603805ac3c645391b71fa671e2c6fc183f2ae3e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    return attrs"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def _get_trunk_id(client, id_or_name):"},{"line_number":64,"context_line":"    return neutronV20.find_resourceid_by_name_or_id("},{"line_number":65,"context_line":"            client, TRUNK, str(id_or_name))"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_75b486d0","line":63,"updated":"2016-07-19 21:57:26.000000000","message":"I\u0027d move this to the end of the module.","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    return attrs"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def _get_trunk_id(client, id_or_name):"},{"line_number":64,"context_line":"    return neutronV20.find_resourceid_by_name_or_id("},{"line_number":65,"context_line":"            client, TRUNK, str(id_or_name))"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_24c01de0","line":63,"in_reply_to":"dada55a8_75b486d0","updated":"2016-07-20 02:44:37.000000000","message":"Done","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        parser \u003d super(CreateTrunk, self).get_parser(prog_name)"},{"line_number":105,"context_line":"        parser.add_argument("},{"line_number":106,"context_line":"            \u0027--name\u0027,"},{"line_number":107,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":108,"context_line":"            help\u003d_(\"Name of the trunk to create.\")"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_1550aa5c","line":107,"updated":"2016-07-19 21:57:26.000000000","message":"name doesn\u0027t seem to show in the help inline.\n\nusage: openstack trunk create [-h]\n                              [-f {html,json,json,shell,table,value,yaml,yaml}]\n                              [-c COLUMN] [--max-width \u003cinteger\u003e] [--noindent]\n                              [--prefix PREFIX] [--name \u003cname\u003e]\n                              [--tenant \u003cproject\u003e]\n                              [--project-domain \u003cproject-domain\u003e]\n                              \u003cport\u003e\nopenstack trunk create: error: too few arguments\n\nIf I do:\n\nopenstack trunk create 50c36887-4626-4a93-9932-3909126ecd0d --name ciccio","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        parser \u003d super(CreateTrunk, self).get_parser(prog_name)"},{"line_number":105,"context_line":"        parser.add_argument("},{"line_number":106,"context_line":"            \u0027--name\u0027,"},{"line_number":107,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":108,"context_line":"            help\u003d_(\"Name of the trunk to create.\")"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_b8970e8f","line":107,"in_reply_to":"dada55a8_1550aa5c","updated":"2016-07-20 02:44:37.000000000","message":"I changed name to positional.. now it shows ..","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            help\u003d_(\"Name of the trunk to create.\")"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":"        parser.add_argument("},{"line_number":111,"context_line":"            \u0027port\u0027,"},{"line_number":112,"context_line":"            metavar\u003d\u0027\u003cport\u003e\u0027,"},{"line_number":113,"context_line":"            help\u003d_(\"ID or name of the port belonging to this trunk\")"},{"line_number":114,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_35168ea7","line":111,"updated":"2016-07-19 21:57:26.000000000","message":"I don\u0027t particularly like the fact that port is positional here. Perhaps if we accepted it as --parent-port \u003cfoo\u003e it would be more appropriate and similar to other openstack commands like port|subnet create that accept --network as named argument","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"beee35a79fe9b1aa21d8cfba2924ce73aca9d720","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            help\u003d_(\"Name of the trunk to create.\")"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":"        parser.add_argument("},{"line_number":111,"context_line":"            \u0027port\u0027,"},{"line_number":112,"context_line":"            metavar\u003d\u0027\u003cport\u003e\u0027,"},{"line_number":113,"context_line":"            help\u003d_(\"ID or name of the port belonging to this trunk\")"},{"line_number":114,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_64169556","line":111,"in_reply_to":"dada55a8_35168ea7","updated":"2016-07-19 23:12:01.000000000","message":"I agree.  openstack commands usually use name as the positional argument on create.","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            help\u003d_(\"Name of the trunk to create.\")"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":"        parser.add_argument("},{"line_number":111,"context_line":"            \u0027port\u0027,"},{"line_number":112,"context_line":"            metavar\u003d\u0027\u003cport\u003e\u0027,"},{"line_number":113,"context_line":"            help\u003d_(\"ID or name of the port belonging to this trunk\")"},{"line_number":114,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_7acbcea5","line":111,"in_reply_to":"dada55a8_64169556","updated":"2016-07-20 02:44:37.000000000","message":"Done. Changed name to positional in order to be more in line with other network commands. port is now a named arg --parent-port","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        parser.add_argument("},{"line_number":116,"context_line":"            \u0027--tenant\u0027,"},{"line_number":117,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":118,"context_line":"            help\u003d_(\"Owner\u0027s project (name or ID)\")"},{"line_number":119,"context_line":"        )"},{"line_number":120,"context_line":"        identity_common.add_project_domain_option_to_parser(parser)"},{"line_number":121,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_95a01a45","line":118,"updated":"2016-07-19 21:57:26.000000000","message":"we should add admin_state_up too.","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        parser.add_argument("},{"line_number":116,"context_line":"            \u0027--tenant\u0027,"},{"line_number":117,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":118,"context_line":"            help\u003d_(\"Owner\u0027s project (name or ID)\")"},{"line_number":119,"context_line":"        )"},{"line_number":120,"context_line":"        identity_common.add_project_domain_option_to_parser(parser)"},{"line_number":121,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_bac5468f","line":118,"in_reply_to":"dada55a8_95a01a45","updated":"2016-07-20 02:44:37.000000000","message":"Done","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":118,"context_line":"            help\u003d_(\"Owner\u0027s project (name or ID)\")"},{"line_number":119,"context_line":"        )"},{"line_number":120,"context_line":"        identity_common.add_project_domain_option_to_parser(parser)"},{"line_number":121,"context_line":"        return parser"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_95b77a85","line":120,"updated":"2016-07-19 21:57:26.000000000","message":"what about adding subports? Have you considered about a formatting?","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":118,"context_line":"            help\u003d_(\"Owner\u0027s project (name or ID)\")"},{"line_number":119,"context_line":"        )"},{"line_number":120,"context_line":"        identity_common.add_project_domain_option_to_parser(parser)"},{"line_number":121,"context_line":"        return parser"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_d3b58531","line":120,"in_reply_to":"dada55a8_95b77a85","updated":"2016-07-20 02:44:37.000000000","message":"will get to the subports in next patch","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":147,"context_line":"        for trunk in parsed_args.trunk:"},{"line_number":148,"context_line":"            trunk_id \u003d _get_trunk_id(client, trunk)"},{"line_number":149,"context_line":"            client.delete_trunk(trunk_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_15954add","line":149,"updated":"2016-07-19 21:57:26.000000000","message":"update to toggle admin_state_up and change the trunk name?","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":147,"context_line":"        for trunk in parsed_args.trunk:"},{"line_number":148,"context_line":"            trunk_id \u003d _get_trunk_id(client, trunk)"},{"line_number":149,"context_line":"            client.delete_trunk(trunk_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_33834158","line":149,"in_reply_to":"dada55a8_15954add","updated":"2016-07-20 02:44:37.000000000","message":"Done","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"32afdbbc3698e9ff5f3c9b4ed0bf8ac96fa66590","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from osc_lib import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from openstackclient.i18n import _"},{"line_number":22,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutronclient.neutron import v2_0 as neutronV20"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_af2f8686","line":22,"updated":"2016-07-21 00:43:45.000000000","message":"@Richard: would these need to come from osc-lib at some point? If so we could add a TODO to remind us to change. Otherwise are these meant to be stable?","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"28ee84babf694871e23ea5a4975a8de0b1d142e8","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from osc_lib import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from openstackclient.i18n import _"},{"line_number":22,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutronclient.neutron import v2_0 as neutronV20"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_741d0dbd","line":22,"in_reply_to":"dada55a8_af2f8686","updated":"2016-07-27 18:29:13.000000000","message":"@Armando, these may come from osc-lib at some point.  But for now, they are not part of the approved plugin interfaces as documented at https://github.com/openstack/python-openstackclient/blob/master/doc/source/plugins.rst.","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b9062883e6d64a1b8c9a3fa1440935fc65fb2304","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        obj \u003d client.show_trunk(trunk_id)"},{"line_number":96,"context_line":"        columns \u003d _get_columns(obj[TRUNK])"},{"line_number":97,"context_line":"        data \u003d utils.get_dict_properties(obj[TRUNK], columns, formatters\u003d_formatters)"},{"line_number":98,"context_line":"        return (columns, data)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"class CreateTrunk(command.ShowOne):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_ac531438","line":98,"updated":"2016-07-21 00:41:09.000000000","message":"any chance we can show the subports too on List? They are part of the response after all. The display can be potentially huge though and perhaps we don\u0027t want to for usability reasons, but in lieu of that, perhaps we can introduce a command that shows the subports for a given trunk in format nicer than plain json?\n\nlike:\n\n  openstack network trunk list-subports\n\nand that shows a tabular form with (Subport UUID, Segmentation Type, Segmentation ID)\n\nThat\u0027s a bonus though, if you don\u0027t want to, perhaps a TODO would suffice.","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"6ffadcaf4624b08a3b3f1d2d76a63eac88e2d23d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        obj \u003d client.show_trunk(trunk_id)"},{"line_number":96,"context_line":"        columns \u003d _get_columns(obj[TRUNK])"},{"line_number":97,"context_line":"        data \u003d utils.get_dict_properties(obj[TRUNK], columns, formatters\u003d_formatters)"},{"line_number":98,"context_line":"        return (columns, data)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"class CreateTrunk(command.ShowOne):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_af2ae68d","line":98,"in_reply_to":"dada55a8_ac531438","updated":"2016-07-21 01:36:00.000000000","message":"added a new command:\n\nopenstack network trunk subports list to do exactly what you mentioned.","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b9062883e6d64a1b8c9a3fa1440935fc65fb2304","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        )"},{"line_number":116,"context_line":"        admin_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":117,"context_line":"        admin_group.add_argument("},{"line_number":118,"context_line":"            \u0027--enable\u0027,"},{"line_number":119,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":120,"context_line":"            default\u003dTrue,"},{"line_number":121,"context_line":"            help\u003d_(\"Enable trunk (default)\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_ac4954b9","line":118,"updated":"2016-07-21 00:41:09.000000000","message":"should we use enabled|disabled or more literally admin-state-up?","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"6ffadcaf4624b08a3b3f1d2d76a63eac88e2d23d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        )"},{"line_number":116,"context_line":"        admin_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":117,"context_line":"        admin_group.add_argument("},{"line_number":118,"context_line":"            \u0027--enable\u0027,"},{"line_number":119,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":120,"context_line":"            default\u003dTrue,"},{"line_number":121,"context_line":"            help\u003d_(\"Enable trunk (default)\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_af530638","line":118,"in_reply_to":"dada55a8_ac4954b9","updated":"2016-07-21 01:36:00.000000000","message":"I chose enable disable because that is what was chosen for network port and other objects in osc. \n\nhttps://github.com/openstack/python-openstackclient/blob/master/openstackclient/network/v2/port.py#L258","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"45ef89f46bcf21761f90e1b67641fdafc25e1617","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        )"},{"line_number":116,"context_line":"        admin_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":117,"context_line":"        admin_group.add_argument("},{"line_number":118,"context_line":"            \u0027--enable\u0027,"},{"line_number":119,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":120,"context_line":"            default\u003dTrue,"},{"line_number":121,"context_line":"            help\u003d_(\"Enable trunk (default)\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_5b532c6b","line":118,"in_reply_to":"dada55a8_af530638","updated":"2016-07-21 04:27:28.000000000","message":"ok, let\u0027s leave it then.","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b9062883e6d64a1b8c9a3fa1440935fc65fb2304","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            \u0027--enable\u0027,"},{"line_number":119,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":120,"context_line":"            default\u003dTrue,"},{"line_number":121,"context_line":"            help\u003d_(\"Enable trunk (default)\")"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":"        admin_group.add_argument("},{"line_number":124,"context_line":"            \u0027--disable\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_6c011c38","line":121,"updated":"2016-07-21 00:41:09.000000000","message":"I\u0027d expand by saying: \u0027Create a trunk in admin-state-up\u003dTrue\u0027, because that\u0027s what you get from the response.","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"6ffadcaf4624b08a3b3f1d2d76a63eac88e2d23d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            \u0027--enable\u0027,"},{"line_number":119,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":120,"context_line":"            default\u003dTrue,"},{"line_number":121,"context_line":"            help\u003d_(\"Enable trunk (default)\")"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":"        admin_group.add_argument("},{"line_number":124,"context_line":"            \u0027--disable\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_cf7f5aa9","line":121,"in_reply_to":"dada55a8_6c011c38","updated":"2016-07-21 01:36:00.000000000","message":"Done","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b9062883e6d64a1b8c9a3fa1440935fc65fb2304","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            help\u003d_(\"Enable trunk (default)\")"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":"        admin_group.add_argument("},{"line_number":124,"context_line":"            \u0027--disable\u0027,"},{"line_number":125,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":126,"context_line":"            help\u003d_(\"Disable trunk\")"},{"line_number":127,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_ace03497","line":124,"updated":"2016-07-21 00:41:09.000000000","message":"Disable-D?","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"6ffadcaf4624b08a3b3f1d2d76a63eac88e2d23d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            help\u003d_(\"Enable trunk (default)\")"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":"        admin_group.add_argument("},{"line_number":124,"context_line":"            \u0027--disable\u0027,"},{"line_number":125,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":126,"context_line":"            help\u003d_(\"Disable trunk\")"},{"line_number":127,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_0f1a127d","line":124,"in_reply_to":"dada55a8_ace03497","updated":"2016-07-21 01:36:00.000000000","message":"port network etc use disable .. remain consistent?","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b9062883e6d64a1b8c9a3fa1440935fc65fb2304","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        admin_group.add_argument("},{"line_number":124,"context_line":"            \u0027--disable\u0027,"},{"line_number":125,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":126,"context_line":"            help\u003d_(\"Disable trunk\")"},{"line_number":127,"context_line":"        )"},{"line_number":128,"context_line":"        parser.add_argument("},{"line_number":129,"context_line":"            \u0027--project\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_ccfac842","line":126,"updated":"2016-07-21 00:41:09.000000000","message":"Create a trunk in admin-state-up\u003dFalse\u0027","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"6ffadcaf4624b08a3b3f1d2d76a63eac88e2d23d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        admin_group.add_argument("},{"line_number":124,"context_line":"            \u0027--disable\u0027,"},{"line_number":125,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":126,"context_line":"            help\u003d_(\"Disable trunk\")"},{"line_number":127,"context_line":"        )"},{"line_number":128,"context_line":"        parser.add_argument("},{"line_number":129,"context_line":"            \u0027--project\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_4f424a69","line":126,"in_reply_to":"dada55a8_ccfac842","updated":"2016-07-21 01:36:00.000000000","message":"Done","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b9062883e6d64a1b8c9a3fa1440935fc65fb2304","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        )"},{"line_number":162,"context_line":"        admin_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":163,"context_line":"        admin_group.add_argument("},{"line_number":164,"context_line":"            \u0027--enable\u0027,"},{"line_number":165,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":166,"context_line":"            default\u003dNone,"},{"line_number":167,"context_line":"            help\u003d_(\"Enable trunk\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_6caf5c2a","line":164,"updated":"2016-07-21 00:41:09.000000000","message":"ditto","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b9062883e6d64a1b8c9a3fa1440935fc65fb2304","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            help\u003d_(\"Enable trunk\")"},{"line_number":168,"context_line":"        )"},{"line_number":169,"context_line":"        admin_group.add_argument("},{"line_number":170,"context_line":"            \u0027--disable\u0027,"},{"line_number":171,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":172,"context_line":"            help\u003d_(\"Disable trunk\")"},{"line_number":173,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_cca80823","line":170,"updated":"2016-07-21 00:41:09.000000000","message":"ditto","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"cd51fc8fc71188416c44477817c1ad08671d6e4f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":108,"context_line":"            help\u003d_(\"Name of the trunk to create.\")"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":"        parser.add_argument("},{"line_number":111,"context_line":"            \u0027--parent-port\u0027,"},{"line_number":112,"context_line":"            metavar\u003d\u0027\u003cparent-port\u003e\u0027,"},{"line_number":113,"context_line":"            help\u003d_(\"ID or name of the parent port belonging to this trunk\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_36564fce","line":110,"updated":"2016-07-21 06:20:51.000000000","message":"we\u0027d need to expand this command to accept subports too.","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8a09f730736376b75ee34189dee2bcf6f427c776","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":108,"context_line":"            help\u003d_(\"Name of the trunk to create.\")"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":"        parser.add_argument("},{"line_number":111,"context_line":"            \u0027--parent-port\u0027,"},{"line_number":112,"context_line":"            metavar\u003d\u0027\u003cparent-port\u003e\u0027,"},{"line_number":113,"context_line":"            help\u003d_(\"ID or name of the parent port belonging to this trunk\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_5798e577","line":110,"in_reply_to":"dada55a8_36564fce","updated":"2016-07-22 02:16:37.000000000","message":"Done","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"946500e6596784423a9b144454050d6f5f21f1c7","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from osc_lib.command import command"},{"line_number":17,"context_line":"from osc_lib import utils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from openstackclient.i18n import _"},{"line_number":20,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutronclient.common import utils as n_utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_2a3469f9","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":34},"updated":"2016-07-25 20:59:43.000000000","message":"This should be:\n\n  from neutronclient._i18n import _\n\nWe need to refer a message catalog in this repository.","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a36999e04ab9ccce7d73d286e933dcc891f0dfed","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from osc_lib.command import command"},{"line_number":17,"context_line":"from osc_lib import utils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from openstackclient.i18n import _"},{"line_number":20,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutronclient.common import utils as n_utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_5574e29a","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":34},"in_reply_to":"dada55a8_2a3469f9","updated":"2016-07-26 00:48:50.000000000","message":"Done","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0bf5ffc07216a7d5cc612d42db545e39e7b7b0b8","unresolved":false,"context_lines":[{"line_number":27,"context_line":"SUB_PORTS \u003d \u0027sub_ports\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _get_columns(item):"},{"line_number":31,"context_line":"    columns \u003d list(item.keys())"},{"line_number":32,"context_line":"    if \u0027tenant_id\u0027 in columns:"},{"line_number":33,"context_line":"        columns.remove(\u0027tenant_id\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_4f073881","line":30,"updated":"2016-07-25 17:28:55.000000000","message":"perhaps this can be closer to the other private methods that do formatting?","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a36999e04ab9ccce7d73d286e933dcc891f0dfed","unresolved":false,"context_lines":[{"line_number":27,"context_line":"SUB_PORTS \u003d \u0027sub_ports\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _get_columns(item):"},{"line_number":31,"context_line":"    columns \u003d list(item.keys())"},{"line_number":32,"context_line":"    if \u0027tenant_id\u0027 in columns:"},{"line_number":33,"context_line":"        columns.remove(\u0027tenant_id\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_55b6a2dc","line":30,"in_reply_to":"dada55a8_4f073881","updated":"2016-07-26 00:48:50.000000000","message":"Done","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0bf5ffc07216a7d5cc612d42db545e39e7b7b0b8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def _get_attrs_for_trunk(client_manager, parsed_args):"},{"line_number":44,"context_line":"    attrs \u003d {}"},{"line_number":45,"context_line":"    if parsed_args.name is not None:"},{"line_number":46,"context_line":"        attrs[\u0027name\u0027] \u003d str(parsed_args.name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_affeb468","line":43,"updated":"2016-07-25 17:28:55.000000000","message":"perhaps this can be closer to the other private methods that do formatting?","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a36999e04ab9ccce7d73d286e933dcc891f0dfed","unresolved":false,"context_lines":[{"line_number":40,"context_line":"}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def _get_attrs_for_trunk(client_manager, parsed_args):"},{"line_number":44,"context_line":"    attrs \u003d {}"},{"line_number":45,"context_line":"    if parsed_args.name is not None:"},{"line_number":46,"context_line":"        attrs[\u0027name\u0027] \u003d str(parsed_args.name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_95b01adf","line":43,"in_reply_to":"dada55a8_affeb468","updated":"2016-07-26 00:48:50.000000000","message":"Done","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0bf5ffc07216a7d5cc612d42db545e39e7b7b0b8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def take_action(self, parsed_args):"},{"line_number":76,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":77,"context_line":"        data \u003d client.list_trunks()"},{"line_number":78,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Port ID\u0027)"},{"line_number":79,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027port_id\u0027)"},{"line_number":80,"context_line":"        return (headers,"},{"line_number":81,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_cff4c8d0","line":78,"updated":"2016-07-25 17:28:55.000000000","message":"Should PORT ID be Parent Port ID?","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a36999e04ab9ccce7d73d286e933dcc891f0dfed","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def take_action(self, parsed_args):"},{"line_number":76,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":77,"context_line":"        data \u003d client.list_trunks()"},{"line_number":78,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Port ID\u0027)"},{"line_number":79,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027port_id\u0027)"},{"line_number":80,"context_line":"        return (headers,"},{"line_number":81,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_9b997171","line":78,"in_reply_to":"dada55a8_cff4c8d0","updated":"2016-07-26 00:48:50.000000000","message":"Done","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0bf5ffc07216a7d5cc612d42db545e39e7b7b0b8","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        data \u003d client.list_trunks()"},{"line_number":78,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Port ID\u0027)"},{"line_number":79,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027port_id\u0027)"},{"line_number":80,"context_line":"        return (headers,"},{"line_number":81,"context_line":"                (utils.get_dict_properties("},{"line_number":82,"context_line":"                    s, columns,"},{"line_number":83,"context_line":"                ) for s in data[TRUNKS]))"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_8f12d007","line":80,"updated":"2016-07-25 17:28:55.000000000","message":"should we show the admin state too?","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a36999e04ab9ccce7d73d286e933dcc891f0dfed","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        data \u003d client.list_trunks()"},{"line_number":78,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Port ID\u0027)"},{"line_number":79,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027port_id\u0027)"},{"line_number":80,"context_line":"        return (headers,"},{"line_number":81,"context_line":"                (utils.get_dict_properties("},{"line_number":82,"context_line":"                    s, columns,"},{"line_number":83,"context_line":"                ) for s in data[TRUNKS]))"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_50607035","line":80,"in_reply_to":"dada55a8_8f12d007","updated":"2016-07-26 00:48:50.000000000","message":"Done","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0bf5ffc07216a7d5cc612d42db545e39e7b7b0b8","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        trunk_id \u003d _get_id(client, parsed_args.trunk, TRUNK)"},{"line_number":100,"context_line":"        obj \u003d client.show_trunk(trunk_id)"},{"line_number":101,"context_line":"        columns \u003d _get_columns(obj[TRUNK])"},{"line_number":102,"context_line":"        data \u003d utils.get_dict_properties(obj[TRUNK], columns,"},{"line_number":103,"context_line":"                                         formatters\u003d_formatters)"},{"line_number":104,"context_line":"        return (columns, data)"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_afdd1444","line":102,"updated":"2016-07-25 17:28:55.000000000","message":"The project_id column does not get populated, though the tenant_id is in the response from the server, not here nor or trunk creation.","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a36999e04ab9ccce7d73d286e933dcc891f0dfed","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        trunk_id \u003d _get_id(client, parsed_args.trunk, TRUNK)"},{"line_number":100,"context_line":"        obj \u003d client.show_trunk(trunk_id)"},{"line_number":101,"context_line":"        columns \u003d _get_columns(obj[TRUNK])"},{"line_number":102,"context_line":"        data \u003d utils.get_dict_properties(obj[TRUNK], columns,"},{"line_number":103,"context_line":"                                         formatters\u003d_formatters)"},{"line_number":104,"context_line":"        return (columns, data)"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_d3f74557","line":102,"in_reply_to":"dada55a8_afdd1444","updated":"2016-07-26 00:48:50.000000000","message":"Done","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0bf5ffc07216a7d5cc612d42db545e39e7b7b0b8","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            client.delete_trunk(trunk_id)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"def _format_subports(client_manager, subports):"},{"line_number":222,"context_line":"    attrs \u003d []"},{"line_number":223,"context_line":"    for subport in subports:"},{"line_number":224,"context_line":"        subport_attrs \u003d {}"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_6f2b1cec","line":221,"updated":"2016-07-25 17:28:55.000000000","message":"I\u0027d keep all the command.Command classes closer together.","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a36999e04ab9ccce7d73d286e933dcc891f0dfed","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            client.delete_trunk(trunk_id)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"def _format_subports(client_manager, subports):"},{"line_number":222,"context_line":"    attrs \u003d []"},{"line_number":223,"context_line":"    for subport in subports:"},{"line_number":224,"context_line":"        subport_attrs \u003d {}"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_b5d6fec0","line":221,"in_reply_to":"dada55a8_6f2b1cec","updated":"2016-07-26 00:48:50.000000000","message":"Done","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"2eaafba3b1c005b0091176ddb885f88eb0793616","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":153,"context_line":"        trunk_id \u003d _get_id(client, parsed_args.trunk, TRUNK)"},{"line_number":154,"context_line":"        attrs \u003d _get_attrs_for_trunk(self.app.client_manager, parsed_args)"},{"line_number":155,"context_line":"        body \u003d {}"},{"line_number":156,"context_line":"        body[TRUNK] \u003d attrs"},{"line_number":157,"context_line":"        client.update_trunk(trunk_id, body)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_89c28783","line":156,"range":{"start_line":155,"start_character":8,"end_line":156,"end_character":27},"updated":"2016-07-26 23:25:47.000000000","message":"nit: body \u003d {TRUNK: attrs}","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"9b3d26c67145651c64b3f3cfad3f5ba51f5be582","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":153,"context_line":"        trunk_id \u003d _get_id(client, parsed_args.trunk, TRUNK)"},{"line_number":154,"context_line":"        attrs \u003d _get_attrs_for_trunk(self.app.client_manager, parsed_args)"},{"line_number":155,"context_line":"        body \u003d {}"},{"line_number":156,"context_line":"        body[TRUNK] \u003d attrs"},{"line_number":157,"context_line":"        client.update_trunk(trunk_id, body)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_c069e98d","line":156,"range":{"start_line":155,"start_character":8,"end_line":156,"end_character":27},"in_reply_to":"dada55a8_89c28783","updated":"2016-07-27 00:24:31.000000000","message":"Done","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"2eaafba3b1c005b0091176ddb885f88eb0793616","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":248,"context_line":"            metavar\u003d\"\u003csub-port\u003e\","},{"line_number":249,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027remove_subports\u0027,"},{"line_number":250,"context_line":"            help\u003d_(\"Sub-port to delete (name or ID)\")"},{"line_number":251,"context_line":"        )"},{"line_number":252,"context_line":"        return parser"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_e946a3be","line":250,"range":{"start_line":250,"start_character":19,"end_line":250,"end_character":52},"updated":"2016-07-26 23:25:47.000000000","message":"Does this need \"(--sub-port) option can be repeated)\"? Also, subports don\u0027t have a name, and their primary key is port-id. So perhaps this should say \"port-id\" rather than \"name or ID\".","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"9b3d26c67145651c64b3f3cfad3f5ba51f5be582","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":248,"context_line":"            metavar\u003d\"\u003csub-port\u003e\","},{"line_number":249,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027remove_subports\u0027,"},{"line_number":250,"context_line":"            help\u003d_(\"Sub-port to delete (name or ID)\")"},{"line_number":251,"context_line":"        )"},{"line_number":252,"context_line":"        return parser"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_20ea8574","line":250,"range":{"start_line":250,"start_character":19,"end_line":250,"end_character":52},"in_reply_to":"dada55a8_e946a3be","updated":"2016-07-27 00:24:31.000000000","message":"added repeated part.\n\nRegarding name or ID, you can specify the name or ID of the port to be removed.. i enhanced the help text to (name or ID of the port) .. hope that makes it clearer?","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 ZTE Corporation."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_5e958a3e","line":1,"updated":"2016-07-27 18:25:53.000000000","message":"From an OSC perspective, the part name usually matches the command object name which would make this \"network_trunk.py\".","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 ZTE Corporation."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_ee492990","line":1,"in_reply_to":"bacf61ea_5e958a3e","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from osc_lib.command import command"},{"line_number":17,"context_line":"from osc_lib import utils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutronclient._i18n import _"},{"line_number":22,"context_line":"from neutronclient.common import utils as n_utils"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_5ece2a84","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":62},"updated":"2016-07-27 18:25:53.000000000","message":"This is not in the approved list of interfaces available to plugins.  See https://github.com/openstack/python-openstackclient/blob/master/doc/source/plugins.rst for details.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"3cad35b6b012a39f4a181becdf05b3484c68cf57","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from osc_lib.command import command"},{"line_number":17,"context_line":"from osc_lib import utils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutronclient._i18n import _"},{"line_number":22,"context_line":"from neutronclient.common import utils as n_utils"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_e2f911ca","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":62},"in_reply_to":"bacf61ea_55127963","updated":"2016-07-28 14:08:15.000000000","message":"This was discussed here: http://eavesdrop.openstack.org/meetings/openstackclient/2016/openstackclient.2016-07-28-13.01.log.html.  For now, code should be duplicated.  You can add a TODO for pulling this from osc-lib instead once that support is available. I think this has what you need for now: https://review.openstack.org/#/c/348097/1/neutronclient/osc/utils.py","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"587922a217a1129a1518f45f05b45497d6e18456","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from osc_lib.command import command"},{"line_number":17,"context_line":"from osc_lib import utils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutronclient._i18n import _"},{"line_number":22,"context_line":"from neutronclient.common import utils as n_utils"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_fad43c48","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":62},"in_reply_to":"bacf61ea_5ece2a84","updated":"2016-07-27 23:14:24.000000000","message":"Question: It is imported for add_project_domain_option_to_parser.\nI think this interface is not exported. Do we need to copy OSC one to neutronclient? What is a recommended way?","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from osc_lib.command import command"},{"line_number":17,"context_line":"from osc_lib import utils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutronclient._i18n import _"},{"line_number":22,"context_line":"from neutronclient.common import utils as n_utils"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_55127963","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":62},"in_reply_to":"bacf61ea_fad43c48","updated":"2016-07-28 01:36:27.000000000","message":"Question++","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":27,"context_line":"SUB_PORTS \u003d \u0027sub_ports\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class CreateTrunk(command.ShowOne):"},{"line_number":31,"context_line":"    \"\"\"Create a trunk for a given project.\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_3ec1b681","line":30,"range":{"start_line":30,"start_character":12,"end_line":30,"end_character":17},"updated":"2016-07-27 18:25:53.000000000","message":"From an OSC perspective, the class name usually matches the command name which would make this \"CreateNetworkTrunk\".  This is a general comment.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":27,"context_line":"SUB_PORTS \u003d \u0027sub_ports\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class CreateTrunk(command.ShowOne):"},{"line_number":31,"context_line":"    \"\"\"Create a trunk for a given project.\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_e94c8378","line":30,"range":{"start_line":30,"start_character":12,"end_line":30,"end_character":17},"in_reply_to":"bacf61ea_3ec1b681","updated":"2016-07-28 01:36:27.000000000","message":"Done everywhere","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class CreateTrunk(command.ShowOne):"},{"line_number":31,"context_line":"    \"\"\"Create a trunk for a given project.\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def get_parser(self, prog_name):"},{"line_number":34,"context_line":"        parser \u003d super(CreateTrunk, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_3e6a561b","line":31,"range":{"start_line":31,"start_character":16,"end_line":31,"end_character":21},"updated":"2016-07-27 18:25:53.000000000","message":"general comment: I suggest using \"network trunk\" instead of \"trunk\" in the command description since it better matches the command object.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class CreateTrunk(command.ShowOne):"},{"line_number":31,"context_line":"    \"\"\"Create a trunk for a given project.\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def get_parser(self, prog_name):"},{"line_number":34,"context_line":"        parser \u003d super(CreateTrunk, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_6995333f","line":31,"range":{"start_line":31,"start_character":16,"end_line":31,"end_character":21},"in_reply_to":"bacf61ea_3e6a561b","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        parser.add_argument("},{"line_number":36,"context_line":"            \u0027name\u0027,"},{"line_number":37,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":38,"context_line":"            help\u003d_(\"Name of the trunk to create.\")"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":"        parser.add_argument("},{"line_number":41,"context_line":"            \u0027--parent-port\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_1e41520c","line":38,"range":{"start_line":38,"start_character":47,"end_line":38,"end_character":48},"updated":"2016-07-27 18:25:53.000000000","message":"period isn\u0027t needed","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        parser.add_argument("},{"line_number":36,"context_line":"            \u0027name\u0027,"},{"line_number":37,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":38,"context_line":"            help\u003d_(\"Name of the trunk to create.\")"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":"        parser.add_argument("},{"line_number":41,"context_line":"            \u0027--parent-port\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_29821b01","line":38,"range":{"start_line":38,"start_character":47,"end_line":38,"end_character":48},"in_reply_to":"bacf61ea_1e41520c","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            \u0027--parent-port\u0027,"},{"line_number":42,"context_line":"            metavar\u003d\u0027\u003cparent-port\u003e\u0027,"},{"line_number":43,"context_line":"            required\u003dTrue,"},{"line_number":44,"context_line":"            help\u003d_(\"ID or name of the parent port belonging to this trunk\")"},{"line_number":45,"context_line":"        )"},{"line_number":46,"context_line":"        parser.add_argument("},{"line_number":47,"context_line":"            \u0027--sub-port\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_5ef90ac8","line":44,"range":{"start_line":44,"start_character":20,"end_line":44,"end_character":30},"updated":"2016-07-27 18:25:53.000000000","message":"OSC usually places this at the end of the help...\n\n\"Parent port belonging to this trunk (name or ID)\"","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            \u0027--parent-port\u0027,"},{"line_number":42,"context_line":"            metavar\u003d\u0027\u003cparent-port\u003e\u0027,"},{"line_number":43,"context_line":"            required\u003dTrue,"},{"line_number":44,"context_line":"            help\u003d_(\"ID or name of the parent port belonging to this trunk\")"},{"line_number":45,"context_line":"        )"},{"line_number":46,"context_line":"        parser.add_argument("},{"line_number":47,"context_line":"            \u0027--sub-port\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_a99f2b5e","line":44,"range":{"start_line":44,"start_character":20,"end_line":44,"end_character":30},"in_reply_to":"bacf61ea_5ef90ac8","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        )"},{"line_number":46,"context_line":"        parser.add_argument("},{"line_number":47,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":48,"context_line":"            metavar\u003d\u0027\u003cport\u003d,seg-type\u003d,seg-id\u003d\u003e\u0027,"},{"line_number":49,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":50,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":51,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,seg-type\u003d,seg-ID\u003d\\\u0027 \""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_5e3f4a25","line":48,"range":{"start_line":48,"start_character":28,"end_line":48,"end_character":44},"updated":"2016-07-27 18:25:53.000000000","message":"I think these should be spelled out for clarity.  Is \"seg\" short for \"segment\"?","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        )"},{"line_number":46,"context_line":"        parser.add_argument("},{"line_number":47,"context_line":"            \u0027--sub-port\u0027,"},{"line_number":48,"context_line":"            metavar\u003d\u0027\u003cport\u003d,seg-type\u003d,seg-id\u003d\u003e\u0027,"},{"line_number":49,"context_line":"            action\u003d\u0027append\u0027, dest\u003d\u0027add_subports\u0027, type\u003dn_utils.str2dict,"},{"line_number":50,"context_line":"            help\u003d_(\"Sub-port to add. Sub-port is of form \""},{"line_number":51,"context_line":"                   \"\\\u0027port\u003d\u003cname or ID\u003e,seg-type\u003d,seg-ID\u003d\\\u0027 \""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_c916dfa6","line":48,"range":{"start_line":48,"start_character":28,"end_line":48,"end_character":44},"in_reply_to":"bacf61ea_5e3f4a25","updated":"2016-07-28 01:36:27.000000000","message":"seg is short for segmentation.. so this will look like segmentation-id\u003d,segmentation-type\u003d","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            \u0027--enable\u0027,"},{"line_number":57,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":58,"context_line":"            default\u003dTrue,"},{"line_number":59,"context_line":"            help\u003d_(\"Create a trunk in admin-state-up\u003dTrue state (default)\")"},{"line_number":60,"context_line":"        )"},{"line_number":61,"context_line":"        admin_group.add_argument("},{"line_number":62,"context_line":"            \u0027--disable\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_7eaa0e72","line":59,"range":{"start_line":59,"start_character":20,"end_line":59,"end_character":73},"updated":"2016-07-27 18:25:53.000000000","message":"To align with https://github.com/openstack/python-openstackclient/blob/master/doc/source/command-options.rst, this should be \"Enable trunk (default)\".","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            \u0027--enable\u0027,"},{"line_number":57,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":58,"context_line":"            default\u003dTrue,"},{"line_number":59,"context_line":"            help\u003d_(\"Create a trunk in admin-state-up\u003dTrue state (default)\")"},{"line_number":60,"context_line":"        )"},{"line_number":61,"context_line":"        admin_group.add_argument("},{"line_number":62,"context_line":"            \u0027--disable\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_49d82ff0","line":59,"range":{"start_line":59,"start_character":20,"end_line":59,"end_character":73},"in_reply_to":"bacf61ea_7eaa0e72","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        admin_group.add_argument("},{"line_number":62,"context_line":"            \u0027--disable\u0027,"},{"line_number":63,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":64,"context_line":"            help\u003d_(\"Create a trunk in admin-state-up\u003dFalse state\")"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"        parser.add_argument("},{"line_number":67,"context_line":"            \u0027--project\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_3ec7f646","line":64,"updated":"2016-07-27 18:25:53.000000000","message":"To align with https://github.com/openstack/python-openstackclient/blob/master/doc/source/command-options.rst, this should be \"Disable trunk\".","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        admin_group.add_argument("},{"line_number":62,"context_line":"            \u0027--disable\u0027,"},{"line_number":63,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":64,"context_line":"            help\u003d_(\"Create a trunk in admin-state-up\u003dFalse state\")"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"        parser.add_argument("},{"line_number":67,"context_line":"            \u0027--project\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_69025340","line":64,"in_reply_to":"bacf61ea_3ec7f646","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c3739d913fe815c6f3764086fe7a1e74a55f58c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            help\u003d_(\"Create a trunk in admin-state-up\u003dFalse state\")"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"        parser.add_argument("},{"line_number":67,"context_line":"            \u0027--project\u0027,"},{"line_number":68,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":69,"context_line":"            help\u003d_(\"Owner\u0027s project (name or ID)\")"},{"line_number":70,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_22d882ef","line":67,"updated":"2016-07-27 15:41:29.000000000","message":"This is supposed to be admin only and create a trunk on behalf of a user, shall we add a test for it?","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            help\u003d_(\"Create a trunk in admin-state-up\u003dFalse state\")"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"        parser.add_argument("},{"line_number":67,"context_line":"            \u0027--project\u0027,"},{"line_number":68,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":69,"context_line":"            help\u003d_(\"Owner\u0027s project (name or ID)\")"},{"line_number":70,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_eb4e3095","line":67,"in_reply_to":"bacf61ea_22d882ef","updated":"2016-07-28 01:36:27.000000000","message":"currently neutron server does the validation for projects.. there is no code in here which does this.. hence i did not add a test around it","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            \u0027trunk\u0027,"},{"line_number":94,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":95,"context_line":"            nargs\u003d\"+\","},{"line_number":96,"context_line":"            help\u003d_(\"trunk(s) to delete (name or UUID)\")"},{"line_number":97,"context_line":"        )"},{"line_number":98,"context_line":"        return parser"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_9efc2240","line":96,"range":{"start_line":96,"start_character":48,"end_line":96,"end_character":52},"updated":"2016-07-27 18:25:53.000000000","message":"ID","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            \u0027trunk\u0027,"},{"line_number":94,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":95,"context_line":"            nargs\u003d\"+\","},{"line_number":96,"context_line":"            help\u003d_(\"trunk(s) to delete (name or UUID)\")"},{"line_number":97,"context_line":"        )"},{"line_number":98,"context_line":"        return parser"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_5e02aa3f","line":96,"range":{"start_line":96,"start_character":20,"end_line":96,"end_character":28},"updated":"2016-07-27 18:25:53.000000000","message":"Trunk(s)","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            \u0027trunk\u0027,"},{"line_number":94,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":95,"context_line":"            nargs\u003d\"+\","},{"line_number":96,"context_line":"            help\u003d_(\"trunk(s) to delete (name or UUID)\")"},{"line_number":97,"context_line":"        )"},{"line_number":98,"context_line":"        return parser"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_c9c09fe3","line":96,"range":{"start_line":96,"start_character":20,"end_line":96,"end_character":28},"in_reply_to":"bacf61ea_5e02aa3f","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            \u0027trunk\u0027,"},{"line_number":94,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":95,"context_line":"            nargs\u003d\"+\","},{"line_number":96,"context_line":"            help\u003d_(\"trunk(s) to delete (name or UUID)\")"},{"line_number":97,"context_line":"        )"},{"line_number":98,"context_line":"        return parser"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_29b69b8a","line":96,"range":{"start_line":96,"start_character":48,"end_line":96,"end_character":52},"in_reply_to":"bacf61ea_9efc2240","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def take_action(self, parsed_args):"},{"line_number":101,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":102,"context_line":"        for trunk in parsed_args.trunk:"},{"line_number":103,"context_line":"            trunk_id \u003d _get_id(client, trunk, TRUNK)"},{"line_number":104,"context_line":"            client.delete_trunk(trunk_id)"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_5eb0ea8b","line":102,"updated":"2016-07-27 18:25:53.000000000","message":"This should probably be consistent with the OSC network commands.  That is, all deletes should be attempted with a final result displayed.  See examples in OSC.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def take_action(self, parsed_args):"},{"line_number":101,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":102,"context_line":"        for trunk in parsed_args.trunk:"},{"line_number":103,"context_line":"            trunk_id \u003d _get_id(client, trunk, TRUNK)"},{"line_number":104,"context_line":"            client.delete_trunk(trunk_id)"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_c13193ee","line":102,"in_reply_to":"bacf61ea_5eb0ea8b","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    def take_action(self, parsed_args):"},{"line_number":111,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":112,"context_line":"        data \u003d client.list_trunks()"},{"line_number":113,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027State\u0027, \u0027Parent Port ID\u0027)"},{"line_number":114,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027admin_state_up\u0027, \u0027port_id\u0027)"},{"line_number":115,"context_line":"        return (headers,"},{"line_number":116,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_1e12f262","line":113,"range":{"start_line":113,"start_character":43,"end_line":113,"end_character":57},"updated":"2016-07-27 18:25:53.000000000","message":"OSC usually avoids adding the \"ID\" suffix to the column headers.  This provides some freedom in the value displayed.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    def take_action(self, parsed_args):"},{"line_number":111,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":112,"context_line":"        data \u003d client.list_trunks()"},{"line_number":113,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027State\u0027, \u0027Parent Port ID\u0027)"},{"line_number":114,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027admin_state_up\u0027, \u0027port_id\u0027)"},{"line_number":115,"context_line":"        return (headers,"},{"line_number":116,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_3420ae9b","line":113,"range":{"start_line":113,"start_character":43,"end_line":113,"end_character":57},"in_reply_to":"bacf61ea_1e12f262","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        admin_group.add_argument("},{"line_number":139,"context_line":"            \u0027--enable\u0027,"},{"line_number":140,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":141,"context_line":"            default\u003dNone,"},{"line_number":142,"context_line":"            help\u003d_(\"Update trunk to set admin-state-up\u003dTrue\")"},{"line_number":143,"context_line":"        )"},{"line_number":144,"context_line":"        admin_group.add_argument("}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_99627cd7","line":141,"updated":"2016-07-27 18:25:53.000000000","message":"Not needed","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        admin_group.add_argument("},{"line_number":139,"context_line":"            \u0027--enable\u0027,"},{"line_number":140,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":141,"context_line":"            default\u003dNone,"},{"line_number":142,"context_line":"            help\u003d_(\"Update trunk to set admin-state-up\u003dTrue\")"},{"line_number":143,"context_line":"        )"},{"line_number":144,"context_line":"        admin_group.add_argument("}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_74418639","line":141,"in_reply_to":"bacf61ea_99627cd7","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            \u0027--enable\u0027,"},{"line_number":140,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":141,"context_line":"            default\u003dNone,"},{"line_number":142,"context_line":"            help\u003d_(\"Update trunk to set admin-state-up\u003dTrue\")"},{"line_number":143,"context_line":"        )"},{"line_number":144,"context_line":"        admin_group.add_argument("},{"line_number":145,"context_line":"            \u0027--disable\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_39ac30ed","line":142,"updated":"2016-07-27 18:25:53.000000000","message":"Same comment as above.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            \u0027--enable\u0027,"},{"line_number":140,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":141,"context_line":"            default\u003dNone,"},{"line_number":142,"context_line":"            help\u003d_(\"Update trunk to set admin-state-up\u003dTrue\")"},{"line_number":143,"context_line":"        )"},{"line_number":144,"context_line":"        admin_group.add_argument("},{"line_number":145,"context_line":"            \u0027--disable\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_d4783292","line":142,"in_reply_to":"bacf61ea_39ac30ed","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        admin_group.add_argument("},{"line_number":145,"context_line":"            \u0027--disable\u0027,"},{"line_number":146,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":147,"context_line":"            help\u003d_(\"Update trunk to set admin-state-up\u003dFalse\")"},{"line_number":148,"context_line":"        )"},{"line_number":149,"context_line":"        return parser"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_79b6a83e","line":147,"updated":"2016-07-27 18:25:53.000000000","message":"Same comment as above.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        admin_group.add_argument("},{"line_number":145,"context_line":"            \u0027--disable\u0027,"},{"line_number":146,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":147,"context_line":"            help\u003d_(\"Update trunk to set admin-state-up\u003dFalse\")"},{"line_number":148,"context_line":"        )"},{"line_number":149,"context_line":"        return parser"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_346eeec9","line":147,"in_reply_to":"bacf61ea_79b6a83e","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        parser.add_argument("},{"line_number":164,"context_line":"            \u0027trunk\u0027,"},{"line_number":165,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":166,"context_line":"            help\u003d_(\"trunk to display (name or ID)\")"},{"line_number":167,"context_line":"        )"},{"line_number":168,"context_line":"        return parser"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_9990bc97","line":166,"range":{"start_line":166,"start_character":20,"end_line":166,"end_character":25},"updated":"2016-07-27 18:25:53.000000000","message":"Trunk","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        parser.add_argument("},{"line_number":164,"context_line":"            \u0027trunk\u0027,"},{"line_number":165,"context_line":"            metavar\u003d\"\u003ctrunk\u003e\","},{"line_number":166,"context_line":"            help\u003d_(\"trunk to display (name or ID)\")"},{"line_number":167,"context_line":"        )"},{"line_number":168,"context_line":"        return parser"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_1473eab2","line":166,"range":{"start_line":166,"start_character":20,"end_line":166,"end_character":25},"in_reply_to":"bacf61ea_9990bc97","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c3739d913fe815c6f3764086fe7a1e74a55f58c","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    attrs \u003d []"},{"line_number":306,"context_line":"    for subport in subports:"},{"line_number":307,"context_line":"        subport_attrs \u003d {}"},{"line_number":308,"context_line":"        if \u0027port\u0027 in subport and subport[\u0027port\u0027] is not None:"},{"line_number":309,"context_line":"            port_id \u003d _get_id(client_manager.neutronclient,"},{"line_number":310,"context_line":"                              subport[\u0027port\u0027], \u0027port\u0027)"},{"line_number":311,"context_line":"            subport_attrs[\u0027port_id\u0027] \u003d port_id"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_1d3e7fb8","line":308,"updated":"2016-07-27 15:41:29.000000000","message":"these can simply become:\n\n if subport.get(\u0027port\u0027):","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    attrs \u003d []"},{"line_number":306,"context_line":"    for subport in subports:"},{"line_number":307,"context_line":"        subport_attrs \u003d {}"},{"line_number":308,"context_line":"        if \u0027port\u0027 in subport and subport[\u0027port\u0027] is not None:"},{"line_number":309,"context_line":"            port_id \u003d _get_id(client_manager.neutronclient,"},{"line_number":310,"context_line":"                              subport[\u0027port\u0027], \u0027port\u0027)"},{"line_number":311,"context_line":"            subport_attrs[\u0027port_id\u0027] \u003d port_id"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_2474fd9a","line":308,"in_reply_to":"bacf61ea_1d3e7fb8","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c3739d913fe815c6f3764086fe7a1e74a55f58c","unresolved":false,"context_lines":[{"line_number":309,"context_line":"            port_id \u003d _get_id(client_manager.neutronclient,"},{"line_number":310,"context_line":"                              subport[\u0027port\u0027], \u0027port\u0027)"},{"line_number":311,"context_line":"            subport_attrs[\u0027port_id\u0027] \u003d port_id"},{"line_number":312,"context_line":"        if \u0027seg-id\u0027 in subport and subport[\u0027seg-id\u0027] is not None:"},{"line_number":313,"context_line":"            subport_attrs[\u0027segmentation_id\u0027] \u003d int(subport[\u0027seg-id\u0027])"},{"line_number":314,"context_line":"        if \u0027seg-type\u0027 in subport and subport[\u0027seg-type\u0027] is not None:"},{"line_number":315,"context_line":"            subport_attrs[\u0027segmentation_type\u0027] \u003d subport[\u0027seg-type\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_5d3117ec","line":312,"updated":"2016-07-27 15:41:29.000000000","message":"these can simply become:\n\n if subport.get(\u0027seg-id\u0027):","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":309,"context_line":"            port_id \u003d _get_id(client_manager.neutronclient,"},{"line_number":310,"context_line":"                              subport[\u0027port\u0027], \u0027port\u0027)"},{"line_number":311,"context_line":"            subport_attrs[\u0027port_id\u0027] \u003d port_id"},{"line_number":312,"context_line":"        if \u0027seg-id\u0027 in subport and subport[\u0027seg-id\u0027] is not None:"},{"line_number":313,"context_line":"            subport_attrs[\u0027segmentation_id\u0027] \u003d int(subport[\u0027seg-id\u0027])"},{"line_number":314,"context_line":"        if \u0027seg-type\u0027 in subport and subport[\u0027seg-type\u0027] is not None:"},{"line_number":315,"context_line":"            subport_attrs[\u0027segmentation_type\u0027] \u003d subport[\u0027seg-type\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_f4cf36b1","line":312,"in_reply_to":"bacf61ea_5d3117ec","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c3739d913fe815c6f3764086fe7a1e74a55f58c","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                              subport[\u0027port\u0027], \u0027port\u0027)"},{"line_number":311,"context_line":"            subport_attrs[\u0027port_id\u0027] \u003d port_id"},{"line_number":312,"context_line":"        if \u0027seg-id\u0027 in subport and subport[\u0027seg-id\u0027] is not None:"},{"line_number":313,"context_line":"            subport_attrs[\u0027segmentation_id\u0027] \u003d int(subport[\u0027seg-id\u0027])"},{"line_number":314,"context_line":"        if \u0027seg-type\u0027 in subport and subport[\u0027seg-type\u0027] is not None:"},{"line_number":315,"context_line":"            subport_attrs[\u0027segmentation_type\u0027] \u003d subport[\u0027seg-type\u0027]"},{"line_number":316,"context_line":"        attrs.append(subport_attrs)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_622c3aac","line":313,"updated":"2016-07-27 15:41:29.000000000","message":"if I give you an invalid segmentation ID this blows up not gracefully, doesn\u0027t it?","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                              subport[\u0027port\u0027], \u0027port\u0027)"},{"line_number":311,"context_line":"            subport_attrs[\u0027port_id\u0027] \u003d port_id"},{"line_number":312,"context_line":"        if \u0027seg-id\u0027 in subport and subport[\u0027seg-id\u0027] is not None:"},{"line_number":313,"context_line":"            subport_attrs[\u0027segmentation_id\u0027] \u003d int(subport[\u0027seg-id\u0027])"},{"line_number":314,"context_line":"        if \u0027seg-type\u0027 in subport and subport[\u0027seg-type\u0027] is not None:"},{"line_number":315,"context_line":"            subport_attrs[\u0027segmentation_type\u0027] \u003d subport[\u0027seg-type\u0027]"},{"line_number":316,"context_line":"        attrs.append(subport_attrs)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_d734b1df","line":313,"in_reply_to":"bacf61ea_622c3aac","updated":"2016-07-28 01:36:27.000000000","message":"Done. Added a test as well","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c3739d913fe815c6f3764086fe7a1e74a55f58c","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            subport_attrs[\u0027port_id\u0027] \u003d port_id"},{"line_number":312,"context_line":"        if \u0027seg-id\u0027 in subport and subport[\u0027seg-id\u0027] is not None:"},{"line_number":313,"context_line":"            subport_attrs[\u0027segmentation_id\u0027] \u003d int(subport[\u0027seg-id\u0027])"},{"line_number":314,"context_line":"        if \u0027seg-type\u0027 in subport and subport[\u0027seg-type\u0027] is not None:"},{"line_number":315,"context_line":"            subport_attrs[\u0027segmentation_type\u0027] \u003d subport[\u0027seg-type\u0027]"},{"line_number":316,"context_line":"        attrs.append(subport_attrs)"},{"line_number":317,"context_line":"    return attrs"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_9d51cf11","line":314,"updated":"2016-07-27 15:41:29.000000000","message":"ditto","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            subport_attrs[\u0027port_id\u0027] \u003d port_id"},{"line_number":312,"context_line":"        if \u0027seg-id\u0027 in subport and subport[\u0027seg-id\u0027] is not None:"},{"line_number":313,"context_line":"            subport_attrs[\u0027segmentation_id\u0027] \u003d int(subport[\u0027seg-id\u0027])"},{"line_number":314,"context_line":"        if \u0027seg-type\u0027 in subport and subport[\u0027seg-type\u0027] is not None:"},{"line_number":315,"context_line":"            subport_attrs[\u0027segmentation_type\u0027] \u003d subport[\u0027seg-type\u0027]"},{"line_number":316,"context_line":"        attrs.append(subport_attrs)"},{"line_number":317,"context_line":"    return attrs"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_34ca6ea2","line":314,"in_reply_to":"bacf61ea_9d51cf11","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"}],"neutronclient/tests/unit/osc/v2/trunk/fakes.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"32afdbbc3698e9ff5f3c9b4ed0bf8ac96fa66590","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import mock"},{"line_number":15,"context_line":"import uuid"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from openstackclient.tests import fakes"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class FakeTrunk(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_2f5a762a","line":17,"updated":"2016-07-21 00:43:45.000000000","message":"are these considered stable?","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"9ba23515fa25d3e27b609444d951563f8e47e24f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import mock"},{"line_number":15,"context_line":"import uuid"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from openstackclient.tests import fakes"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class FakeTrunk(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_34f55583","line":17,"in_reply_to":"dada55a8_2f5a762a","updated":"2016-07-27 18:27:31.000000000","message":"Yes.  See https://github.com/openstack/python-openstackclient/blob/master/doc/source/plugins.rst for details.","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"275243e3df98b9ee96484bce78bdcd7dca4ddc51","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            \u0027id\u0027: \u0027trunk-id-\u0027 + uuid.uuid4().hex,"},{"line_number":37,"context_line":"            \u0027name\u0027: \u0027trunk-name-\u0027 + uuid.uuid4().hex,"},{"line_number":38,"context_line":"            \u0027port\u0027: \u0027port-\u0027 + uuid.uuid4().hex,"},{"line_number":39,"context_line":"            \u0027tenant_id\u0027: \u0027project-id-\u0027 + uuid.uuid4().hex,"},{"line_number":40,"context_line":"        }"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        # Overwrite default attributes."}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_271d04be","line":39,"updated":"2016-07-23 03:50:13.000000000","message":"missing admin_state_up?","commit_id":"205ac3f6ecd8840f6e9cf928e4c8d9de58d8c2f6"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"df9cc4ee5071ae377e6697939c5faeab045ea113","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            \u0027id\u0027: \u0027trunk-id-\u0027 + uuid.uuid4().hex,"},{"line_number":37,"context_line":"            \u0027name\u0027: \u0027trunk-name-\u0027 + uuid.uuid4().hex,"},{"line_number":38,"context_line":"            \u0027port\u0027: \u0027port-\u0027 + uuid.uuid4().hex,"},{"line_number":39,"context_line":"            \u0027tenant_id\u0027: \u0027project-id-\u0027 + uuid.uuid4().hex,"},{"line_number":40,"context_line":"        }"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        # Overwrite default attributes."}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_622feaf6","line":39,"in_reply_to":"dada55a8_271d04be","updated":"2016-07-23 06:04:47.000000000","message":"Done. missing subports now.. will add in next iter","commit_id":"205ac3f6ecd8840f6e9cf928e4c8d9de58d8c2f6"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"619a876f249bd1d8e110e384732b4f1e8bd78b7c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        :param Dictionary attrs:"},{"line_number":25,"context_line":"            A dictionary with all attributes"},{"line_number":26,"context_line":"        :return:"},{"line_number":27,"context_line":"            A FakeResource object, with id, name, admin_state_up,"},{"line_number":28,"context_line":"            status, tenant_id"},{"line_number":29,"context_line":"        \"\"\""},{"line_number":30,"context_line":"        attrs \u003d attrs or {}"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_0d13bf5d","line":27,"range":{"start_line":27,"start_character":14,"end_line":27,"end_character":26},"updated":"2016-07-23 06:10:19.000000000","message":"dictionary","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a36999e04ab9ccce7d73d286e933dcc891f0dfed","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        :param Dictionary attrs:"},{"line_number":25,"context_line":"            A dictionary with all attributes"},{"line_number":26,"context_line":"        :return:"},{"line_number":27,"context_line":"            A FakeResource object, with id, name, admin_state_up,"},{"line_number":28,"context_line":"            status, tenant_id"},{"line_number":29,"context_line":"        \"\"\""},{"line_number":30,"context_line":"        attrs \u003d attrs or {}"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_d50c5244","line":27,"range":{"start_line":27,"start_character":14,"end_line":27,"end_character":26},"in_reply_to":"dada55a8_0d13bf5d","updated":"2016-07-26 00:48:50.000000000","message":"Done","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"2eaafba3b1c005b0091176ddb885f88eb0793616","unresolved":false,"context_lines":[{"line_number":25,"context_line":"            A dictionary with all attributes"},{"line_number":26,"context_line":"        :return:"},{"line_number":27,"context_line":"            A Dictionary with id, name, admin_state_up,"},{"line_number":28,"context_line":"            port_id, sub-ports and tenant_id"},{"line_number":29,"context_line":"        \"\"\""},{"line_number":30,"context_line":"        attrs \u003d attrs or {}"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_ccd5ade5","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":44},"updated":"2016-07-26 23:25:47.000000000","message":"sub_ports and project_id","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"9b3d26c67145651c64b3f3cfad3f5ba51f5be582","unresolved":false,"context_lines":[{"line_number":25,"context_line":"            A dictionary with all attributes"},{"line_number":26,"context_line":"        :return:"},{"line_number":27,"context_line":"            A Dictionary with id, name, admin_state_up,"},{"line_number":28,"context_line":"            port_id, sub-ports and tenant_id"},{"line_number":29,"context_line":"        \"\"\""},{"line_number":30,"context_line":"        attrs \u003d attrs or {}"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_a0f6755a","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":44},"in_reply_to":"dada55a8_ccd5ade5","updated":"2016-07-27 00:24:31.000000000","message":"Done","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"2eaafba3b1c005b0091176ddb885f88eb0793616","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def get_trunks(trunks\u003dNone, count\u003d2):"},{"line_number":67,"context_line":"        \"\"\"Get an iterable MagicMock object with a list of faked trunks."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        If routers list is provided, then initialize the Mock object with the"},{"line_number":70,"context_line":"        list. Otherwise create one."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        :param List trunks:"}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_aca4b9a5","line":69,"range":{"start_line":69,"start_character":11,"end_line":69,"end_character":18},"updated":"2016-07-26 23:25:47.000000000","message":"you mean trunks?","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"9b3d26c67145651c64b3f3cfad3f5ba51f5be582","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def get_trunks(trunks\u003dNone, count\u003d2):"},{"line_number":67,"context_line":"        \"\"\"Get an iterable MagicMock object with a list of faked trunks."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        If routers list is provided, then initialize the Mock object with the"},{"line_number":70,"context_line":"        list. Otherwise create one."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        :param List trunks:"}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_409cd90d","line":69,"range":{"start_line":69,"start_character":11,"end_line":69,"end_character":18},"in_reply_to":"dada55a8_aca4b9a5","updated":"2016-07-27 00:24:31.000000000","message":"Done","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":20000,"name":"Songming Yan","email":"yan.songming@zte.com.cn","username":"SonmingYan.zte"},"change_message_id":"742e893ab66fb0e0e9df599185eef0a745cff4f2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"class FakeTrunk(object):"},{"line_number":19,"context_line":"    \"\"\"Fake one or more trunks.\"\"\""},{"line_number":20,"context_line":"    @staticmethod"},{"line_number":21,"context_line":"    def create_one_trunk(attrs\u003dNone):"},{"line_number":22,"context_line":"        \"\"\"Create a fake trunk."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"        :param Dictionary attrs:"}],"source_content_type":"text/x-python","patch_set":19,"id":"bacf61ea_d1e0c1fc","line":21,"updated":"2016-07-30 03:53:59.000000000","message":"This is not only create one trunk,but also add one subport to this trunk.So i think if it spilt to create_one_trunk and add_subport_to_trunk that will be better.","commit_id":"5bd99cb3c9fc81f3dc8d987e883bacbf0e53eb07"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"c04849e4dbb18d91d9cd2f3063fc36d46cbe23bd","unresolved":false,"context_lines":[{"line_number":18,"context_line":"class FakeTrunk(object):"},{"line_number":19,"context_line":"    \"\"\"Fake one or more trunks.\"\"\""},{"line_number":20,"context_line":"    @staticmethod"},{"line_number":21,"context_line":"    def create_one_trunk(attrs\u003dNone):"},{"line_number":22,"context_line":"        \"\"\"Create a fake trunk."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"        :param Dictionary attrs:"}],"source_content_type":"text/x-python","patch_set":19,"id":"bacf61ea_302f4c40","line":21,"in_reply_to":"bacf61ea_d1e0c1fc","updated":"2016-08-01 22:57:09.000000000","message":"theoretically you can create a subport along with a trunk .. so this method creates a trunk by setting the name, parent port, one subport, and the admin state","commit_id":"5bd99cb3c9fc81f3dc8d987e883bacbf0e53eb07"}],"neutronclient/tests/unit/osc/v2/trunk/test_network_trunk.py":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"4ef98b5d46fd4814b256e8c0611a5632178d6b72","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from osc_lib import exceptions"},{"line_number":20,"context_line":"from osc_lib import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from openstackclient.tests import utils as tests_utils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutronclient.osc.v2.trunk import network_trunk as trunk"},{"line_number":25,"context_line":"from neutronclient.tests.unit.osc.v2 import fakes as test_fakes"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_30425011","line":22,"updated":"2016-07-28 14:22:05.000000000","message":"osc_lib should have what you need now","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e8d07f1e03f8e002e971f572c743ee70cd522c02","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from osc_lib import exceptions"},{"line_number":20,"context_line":"from osc_lib import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from openstackclient.tests import utils as tests_utils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutronclient.osc.v2.trunk import network_trunk as trunk"},{"line_number":25,"context_line":"from neutronclient.tests.unit.osc.v2 import fakes as test_fakes"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_9cece32a","line":22,"in_reply_to":"bacf61ea_30425011","updated":"2016-07-28 21:26:41.000000000","message":"Will get to this in the next patch.","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"765d9af6ae6267716c17dd94f79abfea3b0b80d7","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from osc_lib import exceptions"},{"line_number":20,"context_line":"from osc_lib import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from openstackclient.tests import utils as tests_utils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutronclient.osc.v2.trunk import network_trunk as trunk"},{"line_number":25,"context_line":"from neutronclient.tests.unit.osc.v2 import fakes as test_fakes"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_f061cda9","line":22,"in_reply_to":"bacf61ea_30425011","updated":"2016-07-28 17:10:30.000000000","message":"do we need a dependency bump?","commit_id":"c1cf963a9b07c173bba534da5de81882dde8c67f"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"d34368acd95ccae065b2771b235e90d22cf94cf1","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        # Get the command object to test"},{"line_number":355,"context_line":"        self.cmd \u003d trunk.SetNetworkTrunk(self.app, self.namespace)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    def test_set_network_trunk(self):"},{"line_number":358,"context_line":"        arglist \u003d ["},{"line_number":359,"context_line":"            \u0027--name\u0027, \u0027trunky\u0027,"},{"line_number":360,"context_line":"            \u0027--disable\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_5f622c3f","line":357,"updated":"2016-07-29 18:28:19.000000000","message":"It would be ideal to test all options.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a9373c7ac8dda5cd8037ebccf568f0cc01a6a1e5","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        # Get the command object to test"},{"line_number":355,"context_line":"        self.cmd \u003d trunk.SetNetworkTrunk(self.app, self.namespace)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    def test_set_network_trunk(self):"},{"line_number":358,"context_line":"        arglist \u003d ["},{"line_number":359,"context_line":"            \u0027--name\u0027, \u0027trunky\u0027,"},{"line_number":360,"context_line":"            \u0027--disable\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bacf61ea_4df1df94","line":357,"in_reply_to":"bacf61ea_5f622c3f","updated":"2016-07-29 22:47:00.000000000","message":"name and admin_state_up are the only two attrs that can be set for a given trunk. Both are tested in this method. For clarity i split them up now\n\nSetting subports is done via add_subport and remove_subport which is tested below in their respective classes.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"}],"neutronclient/tests/unit/osc/v2/trunk/test_trunk.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    columns \u003d ("},{"line_number":30,"context_line":"        \u0027id\u0027,"},{"line_number":31,"context_line":"        \u0027name\u0027,"},{"line_number":32,"context_line":"        \u0027port\u0027,"},{"line_number":33,"context_line":"        \u0027project_id\u0027,"},{"line_number":34,"context_line":"    )"},{"line_number":35,"context_line":"    data \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_f5a6b651","line":32,"updated":"2016-07-19 21:57:26.000000000","message":"these should change as soon as we finalize the commands I guess","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"275243e3df98b9ee96484bce78bdcd7dca4ddc51","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        ]"},{"line_number":79,"context_line":"        verifylist \u003d ["},{"line_number":80,"context_line":"            (\u0027name\u0027, self._trunk.name),"},{"line_number":81,"context_line":"            (\u0027port_id\u0027, self._trunk.port_id),"},{"line_number":82,"context_line":"            (\u0027disable\u0027, True),"},{"line_number":83,"context_line":"        ]"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_677d3ce7","line":81,"updated":"2016-07-23 03:50:13.000000000","message":"should this be parent_port?","commit_id":"205ac3f6ecd8840f6e9cf928e4c8d9de58d8c2f6"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"df9cc4ee5071ae377e6697939c5faeab045ea113","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        ]"},{"line_number":79,"context_line":"        verifylist \u003d ["},{"line_number":80,"context_line":"            (\u0027name\u0027, self._trunk.name),"},{"line_number":81,"context_line":"            (\u0027port_id\u0027, self._trunk.port_id),"},{"line_number":82,"context_line":"            (\u0027disable\u0027, True),"},{"line_number":83,"context_line":"        ]"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_422f46a1","line":81,"in_reply_to":"dada55a8_677d3ce7","updated":"2016-07-23 06:04:47.000000000","message":"Done","commit_id":"205ac3f6ecd8840f6e9cf928e4c8d9de58d8c2f6"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"275243e3df98b9ee96484bce78bdcd7dca4ddc51","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        self.neutronclient.delete_trunk \u003d mock.Mock(return_value\u003dNone)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        self.neutronclient.find_trunk \u003d mock.Mock(return_value\u003dself._trunk)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        # Get the command object to test"},{"line_number":110,"context_line":"        self.cmd \u003d trunk.DeleteTrunk(self.app, self.namespace)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_076d6032","line":107,"updated":"2016-07-23 03:50:13.000000000","message":"maybe we need:\n\nmock.patch.object(trunk, \u0027_get_id\u0027, return_value\u003dself._trunk).start()","commit_id":"205ac3f6ecd8840f6e9cf928e4c8d9de58d8c2f6"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"df9cc4ee5071ae377e6697939c5faeab045ea113","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        self.neutronclient.delete_trunk \u003d mock.Mock(return_value\u003dNone)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        self.neutronclient.find_trunk \u003d mock.Mock(return_value\u003dself._trunk)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        # Get the command object to test"},{"line_number":110,"context_line":"        self.cmd \u003d trunk.DeleteTrunk(self.app, self.namespace)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_c234d64b","line":107,"in_reply_to":"dada55a8_076d6032","updated":"2016-07-23 06:04:47.000000000","message":"Done.. in a slightly different manner so it returns IDs for ports and trunks","commit_id":"205ac3f6ecd8840f6e9cf928e4c8d9de58d8c2f6"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c3739d913fe815c6f3764086fe7a1e74a55f58c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    return id_or_name"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TestCreateTrunk(test_fakes.TestNeutronClientOSCV2):"},{"line_number":31,"context_line":"    # The new trunk created"},{"line_number":32,"context_line":"    _trunk \u003d fakes.FakeTrunk.create_one_trunk()"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_5db6373e","line":30,"updated":"2016-07-27 15:41:29.000000000","message":"what about TestSetTrunk?","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    return id_or_name"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TestCreateTrunk(test_fakes.TestNeutronClientOSCV2):"},{"line_number":31,"context_line":"    # The new trunk created"},{"line_number":32,"context_line":"    _trunk \u003d fakes.FakeTrunk.create_one_trunk()"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_d5814991","line":30,"in_reply_to":"bacf61ea_39927058","updated":"2016-07-28 01:36:27.000000000","message":"Done","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    return id_or_name"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TestCreateTrunk(test_fakes.TestNeutronClientOSCV2):"},{"line_number":31,"context_line":"    # The new trunk created"},{"line_number":32,"context_line":"    _trunk \u003d fakes.FakeTrunk.create_one_trunk()"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_39927058","line":30,"in_reply_to":"bacf61ea_5db6373e","updated":"2016-07-27 18:25:53.000000000","message":"And tests for the list commands?","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    return id_or_name"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TestCreateTrunk(test_fakes.TestNeutronClientOSCV2):"},{"line_number":31,"context_line":"    # The new trunk created"},{"line_number":32,"context_line":"    _trunk \u003d fakes.FakeTrunk.create_one_trunk()"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_9577d1d3","line":30,"in_reply_to":"bacf61ea_5db6373e","updated":"2016-07-28 01:36:27.000000000","message":"Done. + more tests","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"}],"neutronclient/v2_0/client.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":1815,"context_line":"        return self.list(\u0027trunks\u0027, self.trunks_path, retrieve_all,"},{"line_number":1816,"context_line":"                         **_params)"},{"line_number":1817,"context_line":""},{"line_number":1818,"context_line":"    def show_trunk(self, trunk, **_params):"},{"line_number":1819,"context_line":"        \"\"\"Fetch information for a certain trunk port.\"\"\""},{"line_number":1820,"context_line":"        return self.get(self.trunk_path % (trunk), params\u003d_params)"},{"line_number":1821,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_956e5aff","line":1818,"updated":"2016-07-19 21:57:26.000000000","message":"update?","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":1815,"context_line":"        return self.list(\u0027trunks\u0027, self.trunks_path, retrieve_all,"},{"line_number":1816,"context_line":"                         **_params)"},{"line_number":1817,"context_line":""},{"line_number":1818,"context_line":"    def show_trunk(self, trunk, **_params):"},{"line_number":1819,"context_line":"        \"\"\"Fetch information for a certain trunk port.\"\"\""},{"line_number":1820,"context_line":"        return self.get(self.trunk_path % (trunk), params\u003d_params)"},{"line_number":1821,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_b397318f","line":1818,"in_reply_to":"dada55a8_956e5aff","updated":"2016-07-20 02:44:37.000000000","message":"Done","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":20000,"name":"Songming Yan","email":"yan.songming@zte.com.cn","username":"SonmingYan.zte"},"change_message_id":"c9026a6e213dadd30c482c68711bc3a915252a11","unresolved":false,"context_lines":[{"line_number":1828,"context_line":""},{"line_number":1829,"context_line":"    def trunk_add_subports(self, trunk, body\u003dNone):"},{"line_number":1830,"context_line":"        \"\"\"Add specified subports to the trunk.\"\"\""},{"line_number":1831,"context_line":"        return self.put(self.subports_add_path % (trunk), body\u003dbody)"},{"line_number":1832,"context_line":""},{"line_number":1833,"context_line":"    def trunk_remove_subports(self, trunk, body\u003dNone):"},{"line_number":1834,"context_line":"        \"\"\"Removes specified subports from the trunk.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_057b13f6","line":1831,"updated":"2016-07-21 02:49:11.000000000","message":"This means create and add subports . Using self.post?","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"cd51fc8fc71188416c44477817c1ad08671d6e4f","unresolved":false,"context_lines":[{"line_number":1828,"context_line":""},{"line_number":1829,"context_line":"    def trunk_add_subports(self, trunk, body\u003dNone):"},{"line_number":1830,"context_line":"        \"\"\"Add specified subports to the trunk.\"\"\""},{"line_number":1831,"context_line":"        return self.put(self.subports_add_path % (trunk), body\u003dbody)"},{"line_number":1832,"context_line":""},{"line_number":1833,"context_line":"    def trunk_remove_subports(self, trunk, body\u003dNone):"},{"line_number":1834,"context_line":"        \"\"\"Removes specified subports from the trunk.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_36f12f02","line":1831,"in_reply_to":"dada55a8_057b13f6","updated":"2016-07-21 06:20:51.000000000","message":"no, this is an update on the trunk resource [1], and it\u0027s been treated similarly to routers, see line 794 of this file.\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/extensions/trunk.py#L144","commit_id":"c93e0298b62ac4550294a3cd3260962cf8e5692f"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0bf5ffc07216a7d5cc612d42db545e39e7b7b0b8","unresolved":false,"context_lines":[{"line_number":528,"context_line":"    subports_remove_path \u003d \"/trunks/%s/remove_subports\""},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    # API has no way to report plurals, so we have to hard code them"},{"line_number":531,"context_line":"    EXTED_PLURALS \u003d {\u0027routers\u0027: \u0027router\u0027,"},{"line_number":532,"context_line":"                     \u0027floatingips\u0027: \u0027floatingip\u0027,"},{"line_number":533,"context_line":"                     \u0027service_types\u0027: \u0027service_type\u0027,"},{"line_number":534,"context_line":"                     \u0027service_definitions\u0027: \u0027service_definition\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_8febf077","line":531,"updated":"2016-07-25 17:28:55.000000000","message":"do we need a trunk here too?","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a36999e04ab9ccce7d73d286e933dcc891f0dfed","unresolved":false,"context_lines":[{"line_number":528,"context_line":"    subports_remove_path \u003d \"/trunks/%s/remove_subports\""},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    # API has no way to report plurals, so we have to hard code them"},{"line_number":531,"context_line":"    EXTED_PLURALS \u003d {\u0027routers\u0027: \u0027router\u0027,"},{"line_number":532,"context_line":"                     \u0027floatingips\u0027: \u0027floatingip\u0027,"},{"line_number":533,"context_line":"                     \u0027service_types\u0027: \u0027service_type\u0027,"},{"line_number":534,"context_line":"                     \u0027service_definitions\u0027: \u0027service_definition\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_84d109d0","line":531,"in_reply_to":"dada55a8_8febf077","updated":"2016-07-26 00:48:50.000000000","message":"Done","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"}],"releasenotes/notes/add-osc-trunk-commands-7e77283a369729c5.yaml":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4c1d2783b19e8306873b866c11659aebef26a59d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``network trunk create``, ``network trunk list``,"},{"line_number":5,"context_line":"    ``network trunk set``, ``network trunk unset``, ``network trunk delete``"},{"line_number":6,"context_line":"    and ``network subport list`` OSC commands for trunk resource."},{"line_number":7,"context_line":"    [Blueprint `vlan-aware-vms \u003chttps://blueprints.launchpad.net/neutron/+spec/vlan-aware-vms\u003e`_]"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"bacf61ea_ad1c4914","line":6,"updated":"2016-08-02 23:00:41.000000000","message":"there\u0027s also client bindings for API users.","commit_id":"a27defddda3784c836199754fc9f573ea37fc1d6"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7c352fd03532d173e8f59c996c63f655cb3d2ce8","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``network trunk create``, ``network trunk list``,"},{"line_number":5,"context_line":"    ``network trunk set``, ``network trunk unset``, ``network trunk delete``"},{"line_number":6,"context_line":"    and ``network subport list`` OSC commands for trunk resource."},{"line_number":7,"context_line":"    [Blueprint `vlan-aware-vms \u003chttps://blueprints.launchpad.net/neutron/+spec/vlan-aware-vms\u003e`_]"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"bacf61ea_f3161ef0","line":6,"in_reply_to":"bacf61ea_ad1c4914","updated":"2016-08-03 00:21:13.000000000","message":"Done","commit_id":"a27defddda3784c836199754fc9f573ea37fc1d6"}],"setup.cfg":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"7c9d84c0d9832b056d6ede79c65583a3a5b31e07","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    trunk_create \u003d neutronclient.osc.v2.trunk.trunk:CreateTrunk"},{"line_number":39,"context_line":"    trunk_delete \u003d neutronclient.osc.v2.trunk.trunk:DeleteTrunk"},{"line_number":40,"context_line":"    trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"dada55a8_a45b7286","line":38,"updated":"2016-07-19 20:44:17.000000000","message":"We need to be careful here since we are in the openstack namespace and not neutron.  So I would suggest using \"network trunk\" or \"trunk port\" for the command object unless you have other suggestions.","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    trunk_create \u003d neutronclient.osc.v2.trunk.trunk:CreateTrunk"},{"line_number":39,"context_line":"    trunk_delete \u003d neutronclient.osc.v2.trunk.trunk:DeleteTrunk"},{"line_number":40,"context_line":"    trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"dada55a8_b5739ee6","line":38,"in_reply_to":"dada55a8_a45b7286","updated":"2016-07-19 21:57:26.000000000","message":"I agree, network-trunk would be more appropriate, though a bit more verbose than I would like, but I can live with that.","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    trunk_create \u003d neutronclient.osc.v2.trunk.trunk:CreateTrunk"},{"line_number":39,"context_line":"    trunk_delete \u003d neutronclient.osc.v2.trunk.trunk:DeleteTrunk"},{"line_number":40,"context_line":"    trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"dada55a8_9392ed9d","line":38,"in_reply_to":"dada55a8_b5739ee6","updated":"2016-07-20 02:44:37.000000000","message":"Done","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64839e62758eaa68345b649ef3f2a0f9fd34b688","unresolved":false,"context_lines":[{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    trunk_create \u003d neutronclient.osc.v2.trunk.trunk:CreateTrunk"},{"line_number":39,"context_line":"    trunk_delete \u003d neutronclient.osc.v2.trunk.trunk:DeleteTrunk"},{"line_number":40,"context_line":"    trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"dada55a8_757126e0","line":40,"updated":"2016-07-19 21:57:26.000000000","message":"update?","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"7d9d822142811137172f4a48d88bdd1ab7b1d8a0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    trunk_create \u003d neutronclient.osc.v2.trunk.trunk:CreateTrunk"},{"line_number":39,"context_line":"    trunk_delete \u003d neutronclient.osc.v2.trunk.trunk:DeleteTrunk"},{"line_number":40,"context_line":"    trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"dada55a8_f391a99a","line":40,"in_reply_to":"dada55a8_757126e0","updated":"2016-07-20 02:44:37.000000000","message":"updated","commit_id":"316649018b41fc02b448d6ba1cbe447e31baf2ee"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b9062883e6d64a1b8c9a3fa1440935fc65fb2304","unresolved":false,"context_lines":[{"line_number":34,"context_line":"openstack.cli.extension \u003d"},{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.trunk:CreateTrunk"},{"line_number":39,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.trunk:DeleteTrunk"},{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"dada55a8_0c14e09d","line":37,"updated":"2016-07-21 00:41:09.000000000","message":"question: how do we get auto-completion? Maybe we can\u0027t once we go under the network \u0027namespace\u0027?","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"6fd207be3915811cb4a0c5d96347e5e969160546","unresolved":false,"context_lines":[{"line_number":34,"context_line":"openstack.cli.extension \u003d"},{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.trunk:CreateTrunk"},{"line_number":39,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.trunk:DeleteTrunk"},{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"bacf61ea_4b3bfceb","line":37,"in_reply_to":"bacf61ea_235881fa","updated":"2016-07-28 01:35:38.000000000","message":"works now.. thanks","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"6ffadcaf4624b08a3b3f1d2d76a63eac88e2d23d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"openstack.cli.extension \u003d"},{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.trunk:CreateTrunk"},{"line_number":39,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.trunk:DeleteTrunk"},{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"dada55a8_6212c558","line":37,"in_reply_to":"dada55a8_0c14e09d","updated":"2016-07-21 01:36:00.000000000","message":"yeah.. i was not able to auto complete beyond network.. maybe Richard knows how ?","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"44b53b730ebb32a8dc50ffc62a902995d56e4852","unresolved":false,"context_lines":[{"line_number":34,"context_line":"openstack.cli.extension \u003d"},{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.trunk:CreateTrunk"},{"line_number":39,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.trunk:DeleteTrunk"},{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"}],"source_content_type":"text/x-ttcn-cfg","patch_set":4,"id":"bacf61ea_235881fa","line":37,"in_reply_to":"dada55a8_6212c558","updated":"2016-07-27 17:25:32.000000000","message":"I just tested with other plugins and was able to get auto complete to work.  Are you still having a problem?","commit_id":"052130457315bd6116863ef0998c3cf87e649f80"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"946500e6596784423a9b144454050d6f5f21f1c7","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_subport_add \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_subport_list \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_subport_remove \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":10,"id":"dada55a8_6a478177","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":29},"updated":"2016-07-25 20:59:43.000000000","message":"According to OpenStack client Human interface guide [1],\nnetwork_trunk_add_subport sounds better.\n\n[1] http://docs.openstack.org/developer/python-openstackclient/humaninterfaceguide.html#command-object-s-and-action","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a36999e04ab9ccce7d73d286e933dcc891f0dfed","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_subport_add \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_subport_list \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_subport_remove \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":10,"id":"dada55a8_50ffd000","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":29},"in_reply_to":"dada55a8_6a478177","updated":"2016-07-26 00:48:50.000000000","message":"Done","commit_id":"5887e4335dbddc8dc174ad310a1f567933640691"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"2eaafba3b1c005b0091176ddb885f88eb0793616","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_list_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":12,"id":"dada55a8_786b9b1e","line":44,"range":{"start_line":44,"start_character":4,"end_line":44,"end_character":30},"updated":"2016-07-26 23:25:47.000000000","message":"when I try out this command I get the following:\n\n \n$ openstack network trunk list subport trunk1\nusage: openstack network trunk list [-h] [-f {csv,json,table,value,yaml}]\n                                    [-c COLUMN] [--max-width \u003cinteger\u003e]\n                                    [--noindent]\n                                    [--quote {all,minimal,none,nonnumeric}]\nopenstack network trunk list: error: unrecognized arguments: subport trunk1\n\nIt\u0027s confused because \"network trunk list\" and \"network trunk list subport\" have the same prefix. Can it be renamed so that it\u0027s \"network trunk subport list \u003ctrunk\u003e\"?\n\nWhen I change it to \"network_trunk_subport_list \u003d ...\" I get the expected behavior:\n\n \n$ openstack network trunk subport list trunk1\n+--------------------------------------+-------------------+-----------------+\n| Port ID                              | Segmentation Type | Segmentation ID |\n+--------------------------------------+-------------------+-----------------+\n| 29143080-6552-41fd-b16e-5484177cee6f | vlan              |             100 |\n+--------------------------------------+-------------------+-----------------+","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ec7303b905aec0eaf0f317580090eb52c55d0344","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_list_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":12,"id":"dada55a8_bb1a286d","line":44,"range":{"start_line":44,"start_character":4,"end_line":44,"end_character":30},"in_reply_to":"dada55a8_605c7d4b","updated":"2016-07-27 00:25:28.000000000","message":"enumerate?","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"9b3d26c67145651c64b3f3cfad3f5ba51f5be582","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_list_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":12,"id":"dada55a8_605c7d4b","line":44,"range":{"start_line":44,"start_character":4,"end_line":44,"end_character":30},"in_reply_to":"dada55a8_786b9b1e","updated":"2016-07-27 00:24:31.000000000","message":"yea.. thats how i had it initially.. i changed the order in the previous patch based on humaninterface guideline for osc.. guess it is problematic.. i reverted the order for now.. if there is a better suggestion for CLI .. ill be glad to change this.. because it will be nice to have consistency \nfor eg. network trunk \u003csynonym for list\u003e subport","commit_id":"133cf8e9582f12fc4d1313305931c541d485dc9b"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b29961e35dff9f3b8439177d73e0021dbc94e103","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_subport_list \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"dada55a8_db871c5f","line":44,"updated":"2016-07-27 00:29:45.000000000","message":"what about network_trunk_enumerate_subport?","commit_id":"c9cf80e434a9df73bc4062c1f520ce0a5c92e044"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"472fb60ba33efdaa2874a8c8640747196ad81235","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_subport_list \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"dada55a8_9bc2c451","line":44,"in_reply_to":"dada55a8_db871c5f","updated":"2016-07-27 00:41:41.000000000","message":"Done","commit_id":"c9cf80e434a9df73bc4062c1f520ce0a5c92e044"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_59d124fb","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":76},"updated":"2016-07-27 18:25:53.000000000","message":"From a UI perspective, you are adding a port object to a network trunk object so this should be \"network_trunk_add_port\".  The command adds it as a subport instead of a parent port, but this is implementation that could be documented in the help.  I think this would be more inline with https://github.com/openstack/python-openstackclient/blob/master/doc/source/commands.rst.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"159e110ecbb1d11b1a862a574fdde22bc1741cba","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_4c647ae4","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":76},"in_reply_to":"bacf61ea_1005afc1","updated":"2016-07-28 22:12:15.000000000","message":"Naming here can be a subjective matter. I\u0027d rather match the defined REST API and the rest of the server side model, otherwise the client/server mismatch may be confusing. A rationale to distinguish between port and subport is subtle, a subport is a port but a port may not be a subport :)","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"33750cc84413d3ddb1a479e130672ea469fee514","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_c2cda386","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":76},"in_reply_to":"bacf61ea_4c647ae4","updated":"2016-07-29 18:32:54.000000000","message":"Using subport is fine, but I think the UI still needs some work to align more closely with the OSC command structure.  I added thoughts to https://review.openstack.org/#/c/340624/18/neutronclient/osc/v2/trunk/network_trunk.py.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.trunk:ListTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_1005afc1","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":76},"in_reply_to":"bacf61ea_59d124fb","updated":"2016-07-28 01:36:27.000000000","message":"Technically yes.. a subport is a port... Though I\u0027d like to get Armando\u0027s feedback on this\nEffectively the command will now translate into\n\nopenstack network trunk add port --sub-port \u003c\u003e trunk-name\n\n@Armando: does the above command sound acceptable?","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_b4782591","line":44,"range":{"start_line":44,"start_character":18,"end_line":44,"end_character":27},"updated":"2016-07-27 18:25:53.000000000","message":"New actions should be avoided and should be discussed with the OSC team. I\u0027d like to get Dean Troyer\u0027s opinion on this.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"33750cc84413d3ddb1a479e130672ea469fee514","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_62b837c9","line":44,"range":{"start_line":44,"start_character":18,"end_line":44,"end_character":27},"in_reply_to":"bacf61ea_1fa62210","updated":"2016-07-29 18:32:54.000000000","message":"OSC hasn\u0027t implemented a direct replacement for router-port-list yet.  So this is new territory to sort out.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"159e110ecbb1d11b1a862a574fdde22bc1741cba","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_ccecea2b","line":44,"range":{"start_line":44,"start_character":18,"end_line":44,"end_character":27},"in_reply_to":"bacf61ea_305c3325","updated":"2016-07-28 22:12:15.000000000","message":"Ack, the problem arose because of the conflict with the trunk list operation. How did you solve it for routers? I can\u0027t see a command that shows the interfaces for the router a \u0027neutron router-port-list\u0027","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_305c3325","line":44,"range":{"start_line":44,"start_character":18,"end_line":44,"end_character":27},"in_reply_to":"bacf61ea_b4782591","updated":"2016-07-28 01:36:27.000000000","message":"Added Dean Troyer for feedback on this.\n\n\" openstack network trunk list subport \" command gives an error.. so we decided to substitute list with enumerate..","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"cb9027fc40dfa059a1d4926f160406d5575758cc","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_1fa62210","line":44,"range":{"start_line":44,"start_character":18,"end_line":44,"end_character":27},"in_reply_to":"bacf61ea_ccca2a1a","updated":"2016-07-28 22:37:35.000000000","message":"I suppose:\n\nnetwork_subport_list --trunk\n\nis not as nice?","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"8f38487dfa70a0ac3f0a8833d362fd22d874ade0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.trunk:SetTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_ccca2a1a","line":44,"range":{"start_line":44,"start_character":18,"end_line":44,"end_character":27},"in_reply_to":"bacf61ea_ccecea2b","updated":"2016-07-28 22:26:58.000000000","message":"Looks like router-port-list is now handled as part of port-list \n\n\"openstack port list --router \u003crouter\u003e\"\n\n--router \u003crouter\u003e     List only ports attached to this router (name or ID)","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"579ac070bcd6f104afbbd583eeb84bb4dd250517","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"},{"line_number":48,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_99db9c1b","line":45,"updated":"2016-07-27 18:25:53.000000000","message":"Similar comment as above.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"159e110ecbb1d11b1a862a574fdde22bc1741cba","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"},{"line_number":48,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_ace89611","line":45,"in_reply_to":"bacf61ea_50dd6741","updated":"2016-07-28 22:12:15.000000000","message":"For sake of consistency I\u0027d rather keep client and server naming conventions in sync.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"08480bba8bc6e04153c3c53b09a48006e7fd31f8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"},{"line_number":48,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_50dd6741","line":45,"in_reply_to":"bacf61ea_99db9c1b","updated":"2016-07-28 01:36:27.000000000","message":"ditto","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"33750cc84413d3ddb1a479e130672ea469fee514","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.trunk:ShowTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"},{"line_number":48,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"bacf61ea_e2970746","line":45,"in_reply_to":"bacf61ea_ace89611","updated":"2016-07-29 18:32:54.000000000","message":"Same as above.","commit_id":"3d3ab78a7029849d5cb64d1b10d8abbaf6e641fa"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"5cce1359313eb6cc772e87ee6243f75ad4f8d831","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.network_trunk:CreateNetworkTrunk"},{"line_number":39,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.network_trunk:DeleteNetworkTrunk"},{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.network_trunk:ListNetworkTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"bacf61ea_1f0274b4","line":38,"updated":"2016-07-29 18:11:12.000000000","message":"if we don\u0027t want to add a new \"enumerate\" verb, here\u0027s just a thought about new naming:\n\ntrunk_port_create\ntrunk_port_delete\ntrunk_port_list\ntrunk_port_set\ntrunk_port_show\ntrunk_subport_add\ntrunk_subport_list\ntrunk_subport_remove\n\nWhat do you guys think?","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e9e62daddbcb51edb1c5cb5ad7120b5ba9cd1799","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.network_trunk:CreateNetworkTrunk"},{"line_number":39,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.network_trunk:DeleteNetworkTrunk"},{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.network_trunk:ListNetworkTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"bacf61ea_420c13ed","line":38,"in_reply_to":"bacf61ea_1f0274b4","updated":"2016-07-29 18:28:10.000000000","message":"the reason we stuck with this naming scheme is because of what is specified in the naming convention guide[1]. Which led to the new verb enumerate.. \nThough actually I am more inclined towards Armando\u0027s suggestion of \nnetwork_subport_list --trunk instead of network_trunk_enumerate_subport. This is in line with what we have done for router-port-list.. i.e. port_list --router\n\n[1] http://docs.openstack.org/developer/python-openstackclient/humaninterfaceguide.html#command-object-s-and-action","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"703ab2f0be927518d2f7e7a2749cc0781551f193","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.network_trunk:CreateNetworkTrunk"},{"line_number":39,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.network_trunk:DeleteNetworkTrunk"},{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.network_trunk:ListNetworkTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"bacf61ea_8923cea6","line":38,"in_reply_to":"bacf61ea_339e8f63","updated":"2016-07-29 20:26:16.000000000","message":"I think that would be fine.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a64d7f6c1586f231f8e384ef33f04bd996f69e77","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.network_trunk:CreateNetworkTrunk"},{"line_number":39,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.network_trunk:DeleteNetworkTrunk"},{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.network_trunk:ListNetworkTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"bacf61ea_d8a592a2","line":38,"in_reply_to":"bacf61ea_420c13ed","updated":"2016-07-29 19:25:05.000000000","message":"I talked with Dean Troyer on IRC (http://eavesdrop.openstack.org/irclogs/%23openstack-sdks/%23openstack-sdks.2016-07-29.log.html) about this.  There are CLI challenges with nested resources that haven\u0027t been solved.  The right approach for this seems to be \u0027subport list\u0027 with a --network-trunk option.  This could list all subport across all network trunks with optional filtering for a specific network trunk.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"a9373c7ac8dda5cd8037ebccf568f0cc01a6a1e5","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.network_trunk:CreateNetworkTrunk"},{"line_number":39,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.network_trunk:DeleteNetworkTrunk"},{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.network_trunk:ListNetworkTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"bacf61ea_4abd4501","line":38,"in_reply_to":"bacf61ea_8923cea6","updated":"2016-07-29 22:47:00.000000000","message":"\" openstack network subport list --trunk \u003ctrunk\u003e \"  sounds ok to me. And as far as i know, neutron server does not expose GET /subports API where in it would return subports belonging to all trunks. So \"subport list\" without --trunk does not make much sense. So I will make the --trunk option required. I think Armando also had similar suggestion. Done","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"d716f2ddde3ca3e10c1b17963e8468da1b43eb2c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.network_trunk:CreateNetworkTrunk"},{"line_number":39,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.network_trunk:DeleteNetworkTrunk"},{"line_number":40,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.network_trunk:ListNetworkTrunks"},{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"bacf61ea_339e8f63","line":38,"in_reply_to":"bacf61ea_d8a592a2","updated":"2016-07-29 19:48:40.000000000","message":"\u003e This could list all subport across all network trunks with optional filtering for a specific network trunk.\n\nSo, without any \u0027--trunk\u0027 passed to the command, it will essentially do a GET /trunks, then a GET /trunks/\u003cid\u003e/get_subports on for all trunk_ids? Should we require at least one \u0027--trunk\u0027 so that we\u0027re not overloading the user with information about every trunk? I.e. \u0027--trunk\u0027 as a \"selector\" rather than a \"filter\"?","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"d34368acd95ccae065b2771b235e90d22cf94cf1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"},{"line_number":42,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.network_trunk:ShowNetworkTrunk"},{"line_number":43,"context_line":"    network_trunk_add_subport \u003d neutronclient.osc.v2.trunk.network_trunk:AddSubports"},{"line_number":44,"context_line":"    network_trunk_enumerate_subport \u003d neutronclient.osc.v2.trunk.network_trunk:ListSubports"},{"line_number":45,"context_line":"    network_trunk_remove_subport \u003d neutronclient.osc.v2.trunk.network_trunk:RemoveSubports"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[build_sphinx]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"bacf61ea_a20d0fea","line":44,"updated":"2016-07-29 18:28:19.000000000","message":"I\u0027d like to sort out the problem with list action first before considering a new action.","commit_id":"3c834dea0c329735b368ea20e86b05725cbc9812"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"82b40fc16466da40251f9e57a2bd044f9fe46ab9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"openstack.cli.extension \u003d"},{"line_number":35,"context_line":"    neutronclient \u003d neutronclient.osc.plugin"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"openstack.neutronclient.v2 \u003d"},{"line_number":38,"context_line":"    network_subport_list \u003d neutronclient.osc.v2.trunk.network_trunk:ListNetworkSubport"},{"line_number":39,"context_line":"    network_trunk_create \u003d neutronclient.osc.v2.trunk.network_trunk:CreateNetworkTrunk"},{"line_number":40,"context_line":"    network_trunk_delete \u003d neutronclient.osc.v2.trunk.network_trunk:DeleteNetworkTrunk"}],"source_content_type":"text/x-ttcn-cfg","patch_set":20,"id":"bacf61ea_2b66c129","line":37,"updated":"2016-08-02 00:05:32.000000000","message":"I think this CLI organization is great. Works really well.","commit_id":"25b25161b8bd22bda2807972fd443fab5f0610b1"}]}
