コード例 #1
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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)
コード例 #2
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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)
コード例 #3
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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)
コード例 #4
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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)
コード例 #5
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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))
コード例 #6
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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))
コード例 #7
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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))
コード例 #8
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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))
コード例 #9
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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))
コード例 #10
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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))
コード例 #11
0
ファイル: dhcp_connect.py プロジェクト: cloudbase/maas

@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)
コード例 #12
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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)
コード例 #13
0
    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
コード例 #14
0
ファイル: test_signals.py プロジェクト: cloudbase/maas
 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)