Going to assume the unique keys blueprint addressed this ** Changed in: nova Assignee: Boris Pavlovic (boris-42) => (unassigned)
** Changed in: nova Status: Triaged => Invalid -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1062097 Title: virtual interface create error Status in OpenStack Compute (Nova): Invalid Bug description: I saw instance creation failed when nova-network attempted create duplicated MAC address for vif. In nova code, there are exception code exists but It looks doesn't catch exception Integrity error. This is my test code. #!/usr/bin/python from nova import utils from nova import flags import nova.context import sys from nova import db def main(sys): context = nova.context.RequestContext('t...@test.com','prj-test',True,False) vif = {'address': '02:16:3e:63:c9:39', 'instance_id': 1, 'network_id': 1, 'uuid': str(utils.gen_uuid())} db.virtual_interface_create(context, vif) if __name__ == '__main__': utils.default_flagfile() FLAGS = flags.FLAGS(sys.argv) '02:16:3e:63:c9:39' is already exists db table. So I expected exception.VirtualInterfaceCreateException() because In db/sqlalchemy/api.py, @require_context def virtual_interface_create(context, values): """Create a new virtual interface record in teh database. :param values: = dict containing column values """ try: vif_ref = models.VirtualInterface() vif_ref.update(values) vif_ref.save() except IntegrityError: raise exception.VirtualInterfaceCreateException() return vif_ref But next error is occured when I tested. Traceback (most recent call last): File "./test_create_vif.sh", line 23, in <module> main(sys) File "./test_create_vif.sh", line 17, in main db.virtual_interface_create(context, vif) File "/usr/local/lib/python2.7/dist-packages/nova-2012.1-py2.7.egg/nova/db/api.py", line 448, in virtual_interface_create return IMPL.virtual_interface_create(context, values) File "/usr/local/lib/python2.7/dist-packages/nova-2012.1-py2.7.egg/nova/db/sqlalchemy/api.py", line 120, in wrapper return f(*args, **kwargs) 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 vif_ref.save() File "/usr/local/lib/python2.7/dist-packages/nova-2012.1-py2.7.egg/nova/db/sqlalchemy/models.py", line 59, in save session.flush() File "/usr/local/lib/python2.7/dist-packages/nova-2012.1-py2.7.egg/nova/exception.py", line 98, in _wrap raise DBError(e) 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') For this reason, When VIF's mac address is duplicated, maybe instance creation is failed. When Instance is created, below code is executed. nova/network/manager.py def add_virtual_interface(self, context, instance_uuid, network_id): vif = {'address': utils.generate_mac_address(), 'instance_uuid': instance_uuid, 'network_id': network_id, 'uuid': str(utils.gen_uuid())} # try FLAG times to create a vif record with a unique mac_address for i in xrange(FLAGS.create_unique_mac_address_attempts): try: return self.db.virtual_interface_create(context, vif) except exception.VirtualInterfaceCreateException: vif['address'] = utils.generate_mac_address() else: self.db.virtual_interface_delete_by_instance(context, instance_uuid) raise exception.VirtualInterfaceMacAddressException() To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1062097/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp