)]}'
{"doc/source/command-objects/server.rst":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"9d2e011faeab91ee2da22d2ebeae00c5ec439878","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        [--user-data \u003cuser-data\u003e]"},{"line_number":108,"context_line":"        [--availability-zone \u003czone-name\u003e]"},{"line_number":109,"context_line":"        [--block-device-mapping \u003cdev-name\u003dmapping\u003e [...] ]"},{"line_number":110,"context_line":"        [--nic \u003cnet-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,v6-fixed-ip\u003dip-addr,port-id\u003dport-uuid,auto,none\u003e [...] ]"},{"line_number":111,"context_line":"        [--hint \u003ckey\u003dvalue\u003e [...] ]"},{"line_number":112,"context_line":"        [--config-drive \u003cvalue\u003e|True ]"},{"line_number":113,"context_line":"        [--min \u003ccount\u003e]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_4aeaa510","side":"PARENT","line":110,"updated":"2017-03-20 21:36:26.000000000","message":"Are --network and --port mutually exclusive?  Probably not, if they are both present you\u0027ll get two NICs?  And if --nic is also present?","commit_id":"4a19f6753b9e21b3089824d17943b39c211a616a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"2efb78fc3b479e15e5701a51c7d38605a5beb9bb","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        [--user-data \u003cuser-data\u003e]"},{"line_number":108,"context_line":"        [--availability-zone \u003czone-name\u003e]"},{"line_number":109,"context_line":"        [--block-device-mapping \u003cdev-name\u003dmapping\u003e [...] ]"},{"line_number":110,"context_line":"        [--nic \u003cnet-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,v6-fixed-ip\u003dip-addr,port-id\u003dport-uuid,auto,none\u003e [...] ]"},{"line_number":111,"context_line":"        [--hint \u003ckey\u003dvalue\u003e [...] ]"},{"line_number":112,"context_line":"        [--config-drive \u003cvalue\u003e|True ]"},{"line_number":113,"context_line":"        [--min \u003ccount\u003e]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_38191623","side":"PARENT","line":110,"in_reply_to":"1a1ced50_4aeaa510","updated":"2017-03-21 17:26:19.000000000","message":"No, they are not. And just like --nic they can be repeated. For each --network, --port and --nic one NIC is created.","commit_id":"4a19f6753b9e21b3089824d17943b39c211a616a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"9d2e011faeab91ee2da22d2ebeae00c5ec439878","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        [--block-device-mapping \u003cdev-name\u003dmapping\u003e [...] ]"},{"line_number":110,"context_line":"        [--nic \u003cnet-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,v6-fixed-ip\u003dip-addr,port-id\u003dport-uuid,auto,none\u003e [...] ]"},{"line_number":111,"context_line":"        [--network \u003cnetwork,v4-fixed-ip\u003dip-addr,v6-fixed-ip\u003dip-addr\u003e]"},{"line_number":112,"context_line":"        [--port \u003cport,v4-fixed-ip\u003dip-addr,v6-fixed-ip\u003dip-addr\u003e]"},{"line_number":113,"context_line":"        [--hint \u003ckey\u003dvalue\u003e [...] ]"},{"line_number":114,"context_line":"        [--config-drive \u003cvalue\u003e|True ]"},{"line_number":115,"context_line":"        [--min \u003ccount\u003e]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_0abb4d28","line":112,"updated":"2017-03-20 21:36:26.000000000","message":"I think we need to revisit how we do the syntax for these kind of key-value list arguments.  We need to indicate which keys are required (if any) and which keys are optional (if any).\n\nSince --nic has had a long-standing ugly argument syntax string I can live with these for now.","commit_id":"34df82cb8ee77bcc08d2f18c008a0b2c483c64ae"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"355104de04a63417306a07287ffbf12786da89d6","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    Specifying a --nic of auto or none cannot be used with any other"},{"line_number":179,"context_line":"    --nic value."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. option:: --network \u003cnetwork,v4-fixed-ip\u003dip-addr,v6-fixed-ip\u003dip-addr\u003e"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    Create a NIC on the server and connect it to network."},{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_1a2ba8eb","line":181,"updated":"2017-03-31 18:45:42.000000000","message":"For some options (ex --nic), OSC accepts the format:\n\n $key0\u003d$value0,$key1\u003d$value1,...\n\nIt seems this change adds a new format for --port/--network:\n\n $value0,$key1\u003d$value1,...\n\n--port/--network and --nic configure mostly the same thing (--port/--network allows to set every attr in --nic except the network/port) BUT with different formats. It doesn\u0027t seem to be a user-friendly approach.\nm\nIMO, it seems more user-friendly to dedicate --port/--network to \"simple\" interface configurations:\n\n --port $port\n --network $network\n\nand if you want to specify an interface with an ip then use --nic.","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"769499c77151c4b2bbd3e0f0e81dcad89e880eba","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    Specifying a --nic of auto or none cannot be used with any other"},{"line_number":179,"context_line":"    --nic value."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. option:: --network \u003cnetwork,v4-fixed-ip\u003dip-addr,v6-fixed-ip\u003dip-addr\u003e"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    Create a NIC on the server and connect it to network."},{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_8aabd81b","line":181,"in_reply_to":"dfeb2761_1a2ba8eb","updated":"2017-04-01 11:13:20.000000000","message":"I don\u0027t know. I think I have a different opinion on that. You may want to discuss this in launchpad bug: https://bugs.launchpad.net/python-openstackclient/+bug/1612898","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"7eb44b7e265104d5e5f2cd4eb9e469336ce83e6c","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    Specifying a --nic of auto or none cannot be used with any other"},{"line_number":179,"context_line":"    --nic value."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. option:: --network \u003cnetwork,v4-fixed-ip\u003dip-addr,v6-fixed-ip\u003dip-addr\u003e"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    Create a NIC on the server and connect it to network."},{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_db3821a1","line":181,"updated":"2017-04-05 12:26:32.000000000","message":"it seems better to discuss argument format here instead of launchpad.\n\nIt\u0027s usually a bit idea in code to define a list with elements of different types ... IMO, this rule applies even in HMI context.","commit_id":"ba5172c4d1a025e201065cba9afbe1955187b7f6"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"89ece1b518c6d78ed1593524a49c6cd3f38c9464","unresolved":false,"context_lines":[{"line_number":168,"context_line":".. option:: --nic \u003cnet-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,v6-fixed-ip\u003dip-addr,port-id\u003dport-uuid,auto,none\u003e"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    Create a NIC on the server. Specify option multiple times to create"},{"line_number":171,"context_line":"    multiple NICs. Either net-id or port-id must be provided, but not both."},{"line_number":172,"context_line":"    net-id: attach NIC to network with this UUID,"},{"line_number":173,"context_line":"    port-id: attach NIC to port with this UUID,"},{"line_number":174,"context_line":"    v4-fixed-ip: IPv4 fixed address for NIC (optional),"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_d19ae36c","line":171,"range":{"start_line":171,"start_character":19,"end_line":171,"end_character":74},"updated":"2017-04-05 17:35:40.000000000","message":"not required, as discussed, we would need net-id with --network and port-id with --port\nNone, Auto would be a part of --nic","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"36c5cb7e9360cd7cbbbb82802aa21e17afad659c","unresolved":false,"context_lines":[{"line_number":168,"context_line":".. option:: --nic \u003cnet-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,v6-fixed-ip\u003dip-addr,port-id\u003dport-uuid,auto,none\u003e"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    Create a NIC on the server. Specify option multiple times to create"},{"line_number":171,"context_line":"    multiple NICs. Either net-id or port-id must be provided, but not both."},{"line_number":172,"context_line":"    net-id: attach NIC to network with this UUID,"},{"line_number":173,"context_line":"    port-id: attach NIC to port with this UUID,"},{"line_number":174,"context_line":"    v4-fixed-ip: IPv4 fixed address for NIC (optional),"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_0ccdd45c","line":171,"range":{"start_line":171,"start_character":19,"end_line":171,"end_character":74},"in_reply_to":"bff0334d_d19ae36c","updated":"2017-04-05 18:03:07.000000000","message":"--nic is not only for none and auto. --nic is the one that can do everything","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"89ece1b518c6d78ed1593524a49c6cd3f38c9464","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    multiple NICs. Either net-id or port-id must be provided, but not both."},{"line_number":172,"context_line":"    net-id: attach NIC to network with this UUID,"},{"line_number":173,"context_line":"    port-id: attach NIC to port with this UUID,"},{"line_number":174,"context_line":"    v4-fixed-ip: IPv4 fixed address for NIC (optional),"},{"line_number":175,"context_line":"    v6-fixed-ip: IPv6 fixed address for NIC (optional)."},{"line_number":176,"context_line":"    none: (v2.37+) no network is attached."},{"line_number":177,"context_line":"    auto: (v2.37+) the compute service will automatically allocate a network."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_b18e3f25","line":174,"range":{"start_line":174,"start_character":2,"end_line":174,"end_character":55},"updated":"2017-04-05 17:35:40.000000000","message":"should be a part of network option ??","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"36c5cb7e9360cd7cbbbb82802aa21e17afad659c","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    multiple NICs. Either net-id or port-id must be provided, but not both."},{"line_number":172,"context_line":"    net-id: attach NIC to network with this UUID,"},{"line_number":173,"context_line":"    port-id: attach NIC to port with this UUID,"},{"line_number":174,"context_line":"    v4-fixed-ip: IPv4 fixed address for NIC (optional),"},{"line_number":175,"context_line":"    v6-fixed-ip: IPv6 fixed address for NIC (optional)."},{"line_number":176,"context_line":"    none: (v2.37+) no network is attached."},{"line_number":177,"context_line":"    auto: (v2.37+) the compute service will automatically allocate a network."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_8c2fa4f5","line":174,"range":{"start_line":174,"start_character":2,"end_line":174,"end_character":55},"in_reply_to":"bff0334d_b18e3f25","updated":"2017-04-05 18:03:07.000000000","message":"i think we said, this shouldn\u0027t be part of --network, because we want simple syntax \"--network \u003cnetwork\u003e\" instead of \"--network \u003cnetwork\u003e,moreoptions\u003d...\"","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"89ece1b518c6d78ed1593524a49c6cd3f38c9464","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    net-id: attach NIC to network with this UUID,"},{"line_number":173,"context_line":"    port-id: attach NIC to port with this UUID,"},{"line_number":174,"context_line":"    v4-fixed-ip: IPv4 fixed address for NIC (optional),"},{"line_number":175,"context_line":"    v6-fixed-ip: IPv6 fixed address for NIC (optional)."},{"line_number":176,"context_line":"    none: (v2.37+) no network is attached."},{"line_number":177,"context_line":"    auto: (v2.37+) the compute service will automatically allocate a network."},{"line_number":178,"context_line":"    Specifying a --nic of auto or none cannot be used with any other"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_d1a8a378","line":175,"range":{"start_line":175,"start_character":7,"end_line":175,"end_character":12},"updated":"2017-04-05 17:35:40.000000000","message":"ditto ??","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"36c5cb7e9360cd7cbbbb82802aa21e17afad659c","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    net-id: attach NIC to network with this UUID,"},{"line_number":173,"context_line":"    port-id: attach NIC to port with this UUID,"},{"line_number":174,"context_line":"    v4-fixed-ip: IPv4 fixed address for NIC (optional),"},{"line_number":175,"context_line":"    v6-fixed-ip: IPv6 fixed address for NIC (optional)."},{"line_number":176,"context_line":"    none: (v2.37+) no network is attached."},{"line_number":177,"context_line":"    auto: (v2.37+) the compute service will automatically allocate a network."},{"line_number":178,"context_line":"    Specifying a --nic of auto or none cannot be used with any other"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_4c399c3f","line":175,"range":{"start_line":175,"start_character":7,"end_line":175,"end_character":12},"in_reply_to":"bff0334d_d1a8a378","updated":"2017-04-05 18:03:07.000000000","message":"ditto","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"529ddd4bc762f5d915072f2a40908f416dce47dc","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. option:: --network \u003cnetwork\u003e"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    Create a NIC on the server and connect it to network."},{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":185,"context_line":"    This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e."},{"line_number":186,"context_line":"    For more options on NICs see --nic parameter."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_12028ab5","line":183,"updated":"2017-04-05 20:39:13.000000000","message":"I would something like: Create a NIC on the server attach to a network","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3024167597bae6ed00b10f4b67ca86327e373934","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":".. option:: --network \u003cnetwork\u003e"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    Create a NIC on the server and connect it to network."},{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":185,"context_line":"    This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e."},{"line_number":186,"context_line":"    For more options on NICs see --nic parameter."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_e50d1091","line":183,"in_reply_to":"bff0334d_12028ab5","updated":"2017-04-06 07:17:20.000000000","message":"I like my wording more.\n\nOther opinions or suggestions?","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"89ece1b518c6d78ed1593524a49c6cd3f38c9464","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":185,"context_line":"    This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e."},{"line_number":186,"context_line":"    For more options on NICs see --nic parameter."},{"line_number":187,"context_line":"    network: attach NIC to this network"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":".. option:: --port \u003cport\u003e"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_71e677eb","line":187,"range":{"start_line":187,"start_character":4,"end_line":187,"end_character":38},"updated":"2017-04-05 17:35:40.000000000","message":"no need for this, I guess","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6591f507acbb0213ea10b8995ce7e6029bd5544a","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":185,"context_line":"    This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e."},{"line_number":186,"context_line":"    For more options on NICs see --nic parameter."},{"line_number":187,"context_line":"    network: attach NIC to this network"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":".. option:: --port \u003cport\u003e"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_b29f5eb3","line":187,"in_reply_to":"bff0334d_2c277815","updated":"2017-04-05 18:22:06.000000000","message":"We should have a paragraph or two, maybe after the options are defined here, that describes the different use cases for --nic, --port and --network and their relationship.","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"05bba3462de54dcb40331138861c83dd6168be80","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":185,"context_line":"    This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e."},{"line_number":186,"context_line":"    For more options on NICs see --nic parameter."},{"line_number":187,"context_line":"    network: attach NIC to this network"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":".. option:: --port \u003cport\u003e"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_d5550552","line":187,"in_reply_to":"bff0334d_68dd4513","updated":"2017-04-06 14:59:15.000000000","message":"Done","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"36c5cb7e9360cd7cbbbb82802aa21e17afad659c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":185,"context_line":"    This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e."},{"line_number":186,"context_line":"    For more options on NICs see --nic parameter."},{"line_number":187,"context_line":"    network: attach NIC to this network"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":".. option:: --port \u003cport\u003e"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_2c277815","line":187,"range":{"start_line":187,"start_character":4,"end_line":187,"end_character":38},"in_reply_to":"bff0334d_71e677eb","updated":"2017-04-05 18:03:07.000000000","message":"you are probably right, here. it si pretty clear what \u003cnetwork\u003e is supposed to be. i am not sure if it has to be there for consistency reasons though.\n\nmaybe more opinions on that?","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3024167597bae6ed00b10f4b67ca86327e373934","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":185,"context_line":"    This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e."},{"line_number":186,"context_line":"    For more options on NICs see --nic parameter."},{"line_number":187,"context_line":"    network: attach NIC to this network"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":".. option:: --port \u003cport\u003e"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_c5a32c4f","line":187,"in_reply_to":"bff0334d_b29f5eb3","updated":"2017-04-06 07:17:20.000000000","message":"That\u0027s a good idea. I\u0027m just not sure, where exactly to put it and how to put it there. Is there an example for such an extra explanation-paragraph in the cli refence?","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"05416056c9bd59d32c57c8fd9691f4446aa2cbda","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":185,"context_line":"    This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e."},{"line_number":186,"context_line":"    For more options on NICs see --nic parameter."},{"line_number":187,"context_line":"    network: attach NIC to this network"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":".. option:: --port \u003cport\u003e"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_68dd4513","line":187,"in_reply_to":"bff0334d_c5a32c4f","updated":"2017-04-06 14:14:46.000000000","message":"We have not done that nearly as much as we should be.  Just make it unindented paragraphs after the last argument declaration (just before the next command starts).  The help text in the code may not need to have the \"this is a wrapper part\".  Unfortunately we don\u0027t have a clean way to format blobs of test in the argparse help (yet) so it gets messy looking and we wind up walking the line between actual information in help and it not be a mess.","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"529ddd4bc762f5d915072f2a40908f416dce47dc","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":".. option:: --port \u003cport\u003e"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    Create a NIC on the server and connect it to port."},{"line_number":192,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":193,"context_line":"    This is a wrapper for --nic port-id\u003d\u003cport\u003e."},{"line_number":194,"context_line":"    For more options on NICs see --nic parameter."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_b2d75e24","line":191,"updated":"2017-04-05 20:39:13.000000000","message":"I would something like: Create a NIC on the server described by a port","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3024167597bae6ed00b10f4b67ca86327e373934","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":".. option:: --port \u003cport\u003e"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    Create a NIC on the server and connect it to port."},{"line_number":192,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":193,"context_line":"    This is a wrapper for --nic port-id\u003d\u003cport\u003e."},{"line_number":194,"context_line":"    For more options on NICs see --nic parameter."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_c5120cb2","line":191,"in_reply_to":"bff0334d_b2d75e24","updated":"2017-04-06 07:17:20.000000000","message":"I like my wording more.\n\nOther opinions or suggestions?","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"89ece1b518c6d78ed1593524a49c6cd3f38c9464","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    Specify option multiple times to create multiple NICs."},{"line_number":193,"context_line":"    This is a wrapper for --nic port-id\u003d\u003cport\u003e."},{"line_number":194,"context_line":"    For more options on NICs see --nic parameter."},{"line_number":195,"context_line":"    port: attach NIC to this port"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":".. option:: --hint \u003ckey\u003dvalue\u003e"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bff0334d_31f90f80","line":195,"range":{"start_line":195,"start_character":29,"end_line":195,"end_character":33},"updated":"2017-04-05 17:35:40.000000000","message":"ditto","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"}],"openstackclient/compute/v2/server.py":[{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"6be613423215f613753f5a55428b68c4fd764765","unresolved":false,"context_lines":[{"line_number":611,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":612,"context_line":"                nics.append(nic_info)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        if not auto_or_none:"},{"line_number":615,"context_line":"            for network_str in parsed_args.network:"},{"line_number":616,"context_line":"                nic_info \u003d {\"net-id\": \"\", \"v4-fixed-ip\": \"\","},{"line_number":617,"context_line":"                            \"v6-fixed-ip\": \"\", \"port-id\": \"\"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_dc633baf","line":614,"range":{"start_line":614,"start_character":8,"end_line":614,"end_character":28},"updated":"2017-03-13 14:23:49.000000000","message":"I\u0027m not sure, if auto and none option should be also available to --network and --port or only to --nic.\n\nThis may also depend on if --nic is going to be deprecated someday or will stay as additional option.\n\nOpinions?","commit_id":"fc8a481fd4d03c2b85748db0a1bfaaafa137d624"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"ca10d700699fbc7f78538ef2f5277f9cbfdefc4a","unresolved":false,"context_lines":[{"line_number":611,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":612,"context_line":"                nics.append(nic_info)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        if not auto_or_none:"},{"line_number":615,"context_line":"            for network_str in parsed_args.network:"},{"line_number":616,"context_line":"                nic_info \u003d {\"net-id\": \"\", \"v4-fixed-ip\": \"\","},{"line_number":617,"context_line":"                            \"v6-fixed-ip\": \"\", \"port-id\": \"\"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a22e58a_e5ce96b3","line":614,"range":{"start_line":614,"start_character":8,"end_line":614,"end_character":28},"updated":"2017-03-14 04:40:41.000000000","message":"I\u0027m not sure, if auto and none option should be also available to --network and --port or only to --nic.\n\nThis may also depend on if --nic is going to be deprecated someday or will stay as additional option.\n\nOpinions?","commit_id":"34df82cb8ee77bcc08d2f18c008a0b2c483c64ae"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"9d2e011faeab91ee2da22d2ebeae00c5ec439878","unresolved":false,"context_lines":[{"line_number":611,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":612,"context_line":"                nics.append(nic_info)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        if not auto_or_none:"},{"line_number":615,"context_line":"            for network_str in parsed_args.network:"},{"line_number":616,"context_line":"                nic_info \u003d {\"net-id\": \"\", \"v4-fixed-ip\": \"\","},{"line_number":617,"context_line":"                            \"v6-fixed-ip\": \"\", \"port-id\": \"\"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_aa45d917","line":614,"in_reply_to":"5a22e58a_e5ce96b3","updated":"2017-03-20 21:36:26.000000000","message":"I think we should leave auto and none on the --nic option only, as \u0027none\u0027 mans \"create a vnic but don\u0027t plumb it\" so you have no netowrk or port value, and \u0027auto\u0027 means \"get me a network\" so you can not specify which network or port to use, otherwise you\u0027d just specify it, eh?","commit_id":"34df82cb8ee77bcc08d2f18c008a0b2c483c64ae"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"4e5cf346dee9cfbc58d5a376470413a503f8303a","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                        msg \u003d _(\"can\u0027t create server with port specified \""},{"line_number":610,"context_line":"                                \"since network endpoint not enabled\")"},{"line_number":611,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":612,"context_line":"                nics.append(nic_info)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        if not auto_or_none:"},{"line_number":615,"context_line":"            for network_str in parsed_args.network:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_b5e16f01","line":612,"updated":"2017-03-31 18:55:03.000000000","message":"The interface ordering definition is OSC command is not respected in nics variable:\n\n openstack server create --network $net_id0 --port $port_id1 --nic net-id\u003d$net_id2 ...\n\nresults in:\n\n nics \u003d [{\u0027net-id\u0027: $net_id2}, {\u0027net-id\u0027: $net_id0}, {\u0027port-id\u0027: $port_id1}]\n\nbut it should be:\n\n nics \u003d [{\u0027net-id\u0027: $net_id0}, {\u0027port-id\u0027: $port_id1}, {\u0027net-id\u0027: $net_id2}]\n\nTo solve this trouble --nic --port --network should append their information in the same argparse attribute.","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"769499c77151c4b2bbd3e0f0e81dcad89e880eba","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                        msg \u003d _(\"can\u0027t create server with port specified \""},{"line_number":610,"context_line":"                                \"since network endpoint not enabled\")"},{"line_number":611,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":612,"context_line":"                nics.append(nic_info)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        if not auto_or_none:"},{"line_number":615,"context_line":"            for network_str in parsed_args.network:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_0a9fc803","line":612,"in_reply_to":"dfeb2761_b5e16f01","updated":"2017-04-01 11:13:20.000000000","message":"You are right, this is an issue.\n\nBut I don\u0027t know to add information of different parameters to one argparse attribute. Can you help?","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"355104de04a63417306a07287ffbf12786da89d6","unresolved":false,"context_lines":[{"line_number":611,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":612,"context_line":"                nics.append(nic_info)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        if not auto_or_none:"},{"line_number":615,"context_line":"            for network_str in parsed_args.network:"},{"line_number":616,"context_line":"                nic_info \u003d {\"net-id\": \"\", \"v4-fixed-ip\": \"\","},{"line_number":617,"context_line":"                            \"v6-fixed-ip\": \"\", \"port-id\": \"\"}"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_9a7d781e","line":614,"updated":"2017-03-31 18:45:42.000000000","message":"This method is already really (too) long so for the sake of readibility, i would prefer you move this parsing in a submethod.","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"769499c77151c4b2bbd3e0f0e81dcad89e880eba","unresolved":false,"context_lines":[{"line_number":611,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":612,"context_line":"                nics.append(nic_info)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        if not auto_or_none:"},{"line_number":615,"context_line":"            for network_str in parsed_args.network:"},{"line_number":616,"context_line":"                nic_info \u003d {\"net-id\": \"\", \"v4-fixed-ip\": \"\","},{"line_number":617,"context_line":"                            \"v6-fixed-ip\": \"\", \"port-id\": \"\"}"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_0ab8e873","line":614,"in_reply_to":"dfeb2761_9a7d781e","updated":"2017-04-01 11:13:20.000000000","message":"Another argument to use MultiKeyValueAction (see previous discussion on this change).\n\nBut as you said it is probably better to do this whole thing a little bit different.","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"355104de04a63417306a07287ffbf12786da89d6","unresolved":false,"context_lines":[{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        if not auto_or_none:"},{"line_number":615,"context_line":"            for network_str in parsed_args.network:"},{"line_number":616,"context_line":"                nic_info \u003d {\"net-id\": \"\", \"v4-fixed-ip\": \"\","},{"line_number":617,"context_line":"                            \"v6-fixed-ip\": \"\", \"port-id\": \"\"}"},{"line_number":618,"context_line":"                if \",\" in network_str:"},{"line_number":619,"context_line":"                    network, additional_args \u003d network_str.split(\",\", 1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_7a47541f","line":616,"range":{"start_line":616,"start_character":35,"end_line":616,"end_character":37},"updated":"2017-03-31 18:45:42.000000000","message":"It\u0027s really strange (incorrect?) to use \"\" as default value instead of None.","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"769499c77151c4b2bbd3e0f0e81dcad89e880eba","unresolved":false,"context_lines":[{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        if not auto_or_none:"},{"line_number":615,"context_line":"            for network_str in parsed_args.network:"},{"line_number":616,"context_line":"                nic_info \u003d {\"net-id\": \"\", \"v4-fixed-ip\": \"\","},{"line_number":617,"context_line":"                            \"v6-fixed-ip\": \"\", \"port-id\": \"\"}"},{"line_number":618,"context_line":"                if \",\" in network_str:"},{"line_number":619,"context_line":"                    network, additional_args \u003d network_str.split(\",\", 1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_2ac3acef","line":616,"range":{"start_line":616,"start_character":35,"end_line":616,"end_character":37},"in_reply_to":"dfeb2761_7a47541f","updated":"2017-04-01 11:13:20.000000000","message":"I\u0027m not sure. That is how --nic handles it.","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"355104de04a63417306a07287ffbf12786da89d6","unresolved":false,"context_lines":[{"line_number":618,"context_line":"                if \",\" in network_str:"},{"line_number":619,"context_line":"                    network, additional_args \u003d network_str.split(\",\", 1)"},{"line_number":620,"context_line":"                    try:"},{"line_number":621,"context_line":"                        nic_info.update(dict(kv_str.split(\"\u003d\", 1)"},{"line_number":622,"context_line":"                                        for kv_str"},{"line_number":623,"context_line":"                                        in additional_args.split(\",\")))"},{"line_number":624,"context_line":"                    except ValueError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_9ae69816","line":621,"updated":"2017-03-31 18:45:42.000000000","message":"L621-L623 is poorly readable and you don\u0027t need to build a dict:\n\n  nic_info.update(kv_str.split(\"\u003d\", 1) for kv in ...)","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"769499c77151c4b2bbd3e0f0e81dcad89e880eba","unresolved":false,"context_lines":[{"line_number":618,"context_line":"                if \",\" in network_str:"},{"line_number":619,"context_line":"                    network, additional_args \u003d network_str.split(\",\", 1)"},{"line_number":620,"context_line":"                    try:"},{"line_number":621,"context_line":"                        nic_info.update(dict(kv_str.split(\"\u003d\", 1)"},{"line_number":622,"context_line":"                                        for kv_str"},{"line_number":623,"context_line":"                                        in additional_args.split(\",\")))"},{"line_number":624,"context_line":"                    except ValueError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_eabca46a","line":621,"in_reply_to":"dfeb2761_9ae69816","updated":"2017-04-01 11:13:20.000000000","message":"That\u0027s why we are going to use MultiKeyValueAction","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"355104de04a63417306a07287ffbf12786da89d6","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                                        for kv_str"},{"line_number":623,"context_line":"                                        in additional_args.split(\",\")))"},{"line_number":624,"context_line":"                    except ValueError:"},{"line_number":625,"context_line":"                        msg \u003d _(\u0027Invalid --network argument %s.\u0027) % network_str"},{"line_number":626,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":627,"context_line":"                else:"},{"line_number":628,"context_line":"                    network \u003d network_str"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_3a742c35","line":625,"updated":"2017-03-31 18:45:42.000000000","message":"You can be more specific:\n\n Invalid --network argument %s, expected format net,key\u003dvalue...","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"769499c77151c4b2bbd3e0f0e81dcad89e880eba","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                                        for kv_str"},{"line_number":623,"context_line":"                                        in additional_args.split(\",\")))"},{"line_number":624,"context_line":"                    except ValueError:"},{"line_number":625,"context_line":"                        msg \u003d _(\u0027Invalid --network argument %s.\u0027) % network_str"},{"line_number":626,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":627,"context_line":"                else:"},{"line_number":628,"context_line":"                    network \u003d network_str"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_aaae9c2b","line":625,"in_reply_to":"dfeb2761_3a742c35","updated":"2017-04-01 11:13:20.000000000","message":"good point, will do that.","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"e0efa44b59189f1301452279599ab633a7154a95","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            for network_str in parsed_args.network:"},{"line_number":616,"context_line":"                nic_info \u003d {\"net-id\": \"\", \"v4-fixed-ip\": \"\","},{"line_number":617,"context_line":"                            \"v6-fixed-ip\": \"\", \"port-id\": \"\"}"},{"line_number":618,"context_line":"                if \",\" in network_str:"},{"line_number":619,"context_line":"                    network, additional_args \u003d network_str.split(\",\", 1)"},{"line_number":620,"context_line":"                    try:"},{"line_number":621,"context_line":"                        nic_info.update(dict(kv_str.split(\"\u003d\", 1)"},{"line_number":622,"context_line":"                                        for kv_str"},{"line_number":623,"context_line":"                                        in additional_args.split(\",\")))"},{"line_number":624,"context_line":"                    except ValueError:"},{"line_number":625,"context_line":"                        msg \u003d _(\u0027Invalid --network argument %s.\u0027) % network_str"},{"line_number":626,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":627,"context_line":"                else:"},{"line_number":628,"context_line":"                    network \u003d network_str"},{"line_number":629,"context_line":"                if nic_info[\"net-id\"] or nic_info[\"port-id\"]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_2ff7958d","line":626,"range":{"start_line":618,"start_character":2,"end_line":626,"end_character":58},"updated":"2017-03-29 16:19:39.000000000","message":"as discussed, can this be moved to multikeyvalue action in osclib ?","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"658ab55dc05a162b97eeae53aecb9b223b79faed","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            for network_str in parsed_args.network:"},{"line_number":616,"context_line":"                nic_info \u003d {\"net-id\": \"\", \"v4-fixed-ip\": \"\","},{"line_number":617,"context_line":"                            \"v6-fixed-ip\": \"\", \"port-id\": \"\"}"},{"line_number":618,"context_line":"                if \",\" in network_str:"},{"line_number":619,"context_line":"                    network, additional_args \u003d network_str.split(\",\", 1)"},{"line_number":620,"context_line":"                    try:"},{"line_number":621,"context_line":"                        nic_info.update(dict(kv_str.split(\"\u003d\", 1)"},{"line_number":622,"context_line":"                                        for kv_str"},{"line_number":623,"context_line":"                                        in additional_args.split(\",\")))"},{"line_number":624,"context_line":"                    except ValueError:"},{"line_number":625,"context_line":"                        msg \u003d _(\u0027Invalid --network argument %s.\u0027) % network_str"},{"line_number":626,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":627,"context_line":"                else:"},{"line_number":628,"context_line":"                    network \u003d network_str"},{"line_number":629,"context_line":"                if nic_info[\"net-id\"] or nic_info[\"port-id\"]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_20be82fe","line":626,"range":{"start_line":618,"start_character":2,"end_line":626,"end_character":58},"in_reply_to":"ffe62b97_2ff7958d","updated":"2017-03-29 17:05:22.000000000","message":"do you think i should do it in this change? i thought about doing it in a separate patch together with --nic parameter.","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"489ef30ee1638f51abaa2212a29a4952f3135c56","unresolved":false,"context_lines":[{"line_number":671,"context_line":"            if auto_or_none:"},{"line_number":672,"context_line":"                if len(nics) \u003e 1:"},{"line_number":673,"context_line":"                    msg \u003d _(\u0027Specifying a --nic of auto or none cannot \u0027"},{"line_number":674,"context_line":"                            \u0027be used with any other --nic, --netowrk \u0027"},{"line_number":675,"context_line":"                            \u0027--port value.\u0027)"},{"line_number":676,"context_line":"                    raise exceptions.CommandError(msg)"},{"line_number":677,"context_line":"                nics \u003d nics[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"bff0334d_2f12d5b2","line":674,"range":{"start_line":674,"start_character":61,"end_line":674,"end_character":68},"updated":"2017-04-05 14:47:02.000000000","message":"nit?","commit_id":"ba5172c4d1a025e201065cba9afbe1955187b7f6"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"48ca639b5a744b216d078ee56fcc46c8d189b41a","unresolved":false,"context_lines":[{"line_number":671,"context_line":"            if auto_or_none:"},{"line_number":672,"context_line":"                if len(nics) \u003e 1:"},{"line_number":673,"context_line":"                    msg \u003d _(\u0027Specifying a --nic of auto or none cannot \u0027"},{"line_number":674,"context_line":"                            \u0027be used with any other --nic, --netowrk \u0027"},{"line_number":675,"context_line":"                            \u0027--port value.\u0027)"},{"line_number":676,"context_line":"                    raise exceptions.CommandError(msg)"},{"line_number":677,"context_line":"                nics \u003d nics[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"bff0334d_cf4ec9c0","line":674,"range":{"start_line":674,"start_character":61,"end_line":674,"end_character":68},"in_reply_to":"bff0334d_2f12d5b2","updated":"2017-04-05 14:48:18.000000000","message":"Done","commit_id":"ba5172c4d1a025e201065cba9afbe1955187b7f6"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"852e4b70909171513dc6d10b02e81bc2b7ad6886","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            setattr(namespace, self.dest, [])"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        # Manipulate values"},{"line_number":203,"context_line":"        getattr(namespace, self.dest, []).append(\"network\u003d\" + values)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"class AppendPortValueAction(argparse.Action):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bff0334d_555926fc","line":203,"updated":"2017-04-05 15:16:40.000000000","message":"it simplifies to use: \"net-id\u003d...\"","commit_id":"a2743299cb571098dad4cc997b4690f475837590"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6591f507acbb0213ea10b8995ce7e6029bd5544a","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        sys.stdout.flush()"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"class AppendNetworkValueAction(argparse.Action):"},{"line_number":193,"context_line":"    \"\"\"A custom action to parse --network arguments"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    This is needed to use the same dict as for --nic."}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_12bf2afc","line":192,"updated":"2017-04-05 18:22:06.000000000","message":"Should we do some validation here if we don\u0027t want arbitrary stuff added to the argument? ie, raise an exception if there is a comma or equals in the argument as that would indicate one or more KV pairs may be present.","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3024167597bae6ed00b10f4b67ca86327e373934","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        sys.stdout.flush()"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"class AppendNetworkValueAction(argparse.Action):"},{"line_number":193,"context_line":"    \"\"\"A custom action to parse --network arguments"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    This is needed to use the same dict as for --nic."}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_70f09cca","line":192,"in_reply_to":"bff0334d_12bf2afc","updated":"2017-04-06 07:17:20.000000000","message":"Done","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3a6042789054ce092f194b30b835a85f6e428056","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    This is needed to use the same dict as for --nic."},{"line_number":196,"context_line":"    \"\"\""},{"line_number":197,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"},{"line_number":198,"context_line":"        # Make sure we have an empty lislt rather than None"},{"line_number":199,"context_line":"        if getattr(namespace, self.dest, None) is None:"},{"line_number":200,"context_line":"            setattr(namespace, self.dest, [])"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_a5cf087e","line":198,"range":{"start_line":198,"start_character":37,"end_line":198,"end_character":42},"updated":"2017-04-06 06:49:32.000000000","message":"typo","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3024167597bae6ed00b10f4b67ca86327e373934","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    This is needed to use the same dict as for --nic."},{"line_number":196,"context_line":"    \"\"\""},{"line_number":197,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"},{"line_number":198,"context_line":"        # Make sure we have an empty lislt rather than None"},{"line_number":199,"context_line":"        if getattr(namespace, self.dest, None) is None:"},{"line_number":200,"context_line":"            setattr(namespace, self.dest, [])"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_50ed98ed","line":198,"range":{"start_line":198,"start_character":37,"end_line":198,"end_character":42},"in_reply_to":"bff0334d_a5cf087e","updated":"2017-04-06 07:17:20.000000000","message":"Done","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"529ddd4bc762f5d915072f2a40908f416dce47dc","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        getattr(namespace, self.dest, []).append(\"net-id\u003d\" + values)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"class AppendPortValueAction(argparse.Action):"},{"line_number":207,"context_line":"    \"\"\"A custom action to parse --port arguments"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    This is needed to use the same dict as for --nic."}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_c6efc485","line":206,"updated":"2017-04-05 20:39:13.000000000","message":"You don\u0027t need new actions as we only want to check/reformat the input which can be done with \"smart\" type:\n\n def prefix_checked_value(prefix):\n    def func(value):\n      if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:\n         raise argparse.ArgumentTypeError(\u0027oups\u0027)\n      return prefix + value\n    return func\n\n parser.add_argument(\n   \u0027--network\u0027,\n   dest\u003d\u0027nic\u0027,\n   action\u003d\u0027append\u0027, \n   type\u003dprefix_checked_value(\u0027net-id\u003d\u0027))\n parser.add_argument(\n   \u0027--port\u0027,\n   dest\u003d\u0027nic\u0027,\n   action\u003d\u0027append\u0027, \n   type\u003dprefix_checked_value(\u0027port-id\u003d\u0027))","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3024167597bae6ed00b10f4b67ca86327e373934","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        getattr(namespace, self.dest, []).append(\"net-id\u003d\" + values)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"class AppendPortValueAction(argparse.Action):"},{"line_number":207,"context_line":"    \"\"\"A custom action to parse --port arguments"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    This is needed to use the same dict as for --nic."}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_10c15055","line":206,"in_reply_to":"bff0334d_85e3e405","updated":"2017-04-06 07:17:20.000000000","message":"Done","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3a6042789054ce092f194b30b835a85f6e428056","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        getattr(namespace, self.dest, []).append(\"net-id\u003d\" + values)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"class AppendPortValueAction(argparse.Action):"},{"line_number":207,"context_line":"    \"\"\"A custom action to parse --port arguments"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    This is needed to use the same dict as for --nic."}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_85e3e405","line":206,"in_reply_to":"bff0334d_c6efc485","updated":"2017-04-06 06:49:32.000000000","message":"I did not know that this was possible. Very nice! Thank you!","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3a6042789054ce092f194b30b835a85f6e428056","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    This is needed to use the same dict as for --nic."},{"line_number":210,"context_line":"    \"\"\""},{"line_number":211,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"},{"line_number":212,"context_line":"        # Make sure we have an empty lislt rather than None"},{"line_number":213,"context_line":"        if getattr(namespace, self.dest, None) is None:"},{"line_number":214,"context_line":"            setattr(namespace, self.dest, [])"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_25a1b8aa","line":212,"range":{"start_line":212,"start_character":37,"end_line":212,"end_character":42},"updated":"2017-04-06 06:49:32.000000000","message":"typo","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3024167597bae6ed00b10f4b67ca86327e373934","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    This is needed to use the same dict as for --nic."},{"line_number":210,"context_line":"    \"\"\""},{"line_number":211,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"},{"line_number":212,"context_line":"        # Make sure we have an empty lislt rather than None"},{"line_number":213,"context_line":"        if getattr(namespace, self.dest, None) is None:"},{"line_number":214,"context_line":"            setattr(namespace, self.dest, [])"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_f0b5ccef","line":212,"range":{"start_line":212,"start_character":37,"end_line":212,"end_character":42},"in_reply_to":"bff0334d_25a1b8aa","updated":"2017-04-06 07:17:20.000000000","message":"Done","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"529ddd4bc762f5d915072f2a40908f416dce47dc","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            metavar\u003d\"\u003cnetwork\u003e\","},{"line_number":451,"context_line":"            action\u003dAppendNetworkValueAction,"},{"line_number":452,"context_line":"            dest\u003d\u0027nic\u0027,"},{"line_number":453,"context_line":"            default\u003d[],"},{"line_number":454,"context_line":"            help\u003d_(\"Create a NIC on the server and connect it to network. \""},{"line_number":455,"context_line":"                   \"Specify option multiple times to create multiple NICs. \""},{"line_number":456,"context_line":"                   \"This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e. \""}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_46973492","line":453,"updated":"2017-04-05 20:39:13.000000000","message":"It seems you don\u0027t need to define a default value","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3024167597bae6ed00b10f4b67ca86327e373934","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            metavar\u003d\"\u003cnetwork\u003e\","},{"line_number":451,"context_line":"            action\u003dAppendNetworkValueAction,"},{"line_number":452,"context_line":"            dest\u003d\u0027nic\u0027,"},{"line_number":453,"context_line":"            default\u003d[],"},{"line_number":454,"context_line":"            help\u003d_(\"Create a NIC on the server and connect it to network. \""},{"line_number":455,"context_line":"                   \"Specify option multiple times to create multiple NICs. \""},{"line_number":456,"context_line":"                   \"This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e. \""}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_50c6b869","line":453,"in_reply_to":"bff0334d_46973492","updated":"2017-04-06 07:17:20.000000000","message":"That\u0027s right. But now that we use \u0027append\u0027 again, we need it, right?","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"9fb15e5d014d2bc861df7765b47a63007c03f30c","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\u0027Invalid argument %s.\u0027) % value"},{"line_number":121,"context_line":"            raise argparse.ArgumentTypeError(msg)"},{"line_number":122,"context_line":"        return prefix + value"},{"line_number":123,"context_line":"    return func"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bff0334d_308a141b","line":121,"range":{"start_line":121,"start_character":18,"end_line":121,"end_character":43},"updated":"2017-04-06 07:42:25.000000000","message":"Is that the right exception to use? Or would exceptions.CommandError be appropriate?","commit_id":"0938579c2ab7bd7a9c58a7e00eef1ce88a6a2e09"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4bd08547b43ca143c63329b39c9fe32f92d42b67","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\u0027Invalid argument %s.\u0027) % value"},{"line_number":121,"context_line":"            raise argparse.ArgumentTypeError(msg)"},{"line_number":122,"context_line":"        return prefix + value"},{"line_number":123,"context_line":"    return func"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bff0334d_a8922df5","line":121,"in_reply_to":"bff0334d_308a141b","updated":"2017-04-06 14:21:13.000000000","message":"That is a good generic exception, I would like to give the user more information on what is invalid.  Add something to indicate that the argument is not a list of key\u003dvalue pairs which is what we assume if this gets raised.","commit_id":"0938579c2ab7bd7a9c58a7e00eef1ce88a6a2e09"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"37e11421715ea7f5d2ec0fd77a7eda1c313fbcc7","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\u0027Invalid argument %s.\u0027) % value"},{"line_number":121,"context_line":"            raise argparse.ArgumentTypeError(msg)"},{"line_number":122,"context_line":"        return prefix + value"},{"line_number":123,"context_line":"    return func"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bff0334d_751e39bb","line":121,"in_reply_to":"bff0334d_639b26c9","updated":"2017-04-06 14:59:23.000000000","message":"Done","commit_id":"0938579c2ab7bd7a9c58a7e00eef1ce88a6a2e09"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"419b11d7577e2952efb9910a06eea58509cf4ec4","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\u0027Invalid argument %s.\u0027) % value"},{"line_number":121,"context_line":"            raise argparse.ArgumentTypeError(msg)"},{"line_number":122,"context_line":"        return prefix + value"},{"line_number":123,"context_line":"    return func"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bff0334d_639b26c9","line":121,"in_reply_to":"bff0334d_a8922df5","updated":"2017-04-06 14:35:57.000000000","message":"According to argparse code, it seems ArgumentTypeError is the correct error (otherwise we have to handle the error print).\n\nWhy not:\n\n _(\"Invalid value \u0027%s\u0027, characters \u0027,\u0027 and \u0027\u003d\u0027 are not allowed\")\n\nWe can avoid such constraint by returning a dict instead of a string BUT it can be done in a follow-up change.","commit_id":"0938579c2ab7bd7a9c58a7e00eef1ce88a6a2e09"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"aacff28bbdcd4f3d728344dceef0ab8d89394789","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\u0027Invalid argument %s.\u0027) % value"},{"line_number":121,"context_line":"            raise argparse.ArgumentTypeError(msg)"},{"line_number":122,"context_line":"        return prefix + value"},{"line_number":123,"context_line":"    return func"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bff0334d_c31e720b","line":121,"in_reply_to":"bff0334d_a8922df5","updated":"2017-04-06 14:31:05.000000000","message":"Done\n\nAlthough I\u0027m not sure about the wording.","commit_id":"0938579c2ab7bd7a9c58a7e00eef1ce88a6a2e09"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"419b11d7577e2952efb9910a06eea58509cf4ec4","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":433,"context_line":"            dest\u003d\u0027nic\u0027,"},{"line_number":434,"context_line":"            type\u003d_prefix_checked_value(\u0027net-id\u003d\u0027),"},{"line_number":435,"context_line":"            default\u003d[],"},{"line_number":436,"context_line":"            help\u003d_(\"Create a NIC on the server and connect it to network. \""},{"line_number":437,"context_line":"                   \"Specify option multiple times to create multiple NICs. \""},{"line_number":438,"context_line":"                   \"This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e. \""}],"source_content_type":"text/x-python","patch_set":12,"id":"bff0334d_83a98a7c","line":435,"updated":"2017-04-06 14:35:57.000000000","message":"the default must be consistent between --nic, --network, --port so it\u0027s perhaps better not to set the default value in argument definition and adds after L454:\n\n parser.set_defaults(nic\u003d[])\n\nor check in L587 that parsed_args.nic is not None","commit_id":"0938579c2ab7bd7a9c58a7e00eef1ce88a6a2e09"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"37e11421715ea7f5d2ec0fd77a7eda1c313fbcc7","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":433,"context_line":"            dest\u003d\u0027nic\u0027,"},{"line_number":434,"context_line":"            type\u003d_prefix_checked_value(\u0027net-id\u003d\u0027),"},{"line_number":435,"context_line":"            default\u003d[],"},{"line_number":436,"context_line":"            help\u003d_(\"Create a NIC on the server and connect it to network. \""},{"line_number":437,"context_line":"                   \"Specify option multiple times to create multiple NICs. \""},{"line_number":438,"context_line":"                   \"This is a wrapper for --nic net-id\u003d\u003cnetwork\u003e. \""}],"source_content_type":"text/x-python","patch_set":12,"id":"bff0334d_5579f5f9","line":435,"in_reply_to":"bff0334d_83a98a7c","updated":"2017-04-06 14:59:23.000000000","message":"Done","commit_id":"0938579c2ab7bd7a9c58a7e00eef1ce88a6a2e09"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"ff3f647a7a34ae52aacae006182c1ae5dbb04a5f","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\u0027Invalid argument %s. \u0027"},{"line_number":121,"context_line":"                    \u0027No list of key\u003dvalue pairs expected here.\u0027) % value"},{"line_number":122,"context_line":"            raise argparse.ArgumentTypeError(msg)"},{"line_number":123,"context_line":"        return prefix + value"},{"line_number":124,"context_line":"    return func"}],"source_content_type":"text/x-python","patch_set":13,"id":"bff0334d_639566e4","line":121,"updated":"2017-04-06 14:47:06.000000000","message":"This explanation is not user-friendly, it doesn\u0027t explain what in value is invalid, i would prefer that you explicit say that value is invalid because it contains , or \u003d ... from neutron","commit_id":"ed9533dc82a21441e3c55c50a9f9a183fc1b03e1"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3a51f40dba457285ff76697b23a28813477518dc","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\u0027Invalid argument %s. \u0027"},{"line_number":121,"context_line":"                    \u0027No list of key\u003dvalue pairs expected here.\u0027) % value"},{"line_number":122,"context_line":"            raise argparse.ArgumentTypeError(msg)"},{"line_number":123,"context_line":"        return prefix + value"},{"line_number":124,"context_line":"    return func"}],"source_content_type":"text/x-python","patch_set":13,"id":"bff0334d_f5600935","line":121,"in_reply_to":"bff0334d_639566e4","updated":"2017-04-06 14:59:28.000000000","message":"Done","commit_id":"ed9533dc82a21441e3c55c50a9f9a183fc1b03e1"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"892b75dffa0478d774e46c846786368de30b97f3","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\u0027Invalid argument %s. \u0027"},{"line_number":121,"context_line":"                    \u0027No list of key\u003dvalue pairs expected here.\u0027) % value"},{"line_number":122,"context_line":"            raise argparse.ArgumentTypeError(msg)"},{"line_number":123,"context_line":"        return prefix + value"},{"line_number":124,"context_line":"    return func"}],"source_content_type":"text/x-python","patch_set":13,"id":"bff0334d_f5b6c9d9","line":121,"in_reply_to":"bff0334d_639566e4","updated":"2017-04-06 14:55:40.000000000","message":"Leave \u0027Neutron\u0027 out of it, OSC avoids project names in user-visible places.","commit_id":"ed9533dc82a21441e3c55c50a9f9a183fc1b03e1"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2e651e9a35e98a1e9db3e57dfe35c6b3d71865f0","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        )"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"def _prefix_checked_value(prefix):"},{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\"Invalid argument %s, \""}],"source_content_type":"text/x-python","patch_set":14,"id":"bff0334d_a3e7c040","line":117,"updated":"2017-04-07 13:14:42.000000000","message":"this can be moved to OSC - LIB in the next version, lets right that as a comment here, as this might be useful in other places where append option without \u003d and , are required","commit_id":"492a23b2fffbb5d187950f816917996a095f5994"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"183aae07080d087f1ed869e6e642b16f74254605","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        )"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"def _prefix_checked_value(prefix):"},{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\"Invalid argument %s, \""}],"source_content_type":"text/x-python","patch_set":14,"id":"bff0334d_ee600f04","line":117,"in_reply_to":"bff0334d_a3e7c040","updated":"2017-04-07 14:36:44.000000000","message":"Do you mean this comment you just made? Or a comment in the source code?\n\nI think, this implementation will also slightly change, once we switch \"--nic\" to MultiKeyValueAction.","commit_id":"492a23b2fffbb5d187950f816917996a095f5994"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"be3e4303ee422bb94d9baf7940d0d1da2fe7ab31","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        )"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"def _prefix_checked_value(prefix):"},{"line_number":118,"context_line":"    def func(value):"},{"line_number":119,"context_line":"        if \u0027,\u0027 in value or \u0027\u003d\u0027 in value:"},{"line_number":120,"context_line":"            msg \u003d _(\"Invalid argument %s, \""}],"source_content_type":"text/x-python","patch_set":14,"id":"7ffa3b31_21a30852","line":117,"in_reply_to":"bff0334d_ee600f04","updated":"2017-04-13 20:49:15.000000000","message":"Mention it as a comment here","commit_id":"492a23b2fffbb5d187950f816917996a095f5994"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2e651e9a35e98a1e9db3e57dfe35c6b3d71865f0","unresolved":false,"context_lines":[{"line_number":626,"context_line":"            if auto_or_none:"},{"line_number":627,"context_line":"                if len(nics) \u003e 1:"},{"line_number":628,"context_line":"                    msg \u003d _(\u0027Specifying a --nic of auto or none cannot \u0027"},{"line_number":629,"context_line":"                            \u0027be used with any other --nic, --network \u0027"},{"line_number":630,"context_line":"                            \u0027--port value.\u0027)"},{"line_number":631,"context_line":"                    raise exceptions.CommandError(msg)"},{"line_number":632,"context_line":"                nics \u003d nics[0]"},{"line_number":633,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"bff0334d_c393e4a2","line":630,"range":{"start_line":629,"start_character":68,"end_line":630,"end_character":29},"updated":"2017-04-07 13:14:42.000000000","message":"nit : or --port value","commit_id":"492a23b2fffbb5d187950f816917996a095f5994"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"183aae07080d087f1ed869e6e642b16f74254605","unresolved":false,"context_lines":[{"line_number":626,"context_line":"            if auto_or_none:"},{"line_number":627,"context_line":"                if len(nics) \u003e 1:"},{"line_number":628,"context_line":"                    msg \u003d _(\u0027Specifying a --nic of auto or none cannot \u0027"},{"line_number":629,"context_line":"                            \u0027be used with any other --nic, --network \u0027"},{"line_number":630,"context_line":"                            \u0027--port value.\u0027)"},{"line_number":631,"context_line":"                    raise exceptions.CommandError(msg)"},{"line_number":632,"context_line":"                nics \u003d nics[0]"},{"line_number":633,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"bff0334d_7b9f1c5f","line":630,"range":{"start_line":629,"start_character":68,"end_line":630,"end_character":29},"in_reply_to":"bff0334d_c393e4a2","updated":"2017-04-07 14:36:44.000000000","message":"Done","commit_id":"492a23b2fffbb5d187950f816917996a095f5994"}],"openstackclient/tests/unit/compute/v2/test_server.py":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2e651e9a35e98a1e9db3e57dfe35c6b3d71865f0","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        arglist \u003d ["},{"line_number":385,"context_line":"            \u0027--image\u0027, \u0027image1\u0027,"},{"line_number":386,"context_line":"            \u0027--flavor\u0027, \u0027flavor1\u0027,"},{"line_number":387,"context_line":"            \u0027--network\u0027, \u0027net1\u0027,"},{"line_number":388,"context_line":"            \u0027--nic\u0027, \u0027net-id\u003dnet1,v4-fixed-ip\u003d10.0.0.2\u0027,"},{"line_number":389,"context_line":"            \u0027--port\u0027, \u0027port1\u0027,"},{"line_number":390,"context_line":"            \u0027--network\u0027, \u0027net1\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bff0334d_433b549b","line":387,"range":{"start_line":387,"start_character":19,"end_line":387,"end_character":32},"updated":"2017-04-07 13:14:42.000000000","message":"can you add a test case with network net1,net2 to check the error message?\n\nAlso a test case specifying \"network and nic\" or \"port and nic\"","commit_id":"492a23b2fffbb5d187950f816917996a095f5994"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"183aae07080d087f1ed869e6e642b16f74254605","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        arglist \u003d ["},{"line_number":385,"context_line":"            \u0027--image\u0027, \u0027image1\u0027,"},{"line_number":386,"context_line":"            \u0027--flavor\u0027, \u0027flavor1\u0027,"},{"line_number":387,"context_line":"            \u0027--network\u0027, \u0027net1\u0027,"},{"line_number":388,"context_line":"            \u0027--nic\u0027, \u0027net-id\u003dnet1,v4-fixed-ip\u003d10.0.0.2\u0027,"},{"line_number":389,"context_line":"            \u0027--port\u0027, \u0027port1\u0027,"},{"line_number":390,"context_line":"            \u0027--network\u0027, \u0027net1\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bff0334d_fbab2c86","line":387,"range":{"start_line":387,"start_character":19,"end_line":387,"end_character":32},"in_reply_to":"bff0334d_433b549b","updated":"2017-04-07 14:36:44.000000000","message":"I\u0027m not sure if this is possible, because argparse catches the exception and exits on failure. That means we cannot simply check with assertRaises(). In fact I don\u0027t know how we could test this special case.","commit_id":"492a23b2fffbb5d187950f816917996a095f5994"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"96f23809b08fc6f9b284b276ee1a4ffc33b3cfb7","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        arglist \u003d ["},{"line_number":385,"context_line":"            \u0027--image\u0027, \u0027image1\u0027,"},{"line_number":386,"context_line":"            \u0027--flavor\u0027, \u0027flavor1\u0027,"},{"line_number":387,"context_line":"            \u0027--network\u0027, \u0027net1\u0027,"},{"line_number":388,"context_line":"            \u0027--nic\u0027, \u0027net-id\u003dnet1,v4-fixed-ip\u003d10.0.0.2\u0027,"},{"line_number":389,"context_line":"            \u0027--port\u0027, \u0027port1\u0027,"},{"line_number":390,"context_line":"            \u0027--network\u0027, \u0027net1\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bff0334d_d103a772","line":387,"range":{"start_line":387,"start_character":19,"end_line":387,"end_character":32},"in_reply_to":"bff0334d_fbab2c86","updated":"2017-04-07 15:26:14.000000000","message":"I am working on a follow-up change removing this constraint (neutron allows name like my\u003dnet or my,net) so it\u0027s perhaps useless to test it.","commit_id":"492a23b2fffbb5d187950f816917996a095f5994"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a5e99b7225e9864f75ba28605e3fe0f1915d00f3","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        # Mock sdk APIs."},{"line_number":428,"context_line":"        _network \u003d mock.Mock()"},{"line_number":429,"context_line":"        _network.id \u003d \u0027net1_uuid\u0027"},{"line_number":430,"context_line":"        _port1 \u003d mock.Mock()"},{"line_number":431,"context_line":"        _port1.id \u003d \u0027port1_uuid\u0027"},{"line_number":432,"context_line":"        _port2 \u003d mock.Mock()"},{"line_number":433,"context_line":"        _port2.id \u003d \u0027port2_uuid\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"7ffa3b31_c9b96d79","line":430,"updated":"2017-04-21 09:03:06.000000000","message":"While I am here: _port1\u003dmock.Mock(id\u003d\u0027port1_uuid\u0027) would save one line and be more elegant.","commit_id":"8549071363805a9eef815dd2429b6b860db11a2c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"4825f15ec5a120cff0de824c0c5a03a484b4885c","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        # Mock sdk APIs."},{"line_number":428,"context_line":"        _network \u003d mock.Mock()"},{"line_number":429,"context_line":"        _network.id \u003d \u0027net1_uuid\u0027"},{"line_number":430,"context_line":"        _port1 \u003d mock.Mock()"},{"line_number":431,"context_line":"        _port1.id \u003d \u0027port1_uuid\u0027"},{"line_number":432,"context_line":"        _port2 \u003d mock.Mock()"},{"line_number":433,"context_line":"        _port2.id \u003d \u0027port2_uuid\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"7ffa3b31_6c6267da","line":430,"in_reply_to":"7ffa3b31_092075ab","updated":"2017-04-21 09:12:55.000000000","message":"Of course it has nothing to do with that patch :) I am just saying possible source of improvement, that\u0027s what code review is about. If I wanted the patch author to rework his patch, I would have put a -1.\n\nI don\u0027t buy the argument \u0027it was done like that before, so I just copy pasted the code for consistency\u0027. That usually leads to no good.","commit_id":"8549071363805a9eef815dd2429b6b860db11a2c"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"29da52d0df81976562f5fb1d47d53b1b89657260","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        # Mock sdk APIs."},{"line_number":428,"context_line":"        _network \u003d mock.Mock()"},{"line_number":429,"context_line":"        _network.id \u003d \u0027net1_uuid\u0027"},{"line_number":430,"context_line":"        _port1 \u003d mock.Mock()"},{"line_number":431,"context_line":"        _port1.id \u003d \u0027port1_uuid\u0027"},{"line_number":432,"context_line":"        _port2 \u003d mock.Mock()"},{"line_number":433,"context_line":"        _port2.id \u003d \u0027port2_uuid\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"7ffa3b31_2c31ffa3","line":430,"in_reply_to":"7ffa3b31_6c6267da","updated":"2017-04-21 09:19:30.000000000","message":"You are totally right. I just wanted to point out, that I don\u0027t want to do it in this patch. ;)","commit_id":"8549071363805a9eef815dd2429b6b860db11a2c"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"802ddb527b2cf47bab7ea4e972ab2ed8f1bdb54c","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        # Mock sdk APIs."},{"line_number":428,"context_line":"        _network \u003d mock.Mock()"},{"line_number":429,"context_line":"        _network.id \u003d \u0027net1_uuid\u0027"},{"line_number":430,"context_line":"        _port1 \u003d mock.Mock()"},{"line_number":431,"context_line":"        _port1.id \u003d \u0027port1_uuid\u0027"},{"line_number":432,"context_line":"        _port2 \u003d mock.Mock()"},{"line_number":433,"context_line":"        _port2.id \u003d \u0027port2_uuid\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"7ffa3b31_092075ab","line":430,"in_reply_to":"7ffa3b31_c9b96d79","updated":"2017-04-21 09:07:25.000000000","message":"Hi Jordan, thanks for the hint. But I think it has nothing to do with this patch, since it also was done like that before.\n\nBut if you want to provide a follow up patch, feel free to add me to reviewers.","commit_id":"8549071363805a9eef815dd2429b6b860db11a2c"}],"releasenotes/notes/bug-1612898-bea3b68251d12d81.yaml":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"9d2e011faeab91ee2da22d2ebeae00c5ec439878","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Allow ``--network`` and ``--port`` option in ``server create`` command"},{"line_number":5,"context_line":"    in addition to ``--nic`` option."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1a1ced50_2a0009aa","line":4,"updated":"2017-03-20 21:36:26.000000000","message":"s/Allow/Add/","commit_id":"34df82cb8ee77bcc08d2f18c008a0b2c483c64ae"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"9d2e011faeab91ee2da22d2ebeae00c5ec439878","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Allow ``--network`` and ``--port`` option in ``server create`` command"},{"line_number":5,"context_line":"    in addition to ``--nic`` option."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1a1ced50_4a2d4545","line":5,"updated":"2017-03-20 21:36:26.000000000","message":"Add a pointer to the bug","commit_id":"34df82cb8ee77bcc08d2f18c008a0b2c483c64ae"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"e0efa44b59189f1301452279599ab633a7154a95","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``--network`` and ``--port`` option in ``server create`` command"},{"line_number":5,"context_line":"    in addition to ``--nic`` option."},{"line_number":6,"context_line":"    [Bug `1612898 \u003chttps://bugs.launchpad.net/bugs/1612898\u003e`_]"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ffe62b97_eff64d5d","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":17},"updated":"2017-03-29 16:19:39.000000000","message":"you can use lpbug here, I guess","commit_id":"8b8bc79e4b82925cb1644a6edb81ee05fff789d3"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6591f507acbb0213ea10b8995ce7e6029bd5544a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``--network`` and ``--port`` option in ``server create`` command"},{"line_number":5,"context_line":"    in addition to ``--nic`` option."},{"line_number":6,"context_line":"    [Bug `1612898 \u003chttps://bugs.launchpad.net/bugs/1612898\u003e`_]"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bff0334d_1254cac9","line":4,"updated":"2017-04-05 18:22:06.000000000","message":"\"options to\"","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3024167597bae6ed00b10f4b67ca86327e373934","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``--network`` and ``--port`` option in ``server create`` command"},{"line_number":5,"context_line":"    in addition to ``--nic`` option."},{"line_number":6,"context_line":"    [Bug `1612898 \u003chttps://bugs.launchpad.net/bugs/1612898\u003e`_]"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bff0334d_f0aa6c83","line":4,"in_reply_to":"bff0334d_1254cac9","updated":"2017-04-06 07:17:20.000000000","message":"Done","commit_id":"5db3f4d68129888a7763b97decfdd32112ba067a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4bd08547b43ca143c63329b39c9fe32f92d42b67","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``--network`` and ``--port`` options to ``server create`` command"},{"line_number":5,"context_line":"    in addition to ``--nic`` option."},{"line_number":6,"context_line":"    [Bug `1612898 \u003chttps://bugs.launchpad.net/bugs/1612898\u003e`_]"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"bff0334d_087239e6","line":5,"updated":"2017-04-06 14:21:13.000000000","message":"\"...as alternatives to ``--nic`` to create network interfaces.\"","commit_id":"0938579c2ab7bd7a9c58a7e00eef1ce88a6a2e09"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"aacff28bbdcd4f3d728344dceef0ab8d89394789","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``--network`` and ``--port`` options to ``server create`` command"},{"line_number":5,"context_line":"    in addition to ``--nic`` option."},{"line_number":6,"context_line":"    [Bug `1612898 \u003chttps://bugs.launchpad.net/bugs/1612898\u003e`_]"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"bff0334d_433382ac","line":5,"in_reply_to":"bff0334d_087239e6","updated":"2017-04-06 14:31:05.000000000","message":"Done","commit_id":"0938579c2ab7bd7a9c58a7e00eef1ce88a6a2e09"}]}
