Skip to content

Commit

Permalink
Remove unused ports along with unused VMIs
Browse files Browse the repository at this point in the history
Change-Id: I67681d2842a121c3503b0b415abdc8666067b8e5
Closes-Bug: #1780949
  • Loading branch information
aszc-dev committed Jul 10, 2018
1 parent 165c299 commit 6442895
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
9 changes: 5 additions & 4 deletions cvm/services.py
Expand Up @@ -246,6 +246,7 @@ def _delete_unused_vmis(self):
if self._can_modify_in_vnc(vnc_vmi):
logger.info('Deleting %s from VNC.', vnc_vmi.name)
self._vnc_api_client.delete_vmi(vnc_vmi.get_uuid())
self._delete_vrouter_port(vnc_vmi.get_uuid())

def update_nic(self, nic_info):
vmi_model = self._database.get_vmi_model_by_uuid(VirtualMachineInterfaceModel.get_uuid(nic_info.macAddress))
Expand All @@ -267,7 +268,7 @@ def _delete(self, vmi_model):
self._delete_from_vnc(vmi_model)
self._restore_vlan_id(vmi_model)
self._database.delete_vmi_model(vmi_model.uuid)
self._delete_vrouter_port(vmi_model)
self._delete_vrouter_port(vmi_model.uuid)

def _delete_from_vnc(self, vmi_model):
self._vnc_api_client.delete_vmi(vmi_model.uuid)
Expand All @@ -278,8 +279,8 @@ def _restore_vlan_id(self, vmi_model):
self._vlan_id_pool.free(vmi_model.vcenter_port.vlan_id)
vmi_model.vcenter_port.vlan_id = None

def _delete_vrouter_port(self, vmi_model):
self._database.ports_to_delete.append(vmi_model.uuid)
def _delete_vrouter_port(self, uuid):
self._database.ports_to_delete.append(uuid)

def remove_vmis_for_vm_model(self, vm_name):
vm_model = self._database.get_vm_model_by_name(vm_name)
Expand All @@ -291,7 +292,7 @@ def remove_vmis_for_vm_model(self, vm_name):
self._delete_from_vnc(vmi_model)
self._restore_vlan_id(vmi_model)
self._database.delete_vmi_model(vmi_model.uuid)
self._delete_vrouter_port(vmi_model)
self._delete_vrouter_port(vmi_model.uuid)

def rename_vmis(self, new_name):
vm_model = self._database.get_vm_model_by_name(new_name)
Expand Down
5 changes: 4 additions & 1 deletion tests/test_services.py
Expand Up @@ -360,13 +360,16 @@ def test_sync_no_vmis(self):
self.assertEqual(0, len(self.database.get_all_vmi_models()))

def test_sync_deletes_unused_vmis(self):
self.vnc_client.get_vmis_by_project.return_value = [Mock()]
vnc_vmi = Mock()
vnc_vmi.get_uuid.return_value = 'vmi-uuid'
self.vnc_client.get_vmis_by_project.return_value = [vnc_vmi]

with patch('cvm.services.VirtualMachineInterfaceService._can_modify_in_vnc') as can_modify:
can_modify.return_value = True
self.vmi_service.sync_vmis()

self.vnc_client.delete_vmi.assert_called_once()
self.assertEqual('vmi-uuid', self.database.ports_to_delete[0])

def test_remove_vmis_for_vm_model(self):
device = Mock(macAddress='mac_addr')
Expand Down

0 comments on commit 6442895

Please sign in to comment.