def test_connect_to_field_change_ignores_deletion_by_default(self): obj = FieldChangeTestModel(name2=factory.getRandomString()) obj.save() callback = Mock() connect_to_field_change(callback, FieldChangeTestModel, 'name1') obj.delete() self.assertEqual(0, callback.call_count)
def test_connect_to_field_change_ignores_deletion_by_default(self): obj = FieldChangeTestModel(name2=factory.getRandomString()) obj.save() callback = Mock() connect_to_field_change(callback, FieldChangeTestModel, 'name1') obj.delete() self.assertEqual(0, callback.call_count)
def test_connect_to_field_change_calls_callback_for_each_real_save(self): callback = Mock() connect_to_field_change(callback, FieldChangeTestModel, 'name1') old_name1_value = factory.getRandomString() obj = FieldChangeTestModel(name1=old_name1_value) obj.save() obj.name1 = factory.getRandomString() obj.save() obj.save() self.assertEqual(1, callback.call_count)
def test_connect_to_field_change_calls_callback_for_each_real_save(self): callback = Mock() connect_to_field_change(callback, FieldChangeTestModel, 'name1') old_name1_value = factory.getRandomString() obj = FieldChangeTestModel(name1=old_name1_value) obj.save() obj.name1 = factory.getRandomString() obj.save() obj.save() self.assertEqual(1, callback.call_count)
def test_connect_to_field_change_calls_callback(self): callback = Mock() connect_to_field_change(callback, FieldChangeTestModel, 'name1') old_name1_value = factory.getRandomString() obj = FieldChangeTestModel(name1=old_name1_value) obj.save() obj.name1 = factory.getRandomString() obj.save() self.assertEqual((1, call(obj, old_name1_value, deleted=False)), (callback.call_count, callback.call_args))
def test_connect_to_field_change_calls_multiple_callbacks(self): callback1 = Mock() connect_to_field_change(callback1, FieldChangeTestModel, 'name1') callback2 = Mock() connect_to_field_change(callback2, FieldChangeTestModel, 'name1') old_name1_value = factory.getRandomString() obj = FieldChangeTestModel(name1=old_name1_value) obj.save() obj.name1 = factory.getRandomString() obj.save() self.assertEqual((1, 1), (callback1.call_count, callback2.call_count))
def test_connect_to_field_change_calls_callback(self): callback = Mock() connect_to_field_change(callback, FieldChangeTestModel, 'name1') old_name1_value = factory.getRandomString() obj = FieldChangeTestModel(name1=old_name1_value) obj.save() obj.name1 = factory.getRandomString() obj.save() self.assertEqual( (1, call(obj, old_name1_value, deleted=False)), (callback.call_count, callback.call_args))
def test_connect_to_field_change_listens_to_deletion_if_delete_True(self): old_name1_value = factory.getRandomString() obj = FieldChangeTestModel(name1=old_name1_value) obj.save() callback = Mock() connect_to_field_change( callback, FieldChangeTestModel, 'name1', delete=True) obj.delete() self.assertEqual( (1, call(obj, old_name1_value, deleted=True)), (callback.call_count, callback.call_args))
def test_connect_to_field_change_calls_multiple_callbacks(self): callback1 = Mock() connect_to_field_change(callback1, FieldChangeTestModel, 'name1') callback2 = Mock() connect_to_field_change(callback2, FieldChangeTestModel, 'name1') old_name1_value = factory.getRandomString() obj = FieldChangeTestModel(name1=old_name1_value) obj.save() obj.name1 = factory.getRandomString() obj.save() self.assertEqual((1, 1), (callback1.call_count, callback2.call_count))
def test_connect_to_field_change_listens_to_deletion_if_delete_True(self): old_name1_value = factory.getRandomString() obj = FieldChangeTestModel(name1=old_name1_value) obj.save() callback = Mock() connect_to_field_change(callback, FieldChangeTestModel, 'name1', delete=True) obj.delete() self.assertEqual((1, call(obj, old_name1_value, deleted=True)), (callback.call_count, callback.call_args))
@receiver(post_save, sender=NodeGroupInterface) def dhcp_post_save_NodeGroupInterface(sender, instance, created, **kwargs): """Update the DHCP config related to the saved nodegroupinterface.""" # Circular import. from maasserver.dhcp import configure_dhcp configure_dhcp(instance.nodegroup) def dhcp_post_edit_status_NodeGroup(instance, old_field, **kwargs): """The status of a NodeGroup changed.""" # This could be optimized a bit by detecting if the status change is # actually a change from 'do not manage DHCP' to 'manage DHCP'. # Circular import. from maasserver.dhcp import configure_dhcp configure_dhcp(instance) connect_to_field_change(dhcp_post_edit_status_NodeGroup, NodeGroup, 'status') def ntp_server_changed(sender, instance, created, **kwargs): """The ntp_server config item changed, so write new DHCP configs.""" from maasserver.dhcp import configure_dhcp for nodegroup in NodeGroup.objects.all(): configure_dhcp(nodegroup) Config.objects.config_changed_connect("ntp_server", ntp_server_changed)
def test_connect_to_field_change_ignores_object_creation(self): callback = Mock() connect_to_field_change(callback, FieldChangeTestModel, 'name1') obj = FieldChangeTestModel(name1=factory.getRandomString()) obj.save() self.assertEqual(0, callback.call_count)
else: write_full_dns_config() def dns_post_edit_management_NodeGroupInterface(instance, old_field, deleted): """Delete DNS zones related to the interface.""" from maasserver.dns import write_full_dns_config if old_field == NODEGROUPINTERFACE_MANAGEMENT.DHCP_AND_DNS: # Force the dns config to be written as this might have been # triggered by the last DNS-enabled interface being deleted # or switched off (i.e. management set to DHCP or UNMANAGED). write_full_dns_config(force=True) connect_to_field_change( dns_post_edit_management_NodeGroupInterface, NodeGroupInterface, 'management', delete=True) @receiver(post_delete, sender=Node) def dns_post_delete_Node(sender, instance, **kwargs): """When a Node is deleted, update the Node's zone file.""" try: from maasserver.dns import change_dns_zones change_dns_zones(instance.nodegroup) except NodeGroup.DoesNotExist: # If this Node is being deleted because the whole NodeGroup # has been deleted, no need to update the zone file because # this Node got removed. pass
def test_connect_to_field_change_ignores_object_creation(self): callback = Mock() connect_to_field_change(callback, FieldChangeTestModel, 'name1') obj = FieldChangeTestModel(name1=factory.getRandomString()) obj.save() self.assertEqual(0, callback.call_count)