Hi, guys.<br><br>I found a bug about generate VIF Mac address. This is written this url <a href="https://bugs.launchpad.net/nova/+bug/1062097">https://bugs.launchpad.net/nova/+bug/1062097</a><br><br><div id="yui_3_5_1_1_1349653255432_218" class="yui3-editable_text-text">
<p id="yui_3_5_1_1_1349653255432_2292">I saw instance creation failed when nova-network attempted create duplicated MAC address for vif.<br>
In nova code, there are exception code exists but It looks doesn't catch exception Integrity error.</p>
<p id="yui_3_5_1_1_1349653255432_2284">This is my test code.</p><p>----------------------------------------------------------------------------------------------------------------------------------------------------</p>
<p style="margin-left:40px">#!/usr/bin/python<br>
from nova import utils<br>
from nova import flags<br>
import nova.context<br>
import sys<br>
from nova import db</p>
<p style="margin-left:40px">def main(sys):<br>
    context = nova.context.RequestContext('<a href="mailto:test@test.com">test@test.com</a>','prj-test',True,False)<br>
    vif = {'address': '02:16:3e:63:c9:39',<br>
               'instance_id': 1,<br>
               'network_id': 1,<br>
               'uuid': str(utils.gen_uuid())}</p>
<p style="margin-left:40px">    db.virtual_interface_create(context, vif)</p>
<p style="margin-left:40px">if __name__ == '__main__':<br>
    utils.default_flagfile()<br>
    FLAGS = flags.FLAGS(sys.argv)</p><p>----------------------------------------------------------------------------------------------------------------------------------------------------</p>
<p id="yui_3_5_1_1_1349653255432_2297">'02:16:3e:63:c9:39' is already exists db table. So I expected exception.VirtualInterfaceCreateException() because In db/sqlalchemy/api.py,</p><p>---------------------------------------------------------------------------------------------------------------</p>

<p> @require_context<br>
 def virtual_interface_create(context, values):<br>
     """Create a new virtual interface record in teh database.</p>
<p>     :param values: = dict containing column values<br>
     """<br>
     try:<br>
         vif_ref = models.VirtualInterface()<br>
        vif_ref.update(values)<br>
         vif_ref.save()<br>
     except IntegrityError:<br>
        raise exception.VirtualInterfaceCreateException()</p>
<p>     return vif_ref</p><p>---------------------------------------------------------------------------------------------------------------</p>
<p id="yui_3_5_1_1_1349653255432_2307">But next error is occured when I tested.</p><p>
Traceback (most recent call last):<br>
  File "./test_create_vif.sh", line 23, in <module><br>
    main(sys)<br>
  File "./test_create_vif.sh", line 17, in main<br>
    db.virtual_interface_create(context, vif)<br>
  File "/usr/local/lib/python2.7/dist-packages/nova-2012.1-py2.7.egg/nova/db/api.py", line 448, in virtual_interface_create<br>
    return IMPL.virtual_interface_create(context, values)<br>
  File "/usr/local/lib/python2.7/dist-packages/nova-2012.1-py2.7.egg/nova/db/sqlalchemy/api.py", line 120, in wrapper<br>
    return f(*args, **kwargs)<br>
  File "/usr/local/lib/python2.7/dist-packages/nova-2012.1-py2.7.egg/nova/db/sqlalchemy/api.py", line 1002, in virtual_interface_create<br>
    vif_ref.save()<br>
  File "/usr/local/lib/python2.7/dist-packages/nova-2012.1-py2.7.egg/nova/db/sqlalchemy/models.py", line 59, in save<br>
    session.flush()<br>
  File "/usr/local/lib/python2.7/dist-packages/nova-2012.1-py2.7.egg/nova/exception.py", line 98, in _wrap<br>
    raise DBError(e)<br>
nova.exception.DBError: (IntegrityError) (1062, "Duplicate entry 
'02:16:3e:63:c9:39' for key 'address'") 'INSERT INTO virtual_interfaces 
(created_at, updated_at, deleted_at, deleted, address, network_id, 
instance_id, uuid) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)' (datetime.datetime(2012, 10, 5, 8, 7, 30, 868674), None, None, 0, '02:16:3e:63:c9:39', 1, 1, '9452abe3-3fea-4706-94e3-876753e8bcb1')</p>
<p id="yui_3_5_1_1_1349653255432_2298"><br></p><p>For this reason, When VIF's mac address is duplicated, maybe instance creation is failed. I think this is a bug.<br></p><p>When Instance is created, below code is executed.</p>
<p>---------------------------------------------------------------------------------------------------------------</p>
<p>nova/network/manager.py</p>
<p id="yui_3_5_1_1_1349653255432_2308">    def add_virtual_interface(self, context, instance_uuid, network_id):<br>
        vif = {'address': utils.generate_mac_address(),<br>
               'instance_uuid': instance_uuid,<br>
               'network_id': network_id,<br>
               'uuid': str(utils.gen_uuid())}<br>
        # try FLAG times to create a vif record with a unique mac_address<br>
        for i in xrange(FLAGS.create_unique_mac_address_attempts):<br>
            try:<br>
                return self.db.virtual_interface_create(context, vif)<br>
            except exception.VirtualInterfaceCreateException:<br>
                vif['address'] = utils.generate_mac_address()<br>
        else:<br>
            self.db.virtual_interface_delete_by_instance(context,<br>
                                                         instance_uuid)<br>
            raise exception.VirtualInterfaceMacAddressException()</p></div>---------------------------------------------------------------------------------------------------------------