)]}'
{"etc/neutron/plugins/ml2/ml2_conf.ini":[{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"1d6b377a112dee82f7ee334c8e236af4412a623d","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"[ml2_vmware]"},{"line_number":65,"context_line":"# Hostname or ip address of vmware vcenter server"},{"line_number":66,"context_line":"#host_ip\u003d\u003chostname or ip of vcneter\u003e"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Login username and password of vcenter server"},{"line_number":69,"context_line":"#host_username\u003d\u003cadmin user name of vcenter\u003e"}],"source_content_type":"text/x-properties","patch_set":1,"id":"baada198_08b5257c","line":66,"updated":"2014-08-04 09:33:15.000000000","message":"I\u0027d like there is one space after \u0027#\u0027 to keep the consistent with other parts","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"02234495b6cdd838abc3071f6e6d6452ad2764dc","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"[ml2_vmware]"},{"line_number":65,"context_line":"# Hostname or ip address of vmware vcenter server"},{"line_number":66,"context_line":"#host_ip\u003d\u003chostname or ip of vcneter\u003e"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Login username and password of vcenter server"},{"line_number":69,"context_line":"#host_username\u003d\u003cadmin user name of vcenter\u003e"}],"source_content_type":"text/x-properties","patch_set":1,"id":"baada198_91787cf9","line":66,"in_reply_to":"baada198_08b5257c","updated":"2014-08-04 10:27:02.000000000","message":"Done","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"1d6b377a112dee82f7ee334c8e236af4412a623d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"#host_password\u003d\u003cpassword of vcenter\u003e"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"# The wsdl file directory to create vSphere SDK Session"},{"line_number":73,"context_line":"#wsdl_location\u003dfile:///directory/of/vSphere/SDK/wsdl/file"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"# Some SDK API Session parameters"},{"line_number":76,"context_line":"#task_poll_interval\u003d5.0"}],"source_content_type":"text/x-properties","patch_set":1,"id":"baada198_6bb4db35","line":73,"updated":"2014-08-04 09:33:15.000000000","message":"maybe we can give a wsdl location url template, thus the user only need to update the ip","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"02234495b6cdd838abc3071f6e6d6452ad2764dc","unresolved":false,"context_lines":[{"line_number":70,"context_line":"#host_password\u003d\u003cpassword of vcenter\u003e"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"# The wsdl file directory to create vSphere SDK Session"},{"line_number":73,"context_line":"#wsdl_location\u003dfile:///directory/of/vSphere/SDK/wsdl/file"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"# Some SDK API Session parameters"},{"line_number":76,"context_line":"#task_poll_interval\u003d5.0"}],"source_content_type":"text/x-properties","patch_set":1,"id":"baada198_d17e74e2","line":73,"in_reply_to":"baada198_6bb4db35","updated":"2014-08-04 10:27:02.000000000","message":"Done","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"829fc39ca7b02e4012825cae741cd6436afca69a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"# host_password\u003d\u003cpassword of vcenter\u003e"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"# The wsdl file directory to create vSphere SDK Session"},{"line_number":74,"context_line":"# wsdl_location\u003d\u003cprotocal://url/of/vSphere/SDK/wsdl/file\u003e"},{"line_number":75,"context_line":"# Example: wsdl_location\u003dhttp://127.0.0.1:8080/vim.wsdl"},{"line_number":76,"context_line":"# Example: wsdl_location\u003dfile:///opt/vmware/vim.wsdl"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-properties","patch_set":6,"id":"baada198_9d2e1faa","line":74,"updated":"2014-08-08 12:41:14.000000000","message":"protocol ?","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"1ab0196acf889dbecda00891a9dc44514c0facab","unresolved":false,"context_lines":[{"line_number":71,"context_line":"# host_password\u003d\u003cpassword of vcenter\u003e"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"# The wsdl file directory to create vSphere SDK Session"},{"line_number":74,"context_line":"# wsdl_location\u003d\u003cprotocal://url/of/vSphere/SDK/wsdl/file\u003e"},{"line_number":75,"context_line":"# Example: wsdl_location\u003dhttp://127.0.0.1:8080/vim.wsdl"},{"line_number":76,"context_line":"# Example: wsdl_location\u003dfile:///opt/vmware/vim.wsdl"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-properties","patch_set":6,"id":"1abeadc6_307816f2","line":74,"in_reply_to":"baada198_9d2e1faa","updated":"2014-08-19 09:54:17.000000000","message":"Modified in new patch.","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"1377f4bfcf4f0a28f5c5394ac8470c33656165ce","unresolved":false,"context_lines":[{"line_number":79,"context_line":"# task_poll_interval\u003d5.0"},{"line_number":80,"context_line":"# api_retry_count\u003d10"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# The mappings between local physical network device and destributed vswitch"},{"line_number":83,"context_line":"# network_maps \u003d physnet1:dvSwitch, physnet2:dvSwitch1"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-properties","patch_set":6,"id":"baada198_8244fe9f","line":82,"updated":"2014-08-08 12:10:23.000000000","message":"distributed? :)","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"1ab0196acf889dbecda00891a9dc44514c0facab","unresolved":false,"context_lines":[{"line_number":79,"context_line":"# task_poll_interval\u003d5.0"},{"line_number":80,"context_line":"# api_retry_count\u003d10"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"# The mappings between local physical network device and destributed vswitch"},{"line_number":83,"context_line":"# network_maps \u003d physnet1:dvSwitch, physnet2:dvSwitch1"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-properties","patch_set":6,"id":"1abeadc6_5073d214","line":82,"in_reply_to":"baada198_8244fe9f","updated":"2014-08-19 09:54:17.000000000","message":"Done","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"68187f1531b947bfaa1b7945c62b1fa0fd2759fa","unresolved":false,"context_lines":[{"line_number":61,"context_line":"# Controls if neutron security group is enabled or not."},{"line_number":62,"context_line":"# It should be false when you use nova security group."},{"line_number":63,"context_line":"# enable_security_group \u003d True"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"[ml2_vmware]"},{"line_number":66,"context_line":"# Hostname or ip address of vmware vcenter server"},{"line_number":67,"context_line":"# host_ip\u003d\u003chostname or ip of vcneter\u003e"}],"source_content_type":"text/x-properties","patch_set":12,"id":"1abeadc6_d78dc5d4","line":64,"updated":"2014-08-28 11:01:24.000000000","message":"I think the [ml2_vmware] should go into a file ml2_vmware.ini?","commit_id":"9500296dbdee8fbde83bcc24aec72f5731956939"}],"neutron/plugins/ml2/drivers/mech_dvs/config.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"b7aa6509e5f98ae0ac098143a790171c763713ac","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    cfg.FloatOpt("},{"line_number":36,"context_line":"        \u0027task_poll_interval\u0027,"},{"line_number":37,"context_line":"        default\u003d2,"},{"line_number":38,"context_line":"        help\u003d\u0027task_poll_interval\u0027),"},{"line_number":39,"context_line":"    cfg.IntOpt("},{"line_number":40,"context_line":"        \u0027api_retry_count\u0027,"},{"line_number":41,"context_line":"        default\u003d10,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_71f928c4","line":38,"range":{"start_line":38,"start_character":14,"end_line":38,"end_character":32},"updated":"2014-08-04 10:15:56.000000000","message":"can you mention unit?","commit_id":"7ccc448935fe49567108c978e7e636e960025230"},{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"68187f1531b947bfaa1b7945c62b1fa0fd2759fa","unresolved":false,"context_lines":[{"line_number":18,"context_line":"vmware_opts \u003d ["},{"line_number":19,"context_line":"    cfg.StrOpt("},{"line_number":20,"context_line":"        \u0027host_ip\u0027,"},{"line_number":21,"context_line":"        default\u003d\u0027localhost\u0027,"},{"line_number":22,"context_line":"        help\u003d\u0027address of vcenter\u0027),"},{"line_number":23,"context_line":"    cfg.StrOpt("},{"line_number":24,"context_line":"        \u0027host_username\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_573e15db","line":21,"updated":"2014-08-28 11:01:24.000000000","message":"I think the \u0027help\u0027 fields below need more clarity on what they really meant for. Here they are just repetition on key names. \n\nDitto for all below","commit_id":"9500296dbdee8fbde83bcc24aec72f5731956939"},{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"68187f1531b947bfaa1b7945c62b1fa0fd2759fa","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        help\u003d\u0027username of vcenter server\u0027),"},{"line_number":27,"context_line":"    cfg.StrOpt("},{"line_number":28,"context_line":"        \u0027host_password\u0027,"},{"line_number":29,"context_line":"        default\u003d\u0027password\u0027,"},{"line_number":30,"context_line":"        help\u003d\u0027password of vcenter server\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt("},{"line_number":32,"context_line":"        \u0027wsdl_location\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_b77e89ad","line":29,"updated":"2014-08-28 11:01:24.000000000","message":"secret\u003dTrue ?","commit_id":"9500296dbdee8fbde83bcc24aec72f5731956939"}],"neutron/plugins/ml2/drivers/mech_dvs/driver.py":[{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"1d6b377a112dee82f7ee334c8e236af4412a623d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Attach to networks using vmware agent."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    The VmwareMechanismDriver integrates the ml2 plugin with the"},{"line_number":32,"context_line":"    vmware L2 agent. Port binding with this driver requires the vmware"},{"line_number":33,"context_line":"    agent to be running on the port\u0027s host, and that agent to have"},{"line_number":34,"context_line":"    connectivity to at least one segment of the port\u0027s network."},{"line_number":35,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_ab81934e","line":32,"updated":"2014-08-04 09:33:15.000000000","message":"do you plan to implement vmware l2 agent as well ?","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"02234495b6cdd838abc3071f6e6d6452ad2764dc","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Attach to networks using vmware agent."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    The VmwareMechanismDriver integrates the ml2 plugin with the"},{"line_number":32,"context_line":"    vmware L2 agent. Port binding with this driver requires the vmware"},{"line_number":33,"context_line":"    agent to be running on the port\u0027s host, and that agent to have"},{"line_number":34,"context_line":"    connectivity to at least one segment of the port\u0027s network."},{"line_number":35,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_716208a8","line":32,"in_reply_to":"baada198_ab81934e","updated":"2014-08-04 10:27:02.000000000","message":"No, we do not need an agent.","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"1d6b377a112dee82f7ee334c8e236af4412a623d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                create_session\u003dTrue,"},{"line_number":59,"context_line":"                wsdl_loc\u003dwsdl_location)"},{"line_number":60,"context_line":"        except exceptions.VimConnectionException:"},{"line_number":61,"context_line":"            LOG.info(\"Connection to vcenter %s failed\", host_ip)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_network_precommit(self, context):"},{"line_number":64,"context_line":"        vmware_util.create_dvpg(self._session,"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_0b57dfc9","line":61,"updated":"2014-08-04 09:33:15.000000000","message":"need to promote the log level ?","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"02234495b6cdd838abc3071f6e6d6452ad2764dc","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                create_session\u003dTrue,"},{"line_number":59,"context_line":"                wsdl_loc\u003dwsdl_location)"},{"line_number":60,"context_line":"        except exceptions.VimConnectionException:"},{"line_number":61,"context_line":"            LOG.info(\"Connection to vcenter %s failed\", host_ip)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_network_precommit(self, context):"},{"line_number":64,"context_line":"        vmware_util.create_dvpg(self._session,"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_9104fcc6","line":61,"in_reply_to":"baada198_0b57dfc9","updated":"2014-08-04 10:27:02.000000000","message":"Done","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"53ed6f56bbcd9779cc77d032a45444da5e562b28","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except exceptions.VimConnectionException:"},{"line_number":61,"context_line":"            LOG.info(\"Connection to vcenter %s failed\", host_ip)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_network_precommit(self, context):"},{"line_number":64,"context_line":"        vmware_util.create_dvpg(self._session,"},{"line_number":65,"context_line":"                                context)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_440e36e5","line":63,"updated":"2014-08-03 17:29:44.000000000","message":"Shouldn\u0027t these be postcommit ops rather than precommit? Don\u0027t they communicate with an entity outside Neutron?","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"efd72d3600124205e7857b90cb249df3d92e5be6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except exceptions.VimConnectionException:"},{"line_number":61,"context_line":"            LOG.info(\"Connection to vcenter %s failed\", host_ip)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_network_precommit(self, context):"},{"line_number":64,"context_line":"        vmware_util.create_dvpg(self._session,"},{"line_number":65,"context_line":"                                context)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_a8f1fece","line":63,"in_reply_to":"1abeadc6_b4d6bac1","updated":"2014-08-27 07:26:33.000000000","message":"Mohanmad, please take a look at the network update and delete methods:\nhttps://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/plugin.py#L490\nhttps://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/plugin.py#L610\n\nFrom this we can see the ML2 Plugin does not give good approaches once postcommit of update and delete fails.\n\nI still insist that precommit is better for keeping data consistency.","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"02234495b6cdd838abc3071f6e6d6452ad2764dc","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except exceptions.VimConnectionException:"},{"line_number":61,"context_line":"            LOG.info(\"Connection to vcenter %s failed\", host_ip)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_network_precommit(self, context):"},{"line_number":64,"context_line":"        vmware_util.create_dvpg(self._session,"},{"line_number":65,"context_line":"                                context)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_d7f913c6","line":63,"in_reply_to":"baada198_440e36e5","updated":"2014-08-04 10:27:02.000000000","message":"I suppose precommit is better, because the failure of precommit will prevent ML2 plugin from committing the transaction by a simple rollback. Posecommit is alfter the trasaction commit, the failure of posecommit will cause a database deletion or update, which I think is a bigger performance cost. \n\nThese precommit ops communicate with vcenter via vSphere SDK.\n\nWhat do you think?","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"548c5ad57a7d623fc92adc3bc470bab3da619659","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        except exceptions.VimConnectionException:"},{"line_number":61,"context_line":"            LOG.info(\"Connection to vcenter %s failed\", host_ip)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_network_precommit(self, context):"},{"line_number":64,"context_line":"        vmware_util.create_dvpg(self._session,"},{"line_number":65,"context_line":"                                context)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_b4d6bac1","line":63,"in_reply_to":"baada198_d7f913c6","updated":"2014-08-27 07:07:13.000000000","message":"Sorry for getting back to this review so late. \n\nThat i stye point; the post commit happens outside the transaction to avoid prolonged transactions. That s the whole idea behind breaking the ops into two ops: pre commit and postcommit. As you have indicated the cleaning up if the post commit fails does not happen automatically through the transaction rollback and you have to take care of necessary cleanup. The ML2 plugin does the cleanup though.Have a look at https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/plugin.py#L459 for an example. So I think these have to be post commit operations not precommit.","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"79b1664f6a78b0f1d21e8f8967df76e96bb3bd2e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    def delete_network_precommit(self, context):"},{"line_number":68,"context_line":"        vmware_util.delete_dvpg(self._session, context)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def update_network_precommit(self, context):"},{"line_number":71,"context_line":"        vmware_util.update_dvpg(self._session, context)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_df34e14a","line":70,"updated":"2014-08-02 02:04:52.000000000","message":"What about the port methods? I am confused as to how this driver would work without these ones. Could you elaborate?","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"02234495b6cdd838abc3071f6e6d6452ad2764dc","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    def delete_network_precommit(self, context):"},{"line_number":68,"context_line":"        vmware_util.delete_dvpg(self._session, context)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def update_network_precommit(self, context):"},{"line_number":71,"context_line":"        vmware_util.update_dvpg(self._session, context)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_912b1c32","line":70,"in_reply_to":"baada198_df34e14a","updated":"2014-08-04 10:27:02.000000000","message":"Because we do not need to create port in vcenter, we only need to implement the bind_port method, so that we can pass the dvs vif type to nova, and use the network for VM deployment by the help of garyk\u0027s patch https://review.openstack.org/#/c/105351/","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"b7aa6509e5f98ae0ac098143a790171c763713ac","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def create_network_precommit(self, context):"},{"line_number":68,"context_line":"        vmware_util.create_dvpg(self._session,"},{"line_number":69,"context_line":"                                context)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def delete_network_precommit(self, context):"},{"line_number":72,"context_line":"        vmware_util.delete_dvpg(self._session, context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_71b4c81c","line":69,"updated":"2014-08-04 10:15:56.000000000","message":"RPCs in precommit hooks is deadlock-prone with the default mysql dialect.","commit_id":"7ccc448935fe49567108c978e7e636e960025230"},{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"68187f1531b947bfaa1b7945c62b1fa0fd2759fa","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def initialize(self):"},{"line_number":34,"context_line":"        LOG.info(_(\"VMware DVS mechanism driver initializing...\"))"},{"line_number":35,"context_line":"        self.vif_type \u003d portbindings.VIF_TYPE_DVS"},{"line_number":36,"context_line":"        self.vif_details \u003d {portbindings.CAP_PORT_FILTER: False}"},{"line_number":37,"context_line":"        self.vmware_util \u003d vmware_util.VMWareUtil()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_171f3d6d","line":34,"updated":"2014-08-28 11:01:24.000000000","message":"_LI()\n\nditto for below","commit_id":"9500296dbdee8fbde83bcc24aec72f5731956939"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"470e135b3e3c69bb44eec578e8c71e040b0c2e08","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.vmware_util.update_dvpg(context)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def bind_port(self, context):"},{"line_number":51,"context_line":"        LOG.debug(_(\"Attempting to bind port %(port)s on \""},{"line_number":52,"context_line":"                    \"network %(network)s\"),"},{"line_number":53,"context_line":"                  {\u0027port\u0027: context.current[\u0027id\u0027],"},{"line_number":54,"context_line":"                   \u0027network\u0027: context.network.current[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_80eaf2d5","line":51,"updated":"2014-08-29 09:43:58.000000000","message":"debug logs are no longer translated - remove _","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c5504ffeb00db159c35abc9defe50e7a2c7b4396","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.vmware_util.update_dvpg(context)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def bind_port(self, context):"},{"line_number":51,"context_line":"        LOG.debug(_(\"Attempting to bind port %(port)s on \""},{"line_number":52,"context_line":"                    \"network %(network)s\"),"},{"line_number":53,"context_line":"                  {\u0027port\u0027: context.current[\u0027id\u0027],"},{"line_number":54,"context_line":"                   \u0027network\u0027: context.network.current[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa98f980_e9126b57","line":51,"in_reply_to":"1abeadc6_80eaf2d5","updated":"2014-09-01 02:37:19.000000000","message":"Done","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"}],"neutron/plugins/ml2/drivers/mech_dvs/vmware_util.py":[{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"1d6b377a112dee82f7ee334c8e236af4412a623d","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    return dvpg_ref"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"def create_dvpg(session, context):"},{"line_number":142,"context_line":"    network \u003d context.current"},{"line_number":143,"context_line":"    segments \u003d context.network_segments"},{"line_number":144,"context_line":"    name \u003d \"%s-%s\" % (network[\u0027name\u0027], network[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_cba327af","line":141,"updated":"2014-08-04 09:33:15.000000000","message":"could you have a doc comment to give the full name for the abbreviations dvpg ? not everyone know the meaning of this abbreviation item.","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"02234495b6cdd838abc3071f6e6d6452ad2764dc","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    return dvpg_ref"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"def create_dvpg(session, context):"},{"line_number":142,"context_line":"    network \u003d context.current"},{"line_number":143,"context_line":"    segments \u003d context.network_segments"},{"line_number":144,"context_line":"    name \u003d \"%s-%s\" % (network[\u0027name\u0027], network[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_b12d80ff","line":141,"in_reply_to":"baada198_cba327af","updated":"2014-08-04 10:27:02.000000000","message":"Done","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"1d6b377a112dee82f7ee334c8e236af4412a623d","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    segments \u003d context.network_segments"},{"line_number":144,"context_line":"    name \u003d \"%s-%s\" % (network[\u0027name\u0027], network[\u0027id\u0027])"},{"line_number":145,"context_line":"    net_type \u003d segments[0][\u0027network_type\u0027]"},{"line_number":146,"context_line":"    if net_type \u003d\u003d \u0027local\u0027:"},{"line_number":147,"context_line":"        raise Exception(_(\"VCenter does not support \""},{"line_number":148,"context_line":"                        \"network_type:local, abort creating.\"))"},{"line_number":149,"context_line":"    vlan_id \u003d segments[0][\u0027segmentation_id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_abb513d1","line":146,"updated":"2014-08-04 09:33:15.000000000","message":"maybe we can check the input parameters in VMwareDVSMechanismDriver, rather than tool funtions.","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"02234495b6cdd838abc3071f6e6d6452ad2764dc","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    segments \u003d context.network_segments"},{"line_number":144,"context_line":"    name \u003d \"%s-%s\" % (network[\u0027name\u0027], network[\u0027id\u0027])"},{"line_number":145,"context_line":"    net_type \u003d segments[0][\u0027network_type\u0027]"},{"line_number":146,"context_line":"    if net_type \u003d\u003d \u0027local\u0027:"},{"line_number":147,"context_line":"        raise Exception(_(\"VCenter does not support \""},{"line_number":148,"context_line":"                        \"network_type:local, abort creating.\"))"},{"line_number":149,"context_line":"    vlan_id \u003d segments[0][\u0027segmentation_id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_312090f7","line":146,"in_reply_to":"baada198_abb513d1","updated":"2014-08-04 10:27:02.000000000","message":"IMO, keep the VMwareDVSMechanismDriver simple is better.","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"1d6b377a112dee82f7ee334c8e236af4412a623d","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        raise Exception(_(\"VCenter does not support \""},{"line_number":148,"context_line":"                        \"network_type:local, abort creating.\"))"},{"line_number":149,"context_line":"    vlan_id \u003d segments[0][\u0027segmentation_id\u0027]"},{"line_number":150,"context_line":"    if not vlan_id:"},{"line_number":151,"context_line":"        vlan_id \u003d 0"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    physical_network \u003d segments[0][\u0027physical_network\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_eb7d4b1f","line":150,"updated":"2014-08-04 09:33:15.000000000","message":"vlan_id \u003d vlan_id or 0","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"02234495b6cdd838abc3071f6e6d6452ad2764dc","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        raise Exception(_(\"VCenter does not support \""},{"line_number":148,"context_line":"                        \"network_type:local, abort creating.\"))"},{"line_number":149,"context_line":"    vlan_id \u003d segments[0][\u0027segmentation_id\u0027]"},{"line_number":150,"context_line":"    if not vlan_id:"},{"line_number":151,"context_line":"        vlan_id \u003d 0"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    physical_network \u003d segments[0][\u0027physical_network\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_511b44ca","line":150,"in_reply_to":"baada198_eb7d4b1f","updated":"2014-08-04 10:27:02.000000000","message":"Done","commit_id":"f00e7a85e2e202dadd25ce5549b17a6d32ae7f6c"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"1377f4bfcf4f0a28f5c5394ac8470c33656165ce","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ResourceNotFoundException(exceptions.VimException):"},{"line_number":26,"context_line":"    \"\"\"Thrown when can not find a Cluster by a given name.\"\"\""},{"line_number":27,"context_line":"    pass"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_e234dafb","line":26,"updated":"2014-08-08 12:10:23.000000000","message":"nit: hmm, it might sound better like this: \"Thrown when it can not find...\", but it might just be my opinion. :)","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"1ab0196acf889dbecda00891a9dc44514c0facab","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ResourceNotFoundException(exceptions.VimException):"},{"line_number":26,"context_line":"    \"\"\"Thrown when can not find a Cluster by a given name.\"\"\""},{"line_number":27,"context_line":"    pass"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_70efee87","line":26,"in_reply_to":"baada198_0fc9f6aa","updated":"2014-08-19 09:54:17.000000000","message":"Done","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"1ab0196acf889dbecda00891a9dc44514c0facab","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ResourceNotFoundException(exceptions.VimException):"},{"line_number":26,"context_line":"    \"\"\"Thrown when can not find a Cluster by a given name.\"\"\""},{"line_number":27,"context_line":"    pass"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_30e656b5","line":26,"in_reply_to":"baada198_e234dafb","updated":"2014-08-19 09:54:17.000000000","message":"Done","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"829fc39ca7b02e4012825cae741cd6436afca69a","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ResourceNotFoundException(exceptions.VimException):"},{"line_number":26,"context_line":"    \"\"\"Thrown when can not find a Cluster by a given name.\"\"\""},{"line_number":27,"context_line":"    pass"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_0fc9f6aa","line":26,"in_reply_to":"baada198_e234dafb","updated":"2014-08-08 12:41:14.000000000","message":"as Claudiu said or maybe \"Thrown when Cluster with given name cannot be found","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"1377f4bfcf4f0a28f5c5394ac8470c33656165ce","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class ResourceNotFoundException(exceptions.VimException):"},{"line_number":26,"context_line":"    \"\"\"Thrown when can not find a Cluster by a given name.\"\"\""},{"line_number":27,"context_line":"    pass"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def build_pg_spec(session, name, vlan_tag):"},{"line_number":31,"context_line":"    client_factory \u003d session.vim.client.factory"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_bd2e8340","line":28,"updated":"2014-08-08 12:10:23.000000000","message":"Since all the public functions require a session and only the VMWare driver will use this module, why not create a class VMWareUtils and pass the session in the constructor. That way, you can simplify your code and make it easier to understand as well. :)","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"1377f4bfcf4f0a28f5c5394ac8470c33656165ce","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    return pg_spec"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def get_net_name(network):"},{"line_number":58,"context_line":"    return \"%s-%s\" % (network[\"name\"], network[\"id\"])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_5d448747","line":57,"updated":"2014-08-08 12:10:23.000000000","message":"I don\u0027t think this is used anywhere else, so why not make it private? (_get_net_name)","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"1ab0196acf889dbecda00891a9dc44514c0facab","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    return pg_spec"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def get_net_name(network):"},{"line_number":58,"context_line":"    return \"%s-%s\" % (network[\"name\"], network[\"id\"])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_b0a0a644","line":57,"in_reply_to":"baada198_5d448747","updated":"2014-08-19 09:54:17.000000000","message":"Done","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"1377f4bfcf4f0a28f5c5394ac8470c33656165ce","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def get_net_name(network):"},{"line_number":58,"context_line":"    return \"%s-%s\" % (network[\"name\"], network[\"id\"])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"def _get_object_by_type(results, type_value):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_7dddcb6c","line":58,"updated":"2014-08-08 12:10:23.000000000","message":"Also, usually when you have more than one value to insert into the string formatting, you should prefer dicts: \"%(network_name)s-%(network_id)s\"","commit_id":"6c3b830e607f041e103197f738a703a648eabdcf"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"88a113e97fb1e4c7132fcc8bc3620c854e238532","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    m \u003d re.match(name_pattern, name)"},{"line_number":55,"context_line":"    if m.group() !\u003d name:"},{"line_number":56,"context_line":"        raise Exception(_(\"Illegal network name \u0027%s\u0027: can only contain \""},{"line_number":57,"context_line":"                          \"numbers, letters, \u0027_\u0027 and \u0027-\u0027.\") % name)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    uuid \u003d network[\"id\"]"},{"line_number":60,"context_line":"    net_name \u003d (\"%s-%s\" % (name, uuid) if name else uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_83b3dc4b","line":57,"updated":"2014-08-22 10:36:53.000000000","message":"since the regex contains upper and lower case characters, I think this should be specified in the Exception message.\n\n\"numbers, lowercase and uppercase letters, \u0027_\u0027 and \u0027-\u0027.\"...)","commit_id":"1cb650f4fd108686312a01137bdc011cd6e75f64"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"3e1498595122e0a430e570f91aa242d01b887d94","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    m \u003d re.match(name_pattern, name)"},{"line_number":55,"context_line":"    if m.group() !\u003d name:"},{"line_number":56,"context_line":"        raise Exception(_(\"Illegal network name \u0027%s\u0027: can only contain \""},{"line_number":57,"context_line":"                          \"numbers, letters, \u0027_\u0027 and \u0027-\u0027.\") % name)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    uuid \u003d network[\"id\"]"},{"line_number":60,"context_line":"    net_name \u003d (\"%s-%s\" % (name, uuid) if name else uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_42e9307f","line":57,"in_reply_to":"1abeadc6_83b3dc4b","updated":"2014-08-27 03:29:08.000000000","message":"Done","commit_id":"1cb650f4fd108686312a01137bdc011cd6e75f64"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"88a113e97fb1e4c7132fcc8bc3620c854e238532","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    uuid \u003d network[\"id\"]"},{"line_number":60,"context_line":"    net_name \u003d (\"%s-%s\" % (name, uuid) if name else uuid)"},{"line_number":61,"context_line":"    # The length limit of port group in vcenter is 80"},{"line_number":62,"context_line":"    if len(net_name) \u003e 80:"},{"line_number":63,"context_line":"        # Because the -%uuid has a length of 37, so the network"},{"line_number":64,"context_line":"        # name is allowed in lengh 80-37\u003d43"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_636160d2","line":61,"updated":"2014-08-22 10:36:53.000000000","message":"I Think this comment is a little bit misleading. I was expecting the number of ports in a group to be limited to 80, instead of net_name length to be limited to 80 characters.\n\nA different choice of words would fix this. How about:\n\n# The character limit of a port group\u0027s name in vcenter is 80","commit_id":"1cb650f4fd108686312a01137bdc011cd6e75f64"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"3e1498595122e0a430e570f91aa242d01b887d94","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    uuid \u003d network[\"id\"]"},{"line_number":60,"context_line":"    net_name \u003d (\"%s-%s\" % (name, uuid) if name else uuid)"},{"line_number":61,"context_line":"    # The length limit of port group in vcenter is 80"},{"line_number":62,"context_line":"    if len(net_name) \u003e 80:"},{"line_number":63,"context_line":"        # Because the -%uuid has a length of 37, so the network"},{"line_number":64,"context_line":"        # name is allowed in lengh 80-37\u003d43"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_62ec6c90","line":61,"in_reply_to":"1abeadc6_636160d2","updated":"2014-08-27 03:29:08.000000000","message":"Done","commit_id":"1cb650f4fd108686312a01137bdc011cd6e75f64"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"88a113e97fb1e4c7132fcc8bc3620c854e238532","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        # Because the -%uuid has a length of 37, so the network"},{"line_number":64,"context_line":"        # name is allowed in lengh 80-37\u003d43"},{"line_number":65,"context_line":"        raise Exception(_(\"Network name \u0027%s\u0027 to long, please limit \""},{"line_number":66,"context_line":"                          \"your network name in lengh 43.\") % name)"},{"line_number":67,"context_line":"    return net_name"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_c3ef941c","line":66,"updated":"2014-08-22 10:36:53.000000000","message":"correction: length instead of lengh","commit_id":"1cb650f4fd108686312a01137bdc011cd6e75f64"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"3e1498595122e0a430e570f91aa242d01b887d94","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        # Because the -%uuid has a length of 37, so the network"},{"line_number":64,"context_line":"        # name is allowed in lengh 80-37\u003d43"},{"line_number":65,"context_line":"        raise Exception(_(\"Network name \u0027%s\u0027 to long, please limit \""},{"line_number":66,"context_line":"                          \"your network name in lengh 43.\") % name)"},{"line_number":67,"context_line":"    return net_name"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_8202683c","line":66,"in_reply_to":"1abeadc6_c3ef941c","updated":"2014-08-27 03:29:08.000000000","message":"Done","commit_id":"1cb650f4fd108686312a01137bdc011cd6e75f64"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"470e135b3e3c69bb44eec578e8c71e040b0c2e08","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    net_name \u003d (\"%s-%s\" % (name, uuid) if name else uuid)"},{"line_number":45,"context_line":"    # The length limit of a port group\u0027s name in vcenter is 80"},{"line_number":46,"context_line":"    if len(net_name) \u003e 80:"},{"line_number":47,"context_line":"        suffix_len \u003d len(uuid) + 1"},{"line_number":48,"context_line":"        name_len_limit \u003d 80 - suffix_len"},{"line_number":49,"context_line":"        raise Exception(_(\"Network name \u0027%(name)s\u0027 is too long, please limit \""},{"line_number":50,"context_line":"                          \"your network name in length \""}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_a0f0ce67","line":47,"updated":"2014-08-29 09:43:58.000000000","message":"Isn\u0027t uuid length constant at 36 ? or there are situations where it will be written with - and sometimes without ?","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c5504ffeb00db159c35abc9defe50e7a2c7b4396","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    net_name \u003d (\"%s-%s\" % (name, uuid) if name else uuid)"},{"line_number":45,"context_line":"    # The length limit of a port group\u0027s name in vcenter is 80"},{"line_number":46,"context_line":"    if len(net_name) \u003e 80:"},{"line_number":47,"context_line":"        suffix_len \u003d len(uuid) + 1"},{"line_number":48,"context_line":"        name_len_limit \u003d 80 - suffix_len"},{"line_number":49,"context_line":"        raise Exception(_(\"Network name \u0027%(name)s\u0027 is too long, please limit \""},{"line_number":50,"context_line":"                          \"your network name in length \""}],"source_content_type":"text/x-python","patch_set":14,"id":"fa98f980_26c4a03f","line":47,"in_reply_to":"1abeadc6_a0f0ce67","updated":"2014-09-01 02:37:19.000000000","message":"If the network name is not blank, the port group name would be $name-$uuid, else the port group name would just be the $uuid.\nSo the suffix length is len(uuid) plus 1(of \"-\")\n\nsuffix_len \u003d len(uuid) + 1","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"951264bcf67e6d7d48f636500e107ba323585471","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                task_poll_interval,"},{"line_number":87,"context_line":"                create_session\u003dTrue,"},{"line_number":88,"context_line":"                wsdl_loc\u003dwsdl_location)"},{"line_number":89,"context_line":"        except exceptions.VimConnectionException:"},{"line_number":90,"context_line":"            LOG.error(_LE(\"Connection to vcenter %s failed\"), host_ip)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def build_pg_spec(self, name, vlan_tag):"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_7f4728bc","line":89,"updated":"2014-08-29 13:31:40.000000000","message":"What if there is an exception? This is caught, so the mech_dvs driver will still use this VMWareUtil instance, causing a lot of NoneType reference exceptions wherever self._session is used(almost everywhere). This can cause to a faulty driver and a lot of noise in the Logs. \n\nI think this should be reraised, or dealt with somehow.","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c5504ffeb00db159c35abc9defe50e7a2c7b4396","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                task_poll_interval,"},{"line_number":87,"context_line":"                create_session\u003dTrue,"},{"line_number":88,"context_line":"                wsdl_loc\u003dwsdl_location)"},{"line_number":89,"context_line":"        except exceptions.VimConnectionException:"},{"line_number":90,"context_line":"            LOG.error(_LE(\"Connection to vcenter %s failed\"), host_ip)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def build_pg_spec(self, name, vlan_tag):"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa98f980_491a976f","line":89,"in_reply_to":"1abeadc6_7f4728bc","updated":"2014-09-01 02:37:19.000000000","message":"Good catch! I just removed this out.","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"}],"neutron/tests/unit/ml2/drivers/mech_dvs/fake.py":[{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"470e135b3e3c69bb44eec578e8c71e040b0c2e08","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"A fake VMware VI API implementation."},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":"import collections"},{"line_number":22,"context_line":"from neutron.openstack.common import jsonutils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_233cc8c7","line":21,"updated":"2014-08-29 09:43:58.000000000","message":"nit: insert line between those imports","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c5504ffeb00db159c35abc9defe50e7a2c7b4396","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"A fake VMware VI API implementation."},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":"import collections"},{"line_number":22,"context_line":"from neutron.openstack.common import jsonutils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"fa98f980_c90e8734","line":21,"in_reply_to":"1abeadc6_233cc8c7","updated":"2014-09-01 02:37:19.000000000","message":"Done","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"}],"neutron/tests/unit/ml2/drivers/mech_dvs/test_mech_dvs.py":[{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"470e135b3e3c69bb44eec578e8c71e040b0c2e08","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import unittest"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.plugins.ml2.drivers.mech_dvs.driver \\"},{"line_number":19,"context_line":"    import VMwareDVSMechanismDriver"},{"line_number":20,"context_line":"from neutron.plugins.ml2.drivers.mech_dvs import vmware_util"},{"line_number":21,"context_line":"from neutron.tests.unit.ml2.drivers.mech_dvs import fake"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_23b12847","line":18,"updated":"2014-08-29 09:43:58.000000000","message":"http://docs.openstack.org/developer/hacking/#imports","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c5504ffeb00db159c35abc9defe50e7a2c7b4396","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import unittest"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.plugins.ml2.drivers.mech_dvs.driver \\"},{"line_number":19,"context_line":"    import VMwareDVSMechanismDriver"},{"line_number":20,"context_line":"from neutron.plugins.ml2.drivers.mech_dvs import vmware_util"},{"line_number":21,"context_line":"from neutron.tests.unit.ml2.drivers.mech_dvs import fake"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa98f980_4603640f","line":18,"in_reply_to":"1abeadc6_23b12847","updated":"2014-09-01 02:37:19.000000000","message":"Done","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"}],"neutron/tests/unit/ml2/drivers/mech_dvs/test_vmware_util.py":[{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"68187f1531b947bfaa1b7945c62b1fa0fd2759fa","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                    result.add_object(fake_obj_content)"},{"line_number":38,"context_line":"                    mock_invoke_api.return_value \u003d result"},{"line_number":39,"context_line":"                    r \u003d _util.get_datacenter()"},{"line_number":40,"context_line":"                    self.assertEqual(\"mydc\", r.name, \"Got datacenter wrong\")"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def test_get_network_folder(self):"},{"line_number":43,"context_line":"        with mock.patch.object(vmware_util.VMWareUtil, \"_create_session\"):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_cd6616bb","line":40,"updated":"2014-08-28 11:01:24.000000000","message":"I think, you need to correct these sentences. \n\nGot datacenter wrong \u003d\u003e ?? something readable.","commit_id":"9500296dbdee8fbde83bcc24aec72f5731956939"},{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"68187f1531b947bfaa1b7945c62b1fa0fd2759fa","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                    self.assertTrue(_util.get_datacenter.called,"},{"line_number":53,"context_line":"                                    \"Needed function not called!\")"},{"line_number":54,"context_line":"                    self.assertEqual(\"netfolder\", r.value,"},{"line_number":55,"context_line":"                                     \"Get Network Folader Failure\")"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_get_dvs(self):"},{"line_number":58,"context_line":"        with mock.patch.object(vmware_util.VMWareUtil, \"_create_session\"):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_4d44c61a","line":55,"updated":"2014-08-28 11:01:24.000000000","message":"Folader \u003d\u003e Folder","commit_id":"9500296dbdee8fbde83bcc24aec72f5731956939"},{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"68187f1531b947bfaa1b7945c62b1fa0fd2759fa","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                r \u003d _util.get_dvpg_by_name(\"dvpg2\")"},{"line_number":137,"context_line":"                self.assertTrue(_util.get_datacenter.called,"},{"line_number":138,"context_line":"                                \"Method needed not called!\")"},{"line_number":139,"context_line":"                self.assertEqual(None, r, \"Get DV Portgroup Failure!\")"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def test_create_dvpg(self):"},{"line_number":142,"context_line":"        with mock.patch.object(vmware_util.VMWareUtil, \"_create_session\"):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_ed2d9247","line":139,"updated":"2014-08-28 11:01:24.000000000","message":"Get or Got?","commit_id":"9500296dbdee8fbde83bcc24aec72f5731956939"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"470e135b3e3c69bb44eec578e8c71e040b0c2e08","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import contextlib"},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":"import mox"},{"line_number":18,"context_line":"import unittest"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.plugins.ml2.drivers.mech_dvs import vmware_util"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_83283c98","line":17,"updated":"2014-08-29 09:43:58.000000000","message":"mox isn\u0027t in neutron requirements - its in global requirements so if its necessary it might be added probably.","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c5504ffeb00db159c35abc9defe50e7a2c7b4396","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import contextlib"},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":"import mox"},{"line_number":18,"context_line":"import unittest"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.plugins.ml2.drivers.mech_dvs import vmware_util"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa98f980_c6175450","line":17,"in_reply_to":"1abeadc6_83283c98","updated":"2014-09-01 02:37:19.000000000","message":"It\u0027s in global requirements, I suppose it\u0027s enough, no need to add in neutron requirements.","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"}],"neutron/tests/unit/ml2/drivers/mech_dvs/units.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"951264bcf67e6d7d48f636500e107ba323585471","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 IBM Corp"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_1fb634f9","line":1,"updated":"2014-08-29 13:31:40.000000000","message":"2014? :)\n\nAlso, it is wierd for this to be into neutron/tests/unit package. Why here?\n\nAlso, where is it used? I cannot find it in this patch at a quick glance.","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c5504ffeb00db159c35abc9defe50e7a2c7b4396","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 IBM Corp"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa98f980_89047f16","line":1,"in_reply_to":"1abeadc6_1fb634f9","updated":"2014-09-01 02:37:19.000000000","message":"Done","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"}],"requirements.txt":[{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"470e135b3e3c69bb44eec578e8c71e040b0c2e08","unresolved":false,"context_lines":[{"line_number":27,"context_line":"oslo.db\u003e\u003d0.4.0  # Apache-2.0"},{"line_number":28,"context_line":"oslo.messaging\u003e\u003d1.4.0.0a3"},{"line_number":29,"context_line":"oslo.rootwrap\u003e\u003d1.3.0.0a1"},{"line_number":30,"context_line":"oslo.vmware\u003e\u003d0.2"},{"line_number":31,"context_line":"python-novaclient\u003e\u003d2.17.0"}],"source_content_type":"text/plain","patch_set":14,"id":"1abeadc6_514c2ac8","line":30,"updated":"2014-08-29 09:43:58.000000000","message":"version not compatible with global-requirements","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c5504ffeb00db159c35abc9defe50e7a2c7b4396","unresolved":false,"context_lines":[{"line_number":27,"context_line":"oslo.db\u003e\u003d0.4.0  # Apache-2.0"},{"line_number":28,"context_line":"oslo.messaging\u003e\u003d1.4.0.0a3"},{"line_number":29,"context_line":"oslo.rootwrap\u003e\u003d1.3.0.0a1"},{"line_number":30,"context_line":"oslo.vmware\u003e\u003d0.2"},{"line_number":31,"context_line":"python-novaclient\u003e\u003d2.17.0"}],"source_content_type":"text/plain","patch_set":14,"id":"fa98f980_262f40a3","line":30,"in_reply_to":"1abeadc6_514c2ac8","updated":"2014-09-01 02:37:19.000000000","message":"Done","commit_id":"30b321cfb8977f103b8588cc8814b3a4b2998415"}]}
