<div dir="ltr">Hi All,<div><br></div><div><p style="margin:0px;font-size:12px;font-family:Helvetica">In the current Ml2Plugin code when 'create_network' is called, as shown below: </p>
<p style="margin:0px;font-size:12px;font-family:Courier;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Courier;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Courier"> def create_network(self, context, network)</p>
<p style="margin:0px;font-size:12px;font-family:Courier"> net_data = network['network']</p>
<p style="margin:0px;font-size:12px;font-family:Courier">...</p><p style="margin:0px;font-size:12px;font-family:Courier"> session = context.session<br></p><p style="margin:0px;font-size:12px;font-family:Courier;min-height:14px">
</p><p style="margin:0px;min-height:14px"> with session.begin(subtransactions=True):</p><p style="margin:0px;min-height:14px"> self._ensure_default_security_group(context, tenant_id)</p><p style="margin:0px;min-height:14px">
result = super(Ml2Plugin, self).create_network(context, network)</p><div>...</div><div><br></div><p></p>
<p style="margin:0px;font-size:12px;font-family:Courier"> mech_context = driver_context.NetworkContext(self, context, result)</p>
<p style="margin:0px;font-size:12px;font-family:Courier"> self.mechanism_manager.create_network_precommit(mech_context)</p>
<p style="margin:0px;font-size:12px;font-family:Courier">...</p><p style="margin:0px;font-size:12px;font-family:Courier"><br></p>
<p style="margin:0px;font-size:12px;font-family:Courier;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">the original_network parameter is not set (the default is None) when instantiating NetworkContext, and as a result the mech_context has only the value of network object returned from <span style="font-family:Courier">super(Ml2Plugin, self).create_network().</span></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">This causes issue when a mechanism driver needs to use the original network parameters (given to the create_network), specially when extension is used for the network resources.</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">(The 'result' only has the network attributes without extension which is used to set the '_network' in the NetwrokContext object). </p><p style="margin:0px;font-size:12px;font-family:Helvetica">
Even using extension function registration using </p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">db_base_plugin_v2.NeutronDbPluginV2.register_dict_extend_funcs(...) won't help as the network object that is passed to the registered function does not include the extension parameters.</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">Is there any reason that the original_network is not set when initializing the NetworkContext? Would that cause any issue to set it to 'net_data' so that any mechanism driver can use original network parameters as they are available when create_network is called?</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica"><br></p><p style="margin:0px;font-size:12px;font-family:Helvetica">Appreciate your comments.</p><p style="margin:0px;font-size:12px;font-family:Helvetica"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">Thanks,</p><p style="margin:0px;font-size:12px;font-family:Helvetica">Nader.</p><p style="margin:0px;font-size:12px;font-family:Helvetica"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p></div></div>