Пример #1
0
 def test_ok(self):
     n = kea.CfgMgr().getCurrentCfg().getCfgSubnets4()
     self.assertEqual([], n.getAll())
     self.assertEqual(2, n.use_count)
     o = kea.CfgMgr().getCurrentCfg().getCfgSubnets4()
     self.assertEqual(3, o.use_count)
     o = None
     self.assertEqual(2, n.use_count)
Пример #2
0
 def test_ok(self):
     m = kea.CfgMgr()
     c = m.getCurrentCfg()
     self.assertEqual(3, c.use_count)
     d = m.getCurrentCfg()
     self.assertEqual(4, c.use_count)
     self.assertEqual(4, d.use_count)
Пример #3
0
 def test_ok(self):
     m = kea.CfgMgr()
     c = m.getStagingCfg()
     self.assertEqual(2, c.use_count)
     d = m.getStagingCfg()
     self.assertEqual(3, c.use_count)
     self.assertEqual(3, d.use_count)
     d = None
     self.assertEqual(2, c.use_count)
Пример #4
0
 def get_response(args):
     subnet_id = get_arg(args, 'subnet-id', None)
     if subnet_id is None:
         config = kea.CfgMgr().getCurrentCfg()
         subnet_ids = [s.getID() for s in config.getCfgSubnets4().getAll()]
     elif not isinstance(subnet_id, int):
         raise CommandError("'subnet-id' is not integer")
     else:
         subnet_ids = [subnet_id]
     num = 0
     lease_mgr = kea.LeaseMgr()
     for s in subnet_ids:
         num += lease_mgr.wipeLeases4(s)
     msg = ('deleted %d IPv4 lease(s) from subnet(s) %s' %
            (num, ' '.join([str(s) for s in subnet_ids])))
     return {'result': 0 if num else 3, 'text': msg}
Пример #5
0
 def test_ok(self):
     n = kea.CfgMgr().getCurrentCfg().getCfgSubnets4()
     self.assertEqual([], n.toElement())
Пример #6
0
 def test_badarg_type(self):
     n = kea.CfgMgr().getCurrentCfg().getCfgSubnets4()
     self.assert_method_no_arguments(n.toElement)
Пример #7
0
 def test_ok(self):
     n = kea.CfgMgr().getCurrentCfg().getCfgSubnets4()
     self.assertIsNone(n.selectSubnet('192.168.0.1'))
Пример #8
0
 def test_badarg_type(self):
     n = kea.CfgMgr().getCurrentCfg().getCfgSubnets4()
     with self.assertRaises(TypeError) as cm:
         n.selectSubnet(1)
     self.assertEqual(("argument 1 must be str, not int", ),
                      cm.exception.args)
Пример #9
0
 def test_badarg_count(self):
     n = kea.CfgMgr().getCurrentCfg().getCfgSubnets4()
     self.assert_method_one_arg_no_keywords(n.selectSubnet)
Пример #10
0
 def test_ok(self):
     n = kea.CfgMgr().getCurrentCfg().getCfgSubnets4()
     self.assertIsNone(n.getSubnet(1))
Пример #11
0
 def test_ok(self):
     m = kea.CfgMgr()
     self.assertIsInstance(m, kea.CfgMgr)
Пример #12
0
 def test_badarg_count(self):
     n = kea.CfgMgr().getCurrentCfg().getCfgSubnets4()
     self.assert_method_no_arguments(n.getAll)
Пример #13
0
 def test_ok(self):
     c = kea.CfgMgr().getStagingCfg()
     e = c.toElement()
     self.assertIsInstance(e, dict)
Пример #14
0
 def test_badarg_count(self):
     c = kea.CfgMgr().getStagingCfg()
     self.assert_method_no_arguments(c.toElement)
Пример #15
0
 def test_ok(self):
     c = kea.CfgMgr().getStagingCfg()
     n = c.getCfgSubnets4()
     self.assertEqual(2, n.use_count)
Пример #16
0
 def test_badarg_count(self):
     m = kea.CfgMgr()
     self.assert_method_no_arguments(m.getStagingCfg)
Пример #17
0
def parse_lease4(args):
    lease = kea.Lease4()
    if not isinstance(args, dict):
        raise CommandError("parameters missing or is not a map")
    lease.addr = get_string_arg(args, 'ip-address')
    lease.hwaddr = get_string_arg(args, 'hw-address')
    subnet_id = get_int_arg(args, 'subnet-id', 0)
    cfg = kea.CfgMgr().getCurrentCfg()
    if subnet_id:
        subnet = cfg.getCfgSubnets4().getSubnet(subnet_id)
        if not subnet:
            raise CommandError(
                'no IPv4 subnet with subnet-id=%d currently configured' %
                subnet_id)
        if not subnet.inRange(lease.addr):
            raise CommandError(
                'address %s does not belong to subnet %s, subnet-id=%s' %
                (lease.addr, subnet.toText(), subnet_id))
    else:
        subnet = cfg.getCfgSubnets4().selectSubnet(lease.addr)
        if not subnet:
            raise CommandError(
                'subnet-id not specified and failed to find a subnet for address %s'
                % lease.addr)
        subnet_id = subnet.getID()
    lease.subnet_id = subnet_id
    client_id = get_string_arg(args, 'client-id', None)
    if client_id is not None:
        lease.client_id = client_id
    valid_lft = get_int_arg(args, 'valid-lft', None)
    if valid_lft is None:
        valid_lft = subnet.getValid()
    lease.valid_lft = valid_lft
    expire = get_int_arg(args, 'expire', None)
    if expire is not None:
        if expire <= 0:
            raise CommandError(
                'expiration time must be positive for address %s' % lease.addr)
        if expire < valid_lft:
            raise CommandError(
                'expiration time must be greater than valid lifetime for address %s'
                % lease.addr)
        cltt = expire - valid_lft
    else:
        cltt = int(time.time())
    lease.cltt = cltt
    lease.fqdn_fwd = get_bool_arg(args, 'fqdn-fwd', False)
    lease.fqdn_rev = get_bool_arg(args, 'fqdn-rev', False)
    lease.hostname = get_string_arg(args, 'hostname', None)
    if lease.hostname and (lease.fqdn_fwd or lease.fqdn_rev):
        raise CommandError(
            'no hostname specified and either forward or reverse'
            ' fqdn was set to true')
    lease.state = get_int_arg(args, 'state', 0)
    if lease.state < 0 or lease.state > kea.STATE_EXPIRED_RECLAIMED:
        raise CommandError(
            'invalid state %s: must be 0 (default), 1 (declined),'
            ' or 2 (expired-reclaimed)' % lease.state)
    ctx = get_map_arg(args, 'user-context', {})
    comment = get_string_arg(args, 'comment', None)
    if comment is not None:
        if 'comment' in ctx:
            raise CommandError(
                "duplicated comment entry '%s' in user context '%s'" %
                (comment, ctx))
        ctx['comment'] = comment
    if ctx:
        lease.setContext(ctx)
    return lease
Пример #18
0
 def test_ok(self):
     m = kea.CfgMgr()
     c = m.getStagingCfg()
     self.assertIsInstance(c, kea.SrvConfig)